Esempio n. 1
0
/*! Handle the messages routed to the background task */
static void BackgroundMessageHandler(tHostMsg* pMsg)
{
  tHostMsg* pOutgoingMsg;

  eMessageType Type = (eMessageType)pMsg->Type;

  switch(Type)
  {
  case GetDeviceType:
    BPL_AllocMessageBuffer(&pOutgoingMsg);

    pOutgoingMsg->pPayload[0] = 2; /* DIGITAL_BOARD_TYPE */

    UTL_BuildHstMsg(pOutgoingMsg, GetDeviceTypeResponse, NO_MSG_OPTIONS,
                    pOutgoingMsg->pPayload, sizeof(unsigned char));

    RouteMsg(&pOutgoingMsg);
    break;

  case SetVibrateMode:
    SetVibrateModeHandler(pMsg);
    break;

  case SetRealTimeClock:
    halRtcSet((tRtcHostMsgPayload*)pMsg->pPayload);

    BPL_AllocMessageBuffer(&pOutgoingMsg);
    pOutgoingMsg->Type = IdleUpdate;
    pOutgoingMsg->Options = NO_MSG_OPTIONS;
    RouteMsg(&pOutgoingMsg);

    break;

  default:
    PrintStringAndHex("<<Unhandled Message>> in Background Task: Type 0x", Type);
    break;
  }

}
Esempio n. 2
0
static void PrintMessageType(tHostMsg* pMsg)
{

  unsigned char MessageType = pMsg->Type;
  
  if ( MessageType == LastMessageType )
  {
    PrintString("*");
    AddNewline = 1;
    return;
  }
  else
  {
    if ( AddNewline )
    {
      PrintString("\r\n");   
    }
  
    AddNewline = 0;
  }
  LastMessageType = MessageType;
  
  

  /* else 
   * 
   * this does not follow 80 character width rule because it is easier to
   * maintain this way 
  */
  switch (MessageType)
  {
  case InvalidMessage:             PrintStringAndHex("InvalidMessage 0x",MessageType);         break;
  case GetDeviceType:              PrintStringAndHex("GetDeviceType 0x",MessageType);          break;
  case GetDeviceTypeResponse:      PrintStringAndHex("GetDeviceTypeResponse 0x",MessageType);  break;
  case GetInfoString:              PrintStringAndHex("GetInfoString 0x",MessageType);          break;
  case GetInfoStringResponse:      PrintStringAndHex("GetInfoStringResponse 0x",MessageType);  break;
  case DiagnosticLoopback:         PrintStringAndHex("DiagnosticLoopback 0x",MessageType);     break;
  case EnterShippingModeMsg:       PrintStringAndHex("EnterShippingModeMsg 0x",MessageType);   break;
  case SoftwareResetMsg:           PrintStringAndHex("SoftwareResetMsg 0x",MessageType);       break;
  case ConnectionTimeoutMsg:       PrintStringAndHex("ConnectionTimeoutMsg 0x",MessageType);   break;
  case TurnRadioOnMsg:             PrintStringAndHex("TurnRadioOnMsg 0x",MessageType);         break;
  case TurnRadioOffMsg:            PrintStringAndHex("TurnRadioOffMsg 0x",MessageType);        break;
  case SppReserved:                PrintStringAndHex("SppReserved 0x",MessageType);            break;
  case PariringControlMsg:         PrintStringAndHex("PariringControlMsg 0x",MessageType);     break;
  case EnterSniffModeMsg:          PrintStringAndHex("EnterSniffModeMsg 0x",MessageType);      break;
  case LinkAlarmMsg:               PrintStringAndHex("LinkAlarmMsg 0x",MessageType);           break;
  case OledWriteBufferMsg:         PrintStringAndHex("OledWriteBufferMsg 0x",MessageType);        break;
  case OledConfigureModeMsg:       PrintStringAndHex("OledConfigureModeMsg 0x",MessageType);      break;
  case OledChangeModeMsg:          PrintStringAndHex("OledChangeModeMsg 0x",MessageType);         break;
  case OledWriteScrollBufferMsg:   PrintStringAndHex("OledWriteScrollBufferMsg 0x",MessageType);  break;
  case OledScrollMsg:              PrintStringAndHex("OledScrollMsg 0x",MessageType);          break;
  case OledShowIdleBufferMsg:      PrintStringAndHex("OledShowIdleBufferMsg 0x",MessageType);  break;
  case OledCrownMenuMsg:           PrintStringAndHex("OledCrownMenuMsg 0x",MessageType);       break;
  case OledCrownMenuButtonMsg:     PrintStringAndHex("OledCrownMenuButtonMsg 0x",MessageType); break;
  case AdvanceWatchHandsMsg:       PrintStringAndHex("AdvanceWatchHandsMsg 0x",MessageType);   break;
  case SetVibrateMode:             PrintStringAndHex("SetVibrateMode 0x",MessageType);         break;
  case SetRealTimeClock:           PrintStringAndHex("SetRealTimeClock 0x",MessageType);       break;
  case GetRealTimeClock:           PrintStringAndHex("GetRealTimeClock 0x",MessageType);       break;
  case GetRealTimeClockResponse:   PrintStringAndHex("GetRealTimeClockResponse 0x",MessageType);break;
  case StatusChangeEvent:          PrintStringAndHex("StatusChangeEvent 0x",MessageType);       break;
  case NvalOperationMsg:           PrintStringAndHex("NvalOperationMsg 0x",MessageType);        break;
  case NvalOperationResponseMsg:   PrintStringAndHex("NvalOperationResponseMsg 0x",MessageType); break;
  case GeneralPurposePhoneMsg:     PrintStringAndHex("GeneralPurposePhoneMsg 0x",MessageType); break;
  case GeneralPurposeWatchMsg:     PrintStringAndHex("GeneralPurposeWatchMsg 0x",MessageType); break;
  case ButtonEventMsg:             PrintStringAndHex("ButtonEventMsg 0x",MessageType);         break;
  case WriteBuffer:                PrintStringAndHex("WriteBuffer 0x",MessageType);            break;
  case ConfigureMode:              PrintStringAndHex("ConfigureMode 0x",MessageType);          break;
  case ConfigureIdleBufferSize:    PrintStringAndHex("ConfigureIdleBufferSize 0x",MessageType);break;
  case UpdateDisplay:              PrintStringAndHex("UpdateDisplay 0x",MessageType);          break;
  case LoadTemplate:               PrintStringAndHex("LoadTemplate 0x",MessageType);           break;
  case UpdateMyDisplaySram:        PrintStringAndHex("UpdateMyDisplaySram 0x",MessageType);    break;
  case UpdateMyDisplayLcd:         PrintStringAndHex("UpdateMyDisplayLcd 0x",MessageType);     break;
  case EnableButtonMsg:            PrintStringAndHex("EnableButtonMsg 0x",MessageType);        break;
  case DisableButtonMsg:           PrintStringAndHex("DisableButtonMsg 0x",MessageType);       break;
  case ReadButtonConfigMsg:        PrintStringAndHex("ReadButtonConfigMsg 0x",MessageType);    break;
  case ReadButtonConfigResponse:   PrintStringAndHex("ReadButtonConfigResponse 0x",MessageType);break;
  case BatteryChargeControl:       PrintStringAndHex("BatteryChargeControl 0x",MessageType);   break;
  case IdleUpdate:                 PrintStringAndHex("IdleUpdate 0x",MessageType);             break;
  case WatchDrawnScreenTimeout:    PrintStringAndHex("WatchDrawnScreenTimeout 0x",MessageType);break;
  case WriteLcd:                   PrintStringAndHex("WriteLcd 0x",MessageType);               break;
  case ClearLcd:                   PrintStringAndHex("ClearLcd 0x",MessageType);               break;
  case ClearLcdSpecial:            PrintStringAndHex("ClearLcdSpecial 0x",MessageType);        break;
  case ChangeModeMsg:              PrintStringAndHex("ChangeModeMsg 0x",MessageType);             break;
  case ModeTimeoutMsg:             PrintStringAndHex("ModeTimeoutMsg 0x",MessageType);            break;
  case WatchStatusMsg:             PrintStringAndHex("WatchStatusMsg 0x",MessageType);         break;
  case MenuModeMsg:                PrintStringAndHex("MenuModeMsg 0x",MessageType);            break;
  case BarCode:                    PrintStringAndHex("BarCode 0x",MessageType);                break;
  case ListPairedDevicesMsg:       PrintStringAndHex("ListPairedDevicesMsg 0x",MessageType);   break;
  case ConnectionStateChangeMsg:   PrintStringAndHex("ConnectionStateChangeMsg 0x",MessageType);  break;
  case ModifyTimeMsg:              PrintStringAndHex("ModifyTimeMsg 0x",MessageType);          break;
  case MenuButtonMsg:              PrintStringAndHex("MenuButtonMsg 0x",MessageType);          break;
  case ToggleSecondsMsg:           PrintStringAndHex("ToggleSecondsMsg 0x",MessageType);       break;
  case SplashTimeoutMsg:           PrintStringAndHex("SplashTimeoutMsg 0x",MessageType);       break;
  case LedChange:                  PrintStringAndHex("LedChange 0x",MessageType);              break;
  case AccelerometerRawData:       PrintStringAndHex("AccelerometerRawData 0x",MessageType);   break;           
  case QueryMemoryMsg:             PrintStringAndHex("QueryMemoryMsg 0x",MessageType);         break;
  case BatteryConfigMsg:           PrintStringAndHex("BatteryConfigMsg 0x",MessageType);       break;
  case LowBatteryWarningMsgHost:   PrintStringAndHex("LowBatteryWarningMsgHost 0x",MessageType);   break; 
  case LowBatteryBtOffMsgHost:     PrintStringAndHex("LowBatteryBtOffMsgHost 0x",MessageType);     break; 
  case ReadBatteryVoltageMsg:      PrintStringAndHex("ReadBatteryVoltageMsg 0x",MessageType);      break;
  case ReadBatteryVoltageResponse: PrintStringAndHex("ReadBatteryVoltageResponse 0x",MessageType); break;
  case ReadLightSensorMsg:         PrintStringAndHex("ReadLightSensorMsg 0x",MessageType);      break;
  case ReadLightSensorResponse:    PrintStringAndHex("ReadLightSensorResponse 0x",MessageType); break;
  case LowBatteryWarningMsg:       PrintStringAndHex("LowBatteryWarningMsg 0x",MessageType);   break; 
  case LowBatteryBtOffMsg:         PrintStringAndHex("LowBatteryBtOffMsg 0x",MessageType);     break; 
  case ResetSleepCounterMsg:       PrintStringAndHex("ResetSleepCounterMsg 0x",MessageType);     break; 
  
  default:                         PrintStringAndHex("Unknown Message Type 0x",MessageType);   break;
  }  
  
}
Esempio n. 3
0
/*! Handle the messages routed to the background task */
static void BackgroundMessageHandler(tMessage* pMsg)
{
  tMessage OutgoingMsg;

  switch(pMsg->Type)
  {
  case SetCallbackTimerMsg:
    SetCallbackTimerHandler(pMsg);
    break;

  case GetDeviceType:
    SetupMessageAndAllocateBuffer(&OutgoingMsg,
                                  GetDeviceTypeResponse,
                                  NO_MSG_OPTIONS);

    OutgoingMsg.pBuffer[0] = BOARD_TYPE;
    OutgoingMsg.Length = 1;
    RouteMsg(&OutgoingMsg);
    break;

  case AdvanceWatchHandsMsg:
    AdvanceWatchHandsHandler(pMsg);
    break;

  case SetVibrateMode:
    SetVibrateModeHandler(pMsg);
    break;

  case SetRealTimeClock:
    halRtcSet((tRtcHostMsgPayload*)pMsg->pBuffer);

#ifdef DIGITAL
    SetupMessage(&OutgoingMsg,IdleUpdate,NO_MSG_OPTIONS);
    RouteMsg(&OutgoingMsg);
#endif
    break;

  case GetRealTimeClock:
    SetupMessageAndAllocateBuffer(&OutgoingMsg,
                                  GetRealTimeClockResponse,
                                  NO_MSG_OPTIONS);

    halRtcGet((tRtcHostMsgPayload*)OutgoingMsg.pBuffer);
    OutgoingMsg.Length = sizeof(tRtcHostMsgPayload);
    RouteMsg(&OutgoingMsg);
    break;

  case EnableButtonMsg:
    EnableButtonMsgHandler(pMsg);
    break;

  case DisableButtonMsg:
    DisableButtonMsgHandler(pMsg);
    break;

  case ReadButtonConfigMsg:
    ReadButtonConfigHandler(pMsg);
    break;

  case BatteryChargeControl:

#ifdef DIGITAL
    /* update the screen if there has been a change in charging status */
    if ( BatteryChargingControl() )
    {
      SetupMessage(&OutgoingMsg, IdleUpdate, NO_MSG_OPTIONS);
      RouteMsg(&OutgoingMsg);
    }
#endif

    BatterySenseCycle();
    LowBatteryMonitor();

#ifdef TASK_DEBUG
    UTL_FreeRtosTaskStackCheck();
#endif

#if 0
    LightSenseCycle();
#endif

    break;

  case LedChange:
    LedChangeHandler(pMsg);
    break;

  case BatteryConfigMsg:
    SetBatteryLevels(pMsg->pBuffer);
    break;

  case ReadBatteryVoltageMsg:
    ReadBatteryVoltageHandler();
    break;

  case ReadLightSensorMsg:
    ReadLightSensorHandler();
    break;

  case SoftwareResetMsg:
    SoftwareResetHandler(pMsg);
    break;

  case NvalOperationMsg:
    NvalOperationHandler(pMsg);
    break;

  case GeneralPurposeWatchMsg:
    /* insert handler here */
    break;

  case ButtonStateMsg:
    ButtonStateHandler();
    break;

  /*
   * Accelerometer Messages
   */
  case AccelerometerEnableMsg:
    AccelerometerEnable();
    break;

  case AccelerometerDisableMsg:
    AccelerometerDisable();
    break;

  case AccelerometerSendDataMsg:
    AccelerometerSendDataHandler();
    break;

  case AccelerometerAccessMsg:
    AccelerometerAccessHandler(pMsg);
    break;

  case AccelerometerSetupMsg:
    AccelerometerSetupHandler(pMsg);
    break;

  /*
   *
   */
  case RateTestMsg:
    SetupMessageAndAllocateBuffer(&OutgoingMsg,DiagnosticLoopback,NO_MSG_OPTIONS);
    /* don't care what data is */
    OutgoingMsg.Length = 10;
    RouteMsg(&OutgoingMsg);
    break;

  /*
   *
   */
  default:
    PrintStringAndHex("<<Unhandled Message>> in Background Task: Type 0x", pMsg->Type);
    break;
  }

}