diff --git a/hardware/_controller/README.md b/hardware/_controller/README.md index 455a16a..2180dde 100644 --- a/hardware/_controller/README.md +++ b/hardware/_controller/README.md @@ -40,6 +40,7 @@ These libraries are used by the project and can be installed via the Arduino IDE - Button for accessing password selection pop-up to help with password entry over serial - This should be configured via a text file on the sd card - Way to display pinouts stored on micro sd card + - **YOU WILL NEED TO UPDATE THE CODE TO ADD NEW IMAGES** - Max number of files is 20 - Max filename length is 24 (this includes the ```.``` and extension of the file) - The pinouts should be stored as bmp files *up to* 24 bit diff --git a/hardware/_controller/_controller.ino b/hardware/_controller/_controller.ino index 770756b..e14c496 100644 --- a/hardware/_controller/_controller.ino +++ b/hardware/_controller/_controller.ino @@ -105,7 +105,6 @@ void listPrevious(gslc_tsElemRef*); // gslc_tsElemRef* m_SliderDiagrams = NULL; gslc_tsElemRef* m_pElemBatteryLevel= NULL; -gslc_tsElemRef* m_pElemImgPin = NULL; gslc_tsElemRef* m_pElemLsDiagrams = NULL; gslc_tsElemRef* m_pElemRd1152 = NULL; gslc_tsElemRef* m_pElemRd96 = NULL; @@ -115,6 +114,12 @@ gslc_tsElemRef* m_pElemRdUARTA = NULL; gslc_tsElemRef* m_pElemSDInfo = NULL; gslc_tsElemRef* m_pElemStatusText = NULL; gslc_tsElemRef* m_pElemText = NULL; +gslc_tsElemRef* pImgFthM0Bsc = NULL; +gslc_tsElemRef* pImgKbdFw = NULL; +gslc_tsElemRef* pImgPi4Overview = NULL; +gslc_tsElemRef* pImgPi4Pins = NULL; +gslc_tsElemRef* pImgPiOrientation = NULL; +gslc_tsElemRef* pImgRpi = NULL; // // Keyboard map related @@ -365,8 +370,13 @@ void handlerKeyboard() { // Process key press events if (key.state == BBQ10Keyboard::StatePress) { + // Override ALL keyboard handling and hide popup if it's on-screen + if (popupOnScreen) { + gslc_PopupHide(&m_gui); + popupOnScreen = false; + } // Move right through screens - if (key.key == KBD_BTN_4) { + else if (key.key == KBD_BTN_4) { if (popupOnScreen) { // Do nothing -- need to clear popup first } @@ -413,7 +423,29 @@ void handlerKeyboard() { } } else if (key.key == KBD_SW_OK) { - uiKeyBuffer.push(key.key); + if (gslc_GetPageCur(&m_gui) == E_WIRING) { + int16_t selection = gslc_ElemXListboxGetSel(&m_gui, m_pElemLsDiagrams); + char selectionText[MAX_FILE_NAME_CHARS]; + + gslc_ElemXListboxGetItem(&m_gui, m_pElemLsDiagrams, selection, selectionText, MAX_FILE_NAME_CHARS); + #if defined(DBG_LOG) || defined(DBG_TOUCH) || defined(DBG_FRAME_RATE) || defined(DBG_DRAW_IMM) || defined(DBG_DRIVER) + Serial.println(selectionText); + #endif + char fullPath[sizeof(DIRECTORY_PINOUTS) + 1 + MAX_FILE_NAME_CHARS]; + strncat(fullPath, DIRECTORY_PINOUTS, sizeof(DIRECTORY_PINOUTS)); + strncat(fullPath, "/", sizeof(char)); + strncat(fullPath, selectionText, MAX_FILE_NAME_CHARS); + #if defined(DBG_LOG) || defined(DBG_TOUCH) || defined(DBG_FRAME_RATE) || defined(DBG_DRAW_IMM) || defined(DBG_DRIVER) + Serial.println(fullPath); + #endif + // gslc_tsImgRef imageRef = gslc_GetImageFromSD(fullPath, GSLC_IMGREF_FMT_BMP24); + // gslc_ElemSetImage(&m_gui, m_pElemImgPin, imageRef, imageRef); + gslc_PopupShow(&m_gui, E_PG_DIAGRAM, true); + popupOnScreen = true; + } + else { + uiKeyBuffer.push(key.key); + } } // Process keys 'normally' else { diff --git a/hardware/_controller/_controller.prj b/hardware/_controller/_controller.prj index a4fd56f..9ce718e 100644 Binary files a/hardware/_controller/_controller.prj and b/hardware/_controller/_controller.prj differ diff --git a/hardware/_controller/_controller_GSLC.h b/hardware/_controller/_controller_GSLC.h index 7a8f10f..2064fd4 100644 --- a/hardware/_controller/_controller_GSLC.h +++ b/hardware/_controller/_controller_GSLC.h @@ -49,6 +49,12 @@ // Defines for resources // ------------------------------------------------ // +#define IMG_FEATHERM0BSC "/pinouts/feather-m0-bsc.bmp" +#define IMG_KBDFW "/pinouts/kbd-fw.bmp" +#define IMG_PI4OVERVIEW "/pinouts/pi4-overview.bmp" +#define IMG_PI4PINS "/pinouts/pi4-pins.bmp" +#define IMG_PIORIENTATION "/pinouts/pi-orientation.bmp" +#define IMG_RPI "/pinouts/rpi.bmp" // // ------------------------------------------------ @@ -56,11 +62,13 @@ // ------------------------------------------------ // enum {E_PG_BASE,E_PG_MAIN,E_CONF_RPI,E_WIRING,E_SD_CARD,E_PG_DIAGRAM}; -enum {E_ELEM_BATT_LEVEL,E_ELEM_IMG_PIN,E_ELEM_LS_DIA,E_ELEM_RD96 - ,E_ELEM_RD_1152,E_ELEM_RD_UART0,E_ELEM_RD_UART5,E_ELEM_RD_UARTA - ,E_ELEM_STATUS,E_ELEM_TEXT,E_ELEM_TEXT11,E_ELEM_TEXT3 - ,E_ELEM_TEXT4,E_ELEM_TX96,E_ELEM_TX_1152,E_ELEM_TX_SD_INFO - ,E_ELEM_TX_UART1,E_ELEM_TX_UART5,E_SLR_DIAGRAMS,E_STATUS_LINE}; +enum {E_ELEM_BATT_LEVEL,E_ELEM_IMG_FTH,E_ELEM_IMG_FW,E_ELEM_IMG_PI + ,E_ELEM_IMG_PI4A,E_ELEM_IMG_PI4B,E_ELEM_IMG_PIB,E_ELEM_LS_DIA + ,E_ELEM_RD96,E_ELEM_RD_1152,E_ELEM_RD_UART0,E_ELEM_RD_UART5 + ,E_ELEM_RD_UARTA,E_ELEM_STATUS,E_ELEM_TEXT,E_ELEM_TEXT11 + ,E_ELEM_TEXT3,E_ELEM_TEXT4,E_ELEM_TX96,E_ELEM_TX_1152 + ,E_ELEM_TX_SD_INFO,E_ELEM_TX_UART1,E_ELEM_TX_UART5,E_SLR_DIAGRAMS + ,E_STATUS_LINE}; enum {E_GRP_SPD,E_GRP_UART}; // Must use separate enum for fonts with MAX_FONT at end to use gslc_FontSet. enum {E_AO_NOTOMONO8PT7B,MAX_FONT}; @@ -91,7 +99,7 @@ enum {E_AO_NOTOMONO8PT7B,MAX_FONT}; #define MAX_ELEM_SD_CARD 1 // # Elems total on page #define MAX_ELEM_SD_CARD_RAM MAX_ELEM_SD_CARD // # Elems in RAM -#define MAX_ELEM_PG_DIAGRAM 1 // # Elems total on page +#define MAX_ELEM_PG_DIAGRAM 6 // # Elems total on page #define MAX_ELEM_PG_DIAGRAM_RAM MAX_ELEM_PG_DIAGRAM // # Elems in RAM // @@ -143,7 +151,6 @@ char m_acTextboxBuf3[696]; // NRows=12 NCols=58 // extern gslc_tsElemRef* m_SliderDiagrams; extern gslc_tsElemRef* m_pElemBatteryLevel; -extern gslc_tsElemRef* m_pElemImgPin; extern gslc_tsElemRef* m_pElemLsDiagrams; extern gslc_tsElemRef* m_pElemRd1152; extern gslc_tsElemRef* m_pElemRd96; @@ -155,6 +162,12 @@ extern gslc_tsElemRef* m_pElemStatusText; extern gslc_tsElemRef* m_pElemText; extern gslc_tsElemRef* m_pTextSlider; extern gslc_tsElemRef* m_pTextSlider3; +extern gslc_tsElemRef* pImgFthM0Bsc; +extern gslc_tsElemRef* pImgKbdFw; +extern gslc_tsElemRef* pImgPi4Overview; +extern gslc_tsElemRef* pImgPi4Pins; +extern gslc_tsElemRef* pImgPiOrientation; +extern gslc_tsElemRef* pImgRpi; // // Define debug message function @@ -355,11 +368,41 @@ void InitGUIslice_gen() // PAGE: E_PG_DIAGRAM - // Create E_ELEM_IMG_PIN using Image - pElemRef = gslc_ElemCreateImg(&m_gui,E_ELEM_IMG_PIN,E_PG_DIAGRAM,(gslc_tsRect){0,0,320,240}, - gslc_GetImageFromSD(NULL,GSLC_IMGREF_FMT_RAW1)); + // Create E_ELEM_IMG_FTH using Image + pElemRef = gslc_ElemCreateImg(&m_gui,E_ELEM_IMG_FTH,E_PG_DIAGRAM,(gslc_tsRect){0,37,320,166}, + gslc_GetImageFromSD((const char*)IMG_FEATHERM0BSC,GSLC_IMGREF_FMT_BMP24)); gslc_ElemSetFillEn(&m_gui,pElemRef,false); - m_pElemImgPin = pElemRef; + pImgFthM0Bsc = pElemRef; + + // Create E_ELEM_IMG_PI4A using Image + pElemRef = gslc_ElemCreateImg(&m_gui,E_ELEM_IMG_PI4A,E_PG_DIAGRAM,(gslc_tsRect){81,0,156,240}, + gslc_GetImageFromSD((const char*)IMG_PI4OVERVIEW,GSLC_IMGREF_FMT_BMP24)); + gslc_ElemSetFillEn(&m_gui,pElemRef,false); + pImgPi4Overview = pElemRef; + + // Create E_ELEM_IMG_PI4B using Image + pElemRef = gslc_ElemCreateImg(&m_gui,E_ELEM_IMG_PI4B,E_PG_DIAGRAM,(gslc_tsRect){54,0,210,240}, + gslc_GetImageFromSD((const char*)IMG_PI4PINS,GSLC_IMGREF_FMT_BMP24)); + gslc_ElemSetFillEn(&m_gui,pElemRef,false); + pImgPi4Pins = pElemRef; + + // Create E_ELEM_IMG_PIB using Image + pElemRef = gslc_ElemCreateImg(&m_gui,E_ELEM_IMG_PIB,E_PG_DIAGRAM,(gslc_tsRect){80,0,158,240}, + gslc_GetImageFromSD((const char*)IMG_PIORIENTATION,GSLC_IMGREF_FMT_BMP24)); + gslc_ElemSetFillEn(&m_gui,pElemRef,false); + pImgPiOrientation = pElemRef; + + // Create E_ELEM_IMG_PI using Image + pElemRef = gslc_ElemCreateImg(&m_gui,E_ELEM_IMG_PI,E_PG_DIAGRAM,(gslc_tsRect){39,0,241,240}, + gslc_GetImageFromSD((const char*)IMG_RPI,GSLC_IMGREF_FMT_BMP24)); + gslc_ElemSetFillEn(&m_gui,pElemRef,false); + pImgRpi = pElemRef; + + // Create E_ELEM_IMG_FW using Image + pElemRef = gslc_ElemCreateImg(&m_gui,E_ELEM_IMG_FW,E_PG_DIAGRAM,(gslc_tsRect){2,0,317,240}, + gslc_GetImageFromSD((const char*)IMG_KBDFW,GSLC_IMGREF_FMT_BMP24)); + gslc_ElemSetFillEn(&m_gui,pElemRef,false); + pImgKbdFw = pElemRef; // // diff --git a/hardware/_controller/pinouts/feather-m0-bsc.bmp b/hardware/_controller/pinouts/feather-m0-bsc.bmp index 42287a2..f573d6f 100644 Binary files a/hardware/_controller/pinouts/feather-m0-bsc.bmp and b/hardware/_controller/pinouts/feather-m0-bsc.bmp differ diff --git a/hardware/_controller/pinouts/kbd-fw.bmp b/hardware/_controller/pinouts/kbd-fw.bmp index 728f2b9..96983f1 100644 Binary files a/hardware/_controller/pinouts/kbd-fw.bmp and b/hardware/_controller/pinouts/kbd-fw.bmp differ diff --git a/hardware/_controller/pinouts/pi-orientation.bmp b/hardware/_controller/pinouts/pi-orientation.bmp index 00e9f6c..cb1b014 100644 Binary files a/hardware/_controller/pinouts/pi-orientation.bmp and b/hardware/_controller/pinouts/pi-orientation.bmp differ diff --git a/hardware/_controller/pinouts/pi4-overview.bmp b/hardware/_controller/pinouts/pi4-overview.bmp index 9f01a1d..230bd58 100644 Binary files a/hardware/_controller/pinouts/pi4-overview.bmp and b/hardware/_controller/pinouts/pi4-overview.bmp differ diff --git a/hardware/_controller/pinouts/pi4-pins.bmp b/hardware/_controller/pinouts/pi4-pins.bmp index a89bbb1..2f13a83 100644 Binary files a/hardware/_controller/pinouts/pi4-pins.bmp and b/hardware/_controller/pinouts/pi4-pins.bmp differ diff --git a/hardware/_controller/pinouts/rpi.bmp b/hardware/_controller/pinouts/rpi.bmp index c705e54..2c13931 100644 Binary files a/hardware/_controller/pinouts/rpi.bmp and b/hardware/_controller/pinouts/rpi.bmp differ