示例#1
0
static bool Running_State_Code(void * pObject, oosmos_sRegion * pRegion, const oosmos_sEvent * pEvent)
{
  matrix * pMatrix = (matrix *) pObject;

  switch (pEvent->Code) {
    case oosmos_INSTATE:
      oosmos_SyncBegin(pRegion);
        while (true) {
          for (pMatrix->m_CurrentRowIndex = 0; pMatrix->m_CurrentRowIndex < pMatrix->m_Rows; pMatrix->m_CurrentRowIndex++) {
            if (pMatrix->m_pRowPins[pMatrix->m_CurrentRowIndex] == NULL)
              continue;

            pinOn(pMatrix->m_pRowPins[pMatrix->m_CurrentRowIndex]);
            oosmos_SyncDelayMS(pRegion, RowOnSettleTimeUS);

            InterrogateColumns(pMatrix);

            pinOff(pMatrix->m_pRowPins[pMatrix->m_CurrentRowIndex]);
            oosmos_SyncDelayMS(pRegion, RowOffSettleTimeUS);
          }
        }
      oosmos_SyncEnd(pRegion);
      return true;
  }

  return false;
}
示例#2
0
文件: server.c 项目: GDXN/oosmos
static bool Running_State_Code(void * pObject, oosmos_sRegion * pRegion, const oosmos_sEvent * pEvent)
{
  server * pServer = (server *) pObject;

  switch (pEvent->Code) {
    case oosmos_INSTATE:
      oosmos_SyncBegin(pRegion);
        while (true) {
          printf("Waiting for incoming data...\n");
          oosmos_SyncWaitCond(pRegion, sockReceive(pServer->m_pSock, pServer->m_Buffer, sizeof(pServer->m_Buffer), &pServer->m_BytesReceived));
          printf("Server side, String: '%s', BytesReceived: %u\n", pServer->m_Buffer, (unsigned) pServer->m_BytesReceived);

          oosmos_SyncWaitCond(pRegion, sockSend(pServer->m_pSock, pServer->m_Buffer, pServer->m_BytesReceived));
        }
      oosmos_SyncEnd(pRegion);
      return true;
  }

  return false;
}