static void MenuButtonHandler(unsigned char MsgOptions) { tMessage Msg; switch (MsgOptions) { case MENU_BUTTON_OPTION_EXIT: IdleUpdateHandler(); break; case MENU_BUTTON_OPTION_TOGGLE_BLUETOOTH: if (BluetoothState() != Initializing) SendMessage(&Msg, RadioOn() ? TurnRadioOffMsg : TurnRadioOnMsg, MSG_OPT_NONE); break; case MENU_BUTTON_OPTION_DISPLAY_SECONDS: ToggleProperty(PROP_TIME_SECOND); MenuModeHandler(0); break; case MENU_BUTTON_OPTION_TOGGLE_LINK_ALARM: ToggleProperty(PROP_DISABLE_LINK_ALARM); MenuModeHandler(0); break; case MENU_BUTTON_OPTION_INVERT_DISPLAY: ToggleProperty(PROP_INVERT_DISPLAY); MenuModeHandler(0); break; case MENU_BUTTON_OPTION_MENU1: break; case MENU_BUTTON_OPTION_TOGGLE_RST_NMI_PIN: ToggleProperty(PROP_RSTNMI); ConfigResetPin(GetProperty(PROP_RSTNMI)); MenuModeHandler(0); break; case MENU_BUTTON_OPTION_TOGGLE_SERIAL_SBW_GND: ToggleSerialGndSbw(); MenuModeHandler(0); break; case MENU_BUTTON_OPTION_TOGGLE_ENABLE_CHARGING: ToggleCharging(); MenuModeHandler(0); break; case MENU_BUTTON_OPTION_ENTER_BOOTLOADER_MODE: EnterBootloader(); break; default: break; } }
static void EnterShippingMode(void) { /* Turn off the watchdog timer */ WDTCTL = WDTPW + WDTHOLD; #ifdef DIGITAL ClearLcd(); #endif ConfigResetPin(RST_PIN_ENABLED); __delay_cycles(100000); __disable_interrupt(); __no_operation(); DisableRtosTick(); /* * the radio draws more current in reset than it does after * the patch is loaded */ DISABLE_DISPLAY_POWER(); DISABLE_LCD_ENABLE(); BATTERY_CHARGE_DISABLE(); LIGHT_SENSOR_SHUTDOWN(); BATTERY_SENSE_DISABLE(); HARDWARE_CFG_SENSE_DISABLE(); APPLE_POWER_DISABLE(); ACCELEROMETER_INT_DISABLE(); DISABLE_BUTTONS(); #ifdef DIGITAL /* SHIPPING */ ENABLE_SHIPPING_WAKEUP(); #endif SELECT_ACLK(SELA__REFOCLK); SELECT_FLLREF(SELREF__REFOCLK); UCSCTL8 &= ~SMCLKREQEN; UCSCTL6 |= SMCLKOFF; /* disable aclk */ P11SEL &= ~BIT0; XT1_Stop(); /* turn off the regulator */ PMMCTL0_H = PMMPW_H; PMMCTL0_L = PMMREGOFF; __low_power_mode_4(); __no_operation(); __no_operation(); /* should not get here without a power event */ SoftwareReset(); }