int exec_cfg_command(const char *argument) { const struct cfgmenu *p_menu, *p_item; const void *v; // is it a plugin related command? if (0 == memicmp(argument, "plugin.", 7)) { if (0 == PluginManager_handleBroam(argument+7)) return 0; Menu_Update(MENU_UPD_CONFIG); return 1; } // search the item in above structures v = exec_internal_broam(argument, cfg_main, &p_menu, &p_item); if (NULL == p_item) return 0; // now take care for some item-specific refreshes if (v == &Settings_toolbar.enabled) { if (Settings_toolbar.enabled) beginToolbar(hMainInstance); else endToolbar(hMainInstance); Menu_Update(MENU_UPD_CONFIG); } else if (v == &Settings_menu.sortByExtension || v == &Settings_menu.showHiddenFiles) { PostMessage(BBhwnd, BB_REDRAWGUI, BBRG_MENU|BBRG_FOLDER, 0); } else if (v == &Settings_smartWallpaper) { Desk_Reset(true); } else if (v == &Settings_menu.dropShadows) { Menu_Exit(), Menu_Init(); } else if (v == &Settings_UTF8Encoding) { Workspaces_GetCaptions(); Tray_SetEncoding(); PostMessage(BBhwnd, BB_REDRAWGUI, BBRG_MENU|BBRG_FOLDER, 0); } if (p_menu == cfg_sub_graphics || v == &Settings_UTF8Encoding) PostMessage(BBhwnd, BB_RECONFIGURE, 0, 0); // full reconfigure else PostMessage(BBhwnd, BB_RECONFIGURE, 1, 0); // bypass plugins return 1; }
int main(void) { SystemInit(); // initialize MCU clocks and registers TM_DELAY_Init(); // initialize Delay library TM_DELAY_SetTime(0); // Reset couter for systime Laser_GPIO_Conf(); // configure GPIO for laser control (to be able to enable/disable lasers via software TM_BKPSRAM_Init(); // initialize BKP RAM access library Laser_Update(); // load laser statuses saved in BKP RAM TM_USART_Init(OUTPUT_USART, OUTPUT_USART_PINS, OUTPUT_USART_SPEED); // initialize UART used for collected Data output TM_USART_Init(MENU_USART, MENU_USART_PINS, MENU_USART_SPEED); // initialize UART used for configuration TM_RTC_Init(TM_RTC_ClockSource_External); // initialize RTC library TM_GPIO_Init(GPIOD, GPIO_Pin_8, TM_GPIO_Mode_OUT, TM_GPIO_OType_PP, TM_GPIO_PuPd_NOPULL, TM_GPIO_Speed_Low); // configure GPIO for GSM status indication (RED LED) TM_GPIO_Init(GPIOD, GPIO_Pin_9, TM_GPIO_Mode_OUT, TM_GPIO_OType_PP, TM_GPIO_PuPd_NOPULL, TM_GPIO_Speed_Low); // configure GPIO for GSM status indication (GREEN LED) Laser_ADC_Init(); // initialize ADC peripherals Menu_Init(); // initialize CLI library sfpInit(); // configure GPIO for SFP modules gsm_Init(); // initialize GSM module /* configure and initialize Ethernet hardware and LwIP stack */ ETH_BSP_Config(); // configure ETH GPIOs printf("Ethernet MAC and PHY configured successfully!\n"); LwIP_Init(); // start LwIP stack printf("LwIP stack initialized successfully!\n"); UDP_Server_Init(); // start UDP Server printf("UDP Server initialized successfully!\n"); //start periodic tasks /* GSM Status update "task" */ GSM_Status_Update_Timer = TM_DELAY_TimerCreate(GSM_CHECK_INTERVAL, 1, 1, GSM_Status_Update_Timer_Task, NULL); printf("GSM status check task created!\n"); /* Print results from remote devices "task" */ Print_Results_Timer = TM_DELAY_TimerCreate(DATA_OUT_INTERVAL, 1, 1, Print_Results_Timer_Task, NULL); printf("Print collected data task created!\n"); /* LaserLock status update "task" */ LaserLock_Timer = TM_DELAY_TimerCreate(1000, 1, 1, LaserLock_Timer_Task, NULL); printf("Laser lock check task created!\n"); while (1) { /* CLI menu update */ Menu_Update(); /* check if any packet received */ if (ETH_CheckFrameReceived()) { /* process received ethernet packet */ LwIP_Pkt_Handle(); } /* handle periodic timers for LwIP */ LwIP_Periodic_Handle(LocalTime); /* update laser statuses */ Laser_Update(); /* remove SMS messages which were read by system */ delete_read_gsm_messages(); } }
void Menu() { if(!menuHasInit) { Menu_Init(); // One-time initialization of menu state. menuHasInit = true; } Menu_Input(); Menu_Update(); Menu_Draw(); menuframeCounter++; // Update frame counter for this state, resetting whenever it hits 32. if(menuframeCounter > 32) { menuframeCounter = 0; } }
void MainView_Update(void) { if(Keypad_IsKeyStored()) { switch(Keypad_GetKey()) { case 0x24: // "8" Menu_Down(&menu); break; case 0x44: // "5" Menu_Select(&menu); return; break; case 0x84: // "2" Menu_Up(&menu); break; } Menu_Update(&menu); } }
// show one of the root menus bool MenuMaker_ShowMenu(int id, const char* param) { char buffer[MAX_PATH]; Menu *m; int x, y, n, flags, toggle; static const char * const menu_string_ids[] = { "", "root", "workspaces", "icons", "tasks", "configuration", NULL }; enum { e_lastmenu, e_root, e_workspaces, e_icons, e_tasks, e_configuration, }; x = y = flags = n = toggle = 0; switch (id) { case BB_MENU_BROAM: // @ShowMenu ... while (param[0] == '-') { const char *p = NextToken(buffer, ¶m, NULL); if (0 == strcmp(p, "-at")) { for (;;++param) { if (*param == 'r') flags |= BBMENU_XRIGHT; else if (*param == 'b') flags |= BBMENU_YBOTTOM; else break; } x = atoi(NextToken(buffer, ¶m, " ,")); param += ',' == *param; y = atoi(NextToken(buffer, ¶m, NULL)); flags |= BBMENU_XY; } else if (0 == strcmp(p, "-key")) { flags |= BBMENU_KBD; } else if (0 == strcmp(p, "-toggle")) { toggle = 1; } else if (0 == strcmp(p, "-pinned")) { flags |= BBMENU_PINNED; } else if (0 == strcmp(p, "-ontop")) { flags |= BBMENU_ONTOP; } else if (0 == strcmp(p, "-notitle")) { flags |= BBMENU_NOTITLE; } } break; case BB_MENU_ROOT: // Main menu param = "root"; break; case BB_MENU_TASKS: // Workspaces menu param = "workspaces"; break; case BB_MENU_ICONS: // Iconized tasks menu param = "icons"; break; case BB_MENU_UPDATE: Menu_Update(MENU_UPD_ROOT); Menu_All_Redraw(0); return false; case BB_MENU_SIGNAL: // just to signal e.g. BBSoundFX return true; default: return false; } // If invoked by kbd and the menu currently has focus, // hide it and return if (((flags & BBMENU_KBD) || toggle) && Menu_ToggleCheck(param)) return false; //DWORD t1 = GetTickCount(); switch (get_string_index(param, menu_string_ids)) { case e_root: case e_lastmenu: m = MakeRootMenu("root", menuPath(NULL), default_root_menu, true); break; case e_workspaces: m = MakeDesktopMenu(0, true); break; case e_icons: m = MakeDesktopMenu(1, true); break; case e_tasks: m = MakeDesktopMenu(2, true); break; case e_configuration: m = MakeConfigMenu(true); break; default: n = get_workspace_number(param); // e.g. 'workspace1' if (-1 != n) { m = MakeTaskFolder(n, true); } else if (FindRCFile(buffer, param, NULL)) { m = MakeRootMenu(param, buffer, NULL, true); } else { const char *cmd = get_special_command(¶m, buffer, sizeof buffer); m = MakeFolderMenu(NULL, param, cmd); } break; } if (NULL == m) return false; MenuOption(m, flags, x, y); ShowMenu(m); //dbg_printf("showmenu time %d", GetTickCount() - t1); return true; }
void MainView_Callback(void) { currentView = MAIN; Menu_Update(&menu); }
void USB_TransmitTxData(void) { USB_Transmit(); // output pending bytes in tx buffer if((USB_tx_buffer.Locked == TRUE)) return; if(CheckDelay(USB_AboTimeOut)) { USB_DebugData_Interval = 0; USB_NaviData_Interval = 0; USB_Data3D_Interval = 0; USB_Display_Interval = 0; } if((USB_Request_DebugLabel != 0xFF) && (USB_tx_buffer.Locked == FALSE)) { MKProtocol_CreateSerialFrame(&USB_tx_buffer, 'A', NC_ADDRESS, 2, &USB_Request_DebugLabel, sizeof(USB_Request_DebugLabel), (u8 *) ANALOG_LABEL[USB_Request_DebugLabel], 16); USB_Request_DebugLabel = 0xFF; } else if(USB_ConfirmFrame && (USB_tx_buffer.Locked == FALSE)) { MKProtocol_CreateSerialFrame(&USB_tx_buffer, 'B', NC_ADDRESS, 1, &USB_ConfirmFrame, sizeof(USB_ConfirmFrame)); USB_ConfirmFrame = 0; } else if( (( (USB_DebugData_Interval > 0) && CheckDelay(USB_DebugData_Timer)) || USB_Request_DebugData) && (USB_tx_buffer.Locked == FALSE)) { MKProtocol_CreateSerialFrame(&USB_tx_buffer, 'D', NC_ADDRESS, 1,(u8 *)&DebugOut, sizeof(DebugOut)); USB_DebugData_Timer = SetDelay(USB_DebugData_Interval); USB_Request_DebugData = FALSE; } else if((( (USB_Data3D_Interval > 0) && CheckDelay(USB_Data3D_Timer) ) || USB_Request_Data3D) && (USB_tx_buffer.Locked == FALSE)) { MKProtocol_CreateSerialFrame(&USB_tx_buffer, 'C', NC_ADDRESS, 1,(u8 *)&Data3D, sizeof(Data3D)); USB_Data3D_Timer = SetDelay(USB_Data3D_Interval); USB_Request_Data3D = FALSE; } else if(USB_Request_ExternalControl && (USB_tx_buffer.Locked == FALSE)) { MKProtocol_CreateSerialFrame(&USB_tx_buffer, 'G', NC_ADDRESS, 1, (u8 *)&ExternControl, sizeof(ExternControl)); USB_Request_ExternalControl = FALSE; } else if( (( (USB_Display_Interval > 0) && CheckDelay(USB_Display_Timer)) || USB_Request_Display) && (USB_tx_buffer.Locked == FALSE)) { Menu_Update(USB_DisplayKeys); USB_DisplayKeys = 0; MKProtocol_CreateSerialFrame(&USB_tx_buffer, 'H', NC_ADDRESS, 1, (u8*)DisplayBuff, sizeof(DisplayBuff)); USB_Request_Display = FALSE; } else if(USB_Request_Display1 && (USB_tx_buffer.Locked == FALSE)) { Menu_Update(0); MKProtocol_CreateSerialFrame(&USB_tx_buffer, 'L', NC_ADDRESS, 3, (u8*)&MenuItem, sizeof(MenuItem), (u8*)&MaxMenuItem, sizeof(MaxMenuItem),(u8*)DisplayBuff, sizeof(DisplayBuff)); USB_Request_Display1 = FALSE; } else if(USB_Request_VersionInfo && (USB_tx_buffer.Locked == FALSE)) { MKProtocol_CreateSerialFrame(&USB_tx_buffer, 'V', NC_ADDRESS,1, (u8 *)&UART_VersionInfo, sizeof(UART_VersionInfo)); USB_Request_VersionInfo = FALSE; } else if(( (USB_NaviData_Interval && CheckDelay(USB_NaviData_Timer) ) || USB_Request_NaviData) && (USB_tx_buffer.Locked == FALSE)) { NaviData.Errorcode = ErrorCode; MKProtocol_CreateSerialFrame(&USB_tx_buffer, 'O', NC_ADDRESS,1, (u8 *)&NaviData, sizeof(NaviData)); USB_NaviData_Timer = SetDelay(USB_NaviData_Interval); USB_Request_NaviData = FALSE; } else if(USB_Request_ErrorMessage && (USB_tx_buffer.Locked == FALSE)) { MKProtocol_CreateSerialFrame(&USB_tx_buffer, 'E', NC_ADDRESS, 1, (u8 *)&ErrorMSG, sizeof(ErrorMSG)); USB_Request_ErrorMessage = FALSE; } USB_Transmit(); // output pending bytes in tx buffer }