Source code for the SX126xDVK1xAS Dev Kit. This example code has only been tested on the Nucleo L476RG
Dependencies: mbed DmTftLibrary SX126xLib
Diff: Display/Menu.cpp
- Revision:
- 1:b96176a4ccb8
- Parent:
- 0:e5420f1a8a1a
- Child:
- 2:8e1b4210df6b
diff -r e5420f1a8a1a -r b96176a4ccb8 Display/Menu.cpp --- a/Display/Menu.cpp Tue Sep 05 08:15:37 2017 +0000 +++ b/Display/Menu.cpp Fri Mar 09 13:28:34 2018 +0000 @@ -33,11 +33,16 @@ extern uint8_t SemtechLogo[]; /*! - * \brief Bitmap of Semtech Logo stored here (copied from a C file). + * \brief Local copy of the Device which is fitted on the HW board */ uint8_t DeviceConnected = 0; /*! + * \brief Local copy of the Matching Frequency fitted on the HW +*/ +uint8_t MatchingFreq = 0; + +/*! * \brief This ticker give the rythme to check X and Y coordinates of activated * touched region (if pressed). CheckScreenFlag keep the status if Touchscreen * has been checked or not, until checked. @@ -64,6 +69,10 @@ BTN0_MENU_TEXT, // have consecutively MENU_TEXT (full large text), BTN0_LABEL_TEXT, // LABEL_TEXT (left side of the button) and VALUE_TEXT BTN0_VALUE_TEXT, // (right side of the button). + BTN0b_BORDER, + BTN0b_MENU_TEXT, + BTN0b_LABEL_TEXT, + BTN0b_VALUE_TEXT, BTN1_BORDER, BTN1_MENU_TEXT, BTN1_LABEL_TEXT, @@ -123,7 +132,7 @@ LINE9_COL1_TEXT, LINE9_COL2_TEXT, }; -#define GRAPH_OBJECTS_COUNT 66 +#define GRAPH_OBJECTS_COUNT 70 GraphObject_t MenuObjects[GRAPH_OBJECTS_COUNT] = { // { Id, Type, Xpos, Ypos, Height, Width, LineW, BackColor, FrontColor, DoFill, FillCol, Source, TouchActive } @@ -135,6 +144,10 @@ { BTN0_MENU_TEXT, GO_TEXT, 15, 48, NULL, 96, 1, BACK_COLOR, MENU_TEXT, false, NULL, NULL, false }, { BTN0_LABEL_TEXT, GO_TEXT, 15, 48, NULL, 32, 1, BACK_COLOR, TEXT_COLOR, false, NULL, NULL, false }, { BTN0_VALUE_TEXT, GO_TEXT, 47, 48, NULL, 64, 1, BACK_COLOR, TEXT_VALUE, false, NULL, NULL, false }, + { BTN0b_BORDER, GO_RECTANGLE, 10, 40, 30, 222, 1, BACK_COLOR, BUTTON_BORDER, false, NULL, NULL, false }, + { BTN0b_MENU_TEXT, GO_TEXT, 15, 48, NULL, 200, 1, BACK_COLOR, MENU_TEXT, false, NULL, NULL, false }, + { BTN0b_LABEL_TEXT,GO_TEXT, 15, 48, NULL, 64, 1, BACK_COLOR, TEXT_COLOR, false, NULL, NULL, false }, + { BTN0b_VALUE_TEXT,GO_TEXT, 79, 48, NULL, 152, 1, BACK_COLOR, TEXT_VALUE, false, NULL, NULL, false }, { BTN1_BORDER, GO_RECTANGLE, 10, 75, 30, 222, 1, BACK_COLOR, BUTTON_BORDER, false, NULL, NULL, false }, { BTN1_MENU_TEXT, GO_TEXT, 15, 83, NULL, 200, 1, BACK_COLOR, MENU_TEXT, false, NULL, NULL, false }, { BTN1_LABEL_TEXT, GO_TEXT, 15, 83, NULL, 64, 1, BACK_COLOR, TEXT_COLOR, false, NULL, NULL, false }, @@ -236,10 +249,10 @@ void RadioSettingsClearError( void ); -void MenuInit( uint8_t deviceConnected ) +void MenuInit( uint8_t deviceConnected, uint8_t matchingFreq ) { DeviceConnected = deviceConnected; - + MatchingFreq = matchingFreq; DisplayDriverInit( ); GraphObjectDraw( &( MenuObjects[PAGE_BORDER] ), NULL, false, false); GraphObjectDraw( &( MenuObjects[TITLE_LINE] ), NULL, false, false); @@ -786,7 +799,7 @@ { if( Eeprom.EepromData.DemoSettings.ModulationType == PACKET_TYPE_LORA ) { - if( Eeprom.EepromData.DemoSettings.PacketParam3 < 64 ) + if( Eeprom.EepromData.DemoSettings.PacketParam3 < 255 ) { Eeprom.EepromData.DemoSettings.PacketParam3 += 1; } @@ -797,7 +810,7 @@ } else // PACKET_TYPE_GFSK { - if( Eeprom.EepromData.DemoSettings.PacketParam6 < 64 ) + if( Eeprom.EepromData.DemoSettings.PacketParam6 < 255 ) { Eeprom.EepromData.DemoSettings.PacketParam6 += 1; } @@ -884,8 +897,7 @@ case PAGE_UTILITIES: if( graphObjectTouched == BTN0_BORDER ) { - EepromSetDefaultSettings( Eeprom.EepromData.DemoSettings.LastDeviceConnected ); - EepromLoadSettings( ( RadioPacketTypes_t )Eeprom.EepromData.DemoSettings.ModulationType ); + EepromEraseCheckSum( ); NVIC_SystemReset( ); } else if( graphObjectTouched == BTN3_BORDER ) @@ -955,35 +967,40 @@ break; case PAGE_RADIO_TEST: - if( graphObjectTouched == BTN1_BORDER ) + if( graphObjectTouched == BTN0b_BORDER ) { Eeprom.EepromData.DemoSettings.HoldDemo = true; MenuSetPage( PAGE_SLEEP_MODE ); } - else if( graphObjectTouched == BTN2_BORDER ) + else if( graphObjectTouched == BTN1_BORDER ) { Eeprom.EepromData.DemoSettings.HoldDemo = true; MenuSetPage( PAGE_STBY_RC_MODE ); } - else if( graphObjectTouched == BTN3_BORDER ) + else if( graphObjectTouched == BTN2_BORDER ) { Eeprom.EepromData.DemoSettings.HoldDemo = true; MenuSetPage( PAGE_STBY_XOSC_MODE ); } - else if( graphObjectTouched == BTN4_BORDER ) + else if( graphObjectTouched == BTN3_BORDER ) { Eeprom.EepromData.DemoSettings.HoldDemo = true; MenuSetPage( PAGE_TX_CW ); } - else if( graphObjectTouched == BTN5_BORDER ) + else if( graphObjectTouched == BTN4_BORDER ) { Eeprom.EepromData.DemoSettings.HoldDemo = true; MenuSetPage( PAGE_CONT_MODULATION ); } + else if( graphObjectTouched == BTN5_BORDER ) + { + Eeprom.EepromData.DemoSettings.HoldDemo = true; + MenuSetPage( PAGE_CONT_RX ); + } else if( graphObjectTouched == BTN6_BORDER ) { Eeprom.EepromData.DemoSettings.HoldDemo = true; - MenuSetPage( PAGE_CONT_RX ); + MenuSetPage( PAGE_RSSI_TEST ); } else if( graphObjectTouched == BTN7_BORDER ) { @@ -992,13 +1009,48 @@ } break; + case PAGE_RSSI_TEST: + if( graphObjectTouched == BTN7_BORDER ) + { + StopDemoApplication( ); + Eeprom.EepromData.DemoSettings.HoldDemo = true; + PreviousPage = PAGE_RADIO_TEST; // clear Previous page + MenuSetPage( PAGE_RADIO_TEST ); + } + else if( graphObjectTouched == BTN8_BORDER ) + { + if( Eeprom.EepromData.DemoSettings.HoldDemo == true ) + { + Eeprom.EepromData.DemoSettings.HoldDemo = false; + StopDemoApplication( ); + ButtonChangeText( BTN8_BORDER, ( uint8_t* )" STOP", NULL ); + RunDemoTestRssi( ); + } + else + { + Eeprom.EepromData.DemoSettings.HoldDemo = true; + StopDemoApplication( ); + ButtonChangeText( BTN8_BORDER, ( uint8_t* )" START", NULL ); + } + } + else if( graphObjectTouched == BTN9_BORDER ) + { + Eeprom.EepromData.DemoSettings.HoldDemo = true; + StopDemoApplication( ); + // "CANCEL" or "OK & SAVE" button of PAGE_RADIO_PARAM use + // PreviousPage to set next page. Speed up the navigation. + PreviousPage = PAGE_RSSI_TEST; + MenuSetPage( PAGE_RADIO_PARAM ); + } + break; + case PAGE_SLEEP_MODE: if( graphObjectTouched == BTN7_BORDER ) { StopDemoApplication( ); Eeprom.EepromData.DemoSettings.HoldDemo = true; - PreviousPage = START_PAGE; // clear Previous page - MenuSetPage( START_PAGE ); + PreviousPage = PAGE_RADIO_TEST; // clear Previous page + MenuSetPage( PAGE_RADIO_TEST ); } else if( graphObjectTouched == BTN8_BORDER ) { @@ -1033,8 +1085,8 @@ { StopDemoApplication( ); Eeprom.EepromData.DemoSettings.HoldDemo = true; - PreviousPage = START_PAGE; // clear Previous page - MenuSetPage( START_PAGE ); + PreviousPage = PAGE_RADIO_TEST; // clear Previous page + MenuSetPage( PAGE_RADIO_TEST ); } else if( graphObjectTouched == BTN8_BORDER ) { @@ -1068,8 +1120,8 @@ { StopDemoApplication( ); Eeprom.EepromData.DemoSettings.HoldDemo = true; - PreviousPage = START_PAGE; // clear Previous page - MenuSetPage( START_PAGE ); + PreviousPage = PAGE_RADIO_TEST; // clear Previous page + MenuSetPage( PAGE_RADIO_TEST ); } else if( graphObjectTouched == BTN8_BORDER ) { @@ -1103,8 +1155,8 @@ { StopDemoApplication( ); Eeprom.EepromData.DemoSettings.HoldDemo = true; - PreviousPage = START_PAGE; // clear Previous page - MenuSetPage( START_PAGE ); + PreviousPage = PAGE_RADIO_TEST; // clear Previous page + MenuSetPage( PAGE_RADIO_TEST ); } else if( graphObjectTouched == BTN8_BORDER ) { @@ -1138,8 +1190,8 @@ { StopDemoApplication( ); Eeprom.EepromData.DemoSettings.HoldDemo = true; - PreviousPage = START_PAGE; // clear Previous page - MenuSetPage( START_PAGE ); + PreviousPage = PAGE_RADIO_TEST; // clear Previous page + MenuSetPage( PAGE_RADIO_TEST ); } else if( graphObjectTouched == BTN8_BORDER ) { @@ -1173,8 +1225,8 @@ { StopDemoApplication( ); Eeprom.EepromData.DemoSettings.HoldDemo = true; - PreviousPage = START_PAGE; // clear Previous page - MenuSetPage( START_PAGE ); + PreviousPage = PAGE_RADIO_TEST; // clear Previous page + MenuSetPage( PAGE_RADIO_TEST ); } else if( graphObjectTouched == BTN8_BORDER ) { @@ -1229,11 +1281,25 @@ case START_PAGE: if( DeviceConnected == SX1261 ) { - DrawText( TITLE_TEXT, ( uint8_t* )" SX1261 Demo Kit", NULL, NULL ); + if( MatchingFreq == 0 ) + { + DrawText( TITLE_TEXT, ( uint8_t* )" SX1261 915MHz Demo Kit", NULL, NULL ); + } + else + { + DrawText( TITLE_TEXT, ( uint8_t* )" SX1261 868MHz Demo Kit", NULL, NULL ); + } } else { - DrawText( TITLE_TEXT, ( uint8_t* )" SX1262 Demo Kit", NULL, NULL ); + if( MatchingFreq == 0 ) + { + DrawText( TITLE_TEXT, ( uint8_t* )" SX1262 915MHz Demo Kit", NULL, NULL ); + } + else + { + DrawText( TITLE_TEXT, ( uint8_t* )" SX1262 868MHz Demo Kit", NULL, NULL ); + } } DisplayDriverDrawLogo( SemtechLogo, 20, 37 ); DrawActiveButton( BTN2_BORDER, ( uint8_t* )"DEMO Ping Pong", NULL ); @@ -1299,7 +1365,7 @@ DrawText( LINE9_COL0_TEXT, ( uint8_t* )"Last SNR", ( uint8_t* )" 0", ( uint8_t* )" " ); DrawActiveButton( BTN0_BORDER, ( uint8_t* )" SLAVE", NULL ); } - DrawActiveButton( BTN7_BORDER, ( uint8_t* )" EXIT", NULL ); + DrawActiveButton( BTN7_BORDER, ( uint8_t* )" BACK", NULL ); DrawActiveButton( BTN8_BORDER, ( uint8_t* )" START", NULL ); DrawActiveButton( BTN9_BORDER, ( uint8_t* )" SETTINGS", NULL ); } @@ -1347,7 +1413,7 @@ DrawText( LINE8_COL0_TEXT, ( uint8_t* )"Last Rssi", ( uint8_t* )" 0", NULL ); DrawText( LINE9_COL0_TEXT, ( uint8_t* )"Last SNR", ( uint8_t* )" 0", NULL ); } - DrawActiveButton( BTN7_BORDER, ( uint8_t* )" EXIT", NULL ); + DrawActiveButton( BTN7_BORDER, ( uint8_t* )" BACK", NULL ); DrawActiveButton( BTN8_BORDER, ( uint8_t* )" START", NULL ); DrawActiveButton( BTN9_BORDER, ( uint8_t* )" SETTINGS", NULL ); } @@ -1416,22 +1482,44 @@ case PAGE_RADIO_TEST: DrawText( TITLE_TEXT, ( uint8_t* )" Radio Test Modes", NULL, NULL ); - DrawActiveButton( BTN1_BORDER, ( uint8_t* )" Sleep Mode", NULL ); - DrawActiveButton( BTN2_BORDER, ( uint8_t* )" Standby RC Mode", NULL ); - DrawActiveButton( BTN3_BORDER, ( uint8_t* )" Standby XOSC Mode", NULL ); - DrawActiveButton( BTN4_BORDER, ( uint8_t* )" Set Tx CW", NULL ); - DrawActiveButton( BTN5_BORDER, ( uint8_t* )" Set Cont. Modulation", NULL ); - DrawActiveButton( BTN6_BORDER, ( uint8_t* )" Set Cont. Rx", NULL ); - DrawActiveButton( BTN7_BORDER, ( uint8_t* )" BACK", NULL ); + DrawActiveButton( BTN0b_BORDER, ( uint8_t* )" Sleep Mode", NULL ); + DrawActiveButton( BTN1_BORDER, ( uint8_t* )" Standby RC Mode", NULL ); + DrawActiveButton( BTN2_BORDER, ( uint8_t* )" Standby XOSC Mode", NULL ); + DrawActiveButton( BTN3_BORDER, ( uint8_t* )" Set Tx CW", NULL ); + DrawActiveButton( BTN4_BORDER, ( uint8_t* )" Set Cont. Modulation", NULL ); + DrawActiveButton( BTN5_BORDER, ( uint8_t* )" Set Cont. Receive", NULL ); + DrawActiveButton( BTN6_BORDER, ( uint8_t* )" Test Rssi ", NULL ); + DrawActiveButton( BTN7_BORDER, ( uint8_t* )" BACK", NULL ); CurrentPage = PAGE_RADIO_TEST; break; + case PAGE_RSSI_TEST: + if( CurrentPage == PAGE_RSSI_TEST ) + { + if( Eeprom.EepromData.DemoSettings.HoldDemo == true ) + { + ButtonChangeText( BTN8_BORDER, ( uint8_t* )" START", NULL ); + } + DrawText( LINE6_COL0_TEXT, NULL, ( uint8_t* )GetMenuDemoRssi( ), NULL ); + } + else + { + DrawText( TITLE_TEXT, ( uint8_t* )" Test Rssi ", NULL, NULL ); + DisplayCurrentRadioParams( PAGE_CONT_RX ); + DrawText( LINE6_COL0_TEXT, ( uint8_t* )"Rssi", ( uint8_t* )" 0.00", NULL ); + DrawActiveButton( BTN7_BORDER, ( uint8_t* )" BACK", NULL ); + DrawActiveButton( BTN8_BORDER, ( uint8_t* )" START", NULL ); + DrawActiveButton( BTN9_BORDER, ( uint8_t* )" SETTINGS", NULL ); + } + CurrentPage = PAGE_RSSI_TEST; + break; + case PAGE_SLEEP_MODE: - if( CurrentPage != PAGE_UTILITIES ) + if( CurrentPage != PAGE_SLEEP_MODE ) { DrawText( TITLE_TEXT, ( uint8_t* )" Sleep Mode", NULL, NULL ); DisplayCurrentRadioParams( PAGE_SLEEP_MODE ); - DrawActiveButton( BTN7_BORDER, ( uint8_t* )" EXIT", NULL ); + DrawActiveButton( BTN7_BORDER, ( uint8_t* )" BACK", NULL ); DrawActiveButton( BTN8_BORDER, ( uint8_t* )" START", NULL ); DrawActiveButton( BTN9_BORDER, ( uint8_t* )" SETTINGS", NULL ); CurrentPage = PAGE_SLEEP_MODE; @@ -1443,7 +1531,7 @@ { DrawText( TITLE_TEXT, ( uint8_t* )" Standby RC Mode", NULL, NULL ); DisplayCurrentRadioParams( PAGE_STBY_RC_MODE ); - DrawActiveButton( BTN7_BORDER, ( uint8_t* )" EXIT", NULL ); + DrawActiveButton( BTN7_BORDER, ( uint8_t* )" BACK", NULL ); DrawActiveButton( BTN8_BORDER, ( uint8_t* )" START", NULL ); DrawActiveButton( BTN9_BORDER, ( uint8_t* )" SETTINGS", NULL ); CurrentPage = PAGE_STBY_RC_MODE; @@ -1455,7 +1543,7 @@ { DrawText( TITLE_TEXT, ( uint8_t* )" Standby XOSC Mode", NULL, NULL ); DisplayCurrentRadioParams( PAGE_STBY_XOSC_MODE ); - DrawActiveButton( BTN7_BORDER, ( uint8_t* )" EXIT", NULL ); + DrawActiveButton( BTN7_BORDER, ( uint8_t* )" BACK", NULL ); DrawActiveButton( BTN8_BORDER, ( uint8_t* )" START", NULL ); DrawActiveButton( BTN9_BORDER, ( uint8_t* )" SETTINGS", NULL ); CurrentPage = PAGE_STBY_XOSC_MODE; @@ -1467,7 +1555,7 @@ { DrawText( TITLE_TEXT, ( uint8_t* )" Set Tx CW", NULL, NULL ); DisplayCurrentRadioParams( PAGE_TX_CW ); - DrawActiveButton( BTN7_BORDER, ( uint8_t* )" EXIT", NULL ); + DrawActiveButton( BTN7_BORDER, ( uint8_t* )" BACK", NULL ); DrawActiveButton( BTN8_BORDER, ( uint8_t* )" START", NULL ); DrawActiveButton( BTN9_BORDER, ( uint8_t* )" SETTINGS", NULL ); CurrentPage = PAGE_TX_CW; @@ -1479,7 +1567,7 @@ { DrawText( TITLE_TEXT, ( uint8_t* )" Set Cont. Modulation", NULL, NULL ); DisplayCurrentRadioParams( PAGE_CONT_MODULATION ); - DrawActiveButton( BTN7_BORDER, ( uint8_t* )" EXIT", NULL ); + DrawActiveButton( BTN7_BORDER, ( uint8_t* )" BACK", NULL ); DrawActiveButton( BTN8_BORDER, ( uint8_t* )" START", NULL ); DrawActiveButton( BTN9_BORDER, ( uint8_t* )" SETTINGS", NULL ); CurrentPage = PAGE_CONT_MODULATION; @@ -1510,7 +1598,7 @@ DrawText( LINE7_COL0_TEXT, ( uint8_t* )"Freq Err", ( uint8_t* )" 0", NULL ); DrawText( LINE8_COL0_TEXT, ( uint8_t* )"Last Rssi", ( uint8_t* )" 0", NULL ); DrawText( LINE9_COL0_TEXT, ( uint8_t* )"Last SNR", ( uint8_t* )" 0", NULL ); - DrawActiveButton( BTN7_BORDER, ( uint8_t* )" EXIT", NULL ); + DrawActiveButton( BTN7_BORDER, ( uint8_t* )" BACK", NULL ); DrawActiveButton( BTN8_BORDER, ( uint8_t* )" START", NULL ); DrawActiveButton( BTN9_BORDER, ( uint8_t* )" SETTINGS", NULL ); }