Source code for the SX126xDVK1xAS Dev Kit. This example code has only been tested on the Nucleo L476RG

Dependencies:   mbed DmTftLibrary SX126xLib

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 );
             }