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

Dependencies:   mbed DmTftLibrary SX126xLib

Committer:
GregCr
Date:
Wed Jul 18 13:34:10 2018 +0000
Revision:
2:8e1b4210df6b
Parent:
1:b96176a4ccb8
added support for sx1268

Who changed what in which revision?

UserRevisionLine numberNew contents of line
GregCr 0:e5420f1a8a1a 1 /*
GregCr 0:e5420f1a8a1a 2 ______ _
GregCr 0:e5420f1a8a1a 3 / _____) _ | |
GregCr 0:e5420f1a8a1a 4 ( (____ _____ ____ _| |_ _____ ____| |__
GregCr 0:e5420f1a8a1a 5 \____ \| ___ | (_ _) ___ |/ ___) _ \
GregCr 0:e5420f1a8a1a 6 _____) ) ____| | | || |_| ____( (___| | | |
GregCr 0:e5420f1a8a1a 7 (______/|_____)_|_|_| \__)_____)\____)_| |_|
GregCr 0:e5420f1a8a1a 8 (C)2016 Semtech
GregCr 0:e5420f1a8a1a 9
GregCr 0:e5420f1a8a1a 10 Description: Display demo menus and manage touch sensor.
GregCr 0:e5420f1a8a1a 11
GregCr 0:e5420f1a8a1a 12 Maintainer: Gregory Cristian & Gilbert Menth
GregCr 0:e5420f1a8a1a 13 */
GregCr 0:e5420f1a8a1a 14
GregCr 0:e5420f1a8a1a 15 #include "mbed.h"
GregCr 0:e5420f1a8a1a 16 #include "Menu.h"
GregCr 0:e5420f1a8a1a 17 #include "DisplayDriver.h"
GregCr 0:e5420f1a8a1a 18 #include "Eeprom.h"
GregCr 0:e5420f1a8a1a 19 #include "DemoApplication.h"
GregCr 0:e5420f1a8a1a 20
GregCr 0:e5420f1a8a1a 21
GregCr 0:e5420f1a8a1a 22 /*!
GregCr 0:e5420f1a8a1a 23 * \brief Maximum character count on the same line with function DrawText
GregCr 0:e5420f1a8a1a 24 * This include needed space for the outline (at the begin and the end of line).
GregCr 0:e5420f1a8a1a 25 * MAX_CHAR_PER_BTN is the same, but for a button.
GregCr 0:e5420f1a8a1a 26 */
GregCr 0:e5420f1a8a1a 27 #define MAX_CHAR_PER_LINE 28
GregCr 0:e5420f1a8a1a 28
GregCr 0:e5420f1a8a1a 29
GregCr 0:e5420f1a8a1a 30 /*!
GregCr 0:e5420f1a8a1a 31 * \brief Bitmap of Semtech Logo stored here (copied from a C file).
GregCr 0:e5420f1a8a1a 32 */
GregCr 0:e5420f1a8a1a 33 extern uint8_t SemtechLogo[];
GregCr 0:e5420f1a8a1a 34
GregCr 0:e5420f1a8a1a 35 /*!
GregCr 1:b96176a4ccb8 36 * \brief Local copy of the Device which is fitted on the HW board
GregCr 0:e5420f1a8a1a 37 */
GregCr 0:e5420f1a8a1a 38 uint8_t DeviceConnected = 0;
GregCr 0:e5420f1a8a1a 39
GregCr 0:e5420f1a8a1a 40 /*!
GregCr 1:b96176a4ccb8 41 * \brief Local copy of the Matching Frequency fitted on the HW
GregCr 1:b96176a4ccb8 42 */
GregCr 1:b96176a4ccb8 43 uint8_t MatchingFreq = 0;
GregCr 1:b96176a4ccb8 44
GregCr 1:b96176a4ccb8 45 /*!
GregCr 0:e5420f1a8a1a 46 * \brief This ticker give the rythme to check X and Y coordinates of activated
GregCr 0:e5420f1a8a1a 47 * touched region (if pressed). CheckScreenFlag keep the status if Touchscreen
GregCr 0:e5420f1a8a1a 48 * has been checked or not, until checked.
GregCr 0:e5420f1a8a1a 49 */
GregCr 0:e5420f1a8a1a 50 Ticker CheckScreenTouch;
GregCr 0:e5420f1a8a1a 51 volatile bool CheckScreenFlag = false;
GregCr 0:e5420f1a8a1a 52
GregCr 0:e5420f1a8a1a 53 /*!
GregCr 0:e5420f1a8a1a 54 * \brief This ticker give the rythme to avoid quick menu change
GregCr 0:e5420f1a8a1a 55 */
GregCr 0:e5420f1a8a1a 56 Ticker DebouncedScreenTouch;
GregCr 0:e5420f1a8a1a 57 volatile bool ScreenBeenDebounced = false;
GregCr 0:e5420f1a8a1a 58
GregCr 0:e5420f1a8a1a 59 /*!
GregCr 0:e5420f1a8a1a 60 * \brief List og graphical object in the application.
GregCr 0:e5420f1a8a1a 61 */
GregCr 0:e5420f1a8a1a 62 enum MenuObjectsId
GregCr 0:e5420f1a8a1a 63 {
GregCr 0:e5420f1a8a1a 64 PAGE_BORDER = 0,
GregCr 0:e5420f1a8a1a 65 TITLE_LINE,
GregCr 0:e5420f1a8a1a 66 TITLE_TEXT,
GregCr 0:e5420f1a8a1a 67 FIRM_LOGO,
GregCr 0:e5420f1a8a1a 68 BTN0_BORDER, // to accord with DrawActiveButton( ), each button should
GregCr 0:e5420f1a8a1a 69 BTN0_MENU_TEXT, // have consecutively MENU_TEXT (full large text),
GregCr 0:e5420f1a8a1a 70 BTN0_LABEL_TEXT, // LABEL_TEXT (left side of the button) and VALUE_TEXT
GregCr 0:e5420f1a8a1a 71 BTN0_VALUE_TEXT, // (right side of the button).
GregCr 1:b96176a4ccb8 72 BTN0b_BORDER,
GregCr 1:b96176a4ccb8 73 BTN0b_MENU_TEXT,
GregCr 1:b96176a4ccb8 74 BTN0b_LABEL_TEXT,
GregCr 1:b96176a4ccb8 75 BTN0b_VALUE_TEXT,
GregCr 0:e5420f1a8a1a 76 BTN1_BORDER,
GregCr 0:e5420f1a8a1a 77 BTN1_MENU_TEXT,
GregCr 0:e5420f1a8a1a 78 BTN1_LABEL_TEXT,
GregCr 0:e5420f1a8a1a 79 BTN1_VALUE_TEXT,
GregCr 0:e5420f1a8a1a 80 BTN2_BORDER,
GregCr 0:e5420f1a8a1a 81 BTN2_MENU_TEXT,
GregCr 0:e5420f1a8a1a 82 BTN2_LABEL_TEXT,
GregCr 0:e5420f1a8a1a 83 BTN2_VALUE_TEXT,
GregCr 0:e5420f1a8a1a 84 BTN3_BORDER,
GregCr 0:e5420f1a8a1a 85 BTN3_MENU_TEXT,
GregCr 0:e5420f1a8a1a 86 BTN3_LABEL_TEXT,
GregCr 0:e5420f1a8a1a 87 BTN3_VALUE_TEXT,
GregCr 0:e5420f1a8a1a 88 BTN4_BORDER,
GregCr 0:e5420f1a8a1a 89 BTN4_MENU_TEXT,
GregCr 0:e5420f1a8a1a 90 BTN4_LABEL_TEXT,
GregCr 0:e5420f1a8a1a 91 BTN4_VALUE_TEXT,
GregCr 0:e5420f1a8a1a 92 BTN5_BORDER,
GregCr 0:e5420f1a8a1a 93 BTN5_MENU_TEXT,
GregCr 0:e5420f1a8a1a 94 BTN5_LABEL_TEXT,
GregCr 0:e5420f1a8a1a 95 BTN5_VALUE_TEXT,
GregCr 0:e5420f1a8a1a 96 BTN6_BORDER,
GregCr 0:e5420f1a8a1a 97 BTN6_MENU_TEXT,
GregCr 0:e5420f1a8a1a 98 BTN6_LABEL_TEXT,
GregCr 0:e5420f1a8a1a 99 BTN6_VALUE_TEXT,
GregCr 0:e5420f1a8a1a 100 BTN7_BORDER,
GregCr 0:e5420f1a8a1a 101 BTN7_MENU_TEXT,
GregCr 0:e5420f1a8a1a 102 BTN8_BORDER,
GregCr 0:e5420f1a8a1a 103 BTN8_MENU_TEXT,
GregCr 0:e5420f1a8a1a 104 BTN9_BORDER,
GregCr 0:e5420f1a8a1a 105 BTN9_MENU_TEXT,
GregCr 0:e5420f1a8a1a 106 BTN9_LABEL_TEXT,
GregCr 0:e5420f1a8a1a 107 BTN9_VALUE_TEXT,
GregCr 0:e5420f1a8a1a 108 LINE0_TEXT,
GregCr 0:e5420f1a8a1a 109 LINE1_TEXT,
GregCr 0:e5420f1a8a1a 110 LINE2_TEXT,
GregCr 0:e5420f1a8a1a 111 LINE3_TEXT,
GregCr 0:e5420f1a8a1a 112 LINE3_COL0_TEXT,
GregCr 0:e5420f1a8a1a 113 LINE3_COL1_TEXT,
GregCr 0:e5420f1a8a1a 114 LINE3_COL2_TEXT,
GregCr 0:e5420f1a8a1a 115 LINE4_TEXT, // to accord with DrawText( ), each text line should
GregCr 0:e5420f1a8a1a 116 LINE4_COL0_TEXT, // have consecutively TEXT (full large text),
GregCr 0:e5420f1a8a1a 117 LINE4_COL1_TEXT, // COL0_TEXT (left side of the line), COL1_TEXT (center
GregCr 0:e5420f1a8a1a 118 LINE4_COL2_TEXT, // region of the line) and COL2_TEXT (right side of the
GregCr 0:e5420f1a8a1a 119 LINE5_COL0_TEXT, // line). COL0..2 are optionals if doesn't exist.
GregCr 0:e5420f1a8a1a 120 LINE5_COL1_TEXT,
GregCr 0:e5420f1a8a1a 121 LINE5_COL2_TEXT,
GregCr 0:e5420f1a8a1a 122 LINE6_COL0_TEXT,
GregCr 0:e5420f1a8a1a 123 LINE6_COL1_TEXT,
GregCr 0:e5420f1a8a1a 124 LINE6_COL2_TEXT,
GregCr 0:e5420f1a8a1a 125 LINE7_COL0_TEXT,
GregCr 0:e5420f1a8a1a 126 LINE7_COL1_TEXT,
GregCr 0:e5420f1a8a1a 127 LINE7_COL2_TEXT,
GregCr 0:e5420f1a8a1a 128 LINE8_COL0_TEXT,
GregCr 0:e5420f1a8a1a 129 LINE8_COL1_TEXT,
GregCr 0:e5420f1a8a1a 130 LINE8_COL2_TEXT,
GregCr 0:e5420f1a8a1a 131 LINE9_COL0_TEXT,
GregCr 0:e5420f1a8a1a 132 LINE9_COL1_TEXT,
GregCr 0:e5420f1a8a1a 133 LINE9_COL2_TEXT,
GregCr 0:e5420f1a8a1a 134 };
GregCr 1:b96176a4ccb8 135 #define GRAPH_OBJECTS_COUNT 70
GregCr 0:e5420f1a8a1a 136 GraphObject_t MenuObjects[GRAPH_OBJECTS_COUNT] =
GregCr 0:e5420f1a8a1a 137 {
GregCr 0:e5420f1a8a1a 138 // { Id, Type, Xpos, Ypos, Height, Width, LineW, BackColor, FrontColor, DoFill, FillCol, Source, TouchActive }
GregCr 0:e5420f1a8a1a 139 { PAGE_BORDER, GO_RECTANGLE, 0, 0, 320, 240, 1, BACK_COLOR, PAGE_COLOR, false, NULL, NULL, false },
GregCr 0:e5420f1a8a1a 140 { TITLE_LINE, GO_LINE, 0, 30, 1, 240, 1, BACK_COLOR, PAGE_COLOR, false, NULL, NULL, false },
GregCr 0:e5420f1a8a1a 141 { TITLE_TEXT, GO_TEXT, 15, 9, NULL, 208, 1, BACK_COLOR, WHITE, false, NULL, NULL, false },
GregCr 0:e5420f1a8a1a 142 { FIRM_LOGO, GO_IMAGE, 20, 37, 95, 215, 1, BACK_COLOR, WHITE, false, NULL, SemtechLogo, false },
GregCr 0:e5420f1a8a1a 143 { BTN0_BORDER, GO_RECTANGLE, 10, 40, 30, 106, 1, BACK_COLOR, BUTTON_BORDER, false, NULL, NULL, false },
GregCr 0:e5420f1a8a1a 144 { BTN0_MENU_TEXT, GO_TEXT, 15, 48, NULL, 96, 1, BACK_COLOR, MENU_TEXT, false, NULL, NULL, false },
GregCr 0:e5420f1a8a1a 145 { BTN0_LABEL_TEXT, GO_TEXT, 15, 48, NULL, 32, 1, BACK_COLOR, TEXT_COLOR, false, NULL, NULL, false },
GregCr 0:e5420f1a8a1a 146 { BTN0_VALUE_TEXT, GO_TEXT, 47, 48, NULL, 64, 1, BACK_COLOR, TEXT_VALUE, false, NULL, NULL, false },
GregCr 1:b96176a4ccb8 147 { BTN0b_BORDER, GO_RECTANGLE, 10, 40, 30, 222, 1, BACK_COLOR, BUTTON_BORDER, false, NULL, NULL, false },
GregCr 1:b96176a4ccb8 148 { BTN0b_MENU_TEXT, GO_TEXT, 15, 48, NULL, 200, 1, BACK_COLOR, MENU_TEXT, false, NULL, NULL, false },
GregCr 1:b96176a4ccb8 149 { BTN0b_LABEL_TEXT,GO_TEXT, 15, 48, NULL, 64, 1, BACK_COLOR, TEXT_COLOR, false, NULL, NULL, false },
GregCr 1:b96176a4ccb8 150 { BTN0b_VALUE_TEXT,GO_TEXT, 79, 48, NULL, 152, 1, BACK_COLOR, TEXT_VALUE, false, NULL, NULL, false },
GregCr 0:e5420f1a8a1a 151 { BTN1_BORDER, GO_RECTANGLE, 10, 75, 30, 222, 1, BACK_COLOR, BUTTON_BORDER, false, NULL, NULL, false },
GregCr 0:e5420f1a8a1a 152 { BTN1_MENU_TEXT, GO_TEXT, 15, 83, NULL, 200, 1, BACK_COLOR, MENU_TEXT, false, NULL, NULL, false },
GregCr 0:e5420f1a8a1a 153 { BTN1_LABEL_TEXT, GO_TEXT, 15, 83, NULL, 64, 1, BACK_COLOR, TEXT_COLOR, false, NULL, NULL, false },
GregCr 0:e5420f1a8a1a 154 { BTN1_VALUE_TEXT, GO_TEXT, 79, 83, NULL, 152, 1, BACK_COLOR, TEXT_VALUE, false, NULL, NULL, false },
GregCr 0:e5420f1a8a1a 155 { BTN2_BORDER, GO_RECTANGLE, 10, 110, 30, 222, 1, BACK_COLOR, BUTTON_BORDER, false, NULL, NULL, false },
GregCr 0:e5420f1a8a1a 156 { BTN2_MENU_TEXT, GO_TEXT, 15, 118, NULL, 200, 1, BACK_COLOR, MENU_TEXT, false, NULL, NULL, false },
GregCr 0:e5420f1a8a1a 157 { BTN2_LABEL_TEXT, GO_TEXT, 15, 118, NULL, 64, 1, BACK_COLOR, TEXT_COLOR, false, NULL, NULL, false },
GregCr 0:e5420f1a8a1a 158 { BTN2_VALUE_TEXT, GO_TEXT, 79, 118, NULL, 152, 1, BACK_COLOR, TEXT_VALUE, false, NULL, NULL, false },
GregCr 0:e5420f1a8a1a 159 { BTN3_BORDER, GO_RECTANGLE, 10, 145, 30, 222, 1, BACK_COLOR, BUTTON_BORDER, false, NULL, NULL, false },
GregCr 0:e5420f1a8a1a 160 { BTN3_MENU_TEXT, GO_TEXT, 15, 153, NULL, 200, 1, BACK_COLOR, MENU_TEXT, false, NULL, NULL, false },
GregCr 0:e5420f1a8a1a 161 { BTN3_LABEL_TEXT, GO_TEXT, 15, 153, NULL, 64, 1, BACK_COLOR, TEXT_COLOR, false, NULL, NULL, false },
GregCr 0:e5420f1a8a1a 162 { BTN3_VALUE_TEXT, GO_TEXT, 79, 153, NULL, 152, 1, BACK_COLOR, TEXT_VALUE, false, NULL, NULL, false },
GregCr 0:e5420f1a8a1a 163 { BTN4_BORDER, GO_RECTANGLE, 10, 180, 30, 222, 1, BACK_COLOR, BUTTON_BORDER, false, NULL, NULL, false },
GregCr 0:e5420f1a8a1a 164 { BTN4_MENU_TEXT, GO_TEXT, 15, 188, NULL, 200, 1, BACK_COLOR, MENU_TEXT, false, NULL, NULL, false },
GregCr 0:e5420f1a8a1a 165 { BTN4_LABEL_TEXT, GO_TEXT, 15, 188, NULL, 64, 1, BACK_COLOR, TEXT_COLOR, false, NULL, NULL, false },
GregCr 0:e5420f1a8a1a 166 { BTN4_VALUE_TEXT, GO_TEXT, 79, 188, NULL, 152, 1, BACK_COLOR, TEXT_VALUE, false, NULL, NULL, false },
GregCr 0:e5420f1a8a1a 167 { BTN5_BORDER, GO_RECTANGLE, 10, 215, 30, 222, 1, BACK_COLOR, BUTTON_BORDER, false, NULL, NULL, false },
GregCr 0:e5420f1a8a1a 168 { BTN5_MENU_TEXT, GO_TEXT, 15, 223, NULL, 200, 1, BACK_COLOR, MENU_TEXT, false, NULL, NULL, false },
GregCr 0:e5420f1a8a1a 169 { BTN5_LABEL_TEXT, GO_TEXT, 15, 223, NULL, 64, 1, BACK_COLOR, TEXT_COLOR, false, NULL, NULL, false },
GregCr 0:e5420f1a8a1a 170 { BTN5_VALUE_TEXT, GO_TEXT, 79, 223, NULL, 152, 1, BACK_COLOR, TEXT_VALUE, false, NULL, NULL, false },
GregCr 0:e5420f1a8a1a 171 { BTN6_BORDER, GO_RECTANGLE, 10, 250, 30, 222, 1, BACK_COLOR, BUTTON_BORDER, false, NULL, NULL, false },
GregCr 0:e5420f1a8a1a 172 { BTN6_MENU_TEXT, GO_TEXT, 15, 258, NULL, 200, 1, BACK_COLOR, MENU_TEXT, false, NULL, NULL, false },
GregCr 0:e5420f1a8a1a 173 { BTN6_LABEL_TEXT, GO_TEXT, 15, 258, NULL, 64, 1, BACK_COLOR, TEXT_COLOR, false, NULL, NULL, false },
GregCr 0:e5420f1a8a1a 174 { BTN6_VALUE_TEXT, GO_TEXT, 79, 258, NULL, 152, 1, BACK_COLOR, TEXT_VALUE, false, NULL, NULL, false },
GregCr 0:e5420f1a8a1a 175 { BTN7_BORDER, GO_RECTANGLE, 10, 285, 30, 106, 1, BACK_COLOR, BUTTON_BORDER, false, NULL, NULL, false },
GregCr 0:e5420f1a8a1a 176 { BTN7_MENU_TEXT, GO_TEXT, 15, 293, NULL, 96, 1, BACK_COLOR, MENU_TEXT, false, NULL, NULL, false },
GregCr 0:e5420f1a8a1a 177 { BTN8_BORDER, GO_RECTANGLE, 125, 285, 30, 107, 1, BACK_COLOR, BUTTON_BORDER, false, NULL, NULL, false },
GregCr 0:e5420f1a8a1a 178 { BTN8_MENU_TEXT, GO_TEXT, 130, 293, NULL, 96, 1, BACK_COLOR, MENU_TEXT, false, NULL, NULL, false },
GregCr 0:e5420f1a8a1a 179 { BTN9_BORDER, GO_RECTANGLE, 125, 40, 30, 107, 1, BACK_COLOR, BUTTON_BORDER, false, NULL, NULL, false },
GregCr 0:e5420f1a8a1a 180 { BTN9_MENU_TEXT, GO_TEXT, 130, 48, NULL, 96, 1, BACK_COLOR, MENU_TEXT, false, NULL, NULL, false },
GregCr 0:e5420f1a8a1a 181 { BTN9_LABEL_TEXT, GO_TEXT, 130, 48, NULL, 32, 1, BACK_COLOR, TEXT_COLOR, false, NULL, NULL, false },
GregCr 0:e5420f1a8a1a 182 { BTN9_VALUE_TEXT, GO_TEXT, 162, 48, NULL, 64, 1, BACK_COLOR, TEXT_VALUE, false, NULL, NULL, false },
GregCr 0:e5420f1a8a1a 183 { LINE0_TEXT, GO_TEXT, 5, 80, NULL, 232, 1, BACK_COLOR, TEXT_COLOR, false, NULL, NULL, false },
GregCr 0:e5420f1a8a1a 184 { LINE1_TEXT, GO_TEXT, 5, 100, NULL, 232, 1, BACK_COLOR, TEXT_COLOR, false, NULL, NULL, false },
GregCr 0:e5420f1a8a1a 185 { LINE2_TEXT, GO_TEXT, 5, 120, NULL, 232, 1, BACK_COLOR, TEXT_COLOR, false, NULL, NULL, false },
GregCr 0:e5420f1a8a1a 186 { LINE3_TEXT, GO_TEXT, 5, 140, NULL, 232, 1, BACK_COLOR, TEXT_COLOR, false, NULL, NULL, false },
GregCr 0:e5420f1a8a1a 187 { LINE3_COL0_TEXT, GO_TEXT, 5, 140, NULL, 104, 1, BACK_COLOR, TEXT_COLOR, false, NULL, NULL, false },
GregCr 0:e5420f1a8a1a 188 { LINE3_COL1_TEXT, GO_TEXT, 110, 140, NULL, 56, 1, BACK_COLOR, TEXT_COLOR, false, NULL, NULL, false },
GregCr 0:e5420f1a8a1a 189 { LINE3_COL2_TEXT, GO_TEXT, 170, 140, NULL, 64, 1, BACK_COLOR, TEXT_COLOR, false, NULL, NULL, false },
GregCr 0:e5420f1a8a1a 190 { LINE4_TEXT, GO_TEXT, 5, 160, NULL, 232, 1, BACK_COLOR, TEXT_COLOR, false, NULL, NULL, false },
GregCr 0:e5420f1a8a1a 191 { LINE4_COL0_TEXT, GO_TEXT, 5, 160, NULL, 104, 1, BACK_COLOR, TEXT_COLOR, false, NULL, NULL, false },
GregCr 0:e5420f1a8a1a 192 { LINE4_COL1_TEXT, GO_TEXT, 110, 160, NULL, 56, 1, BACK_COLOR, TEXT_VALUE, false, NULL, NULL, false },
GregCr 0:e5420f1a8a1a 193 { LINE4_COL2_TEXT, GO_TEXT, 170, 160, NULL, 64, 1, BACK_COLOR, TEXT_VALUE, false, NULL, NULL, false },
GregCr 0:e5420f1a8a1a 194 { LINE5_COL0_TEXT, GO_TEXT, 5, 180, NULL, 104, 1, BACK_COLOR, TEXT_COLOR, false, NULL, NULL, false },
GregCr 0:e5420f1a8a1a 195 { LINE5_COL1_TEXT, GO_TEXT, 110, 180, NULL, 56, 1, BACK_COLOR, TEXT_VALUE, false, NULL, NULL, false },
GregCr 0:e5420f1a8a1a 196 { LINE5_COL2_TEXT, GO_TEXT, 170, 180, NULL, 64, 1, BACK_COLOR, TEXT_VALUE, false, NULL, NULL, false },
GregCr 0:e5420f1a8a1a 197 { LINE6_COL0_TEXT, GO_TEXT, 5, 200, NULL, 104, 1, BACK_COLOR, TEXT_COLOR, false, NULL, NULL, false },
GregCr 0:e5420f1a8a1a 198 { LINE6_COL1_TEXT, GO_TEXT, 110, 200, NULL, 56, 1, BACK_COLOR, TEXT_VALUE, false, NULL, NULL, false },
GregCr 0:e5420f1a8a1a 199 { LINE6_COL2_TEXT, GO_TEXT, 170, 200, NULL, 64, 1, BACK_COLOR, TEXT_VALUE, false, NULL, NULL, false },
GregCr 0:e5420f1a8a1a 200 { LINE7_COL0_TEXT, GO_TEXT, 5, 220, NULL, 104, 1, BACK_COLOR, TEXT_COLOR, false, NULL, NULL, false },
GregCr 0:e5420f1a8a1a 201 { LINE7_COL1_TEXT, GO_TEXT, 110, 220, NULL, 56, 1, BACK_COLOR, TEXT_VALUE, false, NULL, NULL, false },
GregCr 0:e5420f1a8a1a 202 { LINE7_COL2_TEXT, GO_TEXT, 170, 220, NULL, 64, 1, BACK_COLOR, TEXT_VALUE, false, NULL, NULL, false },
GregCr 0:e5420f1a8a1a 203 { LINE8_COL0_TEXT, GO_TEXT, 5, 240, NULL, 104, 1, BACK_COLOR, TEXT_COLOR, false, NULL, NULL, false },
GregCr 0:e5420f1a8a1a 204 { LINE8_COL1_TEXT, GO_TEXT, 110, 240, NULL, 56, 1, BACK_COLOR, TEXT_VALUE, false, NULL, NULL, false },
GregCr 0:e5420f1a8a1a 205 { LINE8_COL2_TEXT, GO_TEXT, 170, 240, NULL, 64, 1, BACK_COLOR, TEXT_VALUE, false, NULL, NULL, false },
GregCr 0:e5420f1a8a1a 206 { LINE9_COL0_TEXT, GO_TEXT, 5, 260, NULL, 104, 1, BACK_COLOR, TEXT_COLOR, false, NULL, NULL, false },
GregCr 0:e5420f1a8a1a 207 { LINE9_COL1_TEXT, GO_TEXT, 110, 260, NULL, 56, 1, BACK_COLOR, TEXT_VALUE, false, NULL, NULL, false },
GregCr 0:e5420f1a8a1a 208 { LINE9_COL2_TEXT, GO_TEXT, 170, 260, NULL, 64, 1, BACK_COLOR, TEXT_VALUE, false, NULL, NULL, false }
GregCr 0:e5420f1a8a1a 209 };
GregCr 0:e5420f1a8a1a 210
GregCr 0:e5420f1a8a1a 211 /*!
GregCr 0:e5420f1a8a1a 212 * \brief DrawText( ) need char* to display a text. It can display until
GregCr 0:e5420f1a8a1a 213 * 3 different texts on the same line. To avoid recursive use of the same
GregCr 0:e5420f1a8a1a 214 * ressource, 3 temporary string are declared.
GregCr 0:e5420f1a8a1a 215 */
GregCr 0:e5420f1a8a1a 216 char StringText[MAX_CHAR_PER_LINE + 1]; // don't forget the /0 (end of string)
GregCr 0:e5420f1a8a1a 217 char StringText2[MAX_CHAR_PER_LINE + 1];
GregCr 0:e5420f1a8a1a 218 char StringText3[MAX_CHAR_PER_LINE + 1];
GregCr 0:e5420f1a8a1a 219
GregCr 0:e5420f1a8a1a 220 /*!
GregCr 0:e5420f1a8a1a 221 * \brief CurrentPage store current displayed page (cf.: list of availlable
GregCr 0:e5420f1a8a1a 222 * pages in Menu.h). PeviousPage is used only when navigate through "Radio
GregCr 0:e5420f1a8a1a 223 * Config" to be able to restore the page before "Radio Congig", witch can be
GregCr 0:e5420f1a8a1a 224 * PingPong, PER or START_PAGE. The goal is to speed menu navigation.
GregCr 0:e5420f1a8a1a 225 */
GregCr 0:e5420f1a8a1a 226 static uint8_t CurrentPage = START_PAGE;
GregCr 0:e5420f1a8a1a 227 static uint8_t PreviousPage = START_PAGE;
GregCr 0:e5420f1a8a1a 228
GregCr 0:e5420f1a8a1a 229 /*!
GregCr 0:e5420f1a8a1a 230 * \brief In "Radio Config Freq", we can update the central frequency. To avoid
GregCr 0:e5420f1a8a1a 231 * keyboard, we use (+) et (-) keys. CurrentFreqBase is the offset to be applied
GregCr 0:e5420f1a8a1a 232 * when we increase or decrease the frequency.
GregCr 0:e5420f1a8a1a 233 */
GregCr 0:e5420f1a8a1a 234 static FreqBase CurrentFreqBase = FB100K;
GregCr 0:e5420f1a8a1a 235
GregCr 0:e5420f1a8a1a 236 /*!
GregCr 0:e5420f1a8a1a 237 * \brief If radio params does't respect bandwidth > fdev + bitrate/2, the radio
GregCr 0:e5420f1a8a1a 238 * couldn't make a proper modulation. Parameters will be printed in red.
GregCr 0:e5420f1a8a1a 239 */
GregCr 0:e5420f1a8a1a 240 static bool ErrorParam = false;
GregCr 0:e5420f1a8a1a 241
GregCr 0:e5420f1a8a1a 242
GregCr 0:e5420f1a8a1a 243 void CheckScreen( void );
GregCr 0:e5420f1a8a1a 244 void DebouncedScreen( void );
GregCr 0:e5420f1a8a1a 245 void DrawActiveButton( uint8_t buttonId, uint8_t* text1, uint8_t* text2 );
GregCr 0:e5420f1a8a1a 246 void ButtonChangeText( uint8_t buttonId, uint8_t* text1, uint8_t* text2 );
GregCr 0:e5420f1a8a1a 247 void DrawText( uint8_t lineId, uint8_t* text0, uint8_t* text1, uint8_t* text2 );
GregCr 0:e5420f1a8a1a 248 void RadioSettingsCheckError( void );
GregCr 0:e5420f1a8a1a 249 void RadioSettingsClearError( void );
GregCr 0:e5420f1a8a1a 250
GregCr 0:e5420f1a8a1a 251
GregCr 1:b96176a4ccb8 252 void MenuInit( uint8_t deviceConnected, uint8_t matchingFreq )
GregCr 0:e5420f1a8a1a 253 {
GregCr 0:e5420f1a8a1a 254 DeviceConnected = deviceConnected;
GregCr 1:b96176a4ccb8 255 MatchingFreq = matchingFreq;
GregCr 0:e5420f1a8a1a 256 DisplayDriverInit( );
GregCr 0:e5420f1a8a1a 257 GraphObjectDraw( &( MenuObjects[PAGE_BORDER] ), NULL, false, false);
GregCr 0:e5420f1a8a1a 258 GraphObjectDraw( &( MenuObjects[TITLE_LINE] ), NULL, false, false);
GregCr 0:e5420f1a8a1a 259 MenuSetPage( START_PAGE );
GregCr 0:e5420f1a8a1a 260 CheckScreenTouch.attach_us( &CheckScreen, 100000 ); // every 100 ms
GregCr 0:e5420f1a8a1a 261 }
GregCr 0:e5420f1a8a1a 262
GregCr 0:e5420f1a8a1a 263 uint8_t MenuHandler( bool refresh )
GregCr 0:e5420f1a8a1a 264 {
GregCr 0:e5420f1a8a1a 265 uint8_t graphObjectTouched = 0xFF;
GregCr 0:e5420f1a8a1a 266
GregCr 0:e5420f1a8a1a 267 if( CheckScreenFlag == true )
GregCr 0:e5420f1a8a1a 268 {
GregCr 0:e5420f1a8a1a 269 if( ScreenBeenDebounced == false )
GregCr 0:e5420f1a8a1a 270 {
GregCr 0:e5420f1a8a1a 271 ScreenBeenDebounced = true;
GregCr 0:e5420f1a8a1a 272 CheckScreenFlag = false;
GregCr 0:e5420f1a8a1a 273 DebouncedScreenTouch.attach_us( &DebouncedScreen, 150000 ); // every 150 ms
GregCr 0:e5420f1a8a1a 274 GraphObjectTouched( MenuObjects, GRAPH_OBJECTS_COUNT, &graphObjectTouched );
GregCr 0:e5420f1a8a1a 275 }
GregCr 0:e5420f1a8a1a 276 }
GregCr 0:e5420f1a8a1a 277
GregCr 0:e5420f1a8a1a 278 if( ( refresh == true ) && ( graphObjectTouched == 0xFF ) )
GregCr 0:e5420f1a8a1a 279 {
GregCr 0:e5420f1a8a1a 280 MenuSetPage( CurrentPage );
GregCr 0:e5420f1a8a1a 281 }
GregCr 0:e5420f1a8a1a 282 else if( ( graphObjectTouched != 0xFF ) || ( refresh == true ) )
GregCr 0:e5420f1a8a1a 283 {
GregCr 0:e5420f1a8a1a 284 switch( CurrentPage )
GregCr 0:e5420f1a8a1a 285 {
GregCr 0:e5420f1a8a1a 286 case START_PAGE:
GregCr 0:e5420f1a8a1a 287 if( graphObjectTouched == BTN2_BORDER )
GregCr 0:e5420f1a8a1a 288 {
GregCr 0:e5420f1a8a1a 289 Eeprom.EepromData.DemoSettings.HoldDemo = true;
GregCr 0:e5420f1a8a1a 290 EepromLoadSettings( ( RadioPacketTypes_t )Eeprom.EepromData.DemoSettings.ModulationType );
GregCr 0:e5420f1a8a1a 291 MenuSetPage( PAGE_PING_PONG );
GregCr 0:e5420f1a8a1a 292 }
GregCr 0:e5420f1a8a1a 293 else if( graphObjectTouched == BTN3_BORDER )
GregCr 0:e5420f1a8a1a 294 {
GregCr 0:e5420f1a8a1a 295 Eeprom.EepromData.DemoSettings.HoldDemo = true;
GregCr 0:e5420f1a8a1a 296 EepromLoadSettings( ( RadioPacketTypes_t )Eeprom.EepromData.DemoSettings.ModulationType );
GregCr 0:e5420f1a8a1a 297 MenuSetPage( PAGE_PER );
GregCr 0:e5420f1a8a1a 298 }
GregCr 0:e5420f1a8a1a 299 else if( graphObjectTouched == BTN4_BORDER )
GregCr 0:e5420f1a8a1a 300 {
GregCr 0:e5420f1a8a1a 301 EepromLoadSettings( ( RadioPacketTypes_t )Eeprom.EepromData.DemoSettings.ModulationType );
GregCr 0:e5420f1a8a1a 302 MenuSetPage( PAGE_RADIO_TEST );
GregCr 0:e5420f1a8a1a 303 }
GregCr 0:e5420f1a8a1a 304 else if( graphObjectTouched == BTN5_BORDER )
GregCr 0:e5420f1a8a1a 305 {
GregCr 0:e5420f1a8a1a 306 MenuSetPage( PAGE_RADIO_PARAM );
GregCr 0:e5420f1a8a1a 307 }
GregCr 0:e5420f1a8a1a 308 else if( graphObjectTouched == BTN6_BORDER )
GregCr 0:e5420f1a8a1a 309 {
GregCr 0:e5420f1a8a1a 310 MenuSetPage( PAGE_UTILITIES );
GregCr 0:e5420f1a8a1a 311 }
GregCr 0:e5420f1a8a1a 312 break;
GregCr 0:e5420f1a8a1a 313
GregCr 0:e5420f1a8a1a 314 case PAGE_PING_PONG:
GregCr 0:e5420f1a8a1a 315 if( graphObjectTouched == BTN0_BORDER )
GregCr 0:e5420f1a8a1a 316 {
GregCr 0:e5420f1a8a1a 317 ButtonChangeText( BTN8_BORDER, ( uint8_t* )" START", NULL );
GregCr 0:e5420f1a8a1a 318 if( Eeprom.EepromData.DemoSettings.Entity == MASTER )
GregCr 0:e5420f1a8a1a 319 {
GregCr 0:e5420f1a8a1a 320 Eeprom.EepromData.DemoSettings.Entity = SLAVE;
GregCr 0:e5420f1a8a1a 321 ButtonChangeText( BTN0_BORDER, ( uint8_t* )" SLAVE", NULL );
GregCr 0:e5420f1a8a1a 322 DrawText( LINE3_COL0_TEXT, NULL, NULL, ( uint8_t* )" " );
GregCr 0:e5420f1a8a1a 323 DrawText( LINE4_COL0_TEXT, NULL, NULL, ( uint8_t* )" " );
GregCr 0:e5420f1a8a1a 324 DrawText( LINE5_COL0_TEXT, NULL, NULL, ( uint8_t* )" " );
GregCr 0:e5420f1a8a1a 325 DrawText( LINE6_COL0_TEXT, NULL, NULL, ( uint8_t* )" " );
GregCr 0:e5420f1a8a1a 326 DrawText( LINE7_COL0_TEXT, NULL, NULL, ( uint8_t* )" " );
GregCr 0:e5420f1a8a1a 327 DrawText( LINE8_COL0_TEXT, NULL, NULL, ( uint8_t* )" " );
GregCr 0:e5420f1a8a1a 328 DrawText( LINE9_COL0_TEXT, NULL, NULL, ( uint8_t* )" " );
GregCr 0:e5420f1a8a1a 329 }
GregCr 0:e5420f1a8a1a 330 else
GregCr 0:e5420f1a8a1a 331 {
GregCr 0:e5420f1a8a1a 332 Eeprom.EepromData.DemoSettings.Entity = MASTER;
GregCr 0:e5420f1a8a1a 333 ButtonChangeText( BTN0_BORDER, ( uint8_t* )" MASTER", NULL );
GregCr 0:e5420f1a8a1a 334 DrawText( LINE3_COL0_TEXT, NULL, NULL, ( uint8_t* )"MASTER" );
GregCr 0:e5420f1a8a1a 335 }
GregCr 0:e5420f1a8a1a 336 Eeprom.EepromData.DemoSettings.HoldDemo = true;
GregCr 0:e5420f1a8a1a 337 EepromSaveSettings( DEMO_SETTINGS );
GregCr 0:e5420f1a8a1a 338 MenuSetPage( PAGE_PING_PONG );
GregCr 0:e5420f1a8a1a 339 }
GregCr 0:e5420f1a8a1a 340 else if( graphObjectTouched == BTN7_BORDER )
GregCr 0:e5420f1a8a1a 341 {
GregCr 0:e5420f1a8a1a 342 StopDemoApplication( );
GregCr 0:e5420f1a8a1a 343 Eeprom.EepromData.DemoSettings.HoldDemo = true;
GregCr 0:e5420f1a8a1a 344 PreviousPage = START_PAGE; // clear Previous page
GregCr 0:e5420f1a8a1a 345 MenuSetPage( START_PAGE );
GregCr 0:e5420f1a8a1a 346 }
GregCr 0:e5420f1a8a1a 347 else if( graphObjectTouched == BTN8_BORDER )
GregCr 0:e5420f1a8a1a 348 {
GregCr 0:e5420f1a8a1a 349 if( Eeprom.EepromData.DemoSettings.HoldDemo == true )
GregCr 0:e5420f1a8a1a 350 {
GregCr 0:e5420f1a8a1a 351 Eeprom.EepromData.DemoSettings.HoldDemo = false;
GregCr 0:e5420f1a8a1a 352 ButtonChangeText( BTN8_BORDER, ( uint8_t* )" STOP", NULL );
GregCr 0:e5420f1a8a1a 353 Eeprom.EepromData.DemoSettings.CntPacketTx = 0;
GregCr 0:e5420f1a8a1a 354 Eeprom.EepromData.DemoSettings.CntPacketRxOK = 0;
GregCr 0:e5420f1a8a1a 355 Eeprom.EepromData.DemoSettings.CntPacketRxOKSlave = 0;
GregCr 0:e5420f1a8a1a 356 Eeprom.EepromData.DemoSettings.CntPacketRxKO = 0;
GregCr 0:e5420f1a8a1a 357 Eeprom.EepromData.DemoSettings.CntPacketRxKOSlave = 0;
GregCr 0:e5420f1a8a1a 358 Eeprom.EepromData.DemoSettings.RxTimeOutCount = 0;
GregCr 0:e5420f1a8a1a 359 StopDemoApplication( );
GregCr 0:e5420f1a8a1a 360 RunDemoApplicationPingPong( );
GregCr 0:e5420f1a8a1a 361 }
GregCr 0:e5420f1a8a1a 362 else
GregCr 0:e5420f1a8a1a 363 {
GregCr 0:e5420f1a8a1a 364 Eeprom.EepromData.DemoSettings.HoldDemo = true;
GregCr 0:e5420f1a8a1a 365 ButtonChangeText( BTN8_BORDER, ( uint8_t* )" START", NULL );
GregCr 0:e5420f1a8a1a 366 StopDemoApplication( );
GregCr 0:e5420f1a8a1a 367 wait_ms( 200 ); // debouncing of the touch screen
GregCr 0:e5420f1a8a1a 368 }
GregCr 0:e5420f1a8a1a 369 }
GregCr 0:e5420f1a8a1a 370 else if( graphObjectTouched == BTN9_BORDER )
GregCr 0:e5420f1a8a1a 371 {
GregCr 0:e5420f1a8a1a 372 Eeprom.EepromData.DemoSettings.HoldDemo = true;
GregCr 0:e5420f1a8a1a 373 StopDemoApplication( );
GregCr 0:e5420f1a8a1a 374 // "CANCEL" or "OK & SAVE" button of PAGE_RADIO_PARAM use
GregCr 0:e5420f1a8a1a 375 // PreviousPage to set next page. Speed up the navigation.
GregCr 0:e5420f1a8a1a 376 PreviousPage = PAGE_PING_PONG;
GregCr 0:e5420f1a8a1a 377 MenuSetPage( PAGE_RADIO_PARAM );
GregCr 0:e5420f1a8a1a 378 }
GregCr 0:e5420f1a8a1a 379 else if( refresh == true )
GregCr 0:e5420f1a8a1a 380 {
GregCr 0:e5420f1a8a1a 381 MenuSetPage( PAGE_PING_PONG );
GregCr 0:e5420f1a8a1a 382 }
GregCr 0:e5420f1a8a1a 383 break;
GregCr 0:e5420f1a8a1a 384
GregCr 0:e5420f1a8a1a 385 case PAGE_PER:
GregCr 0:e5420f1a8a1a 386 if( graphObjectTouched == BTN0_BORDER )
GregCr 0:e5420f1a8a1a 387 {
GregCr 0:e5420f1a8a1a 388 ButtonChangeText( BTN8_BORDER, ( uint8_t* )" START", NULL );
GregCr 0:e5420f1a8a1a 389 if( Eeprom.EepromData.DemoSettings.Entity == MASTER )
GregCr 0:e5420f1a8a1a 390 {
GregCr 0:e5420f1a8a1a 391 Eeprom.EepromData.DemoSettings.Entity = SLAVE;
GregCr 0:e5420f1a8a1a 392 ButtonChangeText( BTN0_BORDER, ( uint8_t* )" SLAVE", NULL );
GregCr 0:e5420f1a8a1a 393 DrawText( LINE4_COL0_TEXT, ( uint8_t* )"Rx OK", NULL, NULL );
GregCr 0:e5420f1a8a1a 394 DrawText( LINE5_COL0_TEXT, ( uint8_t* )"Rx KO", NULL, NULL );
GregCr 0:e5420f1a8a1a 395 DrawText( LINE6_COL0_TEXT, ( uint8_t* )"PER", NULL, NULL );
GregCr 0:e5420f1a8a1a 396 DrawText( LINE7_COL0_TEXT, ( uint8_t* )"Freq Err", NULL, NULL );
GregCr 0:e5420f1a8a1a 397 DrawText( LINE8_COL0_TEXT, ( uint8_t* )"Last Rssi", NULL, NULL );
GregCr 0:e5420f1a8a1a 398 DrawText( LINE9_COL0_TEXT, ( uint8_t* )"Last SNR", NULL, NULL );
GregCr 0:e5420f1a8a1a 399 }
GregCr 0:e5420f1a8a1a 400 else
GregCr 0:e5420f1a8a1a 401 {
GregCr 0:e5420f1a8a1a 402 Eeprom.EepromData.DemoSettings.Entity = MASTER;
GregCr 0:e5420f1a8a1a 403 ButtonChangeText( BTN0_BORDER, ( uint8_t* )" MASTER", NULL );
GregCr 0:e5420f1a8a1a 404 DrawText( LINE4_COL0_TEXT, ( uint8_t* )"Transmitted", ( uint8_t* )GetMenuDemoNumSentPacket( ), NULL );
GregCr 0:e5420f1a8a1a 405 DrawText( LINE5_COL0_TEXT, ( uint8_t* )" ", ( uint8_t* )" ", NULL );
GregCr 0:e5420f1a8a1a 406 DrawText( LINE6_COL0_TEXT, ( uint8_t* )" ", ( uint8_t* )" ", NULL );
GregCr 0:e5420f1a8a1a 407 DrawText( LINE7_COL0_TEXT, ( uint8_t* )" ", ( uint8_t* )" ", NULL );
GregCr 0:e5420f1a8a1a 408 DrawText( LINE8_COL0_TEXT, ( uint8_t* )" ", ( uint8_t* )" ", NULL );
GregCr 0:e5420f1a8a1a 409 DrawText( LINE9_COL0_TEXT, ( uint8_t* )" ", ( uint8_t* )" ", NULL );
GregCr 0:e5420f1a8a1a 410 }
GregCr 0:e5420f1a8a1a 411
GregCr 0:e5420f1a8a1a 412 Eeprom.EepromData.DemoSettings.HoldDemo = true;
GregCr 0:e5420f1a8a1a 413 EepromSaveSettings( DEMO_SETTINGS );
GregCr 0:e5420f1a8a1a 414 MenuSetPage( PAGE_PER );
GregCr 0:e5420f1a8a1a 415 }
GregCr 0:e5420f1a8a1a 416 else if( graphObjectTouched == BTN7_BORDER )
GregCr 0:e5420f1a8a1a 417 {
GregCr 0:e5420f1a8a1a 418 Eeprom.EepromData.DemoSettings.HoldDemo = true;
GregCr 0:e5420f1a8a1a 419 PreviousPage = START_PAGE; // clear Previous page
GregCr 0:e5420f1a8a1a 420 MenuSetPage( START_PAGE );
GregCr 0:e5420f1a8a1a 421 }
GregCr 0:e5420f1a8a1a 422 else if( graphObjectTouched == BTN8_BORDER )
GregCr 0:e5420f1a8a1a 423 {
GregCr 0:e5420f1a8a1a 424 if( Eeprom.EepromData.DemoSettings.HoldDemo == true )
GregCr 0:e5420f1a8a1a 425 {
GregCr 0:e5420f1a8a1a 426 Eeprom.EepromData.DemoSettings.HoldDemo = false;
GregCr 0:e5420f1a8a1a 427 ButtonChangeText( BTN8_BORDER, ( uint8_t* )" STOP", NULL );
GregCr 0:e5420f1a8a1a 428 StopDemoApplication( );
GregCr 0:e5420f1a8a1a 429 Eeprom.EepromData.DemoSettings.CntPacketTx = 0;
GregCr 0:e5420f1a8a1a 430 Eeprom.EepromData.DemoSettings.CntPacketRxOK = 0;
GregCr 0:e5420f1a8a1a 431 Eeprom.EepromData.DemoSettings.CntPacketRxKO = 0;
GregCr 0:e5420f1a8a1a 432 Eeprom.EepromData.DemoSettings.RxTimeOutCount = 0;
GregCr 0:e5420f1a8a1a 433 RunDemoApplicationPer( );
GregCr 0:e5420f1a8a1a 434 }
GregCr 0:e5420f1a8a1a 435 else
GregCr 0:e5420f1a8a1a 436 {
GregCr 0:e5420f1a8a1a 437 Eeprom.EepromData.DemoSettings.HoldDemo = true;
GregCr 0:e5420f1a8a1a 438 ButtonChangeText( BTN8_BORDER, ( uint8_t* )" START", NULL );
GregCr 0:e5420f1a8a1a 439 StopDemoApplication( );
GregCr 0:e5420f1a8a1a 440 wait_ms( 200 ); // debouncing of the touch screen
GregCr 0:e5420f1a8a1a 441 }
GregCr 0:e5420f1a8a1a 442 }
GregCr 0:e5420f1a8a1a 443 else if( graphObjectTouched == BTN9_BORDER )
GregCr 0:e5420f1a8a1a 444 {
GregCr 0:e5420f1a8a1a 445 Eeprom.EepromData.DemoSettings.HoldDemo = true;
GregCr 0:e5420f1a8a1a 446 StopDemoApplication( );
GregCr 0:e5420f1a8a1a 447 // "CANCEL" or "OK & SAVE" button of PAGE_RADIO_PARAM use
GregCr 0:e5420f1a8a1a 448 // PreviousPage to set next page. Speed up the navigation.
GregCr 0:e5420f1a8a1a 449 PreviousPage = PAGE_PER;
GregCr 0:e5420f1a8a1a 450 MenuSetPage( PAGE_RADIO_PARAM );
GregCr 0:e5420f1a8a1a 451 }
GregCr 0:e5420f1a8a1a 452 else if( refresh == true )
GregCr 0:e5420f1a8a1a 453 {
GregCr 0:e5420f1a8a1a 454 MenuSetPage( PAGE_PER );
GregCr 0:e5420f1a8a1a 455 }
GregCr 0:e5420f1a8a1a 456 break;
GregCr 0:e5420f1a8a1a 457
GregCr 0:e5420f1a8a1a 458 case PAGE_RADIO_PARAM:
GregCr 0:e5420f1a8a1a 459 if( graphObjectTouched == BTN0_BORDER )
GregCr 0:e5420f1a8a1a 460 {
GregCr 0:e5420f1a8a1a 461 if( Eeprom.EepromData.DemoSettings.ModulationType == PACKET_TYPE_LORA )
GregCr 0:e5420f1a8a1a 462 {
GregCr 0:e5420f1a8a1a 463 Eeprom.EepromData.DemoSettings.ModulationType = PACKET_TYPE_GFSK;
GregCr 0:e5420f1a8a1a 464 }
GregCr 0:e5420f1a8a1a 465 else// if( Eeprom.EepromData.DemoSettings.ModulationType == PACKET_TYPE_GFSK )
GregCr 0:e5420f1a8a1a 466 {
GregCr 0:e5420f1a8a1a 467 Eeprom.EepromData.DemoSettings.ModulationType = PACKET_TYPE_LORA;
GregCr 0:e5420f1a8a1a 468 }
GregCr 0:e5420f1a8a1a 469 EepromLoadSettings( ( RadioPacketTypes_t )Eeprom.EepromData.DemoSettings.ModulationType );
GregCr 0:e5420f1a8a1a 470 RadioSettingsCheckError( );
GregCr 0:e5420f1a8a1a 471 ButtonChangeText( BTN0_BORDER, NULL, ( uint8_t* )GetMenuRadioFrameType( ) );
GregCr 0:e5420f1a8a1a 472 ButtonChangeText( BTN3_BORDER, NULL, ( uint8_t* )GetRadioModulationParameters1( ) );
GregCr 0:e5420f1a8a1a 473 ButtonChangeText( BTN4_BORDER, NULL, ( uint8_t* )GetRadioModulationParameters2( ) );
GregCr 0:e5420f1a8a1a 474 ButtonChangeText( BTN5_BORDER, NULL, ( uint8_t* )GetRadioModulationParameters3( ) );
GregCr 0:e5420f1a8a1a 475 ButtonChangeText( BTN6_BORDER, NULL, ( uint8_t* )GetRadioModulationParameters4( ) );
GregCr 0:e5420f1a8a1a 476 ButtonChangeText( BTN9_BORDER, NULL, ( uint8_t* )GetRadioPayloadLength( ) );
GregCr 0:e5420f1a8a1a 477 RadioSettingsClearError( );
GregCr 0:e5420f1a8a1a 478 //MenuSetPage( PAGE_RADIO_PARAM ); // _GMH_ still need ?
GregCr 0:e5420f1a8a1a 479 }
GregCr 0:e5420f1a8a1a 480 else if( graphObjectTouched == BTN1_BORDER )
GregCr 0:e5420f1a8a1a 481 {
GregCr 0:e5420f1a8a1a 482 MenuSetPage( PAGE_RADIO_PARAM_FREQ );
GregCr 0:e5420f1a8a1a 483 }
GregCr 0:e5420f1a8a1a 484 else if( graphObjectTouched == BTN2_BORDER )
GregCr 0:e5420f1a8a1a 485 {
GregCr 0:e5420f1a8a1a 486 if( DeviceConnected == SX1261 )
GregCr 0:e5420f1a8a1a 487 {
GregCr 0:e5420f1a8a1a 488 Eeprom.EepromData.DemoSettings.TxPower += 1;
GregCr 0:e5420f1a8a1a 489 if( Eeprom.EepromData.DemoSettings.TxPower > SX1261_POWER_TX_MAX )
GregCr 0:e5420f1a8a1a 490 {
GregCr 0:e5420f1a8a1a 491 Eeprom.EepromData.DemoSettings.TxPower = SX1261_POWER_TX_MIN;
GregCr 0:e5420f1a8a1a 492 }
GregCr 0:e5420f1a8a1a 493 }
GregCr 0:e5420f1a8a1a 494 else
GregCr 0:e5420f1a8a1a 495 {
GregCr 0:e5420f1a8a1a 496 Eeprom.EepromData.DemoSettings.TxPower += 1;
GregCr 0:e5420f1a8a1a 497 if( Eeprom.EepromData.DemoSettings.TxPower > SX1262_POWER_TX_MAX )
GregCr 0:e5420f1a8a1a 498 {
GregCr 0:e5420f1a8a1a 499 Eeprom.EepromData.DemoSettings.TxPower = SX1262_POWER_TX_MIN;
GregCr 0:e5420f1a8a1a 500 }
GregCr 0:e5420f1a8a1a 501 }
GregCr 0:e5420f1a8a1a 502 ButtonChangeText( BTN2_BORDER, NULL, ( uint8_t* )GetRadioTxPower( ) );
GregCr 0:e5420f1a8a1a 503 }
GregCr 0:e5420f1a8a1a 504 else if( graphObjectTouched == BTN3_BORDER )
GregCr 0:e5420f1a8a1a 505 {
GregCr 0:e5420f1a8a1a 506 if( Eeprom.EepromData.DemoSettings.ModulationType == PACKET_TYPE_LORA )
GregCr 0:e5420f1a8a1a 507 {
GregCr 0:e5420f1a8a1a 508 if( Eeprom.EepromData.DemoSettings.ModulationParam1 < LORA_SF12 )
GregCr 0:e5420f1a8a1a 509 {
GregCr 0:e5420f1a8a1a 510 Eeprom.EepromData.DemoSettings.ModulationParam1++;
GregCr 0:e5420f1a8a1a 511 }
GregCr 0:e5420f1a8a1a 512 else
GregCr 0:e5420f1a8a1a 513 {
GregCr 0:e5420f1a8a1a 514 Eeprom.EepromData.DemoSettings.ModulationParam1 = LORA_SF5;
GregCr 0:e5420f1a8a1a 515 }
GregCr 0:e5420f1a8a1a 516 }
GregCr 0:e5420f1a8a1a 517 else // PACKET_TYPE_GFSK
GregCr 0:e5420f1a8a1a 518 {
GregCr 0:e5420f1a8a1a 519 switch( Eeprom.EepromData.DemoSettings.ModulationParam1 )
GregCr 0:e5420f1a8a1a 520 {
GregCr 0:e5420f1a8a1a 521 case DEMO_BR_100:
GregCr 0:e5420f1a8a1a 522 Eeprom.EepromData.DemoSettings.ModulationParam1 = DEMO_BR_600;
GregCr 0:e5420f1a8a1a 523 break;
GregCr 0:e5420f1a8a1a 524
GregCr 0:e5420f1a8a1a 525 case DEMO_BR_600:
GregCr 0:e5420f1a8a1a 526 Eeprom.EepromData.DemoSettings.ModulationParam1 = DEMO_BR_4800;
GregCr 0:e5420f1a8a1a 527 break;
GregCr 0:e5420f1a8a1a 528 default:
GregCr 0:e5420f1a8a1a 529 case DEMO_BR_4800:
GregCr 0:e5420f1a8a1a 530 Eeprom.EepromData.DemoSettings.ModulationParam1 = DEMO_BR_9600;
GregCr 0:e5420f1a8a1a 531 break;
GregCr 0:e5420f1a8a1a 532
GregCr 0:e5420f1a8a1a 533 case DEMO_BR_9600:
GregCr 0:e5420f1a8a1a 534 Eeprom.EepromData.DemoSettings.ModulationParam1 = DEMO_BR_19200;
GregCr 0:e5420f1a8a1a 535 break;
GregCr 0:e5420f1a8a1a 536
GregCr 0:e5420f1a8a1a 537 case DEMO_BR_19200:
GregCr 0:e5420f1a8a1a 538 Eeprom.EepromData.DemoSettings.ModulationParam1 = DEMO_BR_57600;
GregCr 0:e5420f1a8a1a 539 break;
GregCr 0:e5420f1a8a1a 540
GregCr 0:e5420f1a8a1a 541 case DEMO_BR_57600:
GregCr 0:e5420f1a8a1a 542 Eeprom.EepromData.DemoSettings.ModulationParam1 = DEMO_BR_100000;
GregCr 0:e5420f1a8a1a 543 break;
GregCr 0:e5420f1a8a1a 544
GregCr 0:e5420f1a8a1a 545 case DEMO_BR_100000:
GregCr 0:e5420f1a8a1a 546 Eeprom.EepromData.DemoSettings.ModulationParam1 = DEMO_BR_250000;
GregCr 0:e5420f1a8a1a 547 break;
GregCr 0:e5420f1a8a1a 548
GregCr 0:e5420f1a8a1a 549 case DEMO_BR_250000:
GregCr 0:e5420f1a8a1a 550 Eeprom.EepromData.DemoSettings.ModulationParam1 = DEMO_BR_100;
GregCr 0:e5420f1a8a1a 551 break;
GregCr 0:e5420f1a8a1a 552 }
GregCr 0:e5420f1a8a1a 553 RadioSettingsCheckError( );
GregCr 0:e5420f1a8a1a 554 }
GregCr 0:e5420f1a8a1a 555 ButtonChangeText( BTN3_BORDER, NULL, ( uint8_t* )GetRadioModulationParameters1( ) );
GregCr 0:e5420f1a8a1a 556 RadioSettingsClearError( );
GregCr 0:e5420f1a8a1a 557 }
GregCr 0:e5420f1a8a1a 558 else if( graphObjectTouched == BTN4_BORDER )
GregCr 0:e5420f1a8a1a 559 {
GregCr 0:e5420f1a8a1a 560 if( Eeprom.EepromData.DemoSettings.ModulationType == PACKET_TYPE_LORA )
GregCr 0:e5420f1a8a1a 561 {
GregCr 0:e5420f1a8a1a 562 switch( Eeprom.EepromData.DemoSettings.ModulationParam2 )
GregCr 0:e5420f1a8a1a 563 {
GregCr 0:e5420f1a8a1a 564 case LORA_BW_007:
GregCr 0:e5420f1a8a1a 565 Eeprom.EepromData.DemoSettings.ModulationParam2 = LORA_BW_010;
GregCr 0:e5420f1a8a1a 566 break;
GregCr 0:e5420f1a8a1a 567 case LORA_BW_010:
GregCr 0:e5420f1a8a1a 568 Eeprom.EepromData.DemoSettings.ModulationParam2 = LORA_BW_015;
GregCr 0:e5420f1a8a1a 569 break;
GregCr 0:e5420f1a8a1a 570 case LORA_BW_015:
GregCr 0:e5420f1a8a1a 571 Eeprom.EepromData.DemoSettings.ModulationParam2 = LORA_BW_020;
GregCr 0:e5420f1a8a1a 572 break;
GregCr 0:e5420f1a8a1a 573 case LORA_BW_020:
GregCr 0:e5420f1a8a1a 574 Eeprom.EepromData.DemoSettings.ModulationParam2 = LORA_BW_031;
GregCr 0:e5420f1a8a1a 575 break;
GregCr 0:e5420f1a8a1a 576 case LORA_BW_031:
GregCr 0:e5420f1a8a1a 577 Eeprom.EepromData.DemoSettings.ModulationParam2 = LORA_BW_041;
GregCr 0:e5420f1a8a1a 578 break;
GregCr 0:e5420f1a8a1a 579 case LORA_BW_041:
GregCr 0:e5420f1a8a1a 580 Eeprom.EepromData.DemoSettings.ModulationParam2 = LORA_BW_062;
GregCr 0:e5420f1a8a1a 581 break;
GregCr 0:e5420f1a8a1a 582
GregCr 0:e5420f1a8a1a 583 default:
GregCr 0:e5420f1a8a1a 584 case LORA_BW_062:
GregCr 0:e5420f1a8a1a 585 Eeprom.EepromData.DemoSettings.ModulationParam2 = LORA_BW_125;
GregCr 0:e5420f1a8a1a 586 break;
GregCr 0:e5420f1a8a1a 587 case LORA_BW_125:
GregCr 0:e5420f1a8a1a 588 Eeprom.EepromData.DemoSettings.ModulationParam2 = LORA_BW_250;
GregCr 0:e5420f1a8a1a 589 break;
GregCr 0:e5420f1a8a1a 590 case LORA_BW_250:
GregCr 0:e5420f1a8a1a 591 Eeprom.EepromData.DemoSettings.ModulationParam2 = LORA_BW_500;
GregCr 0:e5420f1a8a1a 592 break;
GregCr 0:e5420f1a8a1a 593 case LORA_BW_500:
GregCr 0:e5420f1a8a1a 594 Eeprom.EepromData.DemoSettings.ModulationParam2 = LORA_BW_007;
GregCr 0:e5420f1a8a1a 595 break;
GregCr 0:e5420f1a8a1a 596 }
GregCr 0:e5420f1a8a1a 597 }
GregCr 0:e5420f1a8a1a 598 else //Eeprom.EepromData.DemoSettings.ModulationType == PACKET_TYPE_GFSK
GregCr 0:e5420f1a8a1a 599 {
GregCr 0:e5420f1a8a1a 600 switch( Eeprom.EepromData.DemoSettings.ModulationParam2 )
GregCr 0:e5420f1a8a1a 601 {
GregCr 0:e5420f1a8a1a 602 default:
GregCr 0:e5420f1a8a1a 603 case DEMO_FDEV_5000:
GregCr 0:e5420f1a8a1a 604 Eeprom.EepromData.DemoSettings.ModulationParam2 = DEMO_FDEV_10000;
GregCr 0:e5420f1a8a1a 605 break;
GregCr 0:e5420f1a8a1a 606
GregCr 0:e5420f1a8a1a 607 case DEMO_FDEV_10000:
GregCr 0:e5420f1a8a1a 608 Eeprom.EepromData.DemoSettings.ModulationParam2 = DEMO_FDEV_25000;
GregCr 0:e5420f1a8a1a 609 break;
GregCr 0:e5420f1a8a1a 610
GregCr 0:e5420f1a8a1a 611 case DEMO_FDEV_25000:
GregCr 0:e5420f1a8a1a 612 Eeprom.EepromData.DemoSettings.ModulationParam2 = DEMO_FDEV_50000;
GregCr 0:e5420f1a8a1a 613 break;
GregCr 0:e5420f1a8a1a 614
GregCr 0:e5420f1a8a1a 615 case DEMO_FDEV_50000:
GregCr 0:e5420f1a8a1a 616 Eeprom.EepromData.DemoSettings.ModulationParam2 = DEMO_FDEV_75000;
GregCr 0:e5420f1a8a1a 617 break;
GregCr 0:e5420f1a8a1a 618
GregCr 0:e5420f1a8a1a 619 case DEMO_FDEV_75000:
GregCr 0:e5420f1a8a1a 620 Eeprom.EepromData.DemoSettings.ModulationParam2 = DEMO_FDEV_100000;
GregCr 0:e5420f1a8a1a 621 break;
GregCr 0:e5420f1a8a1a 622
GregCr 0:e5420f1a8a1a 623 case DEMO_FDEV_100000:
GregCr 0:e5420f1a8a1a 624 Eeprom.EepromData.DemoSettings.ModulationParam2 = DEMO_FDEV_150000;
GregCr 0:e5420f1a8a1a 625 break;
GregCr 0:e5420f1a8a1a 626
GregCr 0:e5420f1a8a1a 627 case DEMO_FDEV_150000:
GregCr 0:e5420f1a8a1a 628 Eeprom.EepromData.DemoSettings.ModulationParam2 = DEMO_FDEV_5000;
GregCr 0:e5420f1a8a1a 629 break;
GregCr 0:e5420f1a8a1a 630 }
GregCr 0:e5420f1a8a1a 631 RadioSettingsCheckError( );
GregCr 0:e5420f1a8a1a 632 }
GregCr 0:e5420f1a8a1a 633 ButtonChangeText( BTN4_BORDER, NULL, ( uint8_t* )GetRadioModulationParameters2( ) );
GregCr 0:e5420f1a8a1a 634 RadioSettingsClearError( );
GregCr 0:e5420f1a8a1a 635 }
GregCr 0:e5420f1a8a1a 636 else if( graphObjectTouched == BTN5_BORDER )
GregCr 0:e5420f1a8a1a 637 {
GregCr 0:e5420f1a8a1a 638 if( Eeprom.EepromData.DemoSettings.ModulationType == PACKET_TYPE_LORA )
GregCr 0:e5420f1a8a1a 639 {
GregCr 0:e5420f1a8a1a 640 if( Eeprom.EepromData.DemoSettings.ModulationParam3 < LORA_CR_4_8 )
GregCr 0:e5420f1a8a1a 641 {
GregCr 0:e5420f1a8a1a 642 Eeprom.EepromData.DemoSettings.ModulationParam3++;
GregCr 0:e5420f1a8a1a 643 }
GregCr 0:e5420f1a8a1a 644 else
GregCr 0:e5420f1a8a1a 645 {
GregCr 0:e5420f1a8a1a 646 Eeprom.EepromData.DemoSettings.ModulationParam3 = LORA_CR_4_5;
GregCr 0:e5420f1a8a1a 647 }
GregCr 0:e5420f1a8a1a 648 }
GregCr 0:e5420f1a8a1a 649 else // PACKET_TYPE_GFSK
GregCr 0:e5420f1a8a1a 650 {
GregCr 0:e5420f1a8a1a 651 switch( Eeprom.EepromData.DemoSettings.ModulationParam3 )
GregCr 0:e5420f1a8a1a 652 {
GregCr 0:e5420f1a8a1a 653 case MOD_SHAPING_OFF :
GregCr 0:e5420f1a8a1a 654 Eeprom.EepromData.DemoSettings.ModulationParam3 = MOD_SHAPING_G_BT_03;
GregCr 0:e5420f1a8a1a 655 break;
GregCr 0:e5420f1a8a1a 656 case MOD_SHAPING_G_BT_03 :
GregCr 0:e5420f1a8a1a 657 Eeprom.EepromData.DemoSettings.ModulationParam3 = MOD_SHAPING_G_BT_05;
GregCr 0:e5420f1a8a1a 658 break;
GregCr 0:e5420f1a8a1a 659 case MOD_SHAPING_G_BT_05 :
GregCr 0:e5420f1a8a1a 660 Eeprom.EepromData.DemoSettings.ModulationParam3 = MOD_SHAPING_G_BT_07;
GregCr 0:e5420f1a8a1a 661 break;
GregCr 0:e5420f1a8a1a 662 case MOD_SHAPING_G_BT_07 :
GregCr 0:e5420f1a8a1a 663 Eeprom.EepromData.DemoSettings.ModulationParam3 = MOD_SHAPING_G_BT_1;
GregCr 0:e5420f1a8a1a 664 break;
GregCr 0:e5420f1a8a1a 665 case MOD_SHAPING_G_BT_1 :
GregCr 0:e5420f1a8a1a 666 Eeprom.EepromData.DemoSettings.ModulationParam3 = MOD_SHAPING_OFF;
GregCr 0:e5420f1a8a1a 667 break;
GregCr 0:e5420f1a8a1a 668 }
GregCr 0:e5420f1a8a1a 669 }
GregCr 0:e5420f1a8a1a 670 ButtonChangeText( BTN5_BORDER, NULL, ( uint8_t* )GetRadioModulationParameters3( ) );
GregCr 0:e5420f1a8a1a 671 }
GregCr 0:e5420f1a8a1a 672 else if( graphObjectTouched == BTN6_BORDER )
GregCr 0:e5420f1a8a1a 673 {
GregCr 0:e5420f1a8a1a 674 if( Eeprom.EepromData.DemoSettings.ModulationType == PACKET_TYPE_LORA )
GregCr 0:e5420f1a8a1a 675 {
GregCr 0:e5420f1a8a1a 676 if( Eeprom.EepromData.DemoSettings.PacketParam2 == LORA_PACKET_FIXED_LENGTH )
GregCr 0:e5420f1a8a1a 677 {
GregCr 0:e5420f1a8a1a 678 Eeprom.EepromData.DemoSettings.PacketParam2 = LORA_PACKET_VARIABLE_LENGTH;
GregCr 0:e5420f1a8a1a 679 }
GregCr 0:e5420f1a8a1a 680 else
GregCr 0:e5420f1a8a1a 681 {
GregCr 0:e5420f1a8a1a 682 Eeprom.EepromData.DemoSettings.PacketParam2 = LORA_PACKET_FIXED_LENGTH;
GregCr 0:e5420f1a8a1a 683 }
GregCr 0:e5420f1a8a1a 684 }
GregCr 0:e5420f1a8a1a 685 else // Eeprom.EepromData.DemoSettings.ModulationType == PACKET_TYPE_GFSK
GregCr 0:e5420f1a8a1a 686 {
GregCr 0:e5420f1a8a1a 687 switch( Eeprom.EepromData.DemoSettings.ModulationParam4 )
GregCr 0:e5420f1a8a1a 688 {
GregCr 0:e5420f1a8a1a 689 case RX_BW_4800:
GregCr 0:e5420f1a8a1a 690 Eeprom.EepromData.DemoSettings.ModulationParam4 = RX_BW_5800;
GregCr 0:e5420f1a8a1a 691 break;
GregCr 0:e5420f1a8a1a 692
GregCr 0:e5420f1a8a1a 693 case RX_BW_5800:
GregCr 0:e5420f1a8a1a 694 Eeprom.EepromData.DemoSettings.ModulationParam4 = RX_BW_7300;
GregCr 0:e5420f1a8a1a 695 break;
GregCr 0:e5420f1a8a1a 696
GregCr 0:e5420f1a8a1a 697 case RX_BW_7300:
GregCr 0:e5420f1a8a1a 698 Eeprom.EepromData.DemoSettings.ModulationParam4 = RX_BW_9700;
GregCr 0:e5420f1a8a1a 699 break;
GregCr 0:e5420f1a8a1a 700
GregCr 0:e5420f1a8a1a 701 case RX_BW_9700:
GregCr 0:e5420f1a8a1a 702 Eeprom.EepromData.DemoSettings.ModulationParam4 = RX_BW_11700;
GregCr 0:e5420f1a8a1a 703 break;
GregCr 0:e5420f1a8a1a 704
GregCr 0:e5420f1a8a1a 705 case RX_BW_11700:
GregCr 0:e5420f1a8a1a 706 Eeprom.EepromData.DemoSettings.ModulationParam4 = RX_BW_14600;
GregCr 0:e5420f1a8a1a 707 break;
GregCr 0:e5420f1a8a1a 708
GregCr 0:e5420f1a8a1a 709 case RX_BW_14600:
GregCr 0:e5420f1a8a1a 710 Eeprom.EepromData.DemoSettings.ModulationParam4 = RX_BW_19500;
GregCr 0:e5420f1a8a1a 711 break;
GregCr 0:e5420f1a8a1a 712
GregCr 0:e5420f1a8a1a 713 case RX_BW_19500:
GregCr 0:e5420f1a8a1a 714 Eeprom.EepromData.DemoSettings.ModulationParam4 = RX_BW_23400;
GregCr 0:e5420f1a8a1a 715 break;
GregCr 0:e5420f1a8a1a 716
GregCr 0:e5420f1a8a1a 717 case RX_BW_23400:
GregCr 0:e5420f1a8a1a 718 Eeprom.EepromData.DemoSettings.ModulationParam4 = RX_BW_29300;
GregCr 0:e5420f1a8a1a 719 break;
GregCr 0:e5420f1a8a1a 720
GregCr 0:e5420f1a8a1a 721 case RX_BW_29300:
GregCr 0:e5420f1a8a1a 722 Eeprom.EepromData.DemoSettings.ModulationParam4 = RX_BW_39000;
GregCr 0:e5420f1a8a1a 723 break;
GregCr 0:e5420f1a8a1a 724
GregCr 0:e5420f1a8a1a 725 case RX_BW_39000:
GregCr 0:e5420f1a8a1a 726 Eeprom.EepromData.DemoSettings.ModulationParam4 = RX_BW_58600;
GregCr 0:e5420f1a8a1a 727 break;
GregCr 0:e5420f1a8a1a 728
GregCr 0:e5420f1a8a1a 729 case RX_BW_58600:
GregCr 0:e5420f1a8a1a 730 Eeprom.EepromData.DemoSettings.ModulationParam4 = RX_BW_93800;
GregCr 0:e5420f1a8a1a 731 break;
GregCr 0:e5420f1a8a1a 732
GregCr 0:e5420f1a8a1a 733 case RX_BW_93800:
GregCr 0:e5420f1a8a1a 734 Eeprom.EepromData.DemoSettings.ModulationParam4 = RX_BW_117300;
GregCr 0:e5420f1a8a1a 735 break;
GregCr 0:e5420f1a8a1a 736
GregCr 0:e5420f1a8a1a 737 case RX_BW_117300:
GregCr 0:e5420f1a8a1a 738 Eeprom.EepromData.DemoSettings.ModulationParam4 = RX_BW_156200;
GregCr 0:e5420f1a8a1a 739 break;
GregCr 0:e5420f1a8a1a 740
GregCr 0:e5420f1a8a1a 741 case RX_BW_156200:
GregCr 0:e5420f1a8a1a 742 Eeprom.EepromData.DemoSettings.ModulationParam4 = RX_BW_187200;
GregCr 0:e5420f1a8a1a 743 break;
GregCr 0:e5420f1a8a1a 744
GregCr 0:e5420f1a8a1a 745 case RX_BW_187200:
GregCr 0:e5420f1a8a1a 746 Eeprom.EepromData.DemoSettings.ModulationParam4 = RX_BW_234300;
GregCr 0:e5420f1a8a1a 747 break;
GregCr 0:e5420f1a8a1a 748
GregCr 0:e5420f1a8a1a 749 case RX_BW_234300:
GregCr 0:e5420f1a8a1a 750 Eeprom.EepromData.DemoSettings.ModulationParam4 = RX_BW_312000;
GregCr 0:e5420f1a8a1a 751 break;
GregCr 0:e5420f1a8a1a 752
GregCr 0:e5420f1a8a1a 753 case RX_BW_312000:
GregCr 0:e5420f1a8a1a 754 Eeprom.EepromData.DemoSettings.ModulationParam4 = RX_BW_373600;
GregCr 0:e5420f1a8a1a 755 break;
GregCr 0:e5420f1a8a1a 756
GregCr 0:e5420f1a8a1a 757 case RX_BW_373600:
GregCr 0:e5420f1a8a1a 758 Eeprom.EepromData.DemoSettings.ModulationParam4 = RX_BW_467000;
GregCr 0:e5420f1a8a1a 759 break;
GregCr 0:e5420f1a8a1a 760
GregCr 0:e5420f1a8a1a 761 case RX_BW_467000:
GregCr 0:e5420f1a8a1a 762 Eeprom.EepromData.DemoSettings.ModulationParam4 = RX_BW_4800;
GregCr 0:e5420f1a8a1a 763 break;
GregCr 0:e5420f1a8a1a 764 }
GregCr 0:e5420f1a8a1a 765 RadioSettingsCheckError( );
GregCr 0:e5420f1a8a1a 766 }
GregCr 0:e5420f1a8a1a 767 ButtonChangeText( BTN6_BORDER, NULL, ( uint8_t* )GetRadioModulationParameters4( ) );
GregCr 0:e5420f1a8a1a 768 RadioSettingsClearError( );
GregCr 0:e5420f1a8a1a 769 }
GregCr 0:e5420f1a8a1a 770 else if( graphObjectTouched == BTN7_BORDER )
GregCr 0:e5420f1a8a1a 771 {
GregCr 0:e5420f1a8a1a 772 uint8_t modTmp = Eeprom.EepromData.DemoSettings.ModulationType;
GregCr 0:e5420f1a8a1a 773
GregCr 0:e5420f1a8a1a 774 EepromMcuReadBuffer( 0, Eeprom.Buffer, EEPROM_BUFFER_SIZE );
GregCr 0:e5420f1a8a1a 775 EepromLoadGeneralSettings( );
GregCr 0:e5420f1a8a1a 776 EepromLoadSettings( ( RadioPacketTypes_t )modTmp );
GregCr 0:e5420f1a8a1a 777 MenuSetPage( PreviousPage );
GregCr 0:e5420f1a8a1a 778 }
GregCr 0:e5420f1a8a1a 779 else if( graphObjectTouched == BTN8_BORDER )
GregCr 0:e5420f1a8a1a 780 {
GregCr 0:e5420f1a8a1a 781 switch( Eeprom.EepromData.DemoSettings.ModulationType )
GregCr 0:e5420f1a8a1a 782 {
GregCr 0:e5420f1a8a1a 783 case PACKET_TYPE_LORA:
GregCr 0:e5420f1a8a1a 784 EepromSaveSettings( RADIO_LORA_PARAMS );
GregCr 0:e5420f1a8a1a 785 break;
GregCr 0:e5420f1a8a1a 786
GregCr 0:e5420f1a8a1a 787 case PACKET_TYPE_GFSK:
GregCr 0:e5420f1a8a1a 788 EepromSaveSettings( RADIO_GFSK_PARAMS );
GregCr 0:e5420f1a8a1a 789 break;
GregCr 0:e5420f1a8a1a 790
GregCr 0:e5420f1a8a1a 791 default:
GregCr 0:e5420f1a8a1a 792
GregCr 0:e5420f1a8a1a 793 break;
GregCr 0:e5420f1a8a1a 794 }
GregCr 0:e5420f1a8a1a 795 EepromSaveSettings( DEMO_SETTINGS );
GregCr 0:e5420f1a8a1a 796 MenuSetPage( PreviousPage );
GregCr 0:e5420f1a8a1a 797 }
GregCr 0:e5420f1a8a1a 798 else if( graphObjectTouched == BTN9_BORDER )
GregCr 0:e5420f1a8a1a 799 {
GregCr 0:e5420f1a8a1a 800 if( Eeprom.EepromData.DemoSettings.ModulationType == PACKET_TYPE_LORA )
GregCr 0:e5420f1a8a1a 801 {
GregCr 1:b96176a4ccb8 802 if( Eeprom.EepromData.DemoSettings.PacketParam3 < 255 )
GregCr 0:e5420f1a8a1a 803 {
GregCr 0:e5420f1a8a1a 804 Eeprom.EepromData.DemoSettings.PacketParam3 += 1;
GregCr 0:e5420f1a8a1a 805 }
GregCr 0:e5420f1a8a1a 806 else
GregCr 0:e5420f1a8a1a 807 {
GregCr 0:e5420f1a8a1a 808 Eeprom.EepromData.DemoSettings.PacketParam3 = 1;
GregCr 0:e5420f1a8a1a 809 }
GregCr 0:e5420f1a8a1a 810 }
GregCr 0:e5420f1a8a1a 811 else // PACKET_TYPE_GFSK
GregCr 0:e5420f1a8a1a 812 {
GregCr 1:b96176a4ccb8 813 if( Eeprom.EepromData.DemoSettings.PacketParam6 < 255 )
GregCr 0:e5420f1a8a1a 814 {
GregCr 0:e5420f1a8a1a 815 Eeprom.EepromData.DemoSettings.PacketParam6 += 1;
GregCr 0:e5420f1a8a1a 816 }
GregCr 0:e5420f1a8a1a 817 else
GregCr 0:e5420f1a8a1a 818 {
GregCr 0:e5420f1a8a1a 819 Eeprom.EepromData.DemoSettings.PacketParam6 = 1;
GregCr 0:e5420f1a8a1a 820 }
GregCr 0:e5420f1a8a1a 821 }
GregCr 0:e5420f1a8a1a 822 ButtonChangeText( BTN9_BORDER, NULL, ( uint8_t* )GetRadioPayloadLength( ) );
GregCr 0:e5420f1a8a1a 823 }
GregCr 0:e5420f1a8a1a 824 break;
GregCr 0:e5420f1a8a1a 825
GregCr 0:e5420f1a8a1a 826 case PAGE_RADIO_PARAM_FREQ:
GregCr 0:e5420f1a8a1a 827 if( graphObjectTouched == BTN0_BORDER )
GregCr 0:e5420f1a8a1a 828 {
GregCr 0:e5420f1a8a1a 829 MenuSetPage( PAGE_RADIO_PARAM );
GregCr 0:e5420f1a8a1a 830 }
GregCr 0:e5420f1a8a1a 831 else if( graphObjectTouched == BTN3_BORDER )
GregCr 0:e5420f1a8a1a 832 {
GregCr 2:8e1b4210df6b 833 if( DeviceConnected == SX1268 )
GregCr 2:8e1b4210df6b 834 {
GregCr 2:8e1b4210df6b 835 Eeprom.EepromData.DemoSettings.Frequency = DEMO_CENTRAL_FREQ_PRESET4;
GregCr 2:8e1b4210df6b 836 }
GregCr 2:8e1b4210df6b 837 else
GregCr 2:8e1b4210df6b 838 {
GregCr 2:8e1b4210df6b 839 Eeprom.EepromData.DemoSettings.Frequency = DEMO_CENTRAL_FREQ_PRESET6;
GregCr 2:8e1b4210df6b 840 }
GregCr 0:e5420f1a8a1a 841 MenuSetPage( PAGE_RADIO_PARAM );
GregCr 0:e5420f1a8a1a 842 }
GregCr 0:e5420f1a8a1a 843 else if( graphObjectTouched == BTN4_BORDER )
GregCr 0:e5420f1a8a1a 844 {
GregCr 2:8e1b4210df6b 845 if( DeviceConnected == SX1268 )
GregCr 2:8e1b4210df6b 846 {
GregCr 2:8e1b4210df6b 847 Eeprom.EepromData.DemoSettings.Frequency = DEMO_CENTRAL_FREQ_PRESET3;
GregCr 2:8e1b4210df6b 848 }
GregCr 2:8e1b4210df6b 849 else
GregCr 2:8e1b4210df6b 850 {
GregCr 2:8e1b4210df6b 851 Eeprom.EepromData.DemoSettings.Frequency = DEMO_CENTRAL_FREQ_PRESET7;
GregCr 2:8e1b4210df6b 852 }
GregCr 0:e5420f1a8a1a 853 MenuSetPage( PAGE_RADIO_PARAM );
GregCr 0:e5420f1a8a1a 854 }
GregCr 0:e5420f1a8a1a 855 else if( graphObjectTouched == BTN5_BORDER )
GregCr 0:e5420f1a8a1a 856 {
GregCr 2:8e1b4210df6b 857 if( DeviceConnected == SX1268 )
GregCr 2:8e1b4210df6b 858 {
GregCr 2:8e1b4210df6b 859 Eeprom.EepromData.DemoSettings.Frequency = DEMO_CENTRAL_FREQ_PRESET9;
GregCr 2:8e1b4210df6b 860 }
GregCr 2:8e1b4210df6b 861 else
GregCr 2:8e1b4210df6b 862 {
GregCr 2:8e1b4210df6b 863 Eeprom.EepromData.DemoSettings.Frequency = DEMO_CENTRAL_FREQ_PRESET8;
GregCr 2:8e1b4210df6b 864 }
GregCr 0:e5420f1a8a1a 865 MenuSetPage( PAGE_RADIO_PARAM );
GregCr 0:e5420f1a8a1a 866 }
GregCr 0:e5420f1a8a1a 867 else if( graphObjectTouched == BTN6_BORDER )
GregCr 0:e5420f1a8a1a 868 {
GregCr 0:e5420f1a8a1a 869 switch( CurrentFreqBase )
GregCr 0:e5420f1a8a1a 870 {
GregCr 0:e5420f1a8a1a 871 case FB1:
GregCr 0:e5420f1a8a1a 872 CurrentFreqBase = FB10;
GregCr 0:e5420f1a8a1a 873 break;
GregCr 0:e5420f1a8a1a 874 case FB10:
GregCr 0:e5420f1a8a1a 875 CurrentFreqBase = FB100;
GregCr 0:e5420f1a8a1a 876 break;
GregCr 0:e5420f1a8a1a 877 case FB100:
GregCr 0:e5420f1a8a1a 878 CurrentFreqBase = FB1K;
GregCr 0:e5420f1a8a1a 879 break;
GregCr 0:e5420f1a8a1a 880 case FB1K:
GregCr 0:e5420f1a8a1a 881 CurrentFreqBase = FB10K;
GregCr 0:e5420f1a8a1a 882 break;
GregCr 0:e5420f1a8a1a 883 case FB10K:
GregCr 0:e5420f1a8a1a 884 CurrentFreqBase = FB100K;
GregCr 0:e5420f1a8a1a 885 break;
GregCr 0:e5420f1a8a1a 886 case FB100K:
GregCr 0:e5420f1a8a1a 887 CurrentFreqBase = FB1M;
GregCr 0:e5420f1a8a1a 888 break;
GregCr 0:e5420f1a8a1a 889 case FB1M:
GregCr 0:e5420f1a8a1a 890 CurrentFreqBase = FB10M;
GregCr 0:e5420f1a8a1a 891 break;
GregCr 0:e5420f1a8a1a 892 case FB10M:
GregCr 0:e5420f1a8a1a 893 CurrentFreqBase = FB1;
GregCr 0:e5420f1a8a1a 894 break;
GregCr 0:e5420f1a8a1a 895 }
GregCr 0:e5420f1a8a1a 896 ButtonChangeText( BTN6_BORDER, NULL, ( uint8_t* )GetRadioFreqBase( ) );
GregCr 0:e5420f1a8a1a 897 }
GregCr 0:e5420f1a8a1a 898 else if( graphObjectTouched == BTN7_BORDER )
GregCr 0:e5420f1a8a1a 899 {
GregCr 0:e5420f1a8a1a 900 Eeprom.EepromData.DemoSettings.Frequency -= CurrentFreqBase;
GregCr 0:e5420f1a8a1a 901 if( Eeprom.EepromData.DemoSettings.Frequency < DEMO_CENTRAL_FREQ_MIN )
GregCr 0:e5420f1a8a1a 902 {
GregCr 0:e5420f1a8a1a 903 Eeprom.EepromData.DemoSettings.Frequency = DEMO_CENTRAL_FREQ_MIN;
GregCr 0:e5420f1a8a1a 904 }
GregCr 0:e5420f1a8a1a 905 ButtonChangeText( BTN2_BORDER, NULL, ( uint8_t* )GetRadioFrequency( ) );
GregCr 0:e5420f1a8a1a 906 }
GregCr 0:e5420f1a8a1a 907 else if( graphObjectTouched == BTN8_BORDER )
GregCr 0:e5420f1a8a1a 908 {
GregCr 0:e5420f1a8a1a 909 Eeprom.EepromData.DemoSettings.Frequency += CurrentFreqBase;
GregCr 0:e5420f1a8a1a 910 if( Eeprom.EepromData.DemoSettings.Frequency > DEMO_CENTRAL_FREQ_MAX )
GregCr 0:e5420f1a8a1a 911 {
GregCr 0:e5420f1a8a1a 912 Eeprom.EepromData.DemoSettings.Frequency = DEMO_CENTRAL_FREQ_MAX;
GregCr 0:e5420f1a8a1a 913 }
GregCr 0:e5420f1a8a1a 914 ButtonChangeText( BTN2_BORDER, NULL, ( uint8_t* )GetRadioFrequency( ) );
GregCr 0:e5420f1a8a1a 915 }
GregCr 0:e5420f1a8a1a 916 break;
GregCr 0:e5420f1a8a1a 917
GregCr 0:e5420f1a8a1a 918 case PAGE_UTILITIES:
GregCr 0:e5420f1a8a1a 919 if( graphObjectTouched == BTN0_BORDER )
GregCr 0:e5420f1a8a1a 920 {
GregCr 1:b96176a4ccb8 921 EepromEraseCheckSum( );
GregCr 0:e5420f1a8a1a 922 NVIC_SystemReset( );
GregCr 0:e5420f1a8a1a 923 }
GregCr 0:e5420f1a8a1a 924 else if( graphObjectTouched == BTN3_BORDER )
GregCr 0:e5420f1a8a1a 925 {
GregCr 0:e5420f1a8a1a 926 if( Eeprom.EepromData.DemoSettings.BoostedRx == true )
GregCr 0:e5420f1a8a1a 927 {
GregCr 0:e5420f1a8a1a 928 Eeprom.EepromData.DemoSettings.BoostedRx = false;
GregCr 0:e5420f1a8a1a 929 }
GregCr 0:e5420f1a8a1a 930 else
GregCr 0:e5420f1a8a1a 931 {
GregCr 0:e5420f1a8a1a 932 Eeprom.EepromData.DemoSettings.BoostedRx = true;
GregCr 0:e5420f1a8a1a 933 }
GregCr 0:e5420f1a8a1a 934 ButtonChangeText( BTN3_BORDER, NULL, ( uint8_t* )GetMenuDemoRadioBoostedRx( ) );
GregCr 0:e5420f1a8a1a 935 }
GregCr 0:e5420f1a8a1a 936 else if( graphObjectTouched == BTN4_BORDER )
GregCr 0:e5420f1a8a1a 937 {
GregCr 0:e5420f1a8a1a 938 if( Eeprom.EepromData.DemoSettings.RadioPowerMode == USE_LDO )
GregCr 0:e5420f1a8a1a 939 {
GregCr 0:e5420f1a8a1a 940 Eeprom.EepromData.DemoSettings.RadioPowerMode = USE_DCDC;
GregCr 0:e5420f1a8a1a 941 }
GregCr 0:e5420f1a8a1a 942 else
GregCr 0:e5420f1a8a1a 943 {
GregCr 0:e5420f1a8a1a 944 Eeprom.EepromData.DemoSettings.RadioPowerMode = USE_LDO;
GregCr 0:e5420f1a8a1a 945 }
GregCr 0:e5420f1a8a1a 946 ButtonChangeText( BTN4_BORDER, NULL, ( uint8_t* )GetMenuDemoRadioPowerMode( ) );
GregCr 0:e5420f1a8a1a 947 }
GregCr 0:e5420f1a8a1a 948 else if( graphObjectTouched == BTN5_BORDER )
GregCr 0:e5420f1a8a1a 949 {
GregCr 0:e5420f1a8a1a 950 switch( Eeprom.EepromData.DemoSettings.MaxNumPacket )
GregCr 0:e5420f1a8a1a 951 {
GregCr 0:e5420f1a8a1a 952 case 0:
GregCr 0:e5420f1a8a1a 953 Eeprom.EepromData.DemoSettings.MaxNumPacket = 100;
GregCr 0:e5420f1a8a1a 954 break;
GregCr 0:e5420f1a8a1a 955 case 100:
GregCr 0:e5420f1a8a1a 956 Eeprom.EepromData.DemoSettings.MaxNumPacket = 200;
GregCr 0:e5420f1a8a1a 957 break;
GregCr 0:e5420f1a8a1a 958 case 200:
GregCr 0:e5420f1a8a1a 959 Eeprom.EepromData.DemoSettings.MaxNumPacket = 500;
GregCr 0:e5420f1a8a1a 960 break;
GregCr 0:e5420f1a8a1a 961 case 500:
GregCr 0:e5420f1a8a1a 962 Eeprom.EepromData.DemoSettings.MaxNumPacket = 1000;
GregCr 0:e5420f1a8a1a 963 break;
GregCr 0:e5420f1a8a1a 964 case 1000:
GregCr 0:e5420f1a8a1a 965 Eeprom.EepromData.DemoSettings.MaxNumPacket = 0;
GregCr 0:e5420f1a8a1a 966 break;
GregCr 0:e5420f1a8a1a 967 }
GregCr 0:e5420f1a8a1a 968 ButtonChangeText( BTN5_BORDER, NULL, ( uint8_t* )GetMenuDemoMaxNumPacket( ) );
GregCr 0:e5420f1a8a1a 969 }
GregCr 0:e5420f1a8a1a 970 else if( graphObjectTouched == BTN7_BORDER )
GregCr 0:e5420f1a8a1a 971 {
GregCr 0:e5420f1a8a1a 972 uint8_t modTmp = Eeprom.EepromData.DemoSettings.ModulationType;
GregCr 0:e5420f1a8a1a 973
GregCr 0:e5420f1a8a1a 974 EepromMcuReadBuffer( 0, Eeprom.Buffer, EEPROM_BUFFER_SIZE );
GregCr 0:e5420f1a8a1a 975 EepromLoadGeneralSettings( );
GregCr 0:e5420f1a8a1a 976 EepromLoadSettings( ( RadioPacketTypes_t )modTmp );
GregCr 0:e5420f1a8a1a 977 MenuSetPage( START_PAGE );
GregCr 0:e5420f1a8a1a 978 }
GregCr 0:e5420f1a8a1a 979 else if( graphObjectTouched == BTN8_BORDER )
GregCr 0:e5420f1a8a1a 980 {
GregCr 0:e5420f1a8a1a 981 EepromSaveSettings( DEMO_SETTINGS );
GregCr 0:e5420f1a8a1a 982 MenuSetPage( START_PAGE );
GregCr 0:e5420f1a8a1a 983 }
GregCr 0:e5420f1a8a1a 984 else if( refresh == true )
GregCr 0:e5420f1a8a1a 985 {
GregCr 0:e5420f1a8a1a 986 MenuSetPage( PAGE_UTILITIES );
GregCr 0:e5420f1a8a1a 987 }
GregCr 0:e5420f1a8a1a 988 break;
GregCr 0:e5420f1a8a1a 989
GregCr 0:e5420f1a8a1a 990 case PAGE_RADIO_TEST:
GregCr 1:b96176a4ccb8 991 if( graphObjectTouched == BTN0b_BORDER )
GregCr 0:e5420f1a8a1a 992 {
GregCr 0:e5420f1a8a1a 993 Eeprom.EepromData.DemoSettings.HoldDemo = true;
GregCr 0:e5420f1a8a1a 994 MenuSetPage( PAGE_SLEEP_MODE );
GregCr 0:e5420f1a8a1a 995 }
GregCr 1:b96176a4ccb8 996 else if( graphObjectTouched == BTN1_BORDER )
GregCr 0:e5420f1a8a1a 997 {
GregCr 0:e5420f1a8a1a 998 Eeprom.EepromData.DemoSettings.HoldDemo = true;
GregCr 0:e5420f1a8a1a 999 MenuSetPage( PAGE_STBY_RC_MODE );
GregCr 0:e5420f1a8a1a 1000 }
GregCr 1:b96176a4ccb8 1001 else if( graphObjectTouched == BTN2_BORDER )
GregCr 0:e5420f1a8a1a 1002 {
GregCr 0:e5420f1a8a1a 1003 Eeprom.EepromData.DemoSettings.HoldDemo = true;
GregCr 0:e5420f1a8a1a 1004 MenuSetPage( PAGE_STBY_XOSC_MODE );
GregCr 0:e5420f1a8a1a 1005 }
GregCr 1:b96176a4ccb8 1006 else if( graphObjectTouched == BTN3_BORDER )
GregCr 0:e5420f1a8a1a 1007 {
GregCr 0:e5420f1a8a1a 1008 Eeprom.EepromData.DemoSettings.HoldDemo = true;
GregCr 0:e5420f1a8a1a 1009 MenuSetPage( PAGE_TX_CW );
GregCr 0:e5420f1a8a1a 1010 }
GregCr 1:b96176a4ccb8 1011 else if( graphObjectTouched == BTN4_BORDER )
GregCr 0:e5420f1a8a1a 1012 {
GregCr 0:e5420f1a8a1a 1013 Eeprom.EepromData.DemoSettings.HoldDemo = true;
GregCr 0:e5420f1a8a1a 1014 MenuSetPage( PAGE_CONT_MODULATION );
GregCr 0:e5420f1a8a1a 1015 }
GregCr 1:b96176a4ccb8 1016 else if( graphObjectTouched == BTN5_BORDER )
GregCr 1:b96176a4ccb8 1017 {
GregCr 1:b96176a4ccb8 1018 Eeprom.EepromData.DemoSettings.HoldDemo = true;
GregCr 1:b96176a4ccb8 1019 MenuSetPage( PAGE_CONT_RX );
GregCr 1:b96176a4ccb8 1020 }
GregCr 0:e5420f1a8a1a 1021 else if( graphObjectTouched == BTN6_BORDER )
GregCr 0:e5420f1a8a1a 1022 {
GregCr 0:e5420f1a8a1a 1023 Eeprom.EepromData.DemoSettings.HoldDemo = true;
GregCr 1:b96176a4ccb8 1024 MenuSetPage( PAGE_RSSI_TEST );
GregCr 0:e5420f1a8a1a 1025 }
GregCr 0:e5420f1a8a1a 1026 else if( graphObjectTouched == BTN7_BORDER )
GregCr 0:e5420f1a8a1a 1027 {
GregCr 0:e5420f1a8a1a 1028 Eeprom.EepromData.DemoSettings.HoldDemo = true;
GregCr 0:e5420f1a8a1a 1029 MenuSetPage( START_PAGE );
GregCr 0:e5420f1a8a1a 1030 }
GregCr 0:e5420f1a8a1a 1031 break;
GregCr 0:e5420f1a8a1a 1032
GregCr 1:b96176a4ccb8 1033 case PAGE_RSSI_TEST:
GregCr 1:b96176a4ccb8 1034 if( graphObjectTouched == BTN7_BORDER )
GregCr 1:b96176a4ccb8 1035 {
GregCr 1:b96176a4ccb8 1036 StopDemoApplication( );
GregCr 1:b96176a4ccb8 1037 Eeprom.EepromData.DemoSettings.HoldDemo = true;
GregCr 1:b96176a4ccb8 1038 PreviousPage = PAGE_RADIO_TEST; // clear Previous page
GregCr 1:b96176a4ccb8 1039 MenuSetPage( PAGE_RADIO_TEST );
GregCr 1:b96176a4ccb8 1040 }
GregCr 1:b96176a4ccb8 1041 else if( graphObjectTouched == BTN8_BORDER )
GregCr 1:b96176a4ccb8 1042 {
GregCr 1:b96176a4ccb8 1043 if( Eeprom.EepromData.DemoSettings.HoldDemo == true )
GregCr 1:b96176a4ccb8 1044 {
GregCr 1:b96176a4ccb8 1045 Eeprom.EepromData.DemoSettings.HoldDemo = false;
GregCr 1:b96176a4ccb8 1046 StopDemoApplication( );
GregCr 1:b96176a4ccb8 1047 ButtonChangeText( BTN8_BORDER, ( uint8_t* )" STOP", NULL );
GregCr 1:b96176a4ccb8 1048 RunDemoTestRssi( );
GregCr 1:b96176a4ccb8 1049 }
GregCr 1:b96176a4ccb8 1050 else
GregCr 1:b96176a4ccb8 1051 {
GregCr 1:b96176a4ccb8 1052 Eeprom.EepromData.DemoSettings.HoldDemo = true;
GregCr 1:b96176a4ccb8 1053 StopDemoApplication( );
GregCr 1:b96176a4ccb8 1054 ButtonChangeText( BTN8_BORDER, ( uint8_t* )" START", NULL );
GregCr 1:b96176a4ccb8 1055 }
GregCr 1:b96176a4ccb8 1056 }
GregCr 1:b96176a4ccb8 1057 else if( graphObjectTouched == BTN9_BORDER )
GregCr 1:b96176a4ccb8 1058 {
GregCr 1:b96176a4ccb8 1059 Eeprom.EepromData.DemoSettings.HoldDemo = true;
GregCr 1:b96176a4ccb8 1060 StopDemoApplication( );
GregCr 1:b96176a4ccb8 1061 // "CANCEL" or "OK & SAVE" button of PAGE_RADIO_PARAM use
GregCr 1:b96176a4ccb8 1062 // PreviousPage to set next page. Speed up the navigation.
GregCr 1:b96176a4ccb8 1063 PreviousPage = PAGE_RSSI_TEST;
GregCr 1:b96176a4ccb8 1064 MenuSetPage( PAGE_RADIO_PARAM );
GregCr 1:b96176a4ccb8 1065 }
GregCr 1:b96176a4ccb8 1066 break;
GregCr 1:b96176a4ccb8 1067
GregCr 0:e5420f1a8a1a 1068 case PAGE_SLEEP_MODE:
GregCr 0:e5420f1a8a1a 1069 if( graphObjectTouched == BTN7_BORDER )
GregCr 0:e5420f1a8a1a 1070 {
GregCr 0:e5420f1a8a1a 1071 StopDemoApplication( );
GregCr 0:e5420f1a8a1a 1072 Eeprom.EepromData.DemoSettings.HoldDemo = true;
GregCr 1:b96176a4ccb8 1073 PreviousPage = PAGE_RADIO_TEST; // clear Previous page
GregCr 1:b96176a4ccb8 1074 MenuSetPage( PAGE_RADIO_TEST );
GregCr 0:e5420f1a8a1a 1075 }
GregCr 0:e5420f1a8a1a 1076 else if( graphObjectTouched == BTN8_BORDER )
GregCr 0:e5420f1a8a1a 1077 {
GregCr 0:e5420f1a8a1a 1078 if( Eeprom.EepromData.DemoSettings.HoldDemo == true )
GregCr 0:e5420f1a8a1a 1079 {
GregCr 0:e5420f1a8a1a 1080 Eeprom.EepromData.DemoSettings.HoldDemo = false;
GregCr 0:e5420f1a8a1a 1081 StopDemoApplication( );
GregCr 0:e5420f1a8a1a 1082 ButtonChangeText( BTN8_BORDER, ( uint8_t* )" STOP", NULL );
GregCr 0:e5420f1a8a1a 1083 RunDemoSleepMode( );
GregCr 0:e5420f1a8a1a 1084 }
GregCr 0:e5420f1a8a1a 1085 else
GregCr 0:e5420f1a8a1a 1086 {
GregCr 0:e5420f1a8a1a 1087 Eeprom.EepromData.DemoSettings.HoldDemo = true;
GregCr 0:e5420f1a8a1a 1088 StopDemoApplication( );
GregCr 0:e5420f1a8a1a 1089 ButtonChangeText( BTN8_BORDER, ( uint8_t* )" START", NULL );
GregCr 0:e5420f1a8a1a 1090 MenuSetPage( PAGE_SLEEP_MODE );
GregCr 0:e5420f1a8a1a 1091 }
GregCr 0:e5420f1a8a1a 1092 }
GregCr 0:e5420f1a8a1a 1093 else if( graphObjectTouched == BTN9_BORDER )
GregCr 0:e5420f1a8a1a 1094 {
GregCr 0:e5420f1a8a1a 1095 Eeprom.EepromData.DemoSettings.HoldDemo = true;
GregCr 0:e5420f1a8a1a 1096 StopDemoApplication( );
GregCr 0:e5420f1a8a1a 1097 // "CANCEL" or "OK & SAVE" button of PAGE_RADIO_PARAM use
GregCr 0:e5420f1a8a1a 1098 // PreviousPage to set next page. Speed up the navigation.
GregCr 0:e5420f1a8a1a 1099 PreviousPage = PAGE_SLEEP_MODE;
GregCr 0:e5420f1a8a1a 1100 MenuSetPage( PAGE_RADIO_PARAM );
GregCr 0:e5420f1a8a1a 1101 }
GregCr 0:e5420f1a8a1a 1102 break;
GregCr 0:e5420f1a8a1a 1103
GregCr 0:e5420f1a8a1a 1104 case PAGE_STBY_RC_MODE:
GregCr 0:e5420f1a8a1a 1105 if( graphObjectTouched == BTN7_BORDER )
GregCr 0:e5420f1a8a1a 1106 {
GregCr 0:e5420f1a8a1a 1107 StopDemoApplication( );
GregCr 0:e5420f1a8a1a 1108 Eeprom.EepromData.DemoSettings.HoldDemo = true;
GregCr 1:b96176a4ccb8 1109 PreviousPage = PAGE_RADIO_TEST; // clear Previous page
GregCr 1:b96176a4ccb8 1110 MenuSetPage( PAGE_RADIO_TEST );
GregCr 0:e5420f1a8a1a 1111 }
GregCr 0:e5420f1a8a1a 1112 else if( graphObjectTouched == BTN8_BORDER )
GregCr 0:e5420f1a8a1a 1113 {
GregCr 0:e5420f1a8a1a 1114 if( Eeprom.EepromData.DemoSettings.HoldDemo == true )
GregCr 0:e5420f1a8a1a 1115 {
GregCr 0:e5420f1a8a1a 1116 Eeprom.EepromData.DemoSettings.HoldDemo = false;
GregCr 0:e5420f1a8a1a 1117 StopDemoApplication( );
GregCr 0:e5420f1a8a1a 1118 ButtonChangeText( BTN8_BORDER, ( uint8_t* )" STOP", NULL );
GregCr 0:e5420f1a8a1a 1119 RunDemoStandbyRcMode( );
GregCr 0:e5420f1a8a1a 1120 }
GregCr 0:e5420f1a8a1a 1121 else
GregCr 0:e5420f1a8a1a 1122 {
GregCr 0:e5420f1a8a1a 1123 Eeprom.EepromData.DemoSettings.HoldDemo = true;
GregCr 0:e5420f1a8a1a 1124 StopDemoApplication( );
GregCr 0:e5420f1a8a1a 1125 ButtonChangeText( BTN8_BORDER, ( uint8_t* )" START", NULL );
GregCr 0:e5420f1a8a1a 1126 }
GregCr 0:e5420f1a8a1a 1127 }
GregCr 0:e5420f1a8a1a 1128 else if( graphObjectTouched == BTN9_BORDER )
GregCr 0:e5420f1a8a1a 1129 {
GregCr 0:e5420f1a8a1a 1130 Eeprom.EepromData.DemoSettings.HoldDemo = true;
GregCr 0:e5420f1a8a1a 1131 StopDemoApplication( );
GregCr 0:e5420f1a8a1a 1132 // "CANCEL" or "OK & SAVE" button of PAGE_RADIO_PARAM use
GregCr 0:e5420f1a8a1a 1133 // PreviousPage to set next page. Speed up the navigation.
GregCr 0:e5420f1a8a1a 1134 PreviousPage = PAGE_STBY_RC_MODE;
GregCr 0:e5420f1a8a1a 1135 MenuSetPage( PAGE_RADIO_PARAM );
GregCr 0:e5420f1a8a1a 1136 }
GregCr 0:e5420f1a8a1a 1137 break;
GregCr 0:e5420f1a8a1a 1138
GregCr 0:e5420f1a8a1a 1139 case PAGE_STBY_XOSC_MODE:
GregCr 0:e5420f1a8a1a 1140 if( graphObjectTouched == BTN7_BORDER )
GregCr 0:e5420f1a8a1a 1141 {
GregCr 0:e5420f1a8a1a 1142 StopDemoApplication( );
GregCr 0:e5420f1a8a1a 1143 Eeprom.EepromData.DemoSettings.HoldDemo = true;
GregCr 1:b96176a4ccb8 1144 PreviousPage = PAGE_RADIO_TEST; // clear Previous page
GregCr 1:b96176a4ccb8 1145 MenuSetPage( PAGE_RADIO_TEST );
GregCr 0:e5420f1a8a1a 1146 }
GregCr 0:e5420f1a8a1a 1147 else if( graphObjectTouched == BTN8_BORDER )
GregCr 0:e5420f1a8a1a 1148 {
GregCr 0:e5420f1a8a1a 1149 if( Eeprom.EepromData.DemoSettings.HoldDemo == true )
GregCr 0:e5420f1a8a1a 1150 {
GregCr 0:e5420f1a8a1a 1151 Eeprom.EepromData.DemoSettings.HoldDemo = false;
GregCr 0:e5420f1a8a1a 1152 StopDemoApplication( );
GregCr 0:e5420f1a8a1a 1153 ButtonChangeText( BTN8_BORDER, ( uint8_t* )" STOP", NULL );
GregCr 0:e5420f1a8a1a 1154 RunDemoStandbyXoscMode( );
GregCr 0:e5420f1a8a1a 1155 }
GregCr 0:e5420f1a8a1a 1156 else
GregCr 0:e5420f1a8a1a 1157 {
GregCr 0:e5420f1a8a1a 1158 Eeprom.EepromData.DemoSettings.HoldDemo = true;
GregCr 0:e5420f1a8a1a 1159 StopDemoApplication( );
GregCr 0:e5420f1a8a1a 1160 ButtonChangeText( BTN8_BORDER, ( uint8_t* )" START", NULL );
GregCr 0:e5420f1a8a1a 1161 }
GregCr 0:e5420f1a8a1a 1162 }
GregCr 0:e5420f1a8a1a 1163 else if( graphObjectTouched == BTN9_BORDER )
GregCr 0:e5420f1a8a1a 1164 {
GregCr 0:e5420f1a8a1a 1165 Eeprom.EepromData.DemoSettings.HoldDemo = true;
GregCr 0:e5420f1a8a1a 1166 StopDemoApplication( );
GregCr 0:e5420f1a8a1a 1167 // "CANCEL" or "OK & SAVE" button of PAGE_RADIO_PARAM use
GregCr 0:e5420f1a8a1a 1168 // PreviousPage to set next page. Speed up the navigation.
GregCr 0:e5420f1a8a1a 1169 PreviousPage = PAGE_STBY_XOSC_MODE;
GregCr 0:e5420f1a8a1a 1170 MenuSetPage( PAGE_RADIO_PARAM );
GregCr 0:e5420f1a8a1a 1171 }
GregCr 0:e5420f1a8a1a 1172 break;
GregCr 0:e5420f1a8a1a 1173
GregCr 0:e5420f1a8a1a 1174 case PAGE_TX_CW:
GregCr 0:e5420f1a8a1a 1175 if( graphObjectTouched == BTN7_BORDER )
GregCr 0:e5420f1a8a1a 1176 {
GregCr 0:e5420f1a8a1a 1177 StopDemoApplication( );
GregCr 0:e5420f1a8a1a 1178 Eeprom.EepromData.DemoSettings.HoldDemo = true;
GregCr 1:b96176a4ccb8 1179 PreviousPage = PAGE_RADIO_TEST; // clear Previous page
GregCr 1:b96176a4ccb8 1180 MenuSetPage( PAGE_RADIO_TEST );
GregCr 0:e5420f1a8a1a 1181 }
GregCr 0:e5420f1a8a1a 1182 else if( graphObjectTouched == BTN8_BORDER )
GregCr 0:e5420f1a8a1a 1183 {
GregCr 0:e5420f1a8a1a 1184 if( Eeprom.EepromData.DemoSettings.HoldDemo == true )
GregCr 0:e5420f1a8a1a 1185 {
GregCr 0:e5420f1a8a1a 1186 Eeprom.EepromData.DemoSettings.HoldDemo = false;
GregCr 0:e5420f1a8a1a 1187 StopDemoApplication( );
GregCr 0:e5420f1a8a1a 1188 ButtonChangeText( BTN8_BORDER, ( uint8_t* )" STOP", NULL );
GregCr 0:e5420f1a8a1a 1189 RunDemoTxCw( );
GregCr 0:e5420f1a8a1a 1190 }
GregCr 0:e5420f1a8a1a 1191 else
GregCr 0:e5420f1a8a1a 1192 {
GregCr 0:e5420f1a8a1a 1193 Eeprom.EepromData.DemoSettings.HoldDemo = true;
GregCr 0:e5420f1a8a1a 1194 StopDemoApplication( );
GregCr 0:e5420f1a8a1a 1195 ButtonChangeText( BTN8_BORDER, ( uint8_t* )" START", NULL );
GregCr 0:e5420f1a8a1a 1196 }
GregCr 0:e5420f1a8a1a 1197 }
GregCr 0:e5420f1a8a1a 1198 else if( graphObjectTouched == BTN9_BORDER )
GregCr 0:e5420f1a8a1a 1199 {
GregCr 0:e5420f1a8a1a 1200 Eeprom.EepromData.DemoSettings.HoldDemo = true;
GregCr 0:e5420f1a8a1a 1201 StopDemoApplication( );
GregCr 0:e5420f1a8a1a 1202 // "CANCEL" or "OK & SAVE" button of PAGE_RADIO_PARAM use
GregCr 0:e5420f1a8a1a 1203 // PreviousPage to set next page. Speed up the navigation.
GregCr 0:e5420f1a8a1a 1204 PreviousPage = PAGE_TX_CW;
GregCr 0:e5420f1a8a1a 1205 MenuSetPage( PAGE_RADIO_PARAM );
GregCr 0:e5420f1a8a1a 1206 }
GregCr 0:e5420f1a8a1a 1207 break;
GregCr 0:e5420f1a8a1a 1208
GregCr 0:e5420f1a8a1a 1209 case PAGE_CONT_MODULATION:
GregCr 0:e5420f1a8a1a 1210 if( graphObjectTouched == BTN7_BORDER )
GregCr 0:e5420f1a8a1a 1211 {
GregCr 0:e5420f1a8a1a 1212 StopDemoApplication( );
GregCr 0:e5420f1a8a1a 1213 Eeprom.EepromData.DemoSettings.HoldDemo = true;
GregCr 1:b96176a4ccb8 1214 PreviousPage = PAGE_RADIO_TEST; // clear Previous page
GregCr 1:b96176a4ccb8 1215 MenuSetPage( PAGE_RADIO_TEST );
GregCr 0:e5420f1a8a1a 1216 }
GregCr 0:e5420f1a8a1a 1217 else if( graphObjectTouched == BTN8_BORDER )
GregCr 0:e5420f1a8a1a 1218 {
GregCr 0:e5420f1a8a1a 1219 if( Eeprom.EepromData.DemoSettings.HoldDemo == true )
GregCr 0:e5420f1a8a1a 1220 {
GregCr 0:e5420f1a8a1a 1221 Eeprom.EepromData.DemoSettings.HoldDemo = false;
GregCr 0:e5420f1a8a1a 1222 StopDemoApplication( );
GregCr 0:e5420f1a8a1a 1223 ButtonChangeText( BTN8_BORDER, ( uint8_t* )" STOP", NULL );
GregCr 0:e5420f1a8a1a 1224 RunDemoTxContinuousModulation( );
GregCr 0:e5420f1a8a1a 1225 }
GregCr 0:e5420f1a8a1a 1226 else
GregCr 0:e5420f1a8a1a 1227 {
GregCr 0:e5420f1a8a1a 1228 Eeprom.EepromData.DemoSettings.HoldDemo = true;
GregCr 0:e5420f1a8a1a 1229 StopDemoApplication( );
GregCr 0:e5420f1a8a1a 1230 ButtonChangeText( BTN8_BORDER, ( uint8_t* )" START", NULL );
GregCr 0:e5420f1a8a1a 1231 wait_ms( 200 ); // debouncing of the touch screen
GregCr 0:e5420f1a8a1a 1232 }
GregCr 0:e5420f1a8a1a 1233 }
GregCr 0:e5420f1a8a1a 1234 else if( graphObjectTouched == BTN9_BORDER )
GregCr 0:e5420f1a8a1a 1235 {
GregCr 0:e5420f1a8a1a 1236 Eeprom.EepromData.DemoSettings.HoldDemo = true;
GregCr 0:e5420f1a8a1a 1237 StopDemoApplication( );
GregCr 0:e5420f1a8a1a 1238 // "CANCEL" or "OK & SAVE" button of PAGE_RADIO_PARAM use
GregCr 0:e5420f1a8a1a 1239 // PreviousPage to set next page. Speed up the navigation.
GregCr 0:e5420f1a8a1a 1240 PreviousPage = PAGE_CONT_MODULATION;
GregCr 0:e5420f1a8a1a 1241 MenuSetPage( PAGE_RADIO_PARAM );
GregCr 0:e5420f1a8a1a 1242 }
GregCr 0:e5420f1a8a1a 1243 break;
GregCr 0:e5420f1a8a1a 1244 case PAGE_CONT_RX:
GregCr 0:e5420f1a8a1a 1245 if( graphObjectTouched == BTN7_BORDER )
GregCr 0:e5420f1a8a1a 1246 {
GregCr 0:e5420f1a8a1a 1247 StopDemoApplication( );
GregCr 0:e5420f1a8a1a 1248 Eeprom.EepromData.DemoSettings.HoldDemo = true;
GregCr 1:b96176a4ccb8 1249 PreviousPage = PAGE_RADIO_TEST; // clear Previous page
GregCr 1:b96176a4ccb8 1250 MenuSetPage( PAGE_RADIO_TEST );
GregCr 0:e5420f1a8a1a 1251 }
GregCr 0:e5420f1a8a1a 1252 else if( graphObjectTouched == BTN8_BORDER )
GregCr 0:e5420f1a8a1a 1253 {
GregCr 0:e5420f1a8a1a 1254 if( Eeprom.EepromData.DemoSettings.HoldDemo == true )
GregCr 0:e5420f1a8a1a 1255 {
GregCr 0:e5420f1a8a1a 1256 Eeprom.EepromData.DemoSettings.HoldDemo = false;
GregCr 0:e5420f1a8a1a 1257 StopDemoApplication( );
GregCr 0:e5420f1a8a1a 1258 ButtonChangeText( BTN8_BORDER, ( uint8_t* )" STOP", NULL );
GregCr 0:e5420f1a8a1a 1259 RunDemoRxContinuous( );
GregCr 0:e5420f1a8a1a 1260 }
GregCr 0:e5420f1a8a1a 1261 else
GregCr 0:e5420f1a8a1a 1262 {
GregCr 0:e5420f1a8a1a 1263 Eeprom.EepromData.DemoSettings.HoldDemo = true;
GregCr 0:e5420f1a8a1a 1264 StopDemoApplication( );
GregCr 0:e5420f1a8a1a 1265 ButtonChangeText( BTN8_BORDER, ( uint8_t* )" START", NULL );
GregCr 0:e5420f1a8a1a 1266 }
GregCr 0:e5420f1a8a1a 1267 }
GregCr 0:e5420f1a8a1a 1268 else if( graphObjectTouched == BTN9_BORDER )
GregCr 0:e5420f1a8a1a 1269 {
GregCr 0:e5420f1a8a1a 1270 Eeprom.EepromData.DemoSettings.HoldDemo = true;
GregCr 0:e5420f1a8a1a 1271 StopDemoApplication( );
GregCr 0:e5420f1a8a1a 1272 // "CANCEL" or "OK & SAVE" button of PAGE_RADIO_PARAM use
GregCr 0:e5420f1a8a1a 1273 // PreviousPage to set next page. Speed up the navigation.
GregCr 0:e5420f1a8a1a 1274 PreviousPage = PAGE_CONT_RX;
GregCr 0:e5420f1a8a1a 1275 MenuSetPage( PAGE_RADIO_PARAM );
GregCr 0:e5420f1a8a1a 1276 }
GregCr 0:e5420f1a8a1a 1277 break;
GregCr 0:e5420f1a8a1a 1278 }
GregCr 0:e5420f1a8a1a 1279 }
GregCr 0:e5420f1a8a1a 1280 return CurrentPage;
GregCr 0:e5420f1a8a1a 1281 }
GregCr 0:e5420f1a8a1a 1282
GregCr 0:e5420f1a8a1a 1283 void MenuSetPage( uint8_t page )
GregCr 0:e5420f1a8a1a 1284 {
GregCr 0:e5420f1a8a1a 1285 if( page != CurrentPage )
GregCr 0:e5420f1a8a1a 1286 {
GregCr 0:e5420f1a8a1a 1287 // remove all button and text (except title, page border and line)
GregCr 0:e5420f1a8a1a 1288 // and disable all button (touchActive = false).
GregCr 0:e5420f1a8a1a 1289 GraphObject_t clearRect = { NULL, GO_RECTANGLE, 3, 35, 282, 230, 1, \
GregCr 0:e5420f1a8a1a 1290 BACK_COLOR, BACK_COLOR, true, BACK_COLOR, \
GregCr 0:e5420f1a8a1a 1291 NULL, false };
GregCr 0:e5420f1a8a1a 1292
GregCr 0:e5420f1a8a1a 1293 GraphObjectClear( &clearRect, true );
GregCr 0:e5420f1a8a1a 1294 for( uint8_t i = 0; i < GRAPH_OBJECTS_COUNT; i++ )
GregCr 0:e5420f1a8a1a 1295 {
GregCr 0:e5420f1a8a1a 1296 MenuObjects[i].TouchActive = false;
GregCr 0:e5420f1a8a1a 1297 }
GregCr 0:e5420f1a8a1a 1298 }
GregCr 0:e5420f1a8a1a 1299
GregCr 0:e5420f1a8a1a 1300 switch( page )
GregCr 0:e5420f1a8a1a 1301 {
GregCr 0:e5420f1a8a1a 1302 case START_PAGE:
GregCr 0:e5420f1a8a1a 1303 if( DeviceConnected == SX1261 )
GregCr 0:e5420f1a8a1a 1304 {
GregCr 2:8e1b4210df6b 1305 if( MatchingFreq == MATCHING_FREQ_915 )
GregCr 1:b96176a4ccb8 1306 {
GregCr 1:b96176a4ccb8 1307 DrawText( TITLE_TEXT, ( uint8_t* )" SX1261 915MHz Demo Kit", NULL, NULL );
GregCr 1:b96176a4ccb8 1308 }
GregCr 2:8e1b4210df6b 1309 else if( MatchingFreq == MATCHING_FREQ_868 )
GregCr 1:b96176a4ccb8 1310 {
GregCr 1:b96176a4ccb8 1311 DrawText( TITLE_TEXT, ( uint8_t* )" SX1261 868MHz Demo Kit", NULL, NULL );
GregCr 1:b96176a4ccb8 1312 }
GregCr 0:e5420f1a8a1a 1313 }
GregCr 2:8e1b4210df6b 1314 else if( DeviceConnected == SX1262 )
GregCr 0:e5420f1a8a1a 1315 {
GregCr 2:8e1b4210df6b 1316 if( MatchingFreq == MATCHING_FREQ_915 )
GregCr 1:b96176a4ccb8 1317 {
GregCr 1:b96176a4ccb8 1318 DrawText( TITLE_TEXT, ( uint8_t* )" SX1262 915MHz Demo Kit", NULL, NULL );
GregCr 1:b96176a4ccb8 1319 }
GregCr 2:8e1b4210df6b 1320 else if( MatchingFreq == MATCHING_FREQ_868 )
GregCr 1:b96176a4ccb8 1321 {
GregCr 1:b96176a4ccb8 1322 DrawText( TITLE_TEXT, ( uint8_t* )" SX1262 868MHz Demo Kit", NULL, NULL );
GregCr 1:b96176a4ccb8 1323 }
GregCr 0:e5420f1a8a1a 1324 }
GregCr 2:8e1b4210df6b 1325 else if( DeviceConnected == SX1268 )
GregCr 2:8e1b4210df6b 1326 {
GregCr 2:8e1b4210df6b 1327 if( MatchingFreq == MATCHING_FREQ_780 )
GregCr 2:8e1b4210df6b 1328 {
GregCr 2:8e1b4210df6b 1329 DrawText( TITLE_TEXT, ( uint8_t* )" SX1268 780MHz Demo Kit", NULL, NULL );
GregCr 2:8e1b4210df6b 1330 }
GregCr 2:8e1b4210df6b 1331 else if( MatchingFreq == MATCHING_FREQ_490 )
GregCr 2:8e1b4210df6b 1332 {
GregCr 2:8e1b4210df6b 1333 DrawText( TITLE_TEXT, ( uint8_t* )" SX1268 490MHz Demo Kit", NULL, NULL );
GregCr 2:8e1b4210df6b 1334 }
GregCr 2:8e1b4210df6b 1335 }
GregCr 2:8e1b4210df6b 1336
GregCr 0:e5420f1a8a1a 1337 DisplayDriverDrawLogo( SemtechLogo, 20, 37 );
GregCr 0:e5420f1a8a1a 1338 DrawActiveButton( BTN2_BORDER, ( uint8_t* )"DEMO Ping Pong", NULL );
GregCr 0:e5420f1a8a1a 1339 DrawActiveButton( BTN3_BORDER, ( uint8_t* )"DEMO PER", NULL );
GregCr 0:e5420f1a8a1a 1340 DrawActiveButton( BTN4_BORDER, ( uint8_t* )"Radio Test Modes", NULL );
GregCr 0:e5420f1a8a1a 1341 DrawActiveButton( BTN5_BORDER, ( uint8_t* )"Radio Settings", NULL );
GregCr 0:e5420f1a8a1a 1342 DrawActiveButton( BTN6_BORDER, ( uint8_t* )"Utilities", NULL );
GregCr 0:e5420f1a8a1a 1343 CurrentPage = START_PAGE;
GregCr 0:e5420f1a8a1a 1344 break;
GregCr 0:e5420f1a8a1a 1345
GregCr 0:e5420f1a8a1a 1346 case PAGE_PING_PONG:
GregCr 0:e5420f1a8a1a 1347 if( CurrentPage == PAGE_PING_PONG )
GregCr 0:e5420f1a8a1a 1348 {
GregCr 0:e5420f1a8a1a 1349 if( Eeprom.EepromData.DemoSettings.HoldDemo == true )
GregCr 0:e5420f1a8a1a 1350 {
GregCr 0:e5420f1a8a1a 1351 ButtonChangeText( BTN8_BORDER, ( uint8_t* )" START", NULL );
GregCr 0:e5420f1a8a1a 1352 }
GregCr 0:e5420f1a8a1a 1353 if( Eeprom.EepromData.DemoSettings.Entity == MASTER )
GregCr 0:e5420f1a8a1a 1354 {
GregCr 0:e5420f1a8a1a 1355 DrawText( LINE4_COL0_TEXT, NULL, ( uint8_t* )GetMenuDemoRxOkSlave( ), ( uint8_t* )GetMenuDemoRxOk( ) );
GregCr 0:e5420f1a8a1a 1356 DrawText( LINE5_COL0_TEXT, NULL, ( uint8_t* )GetMenuDemoRxKoSlave( ), ( uint8_t* )GetMenuDemoRxKo( ) );
GregCr 0:e5420f1a8a1a 1357 DrawText( LINE6_COL0_TEXT, NULL, ( uint8_t* )GetMenuDemoResultPerCent1( Eeprom.EepromData.DemoSettings.CntPacketRxOKSlave, Eeprom.EepromData.DemoSettings.CntPacketRxOKSlave + Eeprom.EepromData.DemoSettings.CntPacketRxKOSlave ), \
GregCr 0:e5420f1a8a1a 1358 ( uint8_t* )GetMenuDemoResultPerCent2( Eeprom.EepromData.DemoSettings.CntPacketRxOK, Eeprom.EepromData.DemoSettings.CntPacketRxOK + Eeprom.EepromData.DemoSettings.CntPacketRxKO + Eeprom.EepromData.DemoSettings.RxTimeOutCount ) );
GregCr 0:e5420f1a8a1a 1359 DrawText( LINE7_COL0_TEXT, NULL, ( uint8_t* )GetMenuDemoResultPerCent1( Eeprom.EepromData.DemoSettings.CntPacketRxKOSlave, Eeprom.EepromData.DemoSettings.CntPacketRxOKSlave + Eeprom.EepromData.DemoSettings.CntPacketRxKOSlave ), \
GregCr 0:e5420f1a8a1a 1360 ( uint8_t* )GetMenuDemoResultPerCent2( Eeprom.EepromData.DemoSettings.CntPacketRxKO + Eeprom.EepromData.DemoSettings.RxTimeOutCount, Eeprom.EepromData.DemoSettings.CntPacketRxOK + Eeprom.EepromData.DemoSettings.CntPacketRxKO + Eeprom.EepromData.DemoSettings.RxTimeOutCount ) );
GregCr 0:e5420f1a8a1a 1361 DrawText( LINE8_COL0_TEXT, NULL, ( uint8_t* )" ", ( uint8_t* )GetMenuDemoRssi( ) );
GregCr 0:e5420f1a8a1a 1362 DrawText( LINE9_COL0_TEXT, NULL, ( uint8_t* )" ", ( uint8_t* )GetMenuDemoSnr( ) );
GregCr 0:e5420f1a8a1a 1363 }
GregCr 0:e5420f1a8a1a 1364 else
GregCr 0:e5420f1a8a1a 1365 {
GregCr 0:e5420f1a8a1a 1366 DrawText( LINE4_COL0_TEXT, NULL, ( uint8_t* )GetMenuDemoRxOk( ), NULL );
GregCr 0:e5420f1a8a1a 1367 DrawText( LINE5_COL0_TEXT, NULL, ( uint8_t* )GetMenuDemoRxKo( ), NULL );
GregCr 0:e5420f1a8a1a 1368 DrawText( LINE6_COL0_TEXT, NULL, ( uint8_t* )GetMenuDemoResultPerCent1( Eeprom.EepromData.DemoSettings.CntPacketRxOK, Eeprom.EepromData.DemoSettings.CntPacketRxOK + Eeprom.EepromData.DemoSettings.CntPacketRxKO + Eeprom.EepromData.DemoSettings.RxTimeOutCount ), NULL );
GregCr 0:e5420f1a8a1a 1369 DrawText( LINE7_COL0_TEXT, NULL, ( uint8_t* )GetMenuDemoResultPerCent1( Eeprom.EepromData.DemoSettings.CntPacketRxKO + Eeprom.EepromData.DemoSettings.RxTimeOutCount, Eeprom.EepromData.DemoSettings.CntPacketRxOK + Eeprom.EepromData.DemoSettings.CntPacketRxKO + Eeprom.EepromData.DemoSettings.RxTimeOutCount ), NULL );
GregCr 0:e5420f1a8a1a 1370 DrawText( LINE8_COL0_TEXT, NULL, ( uint8_t* )GetMenuDemoRssi( ), NULL );
GregCr 0:e5420f1a8a1a 1371 DrawText( LINE9_COL0_TEXT, NULL, ( uint8_t* )GetMenuDemoSnr( ), NULL );
GregCr 0:e5420f1a8a1a 1372 }
GregCr 0:e5420f1a8a1a 1373 }
GregCr 0:e5420f1a8a1a 1374 else
GregCr 0:e5420f1a8a1a 1375 {
GregCr 0:e5420f1a8a1a 1376 DrawText( TITLE_TEXT, ( uint8_t* )" PING PONG Demo", NULL, NULL );
GregCr 0:e5420f1a8a1a 1377 DisplayCurrentRadioParams( PAGE_PING_PONG );
GregCr 0:e5420f1a8a1a 1378 DrawText( LINE3_COL0_TEXT, ( uint8_t* )GetTotalPackets( ), ( uint8_t* )" SLAVE", NULL );
GregCr 0:e5420f1a8a1a 1379 DrawText( LINE4_COL0_TEXT, ( uint8_t* )"Rx OK", ( uint8_t* )" 0", NULL );
GregCr 0:e5420f1a8a1a 1380 DrawText( LINE5_COL0_TEXT, ( uint8_t* )"Rx KO", ( uint8_t* )" 0", NULL );
GregCr 0:e5420f1a8a1a 1381 DrawText( LINE6_COL0_TEXT, ( uint8_t* )"Rx PSR", ( uint8_t* )" 0.00", NULL );
GregCr 0:e5420f1a8a1a 1382 DrawText( LINE7_COL0_TEXT, ( uint8_t* )"Rx PER", ( uint8_t* )" 0.00", NULL );
GregCr 0:e5420f1a8a1a 1383
GregCr 0:e5420f1a8a1a 1384 if( Eeprom.EepromData.DemoSettings.Entity == MASTER )
GregCr 0:e5420f1a8a1a 1385 {
GregCr 0:e5420f1a8a1a 1386 DrawActiveButton( BTN0_BORDER, ( uint8_t* )" MASTER", NULL );
GregCr 0:e5420f1a8a1a 1387 DrawText( LINE3_COL0_TEXT, NULL, NULL, ( uint8_t* )"MASTER" );
GregCr 0:e5420f1a8a1a 1388 DrawText( LINE4_COL0_TEXT, NULL, NULL, ( uint8_t* )" 0" );
GregCr 0:e5420f1a8a1a 1389 DrawText( LINE5_COL0_TEXT, NULL, NULL, ( uint8_t* )" 0" );
GregCr 0:e5420f1a8a1a 1390 DrawText( LINE6_COL0_TEXT, NULL, NULL, ( uint8_t* )" 0.00" );
GregCr 0:e5420f1a8a1a 1391 DrawText( LINE7_COL0_TEXT, NULL, NULL, ( uint8_t* )" 0.00" );
GregCr 0:e5420f1a8a1a 1392 DrawText( LINE8_COL0_TEXT, ( uint8_t* )"Last Rssi", ( uint8_t* )" ", ( uint8_t* )" 0" );
GregCr 0:e5420f1a8a1a 1393 DrawText( LINE9_COL0_TEXT, ( uint8_t* )"Last SNR", ( uint8_t* )" ", ( uint8_t* )" 0" );
GregCr 0:e5420f1a8a1a 1394 }
GregCr 0:e5420f1a8a1a 1395 else
GregCr 0:e5420f1a8a1a 1396 {
GregCr 0:e5420f1a8a1a 1397 DrawText( LINE8_COL0_TEXT, ( uint8_t* )"Last Rssi", ( uint8_t* )" 0", ( uint8_t* )" ");
GregCr 0:e5420f1a8a1a 1398 DrawText( LINE9_COL0_TEXT, ( uint8_t* )"Last SNR", ( uint8_t* )" 0", ( uint8_t* )" " );
GregCr 0:e5420f1a8a1a 1399 DrawActiveButton( BTN0_BORDER, ( uint8_t* )" SLAVE", NULL );
GregCr 0:e5420f1a8a1a 1400 }
GregCr 1:b96176a4ccb8 1401 DrawActiveButton( BTN7_BORDER, ( uint8_t* )" BACK", NULL );
GregCr 0:e5420f1a8a1a 1402 DrawActiveButton( BTN8_BORDER, ( uint8_t* )" START", NULL );
GregCr 0:e5420f1a8a1a 1403 DrawActiveButton( BTN9_BORDER, ( uint8_t* )" SETTINGS", NULL );
GregCr 0:e5420f1a8a1a 1404 }
GregCr 0:e5420f1a8a1a 1405 CurrentPage = PAGE_PING_PONG;
GregCr 0:e5420f1a8a1a 1406 break;
GregCr 0:e5420f1a8a1a 1407 case PAGE_PER:
GregCr 0:e5420f1a8a1a 1408 if( CurrentPage == PAGE_PER )
GregCr 0:e5420f1a8a1a 1409 {
GregCr 0:e5420f1a8a1a 1410 if( Eeprom.EepromData.DemoSettings.HoldDemo == true )
GregCr 0:e5420f1a8a1a 1411 {
GregCr 0:e5420f1a8a1a 1412 ButtonChangeText( BTN8_BORDER, ( uint8_t* )" START", NULL );
GregCr 0:e5420f1a8a1a 1413 }
GregCr 0:e5420f1a8a1a 1414 if( Eeprom.EepromData.DemoSettings.Entity == MASTER )
GregCr 0:e5420f1a8a1a 1415 {
GregCr 0:e5420f1a8a1a 1416 DrawText( LINE4_COL0_TEXT, NULL, ( uint8_t* )GetMenuDemoNumSentPacket( ), NULL );
GregCr 0:e5420f1a8a1a 1417 }
GregCr 0:e5420f1a8a1a 1418 else
GregCr 0:e5420f1a8a1a 1419 {
GregCr 0:e5420f1a8a1a 1420 DrawText( LINE4_COL0_TEXT, NULL, ( uint8_t* )GetMenuDemoRxOk( ), NULL );
GregCr 0:e5420f1a8a1a 1421 DrawText( LINE5_COL0_TEXT, NULL, ( uint8_t* )GetMenuDemoRxKo( ), NULL );
GregCr 0:e5420f1a8a1a 1422 DrawText( LINE6_COL0_TEXT, NULL, ( uint8_t* )GetMenuDemoResultPerCent1( Eeprom.EepromData.DemoSettings.CntPacketRxKO + Eeprom.EepromData.DemoSettings.RxTimeOutCount, Eeprom.EepromData.DemoSettings.CntPacketRxOK + Eeprom.EepromData.DemoSettings.CntPacketRxKO + Eeprom.EepromData.DemoSettings.RxTimeOutCount ), NULL );
GregCr 0:e5420f1a8a1a 1423 DrawText( LINE7_COL0_TEXT, NULL, ( uint8_t* )GetMenuDemoFreqError( ), NULL );
GregCr 0:e5420f1a8a1a 1424 DrawText( LINE8_COL0_TEXT, NULL, ( uint8_t* )GetMenuDemoRssi( ), NULL );
GregCr 0:e5420f1a8a1a 1425 DrawText( LINE9_COL0_TEXT, NULL, ( uint8_t* )GetMenuDemoSnr( ), NULL );
GregCr 0:e5420f1a8a1a 1426 }
GregCr 0:e5420f1a8a1a 1427 }
GregCr 0:e5420f1a8a1a 1428 else
GregCr 0:e5420f1a8a1a 1429 {
GregCr 0:e5420f1a8a1a 1430 DrawText( TITLE_TEXT, ( uint8_t* )" PER Demo", NULL, NULL );
GregCr 0:e5420f1a8a1a 1431 DrawText( LINE3_COL0_TEXT, ( uint8_t* )"Test Total", ( uint8_t* )GetMenuDemoMaxNumPacket( ), NULL );
GregCr 0:e5420f1a8a1a 1432 DisplayCurrentRadioParams( PAGE_PER );
GregCr 0:e5420f1a8a1a 1433
GregCr 0:e5420f1a8a1a 1434 if( Eeprom.EepromData.DemoSettings.Entity == MASTER )
GregCr 0:e5420f1a8a1a 1435 {
GregCr 0:e5420f1a8a1a 1436 DrawActiveButton( BTN0_BORDER, ( uint8_t* )" MASTER", NULL );
GregCr 0:e5420f1a8a1a 1437 DrawText( LINE4_COL0_TEXT, ( uint8_t* )"Transmitted", ( uint8_t* )GetMenuDemoNumSentPacket( ), NULL );
GregCr 0:e5420f1a8a1a 1438 }
GregCr 0:e5420f1a8a1a 1439 else
GregCr 0:e5420f1a8a1a 1440 {
GregCr 0:e5420f1a8a1a 1441 DrawActiveButton( BTN0_BORDER, ( uint8_t* )" SLAVE", NULL );
GregCr 0:e5420f1a8a1a 1442 DrawText( LINE4_COL0_TEXT, ( uint8_t* )"Rx OK", ( uint8_t* )" 0", NULL );
GregCr 0:e5420f1a8a1a 1443 DrawText( LINE5_COL0_TEXT, ( uint8_t* )"Rx KO", ( uint8_t* )" 0", NULL );
GregCr 0:e5420f1a8a1a 1444 DrawText( LINE6_COL0_TEXT, ( uint8_t* )"PER", ( uint8_t* )" 0.00", NULL );
GregCr 0:e5420f1a8a1a 1445 DrawText( LINE7_COL0_TEXT, ( uint8_t* )"Freq Err", ( uint8_t* )" 0", NULL );
GregCr 0:e5420f1a8a1a 1446 DrawText( LINE8_COL0_TEXT, ( uint8_t* )"Last Rssi", ( uint8_t* )" 0", NULL );
GregCr 0:e5420f1a8a1a 1447 DrawText( LINE9_COL0_TEXT, ( uint8_t* )"Last SNR", ( uint8_t* )" 0", NULL );
GregCr 0:e5420f1a8a1a 1448 }
GregCr 1:b96176a4ccb8 1449 DrawActiveButton( BTN7_BORDER, ( uint8_t* )" BACK", NULL );
GregCr 0:e5420f1a8a1a 1450 DrawActiveButton( BTN8_BORDER, ( uint8_t* )" START", NULL );
GregCr 0:e5420f1a8a1a 1451 DrawActiveButton( BTN9_BORDER, ( uint8_t* )" SETTINGS", NULL );
GregCr 0:e5420f1a8a1a 1452 }
GregCr 0:e5420f1a8a1a 1453 CurrentPage = PAGE_PER;
GregCr 0:e5420f1a8a1a 1454 break;
GregCr 0:e5420f1a8a1a 1455
GregCr 0:e5420f1a8a1a 1456 case PAGE_RADIO_PARAM:
GregCr 0:e5420f1a8a1a 1457 if( ErrorParam == true )
GregCr 0:e5420f1a8a1a 1458 {
GregCr 0:e5420f1a8a1a 1459 MenuObjects[BTN3_VALUE_TEXT].FrontColor = OBJECT_ERROR;
GregCr 0:e5420f1a8a1a 1460 MenuObjects[BTN4_VALUE_TEXT].FrontColor = OBJECT_ERROR;
GregCr 0:e5420f1a8a1a 1461 MenuObjects[BTN6_VALUE_TEXT].FrontColor = OBJECT_ERROR;
GregCr 0:e5420f1a8a1a 1462 }
GregCr 0:e5420f1a8a1a 1463 if( CurrentPage != PAGE_RADIO_PARAM )
GregCr 0:e5420f1a8a1a 1464 {
GregCr 0:e5420f1a8a1a 1465 DrawText( TITLE_TEXT, ( uint8_t* )" Radio Settings", NULL, NULL );
GregCr 0:e5420f1a8a1a 1466 DrawActiveButton( BTN0_BORDER, ( uint8_t* )"Mod:", ( uint8_t* )GetMenuRadioFrameType( ) );
GregCr 0:e5420f1a8a1a 1467 DrawActiveButton( BTN1_BORDER, ( uint8_t* )"Freq:", ( uint8_t* )GetRadioFrequency( ) );
GregCr 0:e5420f1a8a1a 1468 DrawActiveButton( BTN2_BORDER, ( uint8_t* )"Tx Pow:", ( uint8_t* )GetRadioTxPower( ) );
GregCr 0:e5420f1a8a1a 1469 DrawActiveButton( BTN3_BORDER, ( uint8_t* )"Param 1:", ( uint8_t* )GetRadioModulationParameters1( ) );
GregCr 0:e5420f1a8a1a 1470 DrawActiveButton( BTN4_BORDER, ( uint8_t* )"Param 2:", ( uint8_t* )GetRadioModulationParameters2( ) );
GregCr 0:e5420f1a8a1a 1471 DrawActiveButton( BTN5_BORDER, ( uint8_t* )"Param 3:", ( uint8_t* )GetRadioModulationParameters3( ) );
GregCr 0:e5420f1a8a1a 1472 DrawActiveButton( BTN6_BORDER, ( uint8_t* )"Param 4:", ( uint8_t* )GetRadioModulationParameters4( ) );
GregCr 0:e5420f1a8a1a 1473 DrawActiveButton( BTN7_BORDER, ( uint8_t* )" CANCEL", NULL );
GregCr 0:e5420f1a8a1a 1474 DrawActiveButton( BTN8_BORDER, ( uint8_t* )" OK & SAVE", NULL );
GregCr 0:e5420f1a8a1a 1475 DrawActiveButton( BTN9_BORDER, ( uint8_t* )"PL:", ( uint8_t* )GetRadioPayloadLength( ) );
GregCr 0:e5420f1a8a1a 1476 }
GregCr 0:e5420f1a8a1a 1477 MenuObjects[BTN3_VALUE_TEXT].FrontColor = TEXT_VALUE;
GregCr 0:e5420f1a8a1a 1478 MenuObjects[BTN4_VALUE_TEXT].FrontColor = TEXT_VALUE;
GregCr 0:e5420f1a8a1a 1479 MenuObjects[BTN6_VALUE_TEXT].FrontColor = TEXT_VALUE;
GregCr 0:e5420f1a8a1a 1480 CurrentPage = PAGE_RADIO_PARAM;
GregCr 0:e5420f1a8a1a 1481 break;
GregCr 0:e5420f1a8a1a 1482
GregCr 0:e5420f1a8a1a 1483 case PAGE_RADIO_PARAM_FREQ:
GregCr 0:e5420f1a8a1a 1484 if( CurrentPage != PAGE_RADIO_PARAM_FREQ )
GregCr 0:e5420f1a8a1a 1485 {
GregCr 0:e5420f1a8a1a 1486 DrawText( TITLE_TEXT, ( uint8_t* )" Radio Settings : Freq", NULL, NULL );
GregCr 0:e5420f1a8a1a 1487 DrawActiveButton( BTN0_BORDER, ( uint8_t* )" OK", NULL );
GregCr 0:e5420f1a8a1a 1488 DrawActiveButton( BTN2_BORDER, ( uint8_t* )"Freq:", ( uint8_t* )GetRadioFrequency( ) );
GregCr 0:e5420f1a8a1a 1489 DrawActiveButton( BTN3_BORDER, ( uint8_t* )"Preset1:", ( uint8_t* )GetRadioFreqBasePS1( ) );
GregCr 0:e5420f1a8a1a 1490 DrawActiveButton( BTN4_BORDER, ( uint8_t* )"Preset2:", ( uint8_t* )GetRadioFreqBasePS2( ) );
GregCr 0:e5420f1a8a1a 1491 DrawActiveButton( BTN5_BORDER, ( uint8_t* )"Preset3:", ( uint8_t* )GetRadioFreqBasePS3( ) );
GregCr 0:e5420f1a8a1a 1492 DrawActiveButton( BTN6_BORDER, ( uint8_t* )"Step:", ( uint8_t* )GetRadioFreqBase( ) );
GregCr 0:e5420f1a8a1a 1493 DrawActiveButton( BTN7_BORDER, ( uint8_t* )" -", NULL );
GregCr 0:e5420f1a8a1a 1494 DrawActiveButton( BTN8_BORDER, ( uint8_t* )" +", NULL );
GregCr 0:e5420f1a8a1a 1495 }
GregCr 0:e5420f1a8a1a 1496 CurrentPage = PAGE_RADIO_PARAM_FREQ;
GregCr 0:e5420f1a8a1a 1497 break;
GregCr 0:e5420f1a8a1a 1498
GregCr 0:e5420f1a8a1a 1499 case PAGE_UTILITIES:
GregCr 0:e5420f1a8a1a 1500 if( CurrentPage != PAGE_UTILITIES )
GregCr 0:e5420f1a8a1a 1501 {
GregCr 0:e5420f1a8a1a 1502 DrawText( TITLE_TEXT, ( uint8_t* )" Utilities", NULL, NULL );
GregCr 0:e5420f1a8a1a 1503 // FIRMWARE_VERSION is defined in DemoApplication.h
GregCr 0:e5420f1a8a1a 1504 DrawText( LINE0_TEXT, ( uint8_t* )FIRMWARE_VERSION, NULL, NULL );
GregCr 0:e5420f1a8a1a 1505
GregCr 0:e5420f1a8a1a 1506 DrawActiveButton( BTN0_BORDER, ( uint8_t* )"Fact. Reset", NULL );
GregCr 0:e5420f1a8a1a 1507 DrawActiveButton( BTN3_BORDER, ( uint8_t* )"RxBoost:", ( uint8_t* )GetMenuDemoRadioBoostedRx( ) );
GregCr 0:e5420f1a8a1a 1508 DrawActiveButton( BTN4_BORDER, ( uint8_t* )"DC Reg: ", ( uint8_t* )GetMenuDemoRadioPowerMode( ) );
GregCr 0:e5420f1a8a1a 1509 DrawActiveButton( BTN5_BORDER, ( uint8_t* )"Packets:", ( uint8_t* )GetMenuDemoMaxNumPacket( ) );
GregCr 0:e5420f1a8a1a 1510 DrawActiveButton( BTN7_BORDER, ( uint8_t* )" CANCEL", NULL );
GregCr 0:e5420f1a8a1a 1511 DrawActiveButton( BTN8_BORDER, ( uint8_t* )" OK & SAVE", NULL );
GregCr 0:e5420f1a8a1a 1512 }
GregCr 0:e5420f1a8a1a 1513 CurrentPage = PAGE_UTILITIES;
GregCr 0:e5420f1a8a1a 1514 break;
GregCr 0:e5420f1a8a1a 1515
GregCr 0:e5420f1a8a1a 1516 case PAGE_RADIO_TEST:
GregCr 0:e5420f1a8a1a 1517 DrawText( TITLE_TEXT, ( uint8_t* )" Radio Test Modes", NULL, NULL );
GregCr 1:b96176a4ccb8 1518 DrawActiveButton( BTN0b_BORDER, ( uint8_t* )" Sleep Mode", NULL );
GregCr 1:b96176a4ccb8 1519 DrawActiveButton( BTN1_BORDER, ( uint8_t* )" Standby RC Mode", NULL );
GregCr 1:b96176a4ccb8 1520 DrawActiveButton( BTN2_BORDER, ( uint8_t* )" Standby XOSC Mode", NULL );
GregCr 1:b96176a4ccb8 1521 DrawActiveButton( BTN3_BORDER, ( uint8_t* )" Set Tx CW", NULL );
GregCr 1:b96176a4ccb8 1522 DrawActiveButton( BTN4_BORDER, ( uint8_t* )" Set Cont. Modulation", NULL );
GregCr 1:b96176a4ccb8 1523 DrawActiveButton( BTN5_BORDER, ( uint8_t* )" Set Cont. Receive", NULL );
GregCr 1:b96176a4ccb8 1524 DrawActiveButton( BTN6_BORDER, ( uint8_t* )" Test Rssi ", NULL );
GregCr 1:b96176a4ccb8 1525 DrawActiveButton( BTN7_BORDER, ( uint8_t* )" BACK", NULL );
GregCr 0:e5420f1a8a1a 1526 CurrentPage = PAGE_RADIO_TEST;
GregCr 0:e5420f1a8a1a 1527 break;
GregCr 0:e5420f1a8a1a 1528
GregCr 1:b96176a4ccb8 1529 case PAGE_RSSI_TEST:
GregCr 1:b96176a4ccb8 1530 if( CurrentPage == PAGE_RSSI_TEST )
GregCr 1:b96176a4ccb8 1531 {
GregCr 1:b96176a4ccb8 1532 if( Eeprom.EepromData.DemoSettings.HoldDemo == true )
GregCr 1:b96176a4ccb8 1533 {
GregCr 1:b96176a4ccb8 1534 ButtonChangeText( BTN8_BORDER, ( uint8_t* )" START", NULL );
GregCr 1:b96176a4ccb8 1535 }
GregCr 1:b96176a4ccb8 1536 DrawText( LINE6_COL0_TEXT, NULL, ( uint8_t* )GetMenuDemoRssi( ), NULL );
GregCr 1:b96176a4ccb8 1537 }
GregCr 1:b96176a4ccb8 1538 else
GregCr 1:b96176a4ccb8 1539 {
GregCr 1:b96176a4ccb8 1540 DrawText( TITLE_TEXT, ( uint8_t* )" Test Rssi ", NULL, NULL );
GregCr 1:b96176a4ccb8 1541 DisplayCurrentRadioParams( PAGE_CONT_RX );
GregCr 1:b96176a4ccb8 1542 DrawText( LINE6_COL0_TEXT, ( uint8_t* )"Rssi", ( uint8_t* )" 0.00", NULL );
GregCr 1:b96176a4ccb8 1543 DrawActiveButton( BTN7_BORDER, ( uint8_t* )" BACK", NULL );
GregCr 1:b96176a4ccb8 1544 DrawActiveButton( BTN8_BORDER, ( uint8_t* )" START", NULL );
GregCr 1:b96176a4ccb8 1545 DrawActiveButton( BTN9_BORDER, ( uint8_t* )" SETTINGS", NULL );
GregCr 1:b96176a4ccb8 1546 }
GregCr 1:b96176a4ccb8 1547 CurrentPage = PAGE_RSSI_TEST;
GregCr 1:b96176a4ccb8 1548 break;
GregCr 1:b96176a4ccb8 1549
GregCr 0:e5420f1a8a1a 1550 case PAGE_SLEEP_MODE:
GregCr 1:b96176a4ccb8 1551 if( CurrentPage != PAGE_SLEEP_MODE )
GregCr 0:e5420f1a8a1a 1552 {
GregCr 0:e5420f1a8a1a 1553 DrawText( TITLE_TEXT, ( uint8_t* )" Sleep Mode", NULL, NULL );
GregCr 0:e5420f1a8a1a 1554 DisplayCurrentRadioParams( PAGE_SLEEP_MODE );
GregCr 1:b96176a4ccb8 1555 DrawActiveButton( BTN7_BORDER, ( uint8_t* )" BACK", NULL );
GregCr 0:e5420f1a8a1a 1556 DrawActiveButton( BTN8_BORDER, ( uint8_t* )" START", NULL );
GregCr 0:e5420f1a8a1a 1557 DrawActiveButton( BTN9_BORDER, ( uint8_t* )" SETTINGS", NULL );
GregCr 0:e5420f1a8a1a 1558 CurrentPage = PAGE_SLEEP_MODE;
GregCr 0:e5420f1a8a1a 1559 }
GregCr 0:e5420f1a8a1a 1560 break;
GregCr 0:e5420f1a8a1a 1561
GregCr 0:e5420f1a8a1a 1562 case PAGE_STBY_RC_MODE:
GregCr 0:e5420f1a8a1a 1563 if( CurrentPage != PAGE_STBY_RC_MODE )
GregCr 0:e5420f1a8a1a 1564 {
GregCr 0:e5420f1a8a1a 1565 DrawText( TITLE_TEXT, ( uint8_t* )" Standby RC Mode", NULL, NULL );
GregCr 0:e5420f1a8a1a 1566 DisplayCurrentRadioParams( PAGE_STBY_RC_MODE );
GregCr 1:b96176a4ccb8 1567 DrawActiveButton( BTN7_BORDER, ( uint8_t* )" BACK", NULL );
GregCr 0:e5420f1a8a1a 1568 DrawActiveButton( BTN8_BORDER, ( uint8_t* )" START", NULL );
GregCr 0:e5420f1a8a1a 1569 DrawActiveButton( BTN9_BORDER, ( uint8_t* )" SETTINGS", NULL );
GregCr 0:e5420f1a8a1a 1570 CurrentPage = PAGE_STBY_RC_MODE;
GregCr 0:e5420f1a8a1a 1571 }
GregCr 0:e5420f1a8a1a 1572 break;
GregCr 0:e5420f1a8a1a 1573
GregCr 0:e5420f1a8a1a 1574 case PAGE_STBY_XOSC_MODE:
GregCr 0:e5420f1a8a1a 1575 if( CurrentPage != PAGE_STBY_XOSC_MODE )
GregCr 0:e5420f1a8a1a 1576 {
GregCr 0:e5420f1a8a1a 1577 DrawText( TITLE_TEXT, ( uint8_t* )" Standby XOSC Mode", NULL, NULL );
GregCr 0:e5420f1a8a1a 1578 DisplayCurrentRadioParams( PAGE_STBY_XOSC_MODE );
GregCr 1:b96176a4ccb8 1579 DrawActiveButton( BTN7_BORDER, ( uint8_t* )" BACK", NULL );
GregCr 0:e5420f1a8a1a 1580 DrawActiveButton( BTN8_BORDER, ( uint8_t* )" START", NULL );
GregCr 0:e5420f1a8a1a 1581 DrawActiveButton( BTN9_BORDER, ( uint8_t* )" SETTINGS", NULL );
GregCr 0:e5420f1a8a1a 1582 CurrentPage = PAGE_STBY_XOSC_MODE;
GregCr 0:e5420f1a8a1a 1583 }
GregCr 0:e5420f1a8a1a 1584 break;
GregCr 0:e5420f1a8a1a 1585
GregCr 0:e5420f1a8a1a 1586 case PAGE_TX_CW:
GregCr 0:e5420f1a8a1a 1587 if( CurrentPage != PAGE_TX_CW )
GregCr 0:e5420f1a8a1a 1588 {
GregCr 0:e5420f1a8a1a 1589 DrawText( TITLE_TEXT, ( uint8_t* )" Set Tx CW", NULL, NULL );
GregCr 0:e5420f1a8a1a 1590 DisplayCurrentRadioParams( PAGE_TX_CW );
GregCr 1:b96176a4ccb8 1591 DrawActiveButton( BTN7_BORDER, ( uint8_t* )" BACK", NULL );
GregCr 0:e5420f1a8a1a 1592 DrawActiveButton( BTN8_BORDER, ( uint8_t* )" START", NULL );
GregCr 0:e5420f1a8a1a 1593 DrawActiveButton( BTN9_BORDER, ( uint8_t* )" SETTINGS", NULL );
GregCr 0:e5420f1a8a1a 1594 CurrentPage = PAGE_TX_CW;
GregCr 0:e5420f1a8a1a 1595 }
GregCr 0:e5420f1a8a1a 1596 break;
GregCr 0:e5420f1a8a1a 1597
GregCr 0:e5420f1a8a1a 1598 case PAGE_CONT_MODULATION:
GregCr 0:e5420f1a8a1a 1599 if( CurrentPage != PAGE_CONT_MODULATION )
GregCr 0:e5420f1a8a1a 1600 {
GregCr 0:e5420f1a8a1a 1601 DrawText( TITLE_TEXT, ( uint8_t* )" Set Cont. Modulation", NULL, NULL );
GregCr 0:e5420f1a8a1a 1602 DisplayCurrentRadioParams( PAGE_CONT_MODULATION );
GregCr 1:b96176a4ccb8 1603 DrawActiveButton( BTN7_BORDER, ( uint8_t* )" BACK", NULL );
GregCr 0:e5420f1a8a1a 1604 DrawActiveButton( BTN8_BORDER, ( uint8_t* )" START", NULL );
GregCr 0:e5420f1a8a1a 1605 DrawActiveButton( BTN9_BORDER, ( uint8_t* )" SETTINGS", NULL );
GregCr 0:e5420f1a8a1a 1606 CurrentPage = PAGE_CONT_MODULATION;
GregCr 0:e5420f1a8a1a 1607 }
GregCr 0:e5420f1a8a1a 1608 break;
GregCr 0:e5420f1a8a1a 1609
GregCr 0:e5420f1a8a1a 1610 case PAGE_CONT_RX:
GregCr 0:e5420f1a8a1a 1611 if( CurrentPage == PAGE_CONT_RX )
GregCr 0:e5420f1a8a1a 1612 {
GregCr 0:e5420f1a8a1a 1613 if( Eeprom.EepromData.DemoSettings.HoldDemo == true )
GregCr 0:e5420f1a8a1a 1614 {
GregCr 0:e5420f1a8a1a 1615 ButtonChangeText( BTN8_BORDER, ( uint8_t* )" START", NULL );
GregCr 0:e5420f1a8a1a 1616 }
GregCr 0:e5420f1a8a1a 1617 DrawText( LINE4_COL0_TEXT, NULL, ( uint8_t* )GetMenuDemoRxOk( ), NULL );
GregCr 0:e5420f1a8a1a 1618 DrawText( LINE5_COL0_TEXT, NULL, ( uint8_t* )GetMenuDemoRxKo( ), NULL );
GregCr 0:e5420f1a8a1a 1619 DrawText( LINE6_COL0_TEXT, NULL, ( uint8_t* )GetMenuDemoResultPerCent1( Eeprom.EepromData.DemoSettings.CntPacketRxKO, Eeprom.EepromData.DemoSettings.CntPacketRxOK + Eeprom.EepromData.DemoSettings.CntPacketRxKO ), NULL );
GregCr 0:e5420f1a8a1a 1620 DrawText( LINE7_COL0_TEXT, NULL, ( uint8_t* )GetMenuDemoFreqError( ), NULL );
GregCr 0:e5420f1a8a1a 1621 DrawText( LINE8_COL0_TEXT, NULL, ( uint8_t* )GetMenuDemoRssi( ), NULL );
GregCr 0:e5420f1a8a1a 1622 DrawText( LINE9_COL0_TEXT, NULL, ( uint8_t* )GetMenuDemoSnr( ), NULL );
GregCr 0:e5420f1a8a1a 1623 }
GregCr 0:e5420f1a8a1a 1624 else
GregCr 0:e5420f1a8a1a 1625 {
GregCr 0:e5420f1a8a1a 1626 DrawText( TITLE_TEXT, ( uint8_t* )" Set Cont. Rx ", NULL, NULL );
GregCr 0:e5420f1a8a1a 1627 DisplayCurrentRadioParams( PAGE_CONT_RX );
GregCr 0:e5420f1a8a1a 1628 DrawText( LINE4_COL0_TEXT, ( uint8_t* )"Rx OK", ( uint8_t* )" 0", NULL );
GregCr 0:e5420f1a8a1a 1629 DrawText( LINE5_COL0_TEXT, ( uint8_t* )"Rx KO", ( uint8_t* )" 0", NULL );
GregCr 0:e5420f1a8a1a 1630 DrawText( LINE6_COL0_TEXT, ( uint8_t* )"PER", ( uint8_t* )" 0.00", NULL );
GregCr 0:e5420f1a8a1a 1631 DrawText( LINE7_COL0_TEXT, ( uint8_t* )"Freq Err", ( uint8_t* )" 0", NULL );
GregCr 0:e5420f1a8a1a 1632 DrawText( LINE8_COL0_TEXT, ( uint8_t* )"Last Rssi", ( uint8_t* )" 0", NULL );
GregCr 0:e5420f1a8a1a 1633 DrawText( LINE9_COL0_TEXT, ( uint8_t* )"Last SNR", ( uint8_t* )" 0", NULL );
GregCr 1:b96176a4ccb8 1634 DrawActiveButton( BTN7_BORDER, ( uint8_t* )" BACK", NULL );
GregCr 0:e5420f1a8a1a 1635 DrawActiveButton( BTN8_BORDER, ( uint8_t* )" START", NULL );
GregCr 0:e5420f1a8a1a 1636 DrawActiveButton( BTN9_BORDER, ( uint8_t* )" SETTINGS", NULL );
GregCr 0:e5420f1a8a1a 1637 }
GregCr 0:e5420f1a8a1a 1638 CurrentPage = PAGE_CONT_RX;
GregCr 0:e5420f1a8a1a 1639 break;
GregCr 0:e5420f1a8a1a 1640
GregCr 0:e5420f1a8a1a 1641 default:
GregCr 0:e5420f1a8a1a 1642 break;
GregCr 0:e5420f1a8a1a 1643 }
GregCr 0:e5420f1a8a1a 1644 }
GregCr 0:e5420f1a8a1a 1645
GregCr 0:e5420f1a8a1a 1646 void DisplayCurrentRadioParams( uint8_t page )
GregCr 0:e5420f1a8a1a 1647 {
GregCr 0:e5420f1a8a1a 1648 switch( page )
GregCr 0:e5420f1a8a1a 1649 {
GregCr 0:e5420f1a8a1a 1650 case PAGE_SLEEP_MODE:
GregCr 0:e5420f1a8a1a 1651 case PAGE_STBY_RC_MODE:
GregCr 0:e5420f1a8a1a 1652 case PAGE_STBY_XOSC_MODE:
GregCr 0:e5420f1a8a1a 1653 case PAGE_TX_CW:
GregCr 0:e5420f1a8a1a 1654 // Do display different without packet settings (no modulation here)
GregCr 0:e5420f1a8a1a 1655 // 2 + (9) + 4 + (7) = 22 (=<28 : ok)
GregCr 0:e5420f1a8a1a 1656 sprintf( StringText ,"f:%s, P:%s", GetRadioFrequencyMHz( ), GetRadioTxPower( ) ); // StringText3 + StringText2
GregCr 0:e5420f1a8a1a 1657 DrawText( LINE0_TEXT, ( uint8_t* )StringText, NULL, NULL);
GregCr 0:e5420f1a8a1a 1658 sprintf( StringText ,"Radio Power Mode: %s", ( uint8_t* )GetMenuDemoRadioPowerMode( ) + 2 );
GregCr 0:e5420f1a8a1a 1659 DrawText( LINE1_TEXT, ( uint8_t* )StringText, NULL, NULL);
GregCr 0:e5420f1a8a1a 1660 sprintf( StringText ,"Press START to launch test" );
GregCr 0:e5420f1a8a1a 1661 DrawText( LINE3_TEXT, ( uint8_t* )StringText, NULL, NULL);
GregCr 0:e5420f1a8a1a 1662 break;
GregCr 0:e5420f1a8a1a 1663
GregCr 0:e5420f1a8a1a 1664 case PAGE_CONT_MODULATION:
GregCr 0:e5420f1a8a1a 1665 // 2 + (9) + 4 + (7) + 2 + (4) = 28 (=<28 : ok)
GregCr 0:e5420f1a8a1a 1666 sprintf( StringText ,"f:%s, P:%s, %s", GetRadioFrequencyMHz( ), GetRadioTxPower( ), \
GregCr 0:e5420f1a8a1a 1667 ( uint8_t* )GetMenuDemoRadioPowerMode( ) + 2 ); // StringText3 + StringText2
GregCr 0:e5420f1a8a1a 1668 DrawText( LINE0_TEXT, ( uint8_t* )StringText, NULL, NULL);
GregCr 0:e5420f1a8a1a 1669 if( Eeprom.EepromData.DemoSettings.ModulationType == PACKET_TYPE_LORA )
GregCr 0:e5420f1a8a1a 1670 {
GregCr 0:e5420f1a8a1a 1671 // (5) + 2 + (4) + 2 + (12) = 25 (=<28 : ok)
GregCr 0:e5420f1a8a1a 1672 sprintf( StringText ,"%s: %s, %s", GetMenuRadioFrameType( ) + 1, \
GregCr 0:e5420f1a8a1a 1673 GetRadioModulationParameters1( ),
GregCr 0:e5420f1a8a1a 1674 GetRadioModulationParameters4( ) ); // StringText2
GregCr 0:e5420f1a8a1a 1675 }
GregCr 0:e5420f1a8a1a 1676 else
GregCr 0:e5420f1a8a1a 1677 {
GregCr 0:e5420f1a8a1a 1678 if( ErrorParam == true )
GregCr 0:e5420f1a8a1a 1679 {
GregCr 0:e5420f1a8a1a 1680 MenuObjects[LINE1_TEXT].FrontColor = OBJECT_ERROR;
GregCr 0:e5420f1a8a1a 1681 MenuObjects[LINE2_TEXT].FrontColor = OBJECT_ERROR;
GregCr 0:e5420f1a8a1a 1682 }
GregCr 0:e5420f1a8a1a 1683 // (4) + 2 + (10) + 1 + (11) = 28 (=<28 : ok)
GregCr 0:e5420f1a8a1a 1684 sprintf( StringText ,"%s: %s/%s", GetMenuRadioFrameType( ) + 1, \
GregCr 0:e5420f1a8a1a 1685 GetRadioModulationParameters1( ), \
GregCr 0:e5420f1a8a1a 1686 GetRadioModulationParameters4( ) ); // StringText2
GregCr 0:e5420f1a8a1a 1687 }
GregCr 0:e5420f1a8a1a 1688 DrawText( LINE1_TEXT, ( uint8_t* )StringText, NULL, NULL);
GregCr 0:e5420f1a8a1a 1689 // (10) + 2 + (10) = 22 (=<28 : ok)
GregCr 0:e5420f1a8a1a 1690 sprintf( StringText ,"%s, %s", GetRadioModulationParameters2( ), \
GregCr 0:e5420f1a8a1a 1691 GetRadioModulationParameters3( ) );
GregCr 0:e5420f1a8a1a 1692 DrawText( LINE2_TEXT, ( uint8_t* )StringText, NULL, NULL);
GregCr 0:e5420f1a8a1a 1693 sprintf( StringText ,"Press START to launch test" );
GregCr 0:e5420f1a8a1a 1694 DrawText( LINE4_TEXT, ( uint8_t* )StringText, NULL, NULL);
GregCr 0:e5420f1a8a1a 1695 MenuObjects[LINE1_TEXT].FrontColor = TEXT_COLOR;
GregCr 0:e5420f1a8a1a 1696 MenuObjects[LINE2_TEXT].FrontColor = TEXT_COLOR;
GregCr 0:e5420f1a8a1a 1697 break;
GregCr 0:e5420f1a8a1a 1698
GregCr 0:e5420f1a8a1a 1699 case PAGE_CONT_RX: // standart display
GregCr 0:e5420f1a8a1a 1700 case PAGE_PING_PONG:
GregCr 0:e5420f1a8a1a 1701 case PAGE_PER:
GregCr 0:e5420f1a8a1a 1702 // 2 + (9) + 4 + (7) = 22 (=<28 : ok)
GregCr 0:e5420f1a8a1a 1703 sprintf( StringText ,"f:%s, P:%s", GetRadioFrequencyMHz( ), GetRadioTxPower( ) ); // StringText3 + StringText2
GregCr 0:e5420f1a8a1a 1704 DrawText( LINE0_TEXT, ( uint8_t* )StringText, NULL, NULL);
GregCr 0:e5420f1a8a1a 1705 if( Eeprom.EepromData.DemoSettings.ModulationType == PACKET_TYPE_LORA )
GregCr 0:e5420f1a8a1a 1706 {
GregCr 0:e5420f1a8a1a 1707 // (5) + 2 + (4) + 2 + (12) = 25 (=<28 : ok)
GregCr 0:e5420f1a8a1a 1708 sprintf( StringText ,"%s: %s, %s", GetMenuRadioFrameType( ) + 1, \
GregCr 0:e5420f1a8a1a 1709 GetRadioModulationParameters1( ),
GregCr 0:e5420f1a8a1a 1710 GetRadioModulationParameters4( ) ); // StringText2
GregCr 0:e5420f1a8a1a 1711 }
GregCr 0:e5420f1a8a1a 1712 else
GregCr 0:e5420f1a8a1a 1713 {
GregCr 0:e5420f1a8a1a 1714 if( ErrorParam == true )
GregCr 0:e5420f1a8a1a 1715 {
GregCr 0:e5420f1a8a1a 1716 MenuObjects[LINE1_TEXT].FrontColor = OBJECT_ERROR;
GregCr 0:e5420f1a8a1a 1717 MenuObjects[LINE2_TEXT].FrontColor = OBJECT_ERROR;
GregCr 0:e5420f1a8a1a 1718 }
GregCr 0:e5420f1a8a1a 1719 // (4) + 2 + (10) + 1 + (11) = 28 (=<28 : ok)
GregCr 0:e5420f1a8a1a 1720 sprintf( StringText ,"%s: %s/%s", GetMenuRadioFrameType( ) + 1, \
GregCr 0:e5420f1a8a1a 1721 GetRadioModulationParameters1( ), \
GregCr 0:e5420f1a8a1a 1722 GetRadioModulationParameters4( ) ); // StringText2
GregCr 0:e5420f1a8a1a 1723 }
GregCr 0:e5420f1a8a1a 1724 DrawText( LINE1_TEXT, ( uint8_t* )StringText, NULL, NULL);
GregCr 0:e5420f1a8a1a 1725 // 3 + (3) + 1 + (10) + 1 + (10) = 28 (=<28 : ok)
GregCr 0:e5420f1a8a1a 1726 sprintf( StringText ,"PL:%s/%s/%s", GetRadioPayloadLength( ), \
GregCr 0:e5420f1a8a1a 1727 GetRadioModulationParameters2( ), \
GregCr 0:e5420f1a8a1a 1728 GetRadioModulationParameters3( ) ); // StringText + StringText2 + StringText3
GregCr 0:e5420f1a8a1a 1729 DrawText( LINE2_TEXT, ( uint8_t* )StringText, NULL, NULL);
GregCr 0:e5420f1a8a1a 1730 MenuObjects[LINE1_TEXT].FrontColor = TEXT_COLOR;
GregCr 0:e5420f1a8a1a 1731 MenuObjects[LINE2_TEXT].FrontColor = TEXT_COLOR;
GregCr 0:e5420f1a8a1a 1732 break;
GregCr 0:e5420f1a8a1a 1733 }
GregCr 0:e5420f1a8a1a 1734 }
GregCr 0:e5420f1a8a1a 1735
GregCr 0:e5420f1a8a1a 1736 char* GetMenuRadioFrameType( void )
GregCr 0:e5420f1a8a1a 1737 {
GregCr 0:e5420f1a8a1a 1738 switch( Eeprom.EepromData.DemoSettings.ModulationType )
GregCr 0:e5420f1a8a1a 1739 {
GregCr 0:e5420f1a8a1a 1740 case PACKET_TYPE_GFSK: return ( char* )" GFSK";
GregCr 0:e5420f1a8a1a 1741 case PACKET_TYPE_LORA:
GregCr 0:e5420f1a8a1a 1742 default: return ( char* )" LORA";
GregCr 0:e5420f1a8a1a 1743 }
GregCr 0:e5420f1a8a1a 1744 }
GregCr 0:e5420f1a8a1a 1745
GregCr 0:e5420f1a8a1a 1746 char* GetRadioModulationParameters1( void )
GregCr 0:e5420f1a8a1a 1747 {
GregCr 0:e5420f1a8a1a 1748 if( Eeprom.EepromData.DemoSettings.ModulationType == PACKET_TYPE_LORA )
GregCr 0:e5420f1a8a1a 1749 {
GregCr 0:e5420f1a8a1a 1750 switch( Eeprom.EepromData.DemoSettings.ModulationParam1 )
GregCr 0:e5420f1a8a1a 1751 {
GregCr 0:e5420f1a8a1a 1752 case LORA_SF5: return ( char* )"SF5";
GregCr 0:e5420f1a8a1a 1753 case LORA_SF6: return ( char* )"SF6";
GregCr 0:e5420f1a8a1a 1754 case LORA_SF7: return ( char* )"SF7";
GregCr 0:e5420f1a8a1a 1755 case LORA_SF8: return ( char* )"SF8";
GregCr 0:e5420f1a8a1a 1756 case LORA_SF9: return ( char* )"SF9";
GregCr 0:e5420f1a8a1a 1757 case LORA_SF10: return ( char* )"SF10";
GregCr 0:e5420f1a8a1a 1758 case LORA_SF11: return ( char* )"SF11";
GregCr 0:e5420f1a8a1a 1759 case LORA_SF12: return ( char* )"SF12";
GregCr 0:e5420f1a8a1a 1760 default: return ( char* )"X";
GregCr 0:e5420f1a8a1a 1761 }
GregCr 0:e5420f1a8a1a 1762 }
GregCr 0:e5420f1a8a1a 1763 else // PACKET_TYPE_GFSK
GregCr 0:e5420f1a8a1a 1764 {
GregCr 0:e5420f1a8a1a 1765 // quicker than using a float (which is not optimized in MBED)
GregCr 0:e5420f1a8a1a 1766 sprintf( StringText2, "%3d.%1d kbps", \
GregCr 0:e5420f1a8a1a 1767 Eeprom.EepromData.DemoSettings.ModulationParam1 / 1000, \
GregCr 0:e5420f1a8a1a 1768 ( Eeprom.EepromData.DemoSettings.ModulationParam1 % 1000) / 100 );
GregCr 0:e5420f1a8a1a 1769 return StringText2;
GregCr 0:e5420f1a8a1a 1770 }
GregCr 0:e5420f1a8a1a 1771 }
GregCr 0:e5420f1a8a1a 1772
GregCr 0:e5420f1a8a1a 1773 char* GetRadioModulationParameters2( void )
GregCr 0:e5420f1a8a1a 1774 {
GregCr 0:e5420f1a8a1a 1775 if( Eeprom.EepromData.DemoSettings.ModulationType == PACKET_TYPE_LORA )
GregCr 0:e5420f1a8a1a 1776 {
GregCr 0:e5420f1a8a1a 1777 switch( Eeprom.EepromData.DemoSettings.ModulationParam2 )
GregCr 0:e5420f1a8a1a 1778 {
GregCr 0:e5420f1a8a1a 1779 case LORA_BW_500: return ( char* )"BW 500 kHz";
GregCr 0:e5420f1a8a1a 1780 case LORA_BW_250: return ( char* )"BW 250 kHz";
GregCr 0:e5420f1a8a1a 1781 case LORA_BW_125: return ( char* )"BW 125 kHz";
GregCr 0:e5420f1a8a1a 1782 case LORA_BW_062: return ( char* )"BW 62 kHz";
GregCr 0:e5420f1a8a1a 1783 case LORA_BW_041: return ( char* )"BW 41 kHz";
GregCr 0:e5420f1a8a1a 1784 case LORA_BW_031: return ( char* )"BW 31 kHz";
GregCr 0:e5420f1a8a1a 1785 case LORA_BW_020: return ( char* )"BW 20 kHz";
GregCr 0:e5420f1a8a1a 1786 case LORA_BW_015: return ( char* )"BW 15 kHz";
GregCr 0:e5420f1a8a1a 1787 case LORA_BW_010: return ( char* )"BW 10 kHz";
GregCr 0:e5420f1a8a1a 1788 case LORA_BW_007: return ( char* )"BW 7 kHz";
GregCr 0:e5420f1a8a1a 1789 default: return ( char* )"X";
GregCr 0:e5420f1a8a1a 1790 }
GregCr 0:e5420f1a8a1a 1791 }
GregCr 0:e5420f1a8a1a 1792 else // Eeprom.EepromData.DemoSettings.ModulationType == PACKET_TYPE_GFSK
GregCr 0:e5420f1a8a1a 1793 {
GregCr 0:e5420f1a8a1a 1794 // quicker than using a float (which is not optimized in MBED)
GregCr 0:e5420f1a8a1a 1795 sprintf( StringText3, "Fd %3d kHz", \
GregCr 0:e5420f1a8a1a 1796 Eeprom.EepromData.DemoSettings.ModulationParam2 / 1000 );
GregCr 0:e5420f1a8a1a 1797 return StringText3;
GregCr 0:e5420f1a8a1a 1798 }
GregCr 0:e5420f1a8a1a 1799 }
GregCr 0:e5420f1a8a1a 1800
GregCr 0:e5420f1a8a1a 1801 char* GetRadioModulationParameters3( void )
GregCr 0:e5420f1a8a1a 1802 {
GregCr 0:e5420f1a8a1a 1803 if( Eeprom.EepromData.DemoSettings.ModulationType == PACKET_TYPE_LORA )
GregCr 0:e5420f1a8a1a 1804 {
GregCr 0:e5420f1a8a1a 1805 switch( Eeprom.EepromData.DemoSettings.ModulationParam3 )
GregCr 0:e5420f1a8a1a 1806 {
GregCr 0:e5420f1a8a1a 1807 case LORA_CR_4_5: return ( char* )"CR 4/5";
GregCr 0:e5420f1a8a1a 1808 case LORA_CR_4_6: return ( char* )"CR 4/6";
GregCr 0:e5420f1a8a1a 1809 case LORA_CR_4_7: return ( char* )"CR 4/7";
GregCr 0:e5420f1a8a1a 1810 case LORA_CR_4_8: return ( char* )"CR 4/8";
GregCr 0:e5420f1a8a1a 1811 default: return ( char* )"X";
GregCr 0:e5420f1a8a1a 1812 }
GregCr 0:e5420f1a8a1a 1813 }
GregCr 0:e5420f1a8a1a 1814 else // PACKET_TYPE_GFSK
GregCr 0:e5420f1a8a1a 1815 {
GregCr 0:e5420f1a8a1a 1816 switch( Eeprom.EepromData.DemoSettings.ModulationParam3 )
GregCr 0:e5420f1a8a1a 1817 {
GregCr 0:e5420f1a8a1a 1818 case MOD_SHAPING_OFF: return ( char* )"NONE ";
GregCr 0:e5420f1a8a1a 1819 case MOD_SHAPING_G_BT_03: return ( char* )"G BT .3";
GregCr 0:e5420f1a8a1a 1820 case MOD_SHAPING_G_BT_05: return ( char* )"G BT .5";
GregCr 0:e5420f1a8a1a 1821 case MOD_SHAPING_G_BT_07: return ( char* )"G BT .7";
GregCr 0:e5420f1a8a1a 1822 case MOD_SHAPING_G_BT_1: return ( char* )"G BT 1 ";
GregCr 0:e5420f1a8a1a 1823 default: return ( char* )"X";
GregCr 0:e5420f1a8a1a 1824 }
GregCr 0:e5420f1a8a1a 1825 }
GregCr 0:e5420f1a8a1a 1826 }
GregCr 0:e5420f1a8a1a 1827
GregCr 0:e5420f1a8a1a 1828 char* GetRadioModulationParameters4( void )
GregCr 0:e5420f1a8a1a 1829 {
GregCr 0:e5420f1a8a1a 1830 if( Eeprom.EepromData.DemoSettings.ModulationType == PACKET_TYPE_LORA )
GregCr 0:e5420f1a8a1a 1831 {
GregCr 0:e5420f1a8a1a 1832 if( Eeprom.EepromData.DemoSettings.PacketParam2 == LORA_PACKET_FIXED_LENGTH )
GregCr 0:e5420f1a8a1a 1833 {
GregCr 0:e5420f1a8a1a 1834 return ( char* )"Fixed length";
GregCr 0:e5420f1a8a1a 1835 }
GregCr 0:e5420f1a8a1a 1836 else // RADIO_PACKET_VARIABLE_LENGTH
GregCr 0:e5420f1a8a1a 1837 {
GregCr 0:e5420f1a8a1a 1838 return ( char* )"Variable len";
GregCr 0:e5420f1a8a1a 1839 }
GregCr 0:e5420f1a8a1a 1840 }
GregCr 0:e5420f1a8a1a 1841 else // Eeprom.EepromData.DemoSettings.ModulationType == PACKET_TYPE_GFSK
GregCr 0:e5420f1a8a1a 1842 {
GregCr 0:e5420f1a8a1a 1843 switch( Eeprom.EepromData.DemoSettings.ModulationParam4 )
GregCr 0:e5420f1a8a1a 1844 {
GregCr 0:e5420f1a8a1a 1845 case RX_BW_4800 : return ( char* )"BW 4.8 kHz";
GregCr 0:e5420f1a8a1a 1846 case RX_BW_5800 : return ( char* )"BW 5.8 kHz";
GregCr 0:e5420f1a8a1a 1847 case RX_BW_7300 : return ( char* )"BW 7.3 kHz";
GregCr 0:e5420f1a8a1a 1848 case RX_BW_9700 : return ( char* )"BW 9.7 kHz";
GregCr 0:e5420f1a8a1a 1849 case RX_BW_11700 : return ( char* )"BW 11.7 kHz";
GregCr 0:e5420f1a8a1a 1850 case RX_BW_14600 : return ( char* )"BW 14.6 kHz";
GregCr 0:e5420f1a8a1a 1851 case RX_BW_19500 : return ( char* )"BW 19.5 kHz";
GregCr 0:e5420f1a8a1a 1852 case RX_BW_23400 : return ( char* )"BW 23.4 kHz";
GregCr 0:e5420f1a8a1a 1853 case RX_BW_29300 : return ( char* )"BW 29.3 kHz";
GregCr 0:e5420f1a8a1a 1854 case RX_BW_39000 : return ( char* )"BW 39 kHz";
GregCr 0:e5420f1a8a1a 1855 case RX_BW_46900 : return ( char* )"BW 46.9 kHz";
GregCr 0:e5420f1a8a1a 1856 case RX_BW_58600 : return ( char* )"BW 58.6 kHz";
GregCr 0:e5420f1a8a1a 1857 case RX_BW_78200 : return ( char* )"BW 78.2 kHz";
GregCr 0:e5420f1a8a1a 1858 case RX_BW_93800 : return ( char* )"BW 93.8 kHz";
GregCr 0:e5420f1a8a1a 1859 case RX_BW_117300 : return ( char* )"BW 117 kHz";
GregCr 0:e5420f1a8a1a 1860 case RX_BW_156200 : return ( char* )"BW 156 kHz";
GregCr 0:e5420f1a8a1a 1861 case RX_BW_187200 : return ( char* )"BW 187 kHz";
GregCr 0:e5420f1a8a1a 1862 case RX_BW_234300 : return ( char* )"BW 234 kHz";
GregCr 0:e5420f1a8a1a 1863 case RX_BW_312000 : return ( char* )"BW 312 kHz";
GregCr 0:e5420f1a8a1a 1864 case RX_BW_373600 : return ( char* )"BW 373 kHz";
GregCr 0:e5420f1a8a1a 1865 case RX_BW_467000 : return ( char* )"BW 467 kHz";
GregCr 0:e5420f1a8a1a 1866 default: return ( char* )"X";
GregCr 0:e5420f1a8a1a 1867 }
GregCr 0:e5420f1a8a1a 1868 }
GregCr 0:e5420f1a8a1a 1869 }
GregCr 0:e5420f1a8a1a 1870
GregCr 0:e5420f1a8a1a 1871 char* GetRadioFrequency( void )
GregCr 0:e5420f1a8a1a 1872 {
GregCr 0:e5420f1a8a1a 1873 sprintf( StringText2, "%lu Hz", \
GregCr 0:e5420f1a8a1a 1874 ( unsigned long )Eeprom.EepromData.DemoSettings.Frequency );
GregCr 0:e5420f1a8a1a 1875 return StringText2;
GregCr 0:e5420f1a8a1a 1876 }
GregCr 0:e5420f1a8a1a 1877
GregCr 0:e5420f1a8a1a 1878 char* GetRadioFrequencyMHz( void )
GregCr 0:e5420f1a8a1a 1879 {
GregCr 0:e5420f1a8a1a 1880 // quicker than using a float (which is not optimized in MBED)
GregCr 0:e5420f1a8a1a 1881 sprintf( StringText3, "%3d.%1d MHz", \
GregCr 0:e5420f1a8a1a 1882 Eeprom.EepromData.DemoSettings.Frequency / 1000000, \
GregCr 0:e5420f1a8a1a 1883 ( Eeprom.EepromData.DemoSettings.Frequency % 1000000 ) / 100000 );
GregCr 0:e5420f1a8a1a 1884 return StringText3;
GregCr 0:e5420f1a8a1a 1885 }
GregCr 0:e5420f1a8a1a 1886
GregCr 0:e5420f1a8a1a 1887 char* GetRadioFreqBase( void )
GregCr 0:e5420f1a8a1a 1888 {
GregCr 0:e5420f1a8a1a 1889 switch( CurrentFreqBase )
GregCr 0:e5420f1a8a1a 1890 {
GregCr 0:e5420f1a8a1a 1891 case FB1: return ( char* )"1 Hz";
GregCr 0:e5420f1a8a1a 1892 case FB10: return ( char* )"10 Hz";
GregCr 0:e5420f1a8a1a 1893 case FB100: return ( char* )"100 Hz";
GregCr 0:e5420f1a8a1a 1894 case FB1K: return ( char* )"1 kHz";
GregCr 0:e5420f1a8a1a 1895 case FB10K: return ( char* )"10 kHz";
GregCr 0:e5420f1a8a1a 1896 case FB100K: return ( char* )"100 kHz";
GregCr 0:e5420f1a8a1a 1897 case FB1M: return ( char* )"1 MHz";
GregCr 0:e5420f1a8a1a 1898 case FB10M: return ( char* )"10 MHz";
GregCr 0:e5420f1a8a1a 1899 default: return ( char* )"X";
GregCr 0:e5420f1a8a1a 1900 }
GregCr 0:e5420f1a8a1a 1901 }
GregCr 0:e5420f1a8a1a 1902
GregCr 0:e5420f1a8a1a 1903 char* GetRadioFreqBasePS1( void )
GregCr 0:e5420f1a8a1a 1904 {
GregCr 2:8e1b4210df6b 1905 if( DeviceConnected != SX1268 )
GregCr 2:8e1b4210df6b 1906 {
GregCr 2:8e1b4210df6b 1907 sprintf( StringText, "%lu Hz", DEMO_CENTRAL_FREQ_PRESET6 );
GregCr 2:8e1b4210df6b 1908 }
GregCr 2:8e1b4210df6b 1909 else
GregCr 2:8e1b4210df6b 1910 {
GregCr 2:8e1b4210df6b 1911 sprintf( StringText, "%lu Hz", DEMO_CENTRAL_FREQ_PRESET4 );
GregCr 2:8e1b4210df6b 1912 }
GregCr 0:e5420f1a8a1a 1913 return StringText;
GregCr 0:e5420f1a8a1a 1914 }
GregCr 0:e5420f1a8a1a 1915
GregCr 0:e5420f1a8a1a 1916 char* GetRadioFreqBasePS2( void )
GregCr 0:e5420f1a8a1a 1917 {
GregCr 2:8e1b4210df6b 1918 if( DeviceConnected != SX1268 )
GregCr 2:8e1b4210df6b 1919 {
GregCr 2:8e1b4210df6b 1920 sprintf( StringText, "%lu Hz", DEMO_CENTRAL_FREQ_PRESET7 );
GregCr 2:8e1b4210df6b 1921 }
GregCr 2:8e1b4210df6b 1922 else
GregCr 2:8e1b4210df6b 1923 {
GregCr 2:8e1b4210df6b 1924 sprintf( StringText, "%lu Hz", DEMO_CENTRAL_FREQ_PRESET3 );
GregCr 2:8e1b4210df6b 1925 }
GregCr 0:e5420f1a8a1a 1926 return StringText;
GregCr 0:e5420f1a8a1a 1927 }
GregCr 0:e5420f1a8a1a 1928
GregCr 0:e5420f1a8a1a 1929 char* GetRadioFreqBasePS3( void )
GregCr 0:e5420f1a8a1a 1930 {
GregCr 2:8e1b4210df6b 1931 if( DeviceConnected != SX1268 )
GregCr 2:8e1b4210df6b 1932 {
GregCr 2:8e1b4210df6b 1933 sprintf( StringText, "%lu Hz", DEMO_CENTRAL_FREQ_PRESET8 );
GregCr 2:8e1b4210df6b 1934 }
GregCr 2:8e1b4210df6b 1935 else
GregCr 2:8e1b4210df6b 1936 {
GregCr 2:8e1b4210df6b 1937 sprintf( StringText, "%lu Hz", DEMO_CENTRAL_FREQ_PRESET9 );
GregCr 2:8e1b4210df6b 1938 }
GregCr 0:e5420f1a8a1a 1939 return StringText;
GregCr 0:e5420f1a8a1a 1940 }
GregCr 0:e5420f1a8a1a 1941
GregCr 0:e5420f1a8a1a 1942 char* GetRadioTxPower( void )
GregCr 0:e5420f1a8a1a 1943 {
GregCr 0:e5420f1a8a1a 1944 sprintf( StringText2, "%d dBm", Eeprom.EepromData.DemoSettings.TxPower );
GregCr 0:e5420f1a8a1a 1945 return StringText2;
GregCr 0:e5420f1a8a1a 1946 }
GregCr 0:e5420f1a8a1a 1947
GregCr 0:e5420f1a8a1a 1948 char* GetRadioPayloadLength( void )
GregCr 0:e5420f1a8a1a 1949 {
GregCr 0:e5420f1a8a1a 1950 if( Eeprom.EepromData.DemoSettings.ModulationType == PACKET_TYPE_LORA )
GregCr 0:e5420f1a8a1a 1951 {
GregCr 0:e5420f1a8a1a 1952 sprintf( StringText2, "%d", Eeprom.EepromData.DemoSettings.PacketParam3 );
GregCr 0:e5420f1a8a1a 1953 }
GregCr 0:e5420f1a8a1a 1954 else // PACKET_TYPE_GFSK
GregCr 0:e5420f1a8a1a 1955 {
GregCr 0:e5420f1a8a1a 1956 sprintf( StringText2, "%d", Eeprom.EepromData.DemoSettings.PacketParam6 );
GregCr 0:e5420f1a8a1a 1957 }
GregCr 0:e5420f1a8a1a 1958 return StringText2;
GregCr 0:e5420f1a8a1a 1959 }
GregCr 0:e5420f1a8a1a 1960
GregCr 0:e5420f1a8a1a 1961 char* GetMenuDemoMaxNumPacket( void )
GregCr 0:e5420f1a8a1a 1962 {
GregCr 0:e5420f1a8a1a 1963 if( Eeprom.EepromData.DemoSettings.MaxNumPacket == 0 )
GregCr 0:e5420f1a8a1a 1964 {
GregCr 0:e5420f1a8a1a 1965 return ( char* )"Infinite";
GregCr 0:e5420f1a8a1a 1966 }
GregCr 0:e5420f1a8a1a 1967 else
GregCr 0:e5420f1a8a1a 1968 {
GregCr 0:e5420f1a8a1a 1969 sprintf( StringText, "%6d", \
GregCr 0:e5420f1a8a1a 1970 Eeprom.EepromData.DemoSettings.MaxNumPacket );
GregCr 0:e5420f1a8a1a 1971 }
GregCr 0:e5420f1a8a1a 1972 return StringText;
GregCr 0:e5420f1a8a1a 1973 }
GregCr 0:e5420f1a8a1a 1974
GregCr 0:e5420f1a8a1a 1975 char* GetMenuDemoNumSentPacket( void )
GregCr 0:e5420f1a8a1a 1976 {
GregCr 0:e5420f1a8a1a 1977 sprintf( StringText2, "%6d", Eeprom.EepromData.DemoSettings.CntPacketTx );
GregCr 0:e5420f1a8a1a 1978 return StringText2;
GregCr 0:e5420f1a8a1a 1979 }
GregCr 0:e5420f1a8a1a 1980
GregCr 0:e5420f1a8a1a 1981 char* GetMenuDemoFreqError( void )
GregCr 0:e5420f1a8a1a 1982 {
GregCr 0:e5420f1a8a1a 1983 if( Eeprom.EepromData.DemoSettings.ModulationType == PACKET_TYPE_LORA )
GregCr 0:e5420f1a8a1a 1984 {
GregCr 0:e5420f1a8a1a 1985 sprintf( StringText2, "%6d", Eeprom.EepromData.DemoSettings.FreqErrorEst );
GregCr 0:e5420f1a8a1a 1986 }
GregCr 0:e5420f1a8a1a 1987 else
GregCr 0:e5420f1a8a1a 1988 {
GregCr 0:e5420f1a8a1a 1989 sprintf( StringText2, "N/A" );
GregCr 0:e5420f1a8a1a 1990 }
GregCr 0:e5420f1a8a1a 1991 return StringText2;
GregCr 0:e5420f1a8a1a 1992 }
GregCr 0:e5420f1a8a1a 1993
GregCr 0:e5420f1a8a1a 1994 char* GetMenuDemoRxOk( void )
GregCr 0:e5420f1a8a1a 1995 {
GregCr 0:e5420f1a8a1a 1996 sprintf( StringText2, "%6lu", \
GregCr 0:e5420f1a8a1a 1997 ( unsigned long )( Eeprom.EepromData.DemoSettings.CntPacketRxOK ) );
GregCr 0:e5420f1a8a1a 1998 return StringText2;
GregCr 0:e5420f1a8a1a 1999 }
GregCr 0:e5420f1a8a1a 2000
GregCr 0:e5420f1a8a1a 2001 char* GetMenuDemoRxKo( void )
GregCr 0:e5420f1a8a1a 2002 {
GregCr 0:e5420f1a8a1a 2003 sprintf( StringText2, "%6lu", \
GregCr 0:e5420f1a8a1a 2004 ( unsigned long )( Eeprom.EepromData.DemoSettings.CntPacketRxKO + \
GregCr 0:e5420f1a8a1a 2005 Eeprom.EepromData.DemoSettings.RxTimeOutCount ) );
GregCr 0:e5420f1a8a1a 2006 return StringText2;
GregCr 0:e5420f1a8a1a 2007 }
GregCr 0:e5420f1a8a1a 2008
GregCr 0:e5420f1a8a1a 2009 char* GetMenuDemoRxOkSlave( void )
GregCr 0:e5420f1a8a1a 2010 {
GregCr 0:e5420f1a8a1a 2011 sprintf( StringText3, "%6lu", \
GregCr 0:e5420f1a8a1a 2012 ( unsigned long )( Eeprom.EepromData.DemoSettings.CntPacketRxOKSlave ) );
GregCr 0:e5420f1a8a1a 2013 return StringText3;
GregCr 0:e5420f1a8a1a 2014 }
GregCr 0:e5420f1a8a1a 2015
GregCr 0:e5420f1a8a1a 2016 char* GetMenuDemoResultPerCent1( uint32_t value, uint32_t reference )
GregCr 0:e5420f1a8a1a 2017 {
GregCr 0:e5420f1a8a1a 2018 // quicker than using a float (which is not optimized in MBED)
GregCr 0:e5420f1a8a1a 2019 sprintf( StringText2, "%3d.%02d", \
GregCr 0:e5420f1a8a1a 2020 ( ( value * 10000 ) / reference ) / 100, \
GregCr 0:e5420f1a8a1a 2021 ( ( value * 10000 ) / reference ) % 100 );
GregCr 0:e5420f1a8a1a 2022 return StringText2;
GregCr 0:e5420f1a8a1a 2023 }
GregCr 0:e5420f1a8a1a 2024
GregCr 0:e5420f1a8a1a 2025 char* GetMenuDemoResultPerCent2( uint32_t value, uint32_t reference )
GregCr 0:e5420f1a8a1a 2026 {
GregCr 0:e5420f1a8a1a 2027 // quicker than using a float (which is not optimized in MBED)
GregCr 0:e5420f1a8a1a 2028 sprintf( StringText3, "%3d.%02d", \
GregCr 0:e5420f1a8a1a 2029 ( ( value * 10000 ) / reference ) / 100, \
GregCr 0:e5420f1a8a1a 2030 ( ( value * 10000 ) / reference ) % 100 );
GregCr 0:e5420f1a8a1a 2031 return StringText3;
GregCr 0:e5420f1a8a1a 2032 }
GregCr 0:e5420f1a8a1a 2033
GregCr 0:e5420f1a8a1a 2034 char* GetMenuDemoRxKoSlave( void )
GregCr 0:e5420f1a8a1a 2035 {
GregCr 0:e5420f1a8a1a 2036 sprintf( StringText3, "%6lu", \
GregCr 0:e5420f1a8a1a 2037 ( unsigned long )( Eeprom.EepromData.DemoSettings.CntPacketRxKOSlave ) );
GregCr 0:e5420f1a8a1a 2038 return StringText3;
GregCr 0:e5420f1a8a1a 2039 }
GregCr 0:e5420f1a8a1a 2040
GregCr 0:e5420f1a8a1a 2041 char* GetMenuDemoRssi( void )
GregCr 0:e5420f1a8a1a 2042 {
GregCr 0:e5420f1a8a1a 2043 sprintf( StringText2, "%6d", Eeprom.EepromData.DemoSettings.RssiValue );
GregCr 0:e5420f1a8a1a 2044 return StringText2;
GregCr 0:e5420f1a8a1a 2045 }
GregCr 0:e5420f1a8a1a 2046
GregCr 0:e5420f1a8a1a 2047 char* GetMenuDemoSnr( void )
GregCr 0:e5420f1a8a1a 2048 {
GregCr 0:e5420f1a8a1a 2049 if( Eeprom.EepromData.DemoSettings.SnrValue >= 0 )
GregCr 0:e5420f1a8a1a 2050 {
GregCr 0:e5420f1a8a1a 2051 sprintf( StringText2, " /" );
GregCr 0:e5420f1a8a1a 2052 }
GregCr 0:e5420f1a8a1a 2053 else
GregCr 0:e5420f1a8a1a 2054 {
GregCr 0:e5420f1a8a1a 2055 sprintf( StringText2, "%6d", Eeprom.EepromData.DemoSettings.SnrValue );
GregCr 0:e5420f1a8a1a 2056 }
GregCr 0:e5420f1a8a1a 2057 return StringText2;
GregCr 0:e5420f1a8a1a 2058 }
GregCr 0:e5420f1a8a1a 2059
GregCr 0:e5420f1a8a1a 2060 char* GetTotalPackets( void )
GregCr 0:e5420f1a8a1a 2061 {
GregCr 0:e5420f1a8a1a 2062 if( Eeprom.EepromData.DemoSettings.MaxNumPacket == 0 )
GregCr 0:e5420f1a8a1a 2063 {
GregCr 0:e5420f1a8a1a 2064 return ( char* )"Total: Inf.";
GregCr 0:e5420f1a8a1a 2065 }
GregCr 0:e5420f1a8a1a 2066 else
GregCr 0:e5420f1a8a1a 2067 {
GregCr 0:e5420f1a8a1a 2068 sprintf( StringText, "Total: %5lu", \
GregCr 0:e5420f1a8a1a 2069 ( unsigned long )( Eeprom.EepromData.DemoSettings.MaxNumPacket ) );
GregCr 0:e5420f1a8a1a 2070 return StringText;
GregCr 0:e5420f1a8a1a 2071 }
GregCr 0:e5420f1a8a1a 2072 }
GregCr 0:e5420f1a8a1a 2073
GregCr 0:e5420f1a8a1a 2074 char* GetMenuDemoRadioPowerMode( void )
GregCr 0:e5420f1a8a1a 2075 {
GregCr 0:e5420f1a8a1a 2076 if( Eeprom.EepromData.DemoSettings.RadioPowerMode == USE_LDO )
GregCr 0:e5420f1a8a1a 2077 {
GregCr 0:e5420f1a8a1a 2078 return ( char* )" LDO";
GregCr 0:e5420f1a8a1a 2079 }
GregCr 0:e5420f1a8a1a 2080 else
GregCr 0:e5420f1a8a1a 2081 {
GregCr 0:e5420f1a8a1a 2082 return ( char* )" DCDC";
GregCr 0:e5420f1a8a1a 2083 }
GregCr 0:e5420f1a8a1a 2084 }
GregCr 0:e5420f1a8a1a 2085
GregCr 0:e5420f1a8a1a 2086 char* GetMenuDemoRadioBoostedRx( void )
GregCr 0:e5420f1a8a1a 2087 {
GregCr 0:e5420f1a8a1a 2088 if( Eeprom.EepromData.DemoSettings.BoostedRx == 0x01 )
GregCr 0:e5420f1a8a1a 2089 {
GregCr 0:e5420f1a8a1a 2090 return ( char* )" True";
GregCr 0:e5420f1a8a1a 2091 }
GregCr 0:e5420f1a8a1a 2092 else
GregCr 0:e5420f1a8a1a 2093 {
GregCr 0:e5420f1a8a1a 2094 return ( char* )" False";
GregCr 0:e5420f1a8a1a 2095 }
GregCr 0:e5420f1a8a1a 2096 }
GregCr 0:e5420f1a8a1a 2097
GregCr 0:e5420f1a8a1a 2098
GregCr 0:e5420f1a8a1a 2099 void CheckScreen( void )
GregCr 0:e5420f1a8a1a 2100 {
GregCr 0:e5420f1a8a1a 2101 CheckScreenFlag = true;
GregCr 0:e5420f1a8a1a 2102 }
GregCr 0:e5420f1a8a1a 2103
GregCr 0:e5420f1a8a1a 2104 void DebouncedScreen (void )
GregCr 0:e5420f1a8a1a 2105 {
GregCr 0:e5420f1a8a1a 2106 ScreenBeenDebounced = false;
GregCr 0:e5420f1a8a1a 2107 DebouncedScreenTouch.detach( );
GregCr 0:e5420f1a8a1a 2108 }
GregCr 0:e5420f1a8a1a 2109
GregCr 0:e5420f1a8a1a 2110 void RadioSettingsCheckError( void )
GregCr 0:e5420f1a8a1a 2111 {
GregCr 0:e5420f1a8a1a 2112 if( Eeprom.EepromData.DemoSettings.ModulationType == PACKET_TYPE_GFSK )
GregCr 0:e5420f1a8a1a 2113 {
GregCr 0:e5420f1a8a1a 2114 switch( Eeprom.EepromData.DemoSettings.ModulationParam4 )
GregCr 0:e5420f1a8a1a 2115 {
GregCr 0:e5420f1a8a1a 2116 case RX_BW_4800:
GregCr 0:e5420f1a8a1a 2117 ErrorParam = ( (Eeprom.EepromData.DemoSettings.ModulationParam2 * 2) + Eeprom.EepromData.DemoSettings.ModulationParam1 ) >= 4800;
GregCr 0:e5420f1a8a1a 2118 break;
GregCr 0:e5420f1a8a1a 2119
GregCr 0:e5420f1a8a1a 2120 case RX_BW_5800:
GregCr 0:e5420f1a8a1a 2121 ErrorParam = ( (Eeprom.EepromData.DemoSettings.ModulationParam2 * 2) + Eeprom.EepromData.DemoSettings.ModulationParam1 ) >= 5800;
GregCr 0:e5420f1a8a1a 2122 break;
GregCr 0:e5420f1a8a1a 2123
GregCr 0:e5420f1a8a1a 2124 case RX_BW_7300:
GregCr 0:e5420f1a8a1a 2125 ErrorParam = ( (Eeprom.EepromData.DemoSettings.ModulationParam2 * 2) + Eeprom.EepromData.DemoSettings.ModulationParam1 ) >= 7300;
GregCr 0:e5420f1a8a1a 2126 break;
GregCr 0:e5420f1a8a1a 2127
GregCr 0:e5420f1a8a1a 2128 case RX_BW_9700:
GregCr 0:e5420f1a8a1a 2129 ErrorParam = ( (Eeprom.EepromData.DemoSettings.ModulationParam2 * 2) + Eeprom.EepromData.DemoSettings.ModulationParam1 ) >= 9700;
GregCr 0:e5420f1a8a1a 2130 break;
GregCr 0:e5420f1a8a1a 2131
GregCr 0:e5420f1a8a1a 2132 case RX_BW_11700:
GregCr 0:e5420f1a8a1a 2133 ErrorParam = ( (Eeprom.EepromData.DemoSettings.ModulationParam2 * 2) + Eeprom.EepromData.DemoSettings.ModulationParam1 ) >= 11700;
GregCr 0:e5420f1a8a1a 2134 break;
GregCr 0:e5420f1a8a1a 2135
GregCr 0:e5420f1a8a1a 2136 case RX_BW_14600:
GregCr 0:e5420f1a8a1a 2137 ErrorParam = ( (Eeprom.EepromData.DemoSettings.ModulationParam2 * 2) + Eeprom.EepromData.DemoSettings.ModulationParam1 ) >= 14600;
GregCr 0:e5420f1a8a1a 2138 break;
GregCr 0:e5420f1a8a1a 2139
GregCr 0:e5420f1a8a1a 2140 case RX_BW_19500:
GregCr 0:e5420f1a8a1a 2141 ErrorParam = ( (Eeprom.EepromData.DemoSettings.ModulationParam2 * 2) + Eeprom.EepromData.DemoSettings.ModulationParam1 ) >= 19500;
GregCr 0:e5420f1a8a1a 2142 break;
GregCr 0:e5420f1a8a1a 2143
GregCr 0:e5420f1a8a1a 2144 case RX_BW_23400:
GregCr 0:e5420f1a8a1a 2145 ErrorParam = ( (Eeprom.EepromData.DemoSettings.ModulationParam2 * 2) + Eeprom.EepromData.DemoSettings.ModulationParam1 ) >= 23400;
GregCr 0:e5420f1a8a1a 2146 break;
GregCr 0:e5420f1a8a1a 2147
GregCr 0:e5420f1a8a1a 2148 case RX_BW_29300:
GregCr 0:e5420f1a8a1a 2149 ErrorParam = ( (Eeprom.EepromData.DemoSettings.ModulationParam2 * 2) + Eeprom.EepromData.DemoSettings.ModulationParam1 ) >= 29300;
GregCr 0:e5420f1a8a1a 2150 break;
GregCr 0:e5420f1a8a1a 2151
GregCr 0:e5420f1a8a1a 2152 case RX_BW_39000:
GregCr 0:e5420f1a8a1a 2153 ErrorParam = ( (Eeprom.EepromData.DemoSettings.ModulationParam2 * 2) + Eeprom.EepromData.DemoSettings.ModulationParam1 ) >= 39000;
GregCr 0:e5420f1a8a1a 2154 break;
GregCr 0:e5420f1a8a1a 2155
GregCr 0:e5420f1a8a1a 2156 case RX_BW_46900:
GregCr 0:e5420f1a8a1a 2157 ErrorParam = ( (Eeprom.EepromData.DemoSettings.ModulationParam2 * 2) + Eeprom.EepromData.DemoSettings.ModulationParam1 ) >= 46900;
GregCr 0:e5420f1a8a1a 2158 break;
GregCr 0:e5420f1a8a1a 2159
GregCr 0:e5420f1a8a1a 2160 case RX_BW_58600:
GregCr 0:e5420f1a8a1a 2161 ErrorParam = ( (Eeprom.EepromData.DemoSettings.ModulationParam2 * 2) + Eeprom.EepromData.DemoSettings.ModulationParam1 ) >= 58600;
GregCr 0:e5420f1a8a1a 2162 break;
GregCr 0:e5420f1a8a1a 2163
GregCr 0:e5420f1a8a1a 2164 case RX_BW_78200:
GregCr 0:e5420f1a8a1a 2165 ErrorParam = ( (Eeprom.EepromData.DemoSettings.ModulationParam2 * 2) + Eeprom.EepromData.DemoSettings.ModulationParam1 ) >= 78200;
GregCr 0:e5420f1a8a1a 2166 break;
GregCr 0:e5420f1a8a1a 2167
GregCr 0:e5420f1a8a1a 2168 case RX_BW_93800:
GregCr 0:e5420f1a8a1a 2169 ErrorParam = ( (Eeprom.EepromData.DemoSettings.ModulationParam2 * 2) + Eeprom.EepromData.DemoSettings.ModulationParam1 ) >= 93800;
GregCr 0:e5420f1a8a1a 2170 break;
GregCr 0:e5420f1a8a1a 2171
GregCr 0:e5420f1a8a1a 2172 case RX_BW_117300:
GregCr 0:e5420f1a8a1a 2173 ErrorParam = ( (Eeprom.EepromData.DemoSettings.ModulationParam2 * 2) + Eeprom.EepromData.DemoSettings.ModulationParam1 ) >= 117300;
GregCr 0:e5420f1a8a1a 2174 break;
GregCr 0:e5420f1a8a1a 2175
GregCr 0:e5420f1a8a1a 2176 case RX_BW_156200:
GregCr 0:e5420f1a8a1a 2177 ErrorParam = ( (Eeprom.EepromData.DemoSettings.ModulationParam2 * 2) + Eeprom.EepromData.DemoSettings.ModulationParam1 ) >= 156200;
GregCr 0:e5420f1a8a1a 2178 break;
GregCr 0:e5420f1a8a1a 2179
GregCr 0:e5420f1a8a1a 2180 case RX_BW_187200:
GregCr 0:e5420f1a8a1a 2181 ErrorParam = ( (Eeprom.EepromData.DemoSettings.ModulationParam2 * 2) + Eeprom.EepromData.DemoSettings.ModulationParam1 ) >= 187200;
GregCr 0:e5420f1a8a1a 2182 break;
GregCr 0:e5420f1a8a1a 2183
GregCr 0:e5420f1a8a1a 2184 case RX_BW_234300:
GregCr 0:e5420f1a8a1a 2185 ErrorParam = ( (Eeprom.EepromData.DemoSettings.ModulationParam2 * 2) + Eeprom.EepromData.DemoSettings.ModulationParam1 ) >= 234300;
GregCr 0:e5420f1a8a1a 2186 break;
GregCr 0:e5420f1a8a1a 2187
GregCr 0:e5420f1a8a1a 2188 case RX_BW_312000:
GregCr 0:e5420f1a8a1a 2189 ErrorParam = ( (Eeprom.EepromData.DemoSettings.ModulationParam2 * 2) + Eeprom.EepromData.DemoSettings.ModulationParam1 ) >= 312000;
GregCr 0:e5420f1a8a1a 2190 break;
GregCr 0:e5420f1a8a1a 2191
GregCr 0:e5420f1a8a1a 2192 case RX_BW_373600:
GregCr 0:e5420f1a8a1a 2193 ErrorParam = ( (Eeprom.EepromData.DemoSettings.ModulationParam2 * 2) + Eeprom.EepromData.DemoSettings.ModulationParam1 ) >= 373600;
GregCr 0:e5420f1a8a1a 2194 break;
GregCr 0:e5420f1a8a1a 2195
GregCr 0:e5420f1a8a1a 2196 case RX_BW_467000:
GregCr 0:e5420f1a8a1a 2197 ErrorParam = ( (Eeprom.EepromData.DemoSettings.ModulationParam2 * 2) + Eeprom.EepromData.DemoSettings.ModulationParam1 ) >= 467000;
GregCr 0:e5420f1a8a1a 2198 break;
GregCr 0:e5420f1a8a1a 2199
GregCr 0:e5420f1a8a1a 2200 default:
GregCr 0:e5420f1a8a1a 2201 ErrorParam = true;
GregCr 0:e5420f1a8a1a 2202 break;
GregCr 0:e5420f1a8a1a 2203 }
GregCr 0:e5420f1a8a1a 2204 if( ErrorParam == true )
GregCr 0:e5420f1a8a1a 2205 {
GregCr 0:e5420f1a8a1a 2206 MenuObjects[BTN3_VALUE_TEXT].FrontColor = OBJECT_ERROR;
GregCr 0:e5420f1a8a1a 2207 MenuObjects[BTN4_VALUE_TEXT].FrontColor = OBJECT_ERROR;
GregCr 0:e5420f1a8a1a 2208 MenuObjects[BTN6_VALUE_TEXT].FrontColor = OBJECT_ERROR;
GregCr 0:e5420f1a8a1a 2209 }
GregCr 0:e5420f1a8a1a 2210 else
GregCr 0:e5420f1a8a1a 2211 {
GregCr 0:e5420f1a8a1a 2212 RadioSettingsClearError( );
GregCr 0:e5420f1a8a1a 2213 }
GregCr 0:e5420f1a8a1a 2214 ButtonChangeText( BTN3_BORDER, NULL, ( uint8_t* )GetRadioModulationParameters1( ) );
GregCr 0:e5420f1a8a1a 2215 ButtonChangeText( BTN4_BORDER, NULL, ( uint8_t* )GetRadioModulationParameters2( ) );
GregCr 0:e5420f1a8a1a 2216 ButtonChangeText( BTN6_BORDER, NULL, ( uint8_t* )GetRadioModulationParameters4( ) );
GregCr 0:e5420f1a8a1a 2217 }
GregCr 0:e5420f1a8a1a 2218 }
GregCr 0:e5420f1a8a1a 2219
GregCr 0:e5420f1a8a1a 2220 void RadioSettingsClearError( void )
GregCr 0:e5420f1a8a1a 2221 {
GregCr 0:e5420f1a8a1a 2222 MenuObjects[BTN3_VALUE_TEXT].FrontColor = TEXT_VALUE;
GregCr 0:e5420f1a8a1a 2223 MenuObjects[BTN4_VALUE_TEXT].FrontColor = TEXT_VALUE;
GregCr 0:e5420f1a8a1a 2224 MenuObjects[BTN6_VALUE_TEXT].FrontColor = TEXT_VALUE;
GregCr 0:e5420f1a8a1a 2225 }
GregCr 0:e5420f1a8a1a 2226
GregCr 0:e5420f1a8a1a 2227 /*!
GregCr 0:e5420f1a8a1a 2228 * \brief Draw button
GregCr 0:e5420f1a8a1a 2229 *
GregCr 0:e5420f1a8a1a 2230 * \param [in] buttonId Id of the button to draw
GregCr 0:e5420f1a8a1a 2231 * \param [in] *text1 Text to draw as label
GregCr 0:e5420f1a8a1a 2232 * \param [in] *text2 Text to draw as value
GregCr 0:e5420f1a8a1a 2233 */
GregCr 0:e5420f1a8a1a 2234 void DrawActiveButton( uint8_t buttonId, uint8_t* text1, uint8_t* text2 )
GregCr 0:e5420f1a8a1a 2235 {
GregCr 0:e5420f1a8a1a 2236 GraphObjectDraw( &( MenuObjects[buttonId] ), NULL, NULL, true );
GregCr 0:e5420f1a8a1a 2237 if( text2 == NULL )
GregCr 0:e5420f1a8a1a 2238 {
GregCr 0:e5420f1a8a1a 2239 if( text1 != NULL )
GregCr 0:e5420f1a8a1a 2240 {
GregCr 0:e5420f1a8a1a 2241 GraphObjectDraw( &( MenuObjects[buttonId + 1] ), text1, NULL, false );
GregCr 0:e5420f1a8a1a 2242 }
GregCr 0:e5420f1a8a1a 2243 }
GregCr 0:e5420f1a8a1a 2244 else
GregCr 0:e5420f1a8a1a 2245 {
GregCr 0:e5420f1a8a1a 2246 if( text1 != NULL )
GregCr 0:e5420f1a8a1a 2247 {
GregCr 0:e5420f1a8a1a 2248 GraphObjectDraw( &( MenuObjects[buttonId + 2] ), text1, NULL, false );
GregCr 0:e5420f1a8a1a 2249 }
GregCr 0:e5420f1a8a1a 2250 GraphObjectDraw( &( MenuObjects[buttonId + 3] ), text2, NULL, false );
GregCr 0:e5420f1a8a1a 2251 }
GregCr 0:e5420f1a8a1a 2252 }
GregCr 0:e5420f1a8a1a 2253
GregCr 0:e5420f1a8a1a 2254 void ButtonChangeText( uint8_t buttonId, uint8_t* text1, uint8_t* text2 )
GregCr 0:e5420f1a8a1a 2255 {
GregCr 0:e5420f1a8a1a 2256 if( text2 == NULL )
GregCr 0:e5420f1a8a1a 2257 {
GregCr 0:e5420f1a8a1a 2258 if( text1 != NULL )
GregCr 0:e5420f1a8a1a 2259 {
GregCr 0:e5420f1a8a1a 2260 GraphObjectDraw( &( MenuObjects[buttonId + 1] ), text1, NULL, false );
GregCr 0:e5420f1a8a1a 2261 }
GregCr 0:e5420f1a8a1a 2262 }
GregCr 0:e5420f1a8a1a 2263 else
GregCr 0:e5420f1a8a1a 2264 {
GregCr 0:e5420f1a8a1a 2265 if( text1 != NULL )
GregCr 0:e5420f1a8a1a 2266 {
GregCr 0:e5420f1a8a1a 2267 GraphObjectDraw( &( MenuObjects[buttonId + 2] ), text1, NULL, false );
GregCr 0:e5420f1a8a1a 2268 }
GregCr 0:e5420f1a8a1a 2269 GraphObjectDraw( &( MenuObjects[buttonId + 3] ), text2, NULL, false );
GregCr 0:e5420f1a8a1a 2270 }
GregCr 0:e5420f1a8a1a 2271 }
GregCr 0:e5420f1a8a1a 2272
GregCr 0:e5420f1a8a1a 2273 void DrawText( uint8_t lineId, uint8_t* text0, uint8_t* text1, uint8_t* text2 )
GregCr 0:e5420f1a8a1a 2274 {
GregCr 0:e5420f1a8a1a 2275 if( text0 != NULL )
GregCr 0:e5420f1a8a1a 2276 {
GregCr 0:e5420f1a8a1a 2277 GraphObjectDraw( &( MenuObjects[lineId] ), text0, NULL, false );
GregCr 0:e5420f1a8a1a 2278 }
GregCr 0:e5420f1a8a1a 2279 if( text1 != NULL )
GregCr 0:e5420f1a8a1a 2280 {
GregCr 0:e5420f1a8a1a 2281 GraphObjectDraw( &( MenuObjects[lineId + 1] ), text1, NULL, false );
GregCr 0:e5420f1a8a1a 2282 }
GregCr 0:e5420f1a8a1a 2283 if( text2 != NULL )
GregCr 0:e5420f1a8a1a 2284 {
GregCr 0:e5420f1a8a1a 2285 GraphObjectDraw( &( MenuObjects[lineId + 2] ), text2, NULL, false );
GregCr 0:e5420f1a8a1a 2286 }
GregCr 0:e5420f1a8a1a 2287 }
GregCr 0:e5420f1a8a1a 2288