/** * @brief * @param None * @retval None */ void lcdChangeDisplayStateOfSidebar(uint32_t SidebarId) { GUIDisplayState displayState = GUIContainer_GetDisplayState(SidebarId); if (displayState == GUIDisplayState_NotHidden) { /* Hide this sidebar and display the last active instead */ GUIContainer_Hide(SidebarId); GUIContainer_Draw(prvIdOfLastActiveSidebar); /* Set the last active as active now */ prvIdOfActiveSidebar = prvIdOfLastActiveSidebar; prvIdOfLastActiveSidebar = GUIContainerId_SidebarEmpty; } else if (displayState == GUIDisplayState_Hidden) { /* Hide the active sidebar and display this sidebar instead */ GUIContainer_Hide(prvIdOfActiveSidebar); GUIContainer_Draw(SidebarId); /* Save the old active sidebar and set this sidebar as the new active one */ prvIdOfLastActiveSidebar = prvIdOfActiveSidebar; prvIdOfActiveSidebar = SidebarId; } if (prvIdOfActiveSidebar != GUIContainerId_SidebarSystem) { prvActiveChannelHasChanged = true; } }
/** * @brief * @param Event: The event that caused the callback * @param ButtonId: The button ID that the event happened on * @retval None */ void guiUart1ParityButtonCallback(GUITouchEvent Event, uint32_t ButtonId) { if (Event == GUITouchEvent_Up) { GUIDisplayState displayState = GUIContainer_GetDisplayState(GUIContainerId_PopoutUart1Parity); if (displayState == GUIDisplayState_Hidden) { GUI_SetActiveLayer(GUILayer_1); GUIButton_SetLayer(GUIButtonId_Uart1Parity, GUILayer_1); GUIButton_SetState(GUIButtonId_Uart1Parity, GUIButtonState_Enabled); GUIContainer_Draw(GUIContainerId_PopoutUart1Parity); } else if (displayState == GUIDisplayState_NotHidden) { GUIContainer_Hide(GUIContainerId_PopoutUart1Parity); GUI_SetActiveLayer(GUILayer_0); GUIButton_SetLayer(GUIButtonId_Uart1Parity, GUILayer_0); GUIButton_SetState(GUIButtonId_Uart1Parity, GUIButtonState_Disabled); /* Refresh the main text box */ guiUart1ManageMainTextBox(true); } } }
/** * @brief Initializes the GUI elements * @param None * @retval None */ static void prvInitGuiElements() { GUI_Init(); /* TODO: BUG? We need to clear the active window one time first for some reason */ LCD_ClearActiveWindow(0, 0, 0, 0); /* CAN1 */ guiCan1InitGuiElements(); guiCan1UpdateGuiElementsReadFromSettings(); /* CAN2 */ guiCan2InitGuiElements(); guiCan2UpdateGuiElementsReadFromSettings(); /* UART1 */ guiUart1InitGuiElements(); guiUart1UpdateGuiElementsReadFromSettings(); /* UART2 */ guiUart2InitGuiElements(); guiUart2UpdateGuiElementsReadFromSettings(); /* RS232 */ guiRs232InitGuiElements(); guiRs232UpdateGuiElementsReadFromSettings(); /* GPIO */ guiGpioInitGuiElements(); /* ADC */ guiAdcInitGuiElements(); /* System */ guiSystemInitGuiElements(); /* Text boxes ----------------------------------------------------------------*/ /* Main text box */ prvTextBox.object.id = GUITextBoxId_Main; prvTextBox.object.xPos = 0; prvTextBox.object.yPos = 50; prvTextBox.object.width = 650; prvTextBox.object.height = 400; prvTextBox.textColor = GUI_WHITE; prvTextBox.backgroundColor = LCD_COLOR_BLACK; prvTextBox.textSize = LCDFontEnlarge_1x; prvTextBox.xWritePos = 0; prvTextBox.yWritePos = 0; GUITextBox_Add(&prvTextBox); // /* Clock Text Box */ // prvTextBox.object.id = GUITextBoxId_Clock; // prvTextBox.object.xPos = 650; // prvTextBox.object.yPos = 0; // prvTextBox.object.width = 150; // prvTextBox.object.height = 25; // prvTextBox.textColor = GUI_WHITE; // prvTextBox.backgroundColor = LCD_COLOR_BLACK; // prvTextBox.textSize = LCDFontEnlarge_1x; // prvTextBox.xWritePos = 50; // prvTextBox.yWritePos = 3; // GUITextBox_Add(&prvTextBox); /* Serial Monitor Text Box */ prvTextBox.object.id = GUITextBoxId_SerialMonitor; prvTextBox.object.xPos = 650; prvTextBox.object.yPos = 0; prvTextBox.object.width = 150; prvTextBox.object.height = 25; prvTextBox.textColor = GUI_WHITE; prvTextBox.backgroundColor = LCD_COLOR_BLACK; prvTextBox.textSize = LCDFontEnlarge_1x; prvTextBox.staticText = "Serial Monitor"; GUITextBox_Add(&prvTextBox); /* Temperature Text Box */ prvTextBox.object.id = GUITextBoxId_Temperature; prvTextBox.object.xPos = 651; prvTextBox.object.yPos = 25; prvTextBox.object.width = 149; prvTextBox.object.height = 24; prvTextBox.textColor = GUI_WHITE; prvTextBox.backgroundColor = LCD_COLOR_BLACK; prvTextBox.textSize = LCDFontEnlarge_1x; prvTextBox.xWritePos = 50; prvTextBox.yWritePos = 3; GUITextBox_Add(&prvTextBox); /* Buttons -------------------------------------------------------------------*/ /* Containers ----------------------------------------------------------------*/ /* Main content container */ prvContainer.object.id = GUIContainerId_MainContent; prvContainer.object.xPos = 0; prvContainer.object.yPos = 50; prvContainer.object.width = 650; prvContainer.object.height = 400; prvContainer.object.border = GUIBorder_Right | GUIBorder_Top; prvContainer.object.borderThickness = 1; prvContainer.object.borderColor = GUI_WHITE; prvContainer.contentHideState = GUIHideState_KeepBorders; prvContainer.activePage = guiConfigMAIN_CONTAINER_EMPTY_PAGE; prvContainer.containers[0] = GUIContainer_GetFromId(GUIContainerId_Can2MainContent); prvContainer.containers[1] = GUIContainer_GetFromId(GUIContainerId_Uart1MainContent); prvContainer.containers[2] = GUIContainer_GetFromId(GUIContainerId_Uart2MainContent); prvContainer.containers[3] = GUIContainer_GetFromId(GUIContainerId_Rs232MainContent); prvContainer.containers[4] = GUIContainer_GetFromId(GUIContainerId_Gpio0MainContent); prvContainer.containers[5] = GUIContainer_GetFromId(GUIContainerId_Gpio1MainContent); prvContainer.containers[6] = GUIContainer_GetFromId(GUIContainerId_AdcMainContent); prvContainer.touchCallback = prvMainContentContainerCallback; GUIContainer_Add(&prvContainer); /* Status info container */ prvContainer.object.id = GUIContainerId_Status; prvContainer.object.xPos = 650; prvContainer.object.yPos = 0; prvContainer.object.width = 150; prvContainer.object.height = 50; prvContainer.object.border = GUIBorder_Left | GUIBorder_Bottom; prvContainer.object.borderThickness = 1; prvContainer.object.borderColor = GUI_WHITE; prvContainer.contentHideState = GUIHideState_KeepBorders; // prvContainer.textBoxes[0] = GUITextBox_GetFromId(GUITextBoxId_Clock); prvContainer.textBoxes[0] = GUITextBox_GetFromId(GUITextBoxId_SerialMonitor); prvContainer.textBoxes[1] = GUITextBox_GetFromId(GUITextBoxId_Temperature); GUIContainer_Add(&prvContainer); /* Draw the main container */ GUIContainer_Draw(GUIContainerId_MainContent); /* Draw the status container */ GUIContainer_Draw(GUIContainerId_Status); /* Draw the empty sidebar container */ GUIContainer_Draw(GUIContainerId_SidebarEmpty); prvIdOfActiveSidebar = prvIdOfLastActiveSidebar = GUIContainerId_SidebarEmpty; }