static void Route(tHostMsg* pMsg, eRouteType RouteType) { /* pick which function to use */ switch (RouteType) { case NormalWait: SendMsgToQ = SendMessageToQueueWait; break; case FromIsr: SendMsgToQ = SendMessageToQueueFromIsr; break; case Normal: default: SendMsgToQ = SendMessageToQueue; break; } AllQueuesReadyCheck(); if ( pMsg == 0 ) { PrintString("ERROR: Invalid message passed to Route function\r\n"); } else if ( AllQueuesReady == 0 ) { PrintString("ERROR: Cannot Route when all queues are not ready\r\n"); SendMsgToQ(FREE_QINDEX,&pMsg); } else { PrintMessageType(pMsg); switch (pMsg->Type) { case InvalidMessage: SendMsgToQ(FREE_QINDEX,&pMsg); break; case GetDeviceType: SendMsgToQ(BACKGROUND_QINDEX,&pMsg); break; case GetDeviceTypeResponse: SendMsgToQ(SPP_TASK_QINDEX,&pMsg); break; case GetInfoString: SendMsgToQ(BACKGROUND_QINDEX,&pMsg); break; case GetInfoStringResponse: SendMsgToQ(SPP_TASK_QINDEX,&pMsg); break; case DiagnosticLoopback: SendMsgToQ(SPP_TASK_QINDEX,&pMsg); break; case EnterShippingModeMsg: SendMsgToQ(SPP_TASK_QINDEX,&pMsg); break; case SoftwareResetMsg: SendMsgToQ(BACKGROUND_QINDEX,&pMsg); break; case ConnectionTimeoutMsg: SendMsgToQ(SPP_TASK_QINDEX,&pMsg); break; case TurnRadioOnMsg: SendMsgToQ(SPP_TASK_QINDEX,&pMsg); break; case TurnRadioOffMsg: SendMsgToQ(SPP_TASK_QINDEX,&pMsg); break; case SppReserved: SendMsgToQ(SPP_TASK_QINDEX,&pMsg); break; case PariringControlMsg: SendMsgToQ(SPP_TASK_QINDEX,&pMsg); break; case EnterSniffModeMsg: SendMsgToQ(SPP_TASK_QINDEX,&pMsg); break; case LinkAlarmMsg: SendMsgToQ(DISPLAY_QINDEX,&pMsg); break; case OledWriteBufferMsg: SendMsgToQ(DISPLAY_QINDEX,&pMsg); break; case OledConfigureModeMsg: SendMsgToQ(DISPLAY_QINDEX,&pMsg); break; case OledChangeModeMsg: SendMsgToQ(DISPLAY_QINDEX,&pMsg); break; case OledWriteScrollBufferMsg: SendMsgToQ(DISPLAY_QINDEX,&pMsg); break; case OledScrollMsg: SendMsgToQ(DISPLAY_QINDEX,&pMsg); break; case OledShowIdleBufferMsg: SendMsgToQ(DISPLAY_QINDEX,&pMsg); break; case OledCrownMenuMsg: SendMsgToQ(DISPLAY_QINDEX,&pMsg); break; case OledCrownMenuButtonMsg: SendMsgToQ(DISPLAY_QINDEX,&pMsg); break; case AdvanceWatchHandsMsg: SendMsgToQ(BACKGROUND_QINDEX,&pMsg); break; case SetVibrateMode: SendMsgToQ(BACKGROUND_QINDEX,&pMsg); break; case SetRealTimeClock: SendMsgToQ(BACKGROUND_QINDEX,&pMsg); break; case GetRealTimeClock: SendMsgToQ(BACKGROUND_QINDEX,&pMsg); break; case GetRealTimeClockResponse: SendMsgToQ(SPP_TASK_QINDEX,&pMsg); break; case StatusChangeEvent: SendMsgToQ(SPP_TASK_QINDEX,&pMsg); break; case NvalOperationMsg: SendMsgToQ(BACKGROUND_QINDEX,&pMsg); break; case NvalOperationResponseMsg: SendMsgToQ(SPP_TASK_QINDEX,&pMsg); break; case GeneralPurposePhoneMsg: SendMsgToQ(SPP_TASK_QINDEX,&pMsg); break; case GeneralPurposeWatchMsg: SendMsgToQ(BACKGROUND_QINDEX,&pMsg); break; case ButtonEventMsg: SendMsgToQ(SPP_TASK_QINDEX,&pMsg); break; case WriteBuffer: SendMsgToQ(SRAM_QINDEX,&pMsg); break; case ConfigureMode: SendMsgToQ(DISPLAY_QINDEX,&pMsg); break; case ConfigureIdleBufferSize: SendMsgToQ(DISPLAY_QINDEX,&pMsg); break; case UpdateDisplay: SendMsgToQ(SRAM_QINDEX,&pMsg); break; case LoadTemplate: SendMsgToQ(SRAM_QINDEX,&pMsg); break; case UpdateMyDisplaySram: SendMsgToQ(SRAM_QINDEX,&pMsg); break; case UpdateMyDisplayLcd: SendMsgToQ(LCD_TASK_QINDEX,&pMsg); break; case EnableButtonMsg: SendMsgToQ(BACKGROUND_QINDEX,&pMsg); break; case DisableButtonMsg: SendMsgToQ(BACKGROUND_QINDEX,&pMsg); break; case ReadButtonConfigMsg: SendMsgToQ(BACKGROUND_QINDEX,&pMsg); break; case ReadButtonConfigResponse: SendMsgToQ(BACKGROUND_QINDEX,&pMsg); break; case BatteryChargeControl: SendMsgToQ(BACKGROUND_QINDEX,&pMsg); break; case IdleUpdate: SendMsgToQ(DISPLAY_QINDEX,&pMsg); break; case WatchDrawnScreenTimeout: SendMsgToQ(DISPLAY_QINDEX,&pMsg); break; case WriteLcd: SendMsgToQ(LCD_TASK_QINDEX,&pMsg); break; case ClearLcd: SendMsgToQ(LCD_TASK_QINDEX,&pMsg); break; case ClearLcdSpecial: SendMsgToQ(SRAM_QINDEX,&pMsg); break; case ChangeModeMsg: SendMsgToQ(DISPLAY_QINDEX,&pMsg); break; case ModeTimeoutMsg: SendMsgToQ(DISPLAY_QINDEX,&pMsg); break; case WatchStatusMsg: SendMsgToQ(DISPLAY_QINDEX,&pMsg); break; case MenuModeMsg: SendMsgToQ(DISPLAY_QINDEX,&pMsg); break; case BarCode: SendMsgToQ(DISPLAY_QINDEX,&pMsg); break; case ListPairedDevicesMsg: SendMsgToQ(DISPLAY_QINDEX,&pMsg); break; case ConnectionStateChangeMsg: SendMsgToQ(DISPLAY_QINDEX,&pMsg); break; case ModifyTimeMsg: SendMsgToQ(DISPLAY_QINDEX,&pMsg); break; case MenuButtonMsg: SendMsgToQ(DISPLAY_QINDEX,&pMsg); break; case ToggleSecondsMsg: SendMsgToQ(DISPLAY_QINDEX,&pMsg); break; case SplashTimeoutMsg: SendMsgToQ(DISPLAY_QINDEX,&pMsg); break; case LedChange: SendMsgToQ(BACKGROUND_QINDEX,&pMsg); break; case AccelerometerRawData: SendMsgToQ(SPP_TASK_QINDEX,&pMsg); break; case QueryMemoryMsg: SendMsgToQ(SPP_TASK_QINDEX,&pMsg); break; case BatteryConfigMsg: SendMsgToQ(BACKGROUND_QINDEX,&pMsg); break; case LowBatteryWarningMsgHost: SendMsgToQ(SPP_TASK_QINDEX,&pMsg); break; case LowBatteryBtOffMsgHost: SendMsgToQ(SPP_TASK_QINDEX,&pMsg); break; case ReadBatteryVoltageMsg: SendMsgToQ(BACKGROUND_QINDEX,&pMsg); break; case ReadBatteryVoltageResponse: SendMsgToQ(SPP_TASK_QINDEX,&pMsg); break; case ReadLightSensorMsg: SendMsgToQ(BACKGROUND_QINDEX,&pMsg); break; case ReadLightSensorResponse: SendMsgToQ(SPP_TASK_QINDEX,&pMsg); break; case LowBatteryWarningMsg: SendMsgToQ(DISPLAY_QINDEX,&pMsg); break; case LowBatteryBtOffMsg: SendMsgToQ(DISPLAY_QINDEX,&pMsg); break; case ResetSleepCounterMsg: SendMsgToQ(DISPLAY_QINDEX,&pMsg); break; default: SendMsgToQ(FREE_QINDEX,&pMsg); break; } } }
void RouteMsg(tMessage* pMsg) { #ifdef MESSAGE_QUEUE_DEBUG AllQueuesReadyCheck(); if ( pMsg == 0 ) { PrintString("ERROR: Invalid message passed to Route function\r\n"); } else if ( AllQueuesReady == 0 ) { PrintString("ERROR: Cannot Route when all queues are not ready\r\n"); SendToFreeQueueContext(pMsg,RouteType); } else #endif { switch (pMsg->Type) { case InvalidMessage: SendMsgToQ(FREE_QINDEX,pMsg); break; case GetDeviceType: SendMsgToQ(BACKGROUND_QINDEX,pMsg); break; case GetDeviceTypeResponse: SendMsgToQ(SPP_TASK_QINDEX,pMsg); break; case GetInfoString: SendMsgToQ(BACKGROUND_QINDEX,pMsg); break; case GetInfoStringResponse: SendMsgToQ(SPP_TASK_QINDEX,pMsg); break; case DiagnosticLoopback: SendMsgToQ(SPP_TASK_QINDEX,pMsg); break; case EnterShippingModeMsg: SendMsgToQ(SPP_TASK_QINDEX,pMsg); break; case SoftwareResetMsg: SendMsgToQ(BACKGROUND_QINDEX,pMsg); break; case ConnectionTimeoutMsg: SendMsgToQ(SPP_TASK_QINDEX,pMsg); break; case TurnRadioOnMsg: SendMsgToQ(SPP_TASK_QINDEX,pMsg); break; case TurnRadioOffMsg: SendMsgToQ(SPP_TASK_QINDEX,pMsg); break; case ReadRssiMsg: SendMsgToQ(SPP_TASK_QINDEX,pMsg); break; case PairingControlMsg: SendMsgToQ(SPP_TASK_QINDEX,pMsg); break; case ReadRssiResponseMsg: SendMsgToQ(SPP_TASK_QINDEX,pMsg); break; case SniffControlMsg: SendMsgToQ(SPP_TASK_QINDEX,pMsg); break; case LinkAlarmMsg: SendMsgToQ(DISPLAY_QINDEX,pMsg); break; case OledWriteBufferMsg: SendMsgToQ(DISPLAY_QINDEX,pMsg); break; case OledConfigureModeMsg: SendMsgToQ(DISPLAY_QINDEX,pMsg); break; case OledChangeModeMsg: SendMsgToQ(DISPLAY_QINDEX,pMsg); break; case OledWriteScrollBufferMsg: SendMsgToQ(DISPLAY_QINDEX,pMsg); break; case OledScrollMsg: SendMsgToQ(DISPLAY_QINDEX,pMsg); break; case OledShowIdleBufferMsg: SendMsgToQ(DISPLAY_QINDEX,pMsg); break; case OledCrownMenuMsg: SendMsgToQ(DISPLAY_QINDEX,pMsg); break; case OledCrownMenuButtonMsg: SendMsgToQ(DISPLAY_QINDEX,pMsg); break; case AdvanceWatchHandsMsg: SendMsgToQ(BACKGROUND_QINDEX,pMsg); break; case SetVibrateMode: SendMsgToQ(BACKGROUND_QINDEX,pMsg); break; case ButtonStateMsg: SendMsgToQ(BACKGROUND_QINDEX,pMsg); break; case SetRealTimeClock: SendMsgToQ(BACKGROUND_QINDEX,pMsg); break; case GetRealTimeClock: SendMsgToQ(BACKGROUND_QINDEX,pMsg); break; case GetRealTimeClockResponse: SendMsgToQ(SPP_TASK_QINDEX,pMsg); break; case StatusChangeEvent: SendMsgToQ(SPP_TASK_QINDEX,pMsg); break; case NvalOperationMsg: SendMsgToQ(BACKGROUND_QINDEX,pMsg); break; case NvalOperationResponseMsg: SendMsgToQ(SPP_TASK_QINDEX,pMsg); break; case GeneralPurposePhoneMsg: SendMsgToQ(SPP_TASK_QINDEX,pMsg); break; case GeneralPurposeWatchMsg: SendMsgToQ(BACKGROUND_QINDEX,pMsg); break; case ButtonEventMsg: SendMsgToQ(SPP_TASK_QINDEX,pMsg); break; case WriteBuffer: SendMsgToQ(DISPLAY_QINDEX,pMsg); break; case ConfigureDisplay: SendMsgToQ(DISPLAY_QINDEX,pMsg); break; case ConfigureIdleBufferSize: SendMsgToQ(DISPLAY_QINDEX,pMsg); break; case UpdateDisplay: SendMsgToQ(DISPLAY_QINDEX,pMsg); break; case LoadTemplate: SendMsgToQ(DISPLAY_QINDEX,pMsg); break; case EnableButtonMsg: SendMsgToQ(BACKGROUND_QINDEX,pMsg); break; case DisableButtonMsg: SendMsgToQ(BACKGROUND_QINDEX,pMsg); break; case ReadButtonConfigMsg: SendMsgToQ(BACKGROUND_QINDEX,pMsg); break; case ReadButtonConfigResponse: SendMsgToQ(BACKGROUND_QINDEX,pMsg); break; case BatteryChargeControl: SendMsgToQ(BACKGROUND_QINDEX,pMsg); break; case IdleUpdate: SendMsgToQ(DISPLAY_QINDEX,pMsg); break; case WatchDrawnScreenTimeout: SendMsgToQ(DISPLAY_QINDEX,pMsg); break; case SplashTimeoutMsg: SendMsgToQ(DISPLAY_QINDEX,pMsg); break; case ChangeModeMsg: SendMsgToQ(DISPLAY_QINDEX,pMsg); break; case ModeTimeoutMsg: SendMsgToQ(DISPLAY_QINDEX,pMsg); break; case WatchStatusMsg: SendMsgToQ(DISPLAY_QINDEX,pMsg); break; case MenuModeMsg: SendMsgToQ(DISPLAY_QINDEX,pMsg); break; case BarCode: SendMsgToQ(DISPLAY_QINDEX,pMsg); break; case ListPairedDevicesMsg: SendMsgToQ(DISPLAY_QINDEX,pMsg); break; case ConnectionStateChangeMsg: SendMsgToQ(DISPLAY_QINDEX,pMsg); break; case ModifyTimeMsg: SendMsgToQ(DISPLAY_QINDEX,pMsg); break; case MenuButtonMsg: SendMsgToQ(DISPLAY_QINDEX,pMsg); break; case ToggleSecondsMsg: SendMsgToQ(DISPLAY_QINDEX,pMsg); break; case LedChange: SendMsgToQ(BACKGROUND_QINDEX,pMsg); break; case AccelerometerHostMsg: SendMsgToQ(SPP_TASK_QINDEX,pMsg); break; case AccelerometerEnableMsg: SendMsgToQ(BACKGROUND_QINDEX,pMsg); break; case AccelerometerDisableMsg: SendMsgToQ(BACKGROUND_QINDEX,pMsg); break; case AccelerometerSendDataMsg: SendMsgToQ(BACKGROUND_QINDEX,pMsg); break; case AccelerometerAccessMsg: SendMsgToQ(BACKGROUND_QINDEX,pMsg); break; case AccelerometerResponseMsg: SendMsgToQ(BACKGROUND_QINDEX,pMsg); break; case AccelerometerSetupMsg: SendMsgToQ(BACKGROUND_QINDEX,pMsg); break; case QueryMemoryMsg: SendMsgToQ(SPP_TASK_QINDEX,pMsg); break; case RamTestMsg: SendMsgToQ(DISPLAY_QINDEX,pMsg); break; case RateTestMsg: SendMsgToQ(BACKGROUND_QINDEX,pMsg); break; case BatteryConfigMsg: SendMsgToQ(BACKGROUND_QINDEX,pMsg); break; case LowBatteryWarningMsgHost: SendMsgToQ(SPP_TASK_QINDEX,pMsg); break; case LowBatteryBtOffMsgHost: SendMsgToQ(SPP_TASK_QINDEX,pMsg); break; case ReadBatteryVoltageMsg: SendMsgToQ(BACKGROUND_QINDEX,pMsg); break; case ReadBatteryVoltageResponse: SendMsgToQ(SPP_TASK_QINDEX,pMsg); break; case ReadLightSensorMsg: SendMsgToQ(BACKGROUND_QINDEX,pMsg); break; case ReadLightSensorResponse: SendMsgToQ(SPP_TASK_QINDEX,pMsg); break; case LowBatteryWarningMsg: SendMsgToQ(DISPLAY_QINDEX,pMsg); break; case LowBatteryBtOffMsg: SendMsgToQ(DISPLAY_QINDEX,pMsg); break; case AdvertisingDataMsg: SendMsgToQ(SPP_TASK_QINDEX,pMsg); break; case CallbackTimeoutMsg: SendMsgToQ(SPP_TASK_QINDEX,pMsg); break; case SetCallbackTimerMsg: SendMsgToQ(BACKGROUND_QINDEX,pMsg); break; case RadioPowerControlMsg: SendMsgToQ(SPP_TASK_QINDEX,pMsg); break; case UpdateConnParameterMsg: SendMsgToQ(SPP_TASK_QINDEX,pMsg); break; default: SendMsgToQ(FREE_QINDEX,pMsg); break; } } }