static void ChangeModeHandler(unsigned char Option) { unsigned char Mode = Option & MODE_MASK; tMessage Msg; SetupMessageAndAllocateBuffer(&Msg, ModeChangeIndMsg, (CurrentIdleScreen() << 4) | Mode); Msg.pBuffer[0] = eScUpdateComplete; Msg.Length = 1; RouteMsg(&Msg); PrintStringAndHexByte("- ChgModInd:", Msg.Options); if (Option & MSG_OPT_CHGMOD_IND) return; // ask for current idle page only if (Mode == MUSIC_MODE) SendMessage(&Msg, UpdConnParamMsg, ShortInterval); if (Mode != IDLE_MODE) { PageType = PAGE_TYPE_IDLE; if (ModeTimerId == UNASSIGNED) ModeTimerId = AllocateOneSecondTimer(); SetupOneSecondTimer(ModeTimerId, ModeTimeout[Mode], NO_REPEAT, DISPLAY_QINDEX, ModeTimeoutMsg, Mode); StartOneSecondTimer(ModeTimerId); if (Option & MSG_OPT_UPD_INTERNAL) SendMessage(&Msg, UpdateDisplayMsg, Option); } else { StopOneSecondTimer(ModeTimerId); IdleUpdateHandler(); } CurrentMode = Mode; }
void PrintMessageType(tMessage *pMsg) { if (MsgInfo[pMsg->Type].Log) { #if DONT_PRINT_MESSAGE_TYPE PrintString2(MsgInfo[pMsg->Type].MsgStr, CR); #else PrintStringAndHexByte(MsgInfo[pMsg->Type].MsgStr, pMsg->Type); #endif } }
void PrintResetSource(void) { unsigned int source = GetResetSource(); #if 1 PrintStringAndHexByte("ResetSource 0x",(unsigned char)source); #else switch(source) { case 0x0000: PrintString("ResetSource 0x0000 - No interrupt pending\r\n"); break; case 0x0002: PrintString("ResetSource 0x0002 - Brownout (BOR) (highest priority)\r\n"); break; case 0x0004: PrintString("ResetSource 0x0004 - RST/NMI (BOR)\r\n"); break; case 0x0006: PrintString("ResetSource 0x0006 - PMMSWBOR (BOR)\r\n"); break; case 0x0008: PrintString("ResetSource 0x0008 - Wakeup from LPMx.5 (BOR)\r\n"); break; case 0x000A: PrintString("ResetSource 0x000A - Security violation (BOR)\r\n"); break; case 0x000C: PrintString("ResetSource 0x000C - SVSL (POR)\r\n"); break; case 0x000E: PrintString("ResetSource 0x000E - SVSH (POR)\r\n"); break; case 0x0010: PrintString("ResetSource 0x0010 - SVML_OVP (POR)\r\n"); break; case 0x0012: PrintString("ResetSource 0x0012 - SVMH_OVP (POR)\r\n"); break; case 0x0014: PrintString("ResetSource 0x0014 - PMMSWPOR (POR)\r\n"); break; case 0x0016: PrintString("ResetSource 0x0016 - WDT time out (PUC)\r\n"); break; case 0x0018: PrintString("ResetSource 0x0018 - WDT password violation (PUC)\r\n"); break; case 0x001A: PrintString("ResetSource 0x001A - Flash password violation (PUC)\r\n"); break; case 0x001C: PrintString("ResetSource 0x001C - PLL unlock (PUC)\r\n"); break; case 0x001E: PrintString("ResetSource 0x001E - PERF peripheral/configuration area fetch (PUC)\r\n"); break; case 0x0020: PrintString("ResetSource 0x0020 - PMM password violation (PUC)\r\n"); break; default: PrintString("ResetSource 0x???? - Unknown\r\n"); break; } #endif }
/*! Handle the messages routed to the display queue */ static void DisplayQueueMessageHandler(tMessage* pMsg) { tMessage Msg; unsigned char i = 0; switch (pMsg->Type) { case WriteBufferMsg: WriteBufferHandler(pMsg); break; case SetWidgetListMsg: SetWidgetList(pMsg); break; case UpdateDisplayMsg: UpdateDisplayHandler(pMsg); break; case UpdateClockMsg: UpdateClock(); break; case DrawClockWidgetMsg: DrawClockWidget(pMsg->Options); break; case MonitorBatteryMsg: MonitorBattery(); break; case BluetoothStateChangeMsg: BluetoothStateChangeHandler(pMsg); break; case IdleUpdateMsg: IdleUpdateHandler(); break; case ButtonStateMsg: ButtonStateHandler(); break; case CallerIdMsg: // PrintStringAndDecimal("LcdDisp:CallerId Len:", pMsg->Length); pMsg->pBuffer[pMsg->Length] = NULL; ShowCall((char *)pMsg->pBuffer, pMsg->Options); break; case CallerNameMsg: if (pMsg->Length) { pMsg->pBuffer[pMsg->Length] = NULL; ShowCall((char *)pMsg->pBuffer, SHOW_NOTIF_CALLER_NAME); } else ShowCall("", pMsg->Options); break; case MusicPlayStateMsg: HandleMusicPlayStateChange(pMsg->Options); break; case ChangeModeMsg: ChangeModeHandler(pMsg->Options); break; case ConfigureIdleBufferSize: SetProperty(PROP_PHONE_DRAW_TOP, *pMsg->pBuffer ? PROP_PHONE_DRAW_TOP : 0); break; case ModifyTimeMsg: ModifyTimeHandler(pMsg); break; case MenuModeMsg: MenuModeHandler(pMsg->Options); break; case MenuButtonMsg: MenuButtonHandler(pMsg->Options); break; case EnableButtonMsg: EnableButtonMsgHandler(pMsg); break; case DevTypeMsg: SetupMessageAndAllocateBuffer(&Msg, DevTypeRespMsg, MSG_OPT_NONE); Msg.Options = BOARD_TYPE; //default G2 Msg.pBuffer[0] = BOARD_TYPE; // backward compatible #ifdef WATCH if (GetMsp430HardwareRevision() < 'F') { Msg.Options = DIGITAL_WATCH_TYPE_G1; Msg.pBuffer[0] = DIGITAL_WATCH_TYPE_G1; // backward compatible } #endif Msg.Length = 1; RouteMsg(&Msg); PrintStringAndDecimal("- DevTypeResp:", Msg.pBuffer[0]); break; case VerInfoMsg: SetupMessageAndAllocateBuffer(&Msg, VerInfoRespMsg, MSG_OPT_NONE); /* exclude middle '.' */ strncpy((char *)Msg.pBuffer, BUILD, 3); strncpy((char *)Msg.pBuffer + 3, BUILD + 4, 3); Msg.Length += strlen(BUILD) - 1; *(Msg.pBuffer + Msg.Length++) = (unsigned char)atoi(VERSION); while (VERSION[i++] != '.'); *(Msg.pBuffer + Msg.Length++) = atoi(VERSION + i); *(Msg.pBuffer + Msg.Length++) = NULL; RouteMsg(&Msg); PrintString("-Ver:"); for (i = 6; i < Msg.Length; ++i) PrintHex(Msg.pBuffer[i]); break; case SetVibrateMode: SetVibrateModeHandler(pMsg); break; case SetRtcMsg: halRtcSet((tRtcHostMsgPayload*)pMsg->pBuffer); #ifdef DIGITAL UpdateClock(); #endif break; case GetRtcMsg: SetupMessageAndAllocateBuffer(&Msg, RtcRespMsg, MSG_OPT_NONE); halRtcGet((tRtcHostMsgPayload*)Msg.pBuffer); Msg.Length = sizeof(tRtcHostMsgPayload); RouteMsg(&Msg); break; case ServiceMenuMsg: ServiceMenuHandler(); break; case DisableButtonMsg: DisableButtonMsgHandler(pMsg); break; case ReadButtonConfigMsg: ReadButtonConfigHandler(pMsg); break; case LedChange: LedChangeHandler(pMsg); break; case BatteryConfigMsg: SetBatteryLevels(pMsg->pBuffer); break; case ReadBatteryVoltageMsg: ReadBatteryVoltageHandler(); break; case ResetMsg: SoftwareResetHandler(pMsg); break; case NvalOperationMsg: NvalOperationHandler(pMsg); break; case SecInvertMsg: HandleSecInvert(pMsg->Options); break; case LoadTemplateMsg: LoadTemplateHandler(pMsg); break; case LinkAlarmMsg: if (!GetProperty(PROP_DISABLE_LINK_ALARM)) { SetupMessageAndAllocateBuffer(&Msg, SetVibrateMode, MSG_OPT_NONE); tSetVibrateModePayload* pMsgData; pMsgData = (tSetVibrateModePayload *)Msg.pBuffer; pMsgData->Enable = 1; pMsgData->OnDurationLsb = 0xC8; pMsgData->OnDurationMsb = 0x00; pMsgData->OffDurationLsb = 0xF4; pMsgData->OffDurationMsb = 0x01; pMsgData->NumberOfCycles = 1; //3 RouteMsg(&Msg); } break; case ModeTimeoutMsg: ModeTimeoutHandler(); break; case WatchStatusMsg: PageType = PAGE_TYPE_INFO; CurrentPage[PageType] = StatusPage; DrawWatchStatusScreen(); break; // case ListPairedDevicesMsg: // ListPairedDevicesHandler(); // break; case WatchDrawnScreenTimeout: IdleUpdateHandler(); break; case TermModeMsg: TermModeHandler(); break; case LowBatteryWarningMsg: break; case LowBatteryBtOffMsg: UpdateClock(); break; #if __IAR_SYSTEMS_ICC__ case EraseTemplateMsg: EraseTemplateHandler(pMsg); break; case WriteToTemplateMsg: WriteToTemplateHandler(pMsg); break; #endif case EnableAccelerometerMsg: case DisableAccelerometerMsg: case AccelerometerSendDataMsg: case AccelerometerAccessMsg: case AccelerometerSetupMsg: HandleAccelerometer(pMsg); break; case ReadLightSensorMsg: ReadLightSensorHandler(); break; case RateTestMsg: SetupMessageAndAllocateBuffer(&Msg, DiagnosticLoopback, MSG_OPT_NONE); /* don't care what data is */ Msg.Length = 10; RouteMsg(&Msg); break; case RamTestMsg: RamTestHandler(pMsg); break; default: PrintStringAndHexByte("# Disp Msg: 0x", pMsg->Type); break; } }
void PrintMessageType(tMessage* pMsg) { unsigned char MessageType = pMsg->Type; /* if the message is the same as the last then print an asterix */ if ( MessageType == IdleUpdate) //LastMessageType ) { PrintString("*"); AddNewline = 1; return; } else { if ( AddNewline ) { //PrintString("\r\n"); } AddNewline = 0; } LastMessageType = MessageType; /* * this does not follow 80 character width rule because it is easier to * maintain this way */ switch (MessageType) { case InvalidMessage: PrintStringAndHexByte("InvalidMessage 0x",MessageType); break; case GetDeviceType: PrintStringAndHexByte("GetDeviceType 0x",MessageType); break; case GetDeviceTypeResponse: PrintStringAndHexByte("GetDeviceTypeResponse 0x",MessageType); break; case GetInfoString: PrintStringAndHexByte("GetInfoString 0x",MessageType); break; case GetInfoStringResponse: PrintStringAndHexByte("GetInfoStringResponse 0x",MessageType); break; case DiagnosticLoopback: PrintStringAndHexByte("DiagnosticLoopback 0x",MessageType); break; case EnterShippingModeMsg: PrintStringAndHexByte("EnterShippingModeMsg 0x",MessageType); break; case SoftwareResetMsg: PrintStringAndHexByte("SoftwareResetMsg 0x",MessageType); break; case ConnectionTimeoutMsg: PrintStringAndHexByte("ConnectionTimeoutMsg 0x",MessageType); break; case TurnRadioOnMsg: PrintStringAndHexByte("TurnRadioOnMsg 0x",MessageType); break; case TurnRadioOffMsg: PrintStringAndHexByte("TurnRadioOffMsg 0x",MessageType); break; case ReadRssiMsg: PrintStringAndHexByte("ReadRssiMsg 0x",MessageType); break; case PairingControlMsg: PrintStringAndHexByte("PairingControlMsg 0x",MessageType); break; case ReadRssiResponseMsg: PrintStringAndHexByte("ReadRssiResponseMsg 0x",MessageType); break; case SniffControlMsg: PrintStringAndHexByte("SniffControlMsg 0x",MessageType); break; case LinkAlarmMsg: PrintStringAndHexByte("LinkAlarmMsg 0x",MessageType); break; case OledWriteBufferMsg: PrintStringAndHexByte("OledWriteBufferMsg 0x",MessageType); break; case OledConfigureModeMsg: PrintStringAndHexByte("OledConfigureModeMsg 0x",MessageType); break; case OledChangeModeMsg: PrintStringAndHexByte("OledChangeModeMsg 0x",MessageType); break; case OledWriteScrollBufferMsg: PrintStringAndHexByte("OledWriteScrollBufferMsg 0x",MessageType); break; case OledScrollMsg: PrintStringAndHexByte("OledScrollMsg 0x",MessageType); break; case OledShowIdleBufferMsg: PrintStringAndHexByte("OledShowIdleBufferMsg 0x",MessageType); break; case OledCrownMenuMsg: PrintStringAndHexByte("OledCrownMenuMsg 0x",MessageType); break; case OledCrownMenuButtonMsg: PrintStringAndHexByte("OledCrownMenuButtonMsg 0x",MessageType); break; case AdvanceWatchHandsMsg: PrintStringAndHexByte("AdvanceWatchHandsMsg 0x",MessageType); break; case SetVibrateMode: PrintStringAndHexByte("SetVibrateMode 0x",MessageType); break; case ButtonStateMsg: /*PrintStringAndHexByte("ButtonStateMsg 0x",MessageType);*/ break; case SetRealTimeClock: PrintStringAndHexByte("SetRealTimeClock 0x",MessageType); break; case GetRealTimeClock: PrintStringAndHexByte("GetRealTimeClock 0x",MessageType); break; case GetRealTimeClockResponse: PrintStringAndHexByte("GetRealTimeClockResponse 0x",MessageType);break; case StatusChangeEvent: PrintStringAndHexByte("StatusChangeEvent 0x",MessageType); break; case NvalOperationMsg: PrintStringAndHexByte("NvalOperationMsg 0x",MessageType); break; case NvalOperationResponseMsg: PrintStringAndHexByte("NvalOperationResponseMsg 0x",MessageType); break; case GeneralPurposePhoneMsg: PrintStringAndHexByte("GeneralPurposePhoneMsg 0x",MessageType); break; case GeneralPurposeWatchMsg: PrintStringAndHexByte("GeneralPurposeWatchMsg 0x",MessageType); break; case ButtonEventMsg: PrintStringAndHexByte("ButtonEventMsg 0x",MessageType); break; case WriteBuffer: /*PrintStringAndHexByte("WriteBuffer 0x",MessageType);*/ break; case ConfigureDisplay: PrintStringAndHexByte("ConfigureDisplay 0x",MessageType); break; case ConfigureIdleBufferSize: PrintStringAndHexByte("ConfigureIdleBufferSize 0x",MessageType);break; case UpdateDisplay: PrintStringAndHexByte("UpdateDisplay 0x",MessageType); break; case LoadTemplate: PrintStringAndHexByte("LoadTemplate 0x",MessageType); break; case EnableButtonMsg: PrintStringAndHexByte("EnableButtonMsg 0x",MessageType); break; case DisableButtonMsg: PrintStringAndHexByte("DisableButtonMsg 0x",MessageType); break; case ReadButtonConfigMsg: PrintStringAndHexByte("ReadButtonConfigMsg 0x",MessageType); break; case ReadButtonConfigResponse: PrintStringAndHexByte("ReadButtonConfigResponse 0x",MessageType);break; case BatteryChargeControl: /*PrintStringAndHexByte("BatteryChargeControl 0x",MessageType);*/ break; case IdleUpdate: PrintStringAndHexByte("IdleUpdate 0x",MessageType); break; case WatchDrawnScreenTimeout: PrintStringAndHexByte("WatchDrawnScreenTimeout 0x",MessageType);break; case SplashTimeoutMsg: PrintStringAndHexByte("SplashTimeoutMsg 0x",MessageType); break; case ChangeModeMsg: /*PrintStringAndHexByte("ChangeModeMsg 0x",MessageType);*/ break; case ModeTimeoutMsg: PrintStringAndHexByte("ModeTimeoutMsg 0x",MessageType); break; case WatchStatusMsg: PrintStringAndHexByte("WatchStatusMsg 0x",MessageType); break; case MenuModeMsg: PrintStringAndHexByte("MenuModeMsg 0x",MessageType); break; case BarCode: PrintStringAndHexByte("BarCode 0x",MessageType); break; case ListPairedDevicesMsg: PrintStringAndHexByte("ListPairedDevicesMsg 0x",MessageType); break; case ConnectionStateChangeMsg: PrintStringAndHexByte("ConnectionStateChangeMsg 0x",MessageType); break; case ModifyTimeMsg: PrintStringAndHexByte("ModifyTimeMsg 0x",MessageType); break; case MenuButtonMsg: PrintStringAndHexByte("MenuButtonMsg 0x",MessageType); break; case ToggleSecondsMsg: PrintStringAndHexByte("ToggleSecondsMsg 0x",MessageType); break; case LedChange: PrintStringAndHexByte("LedChange 0x",MessageType); break; case AccelerometerHostMsg: PrintStringAndHexByte("AccelerometerHostMsg 0x",MessageType); break; //case AccelerometerHostMsg: PrintString("-"); break; case AccelerometerEnableMsg: PrintStringAndHexByte("AccelerometerEnableMsg 0x",MessageType); break; case AccelerometerDisableMsg: PrintStringAndHexByte("AccelerometerDisableMsg 0x",MessageType); break; case AccelerometerSendDataMsg: PrintStringAndHexByte("AccelerometerSendDataMsg 0x",MessageType); break; //case AccelerometerSendDataMsg: PrintString("_"); break; case AccelerometerAccessMsg: PrintStringAndHexByte("AccelerometerAccessMsg 0x",MessageType); break; case AccelerometerResponseMsg: PrintStringAndHexByte("AccelerometerResponseMsg 0x",MessageType); break; case AccelerometerSetupMsg: PrintStringAndHexByte("AccelerometerSetupMsg 0x",MessageType); break; case QueryMemoryMsg: PrintStringAndHexByte("QueryMemoryMsg 0x",MessageType); break; case RamTestMsg: PrintStringAndHexByte("RamTestMsg 0x",MessageType); break; case RateTestMsg: PrintStringAndHexByte("RateTestMsg 0x",MessageType); break; case BatteryConfigMsg: PrintStringAndHexByte("BatteryConfigMsg 0x",MessageType); break; case LowBatteryWarningMsgHost: PrintStringAndHexByte("LowBatteryWarningMsgHost 0x",MessageType); break; case LowBatteryBtOffMsgHost: PrintStringAndHexByte("LowBatteryBtOffMsgHost 0x",MessageType); break; case ReadBatteryVoltageMsg: PrintStringAndHexByte("ReadBatteryVoltageMsg 0x",MessageType); break; case ReadBatteryVoltageResponse: PrintStringAndHexByte("ReadBatteryVoltageResponse 0x",MessageType); break; case ReadLightSensorMsg: PrintStringAndHexByte("ReadLightSensorMsg 0x",MessageType); break; case ReadLightSensorResponse: PrintStringAndHexByte("ReadLightSensorResponse 0x",MessageType); break; case LowBatteryWarningMsg: PrintStringAndHexByte("LowBatteryWarningMsg 0x",MessageType); break; case LowBatteryBtOffMsg: PrintStringAndHexByte("LowBatteryBtOffMsg 0x",MessageType); break; case RadioPowerControlMsg: PrintStringAndHexByte("RadioPowerControlMsg 0x",MessageType); break; case AdvertisingDataMsg: PrintStringAndHexByte("AdvertisingDataMsg 0x",MessageType); break; case CallbackTimeoutMsg: /*PrintStringAndHexByte("CallbackTimeoutMsg 0x",MessageType);*/ break; case SetCallbackTimerMsg: /*PrintStringAndHexByte("SetCallbackTimerMsg 0x",MessageType);*/ break; case UpdateConnParameterMsg: PrintStringAndHexByte("UpdateConnParameterMsg 0x",MessageType); break; default: PrintStringAndHexByte("Unknown Message Type 0x",MessageType); break; } }