Beispiel #1
0
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
  }
}
Beispiel #3
0
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
  
  
}
Beispiel #4
0
/*! 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;
  }  
}