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:
Fri Mar 09 13:28:34 2018 +0000
Revision:
1:b96176a4ccb8
Parent:
0:e5420f1a8a1a
Child:
2:8e1b4210df6b
V1.0

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 0:e5420f1a8a1a 833 Eeprom.EepromData.DemoSettings.Frequency = DEMO_CENTRAL_FREQ_PRESET1;
GregCr 0:e5420f1a8a1a 834 MenuSetPage( PAGE_RADIO_PARAM );
GregCr 0:e5420f1a8a1a 835 }
GregCr 0:e5420f1a8a1a 836 else if( graphObjectTouched == BTN4_BORDER )
GregCr 0:e5420f1a8a1a 837 {
GregCr 0:e5420f1a8a1a 838 Eeprom.EepromData.DemoSettings.Frequency = DEMO_CENTRAL_FREQ_PRESET2;
GregCr 0:e5420f1a8a1a 839 MenuSetPage( PAGE_RADIO_PARAM );
GregCr 0:e5420f1a8a1a 840 }
GregCr 0:e5420f1a8a1a 841 else if( graphObjectTouched == BTN5_BORDER )
GregCr 0:e5420f1a8a1a 842 {
GregCr 0:e5420f1a8a1a 843 Eeprom.EepromData.DemoSettings.Frequency = DEMO_CENTRAL_FREQ_PRESET3;
GregCr 0:e5420f1a8a1a 844 MenuSetPage( PAGE_RADIO_PARAM );
GregCr 0:e5420f1a8a1a 845 }
GregCr 0:e5420f1a8a1a 846 else if( graphObjectTouched == BTN6_BORDER )
GregCr 0:e5420f1a8a1a 847 {
GregCr 0:e5420f1a8a1a 848 switch( CurrentFreqBase )
GregCr 0:e5420f1a8a1a 849 {
GregCr 0:e5420f1a8a1a 850 case FB1:
GregCr 0:e5420f1a8a1a 851 CurrentFreqBase = FB10;
GregCr 0:e5420f1a8a1a 852 break;
GregCr 0:e5420f1a8a1a 853 case FB10:
GregCr 0:e5420f1a8a1a 854 CurrentFreqBase = FB100;
GregCr 0:e5420f1a8a1a 855 break;
GregCr 0:e5420f1a8a1a 856 case FB100:
GregCr 0:e5420f1a8a1a 857 CurrentFreqBase = FB1K;
GregCr 0:e5420f1a8a1a 858 break;
GregCr 0:e5420f1a8a1a 859 case FB1K:
GregCr 0:e5420f1a8a1a 860 CurrentFreqBase = FB10K;
GregCr 0:e5420f1a8a1a 861 break;
GregCr 0:e5420f1a8a1a 862 case FB10K:
GregCr 0:e5420f1a8a1a 863 CurrentFreqBase = FB100K;
GregCr 0:e5420f1a8a1a 864 break;
GregCr 0:e5420f1a8a1a 865 case FB100K:
GregCr 0:e5420f1a8a1a 866 CurrentFreqBase = FB1M;
GregCr 0:e5420f1a8a1a 867 break;
GregCr 0:e5420f1a8a1a 868 case FB1M:
GregCr 0:e5420f1a8a1a 869 CurrentFreqBase = FB10M;
GregCr 0:e5420f1a8a1a 870 break;
GregCr 0:e5420f1a8a1a 871 case FB10M:
GregCr 0:e5420f1a8a1a 872 CurrentFreqBase = FB1;
GregCr 0:e5420f1a8a1a 873 break;
GregCr 0:e5420f1a8a1a 874 }
GregCr 0:e5420f1a8a1a 875 ButtonChangeText( BTN6_BORDER, NULL, ( uint8_t* )GetRadioFreqBase( ) );
GregCr 0:e5420f1a8a1a 876 }
GregCr 0:e5420f1a8a1a 877 else if( graphObjectTouched == BTN7_BORDER )
GregCr 0:e5420f1a8a1a 878 {
GregCr 0:e5420f1a8a1a 879 Eeprom.EepromData.DemoSettings.Frequency -= CurrentFreqBase;
GregCr 0:e5420f1a8a1a 880 if( Eeprom.EepromData.DemoSettings.Frequency < DEMO_CENTRAL_FREQ_MIN )
GregCr 0:e5420f1a8a1a 881 {
GregCr 0:e5420f1a8a1a 882 Eeprom.EepromData.DemoSettings.Frequency = DEMO_CENTRAL_FREQ_MIN;
GregCr 0:e5420f1a8a1a 883 }
GregCr 0:e5420f1a8a1a 884 ButtonChangeText( BTN2_BORDER, NULL, ( uint8_t* )GetRadioFrequency( ) );
GregCr 0:e5420f1a8a1a 885 }
GregCr 0:e5420f1a8a1a 886 else if( graphObjectTouched == BTN8_BORDER )
GregCr 0:e5420f1a8a1a 887 {
GregCr 0:e5420f1a8a1a 888 Eeprom.EepromData.DemoSettings.Frequency += CurrentFreqBase;
GregCr 0:e5420f1a8a1a 889 if( Eeprom.EepromData.DemoSettings.Frequency > DEMO_CENTRAL_FREQ_MAX )
GregCr 0:e5420f1a8a1a 890 {
GregCr 0:e5420f1a8a1a 891 Eeprom.EepromData.DemoSettings.Frequency = DEMO_CENTRAL_FREQ_MAX;
GregCr 0:e5420f1a8a1a 892 }
GregCr 0:e5420f1a8a1a 893 ButtonChangeText( BTN2_BORDER, NULL, ( uint8_t* )GetRadioFrequency( ) );
GregCr 0:e5420f1a8a1a 894 }
GregCr 0:e5420f1a8a1a 895 break;
GregCr 0:e5420f1a8a1a 896
GregCr 0:e5420f1a8a1a 897 case PAGE_UTILITIES:
GregCr 0:e5420f1a8a1a 898 if( graphObjectTouched == BTN0_BORDER )
GregCr 0:e5420f1a8a1a 899 {
GregCr 1:b96176a4ccb8 900 EepromEraseCheckSum( );
GregCr 0:e5420f1a8a1a 901 NVIC_SystemReset( );
GregCr 0:e5420f1a8a1a 902 }
GregCr 0:e5420f1a8a1a 903 else if( graphObjectTouched == BTN3_BORDER )
GregCr 0:e5420f1a8a1a 904 {
GregCr 0:e5420f1a8a1a 905 if( Eeprom.EepromData.DemoSettings.BoostedRx == true )
GregCr 0:e5420f1a8a1a 906 {
GregCr 0:e5420f1a8a1a 907 Eeprom.EepromData.DemoSettings.BoostedRx = false;
GregCr 0:e5420f1a8a1a 908 }
GregCr 0:e5420f1a8a1a 909 else
GregCr 0:e5420f1a8a1a 910 {
GregCr 0:e5420f1a8a1a 911 Eeprom.EepromData.DemoSettings.BoostedRx = true;
GregCr 0:e5420f1a8a1a 912 }
GregCr 0:e5420f1a8a1a 913 ButtonChangeText( BTN3_BORDER, NULL, ( uint8_t* )GetMenuDemoRadioBoostedRx( ) );
GregCr 0:e5420f1a8a1a 914 }
GregCr 0:e5420f1a8a1a 915 else if( graphObjectTouched == BTN4_BORDER )
GregCr 0:e5420f1a8a1a 916 {
GregCr 0:e5420f1a8a1a 917 if( Eeprom.EepromData.DemoSettings.RadioPowerMode == USE_LDO )
GregCr 0:e5420f1a8a1a 918 {
GregCr 0:e5420f1a8a1a 919 Eeprom.EepromData.DemoSettings.RadioPowerMode = USE_DCDC;
GregCr 0:e5420f1a8a1a 920 }
GregCr 0:e5420f1a8a1a 921 else
GregCr 0:e5420f1a8a1a 922 {
GregCr 0:e5420f1a8a1a 923 Eeprom.EepromData.DemoSettings.RadioPowerMode = USE_LDO;
GregCr 0:e5420f1a8a1a 924 }
GregCr 0:e5420f1a8a1a 925 ButtonChangeText( BTN4_BORDER, NULL, ( uint8_t* )GetMenuDemoRadioPowerMode( ) );
GregCr 0:e5420f1a8a1a 926 }
GregCr 0:e5420f1a8a1a 927 else if( graphObjectTouched == BTN5_BORDER )
GregCr 0:e5420f1a8a1a 928 {
GregCr 0:e5420f1a8a1a 929 switch( Eeprom.EepromData.DemoSettings.MaxNumPacket )
GregCr 0:e5420f1a8a1a 930 {
GregCr 0:e5420f1a8a1a 931 case 0:
GregCr 0:e5420f1a8a1a 932 Eeprom.EepromData.DemoSettings.MaxNumPacket = 100;
GregCr 0:e5420f1a8a1a 933 break;
GregCr 0:e5420f1a8a1a 934 case 100:
GregCr 0:e5420f1a8a1a 935 Eeprom.EepromData.DemoSettings.MaxNumPacket = 200;
GregCr 0:e5420f1a8a1a 936 break;
GregCr 0:e5420f1a8a1a 937 case 200:
GregCr 0:e5420f1a8a1a 938 Eeprom.EepromData.DemoSettings.MaxNumPacket = 500;
GregCr 0:e5420f1a8a1a 939 break;
GregCr 0:e5420f1a8a1a 940 case 500:
GregCr 0:e5420f1a8a1a 941 Eeprom.EepromData.DemoSettings.MaxNumPacket = 1000;
GregCr 0:e5420f1a8a1a 942 break;
GregCr 0:e5420f1a8a1a 943 case 1000:
GregCr 0:e5420f1a8a1a 944 Eeprom.EepromData.DemoSettings.MaxNumPacket = 0;
GregCr 0:e5420f1a8a1a 945 break;
GregCr 0:e5420f1a8a1a 946 }
GregCr 0:e5420f1a8a1a 947 ButtonChangeText( BTN5_BORDER, NULL, ( uint8_t* )GetMenuDemoMaxNumPacket( ) );
GregCr 0:e5420f1a8a1a 948 }
GregCr 0:e5420f1a8a1a 949 else if( graphObjectTouched == BTN7_BORDER )
GregCr 0:e5420f1a8a1a 950 {
GregCr 0:e5420f1a8a1a 951 uint8_t modTmp = Eeprom.EepromData.DemoSettings.ModulationType;
GregCr 0:e5420f1a8a1a 952
GregCr 0:e5420f1a8a1a 953 EepromMcuReadBuffer( 0, Eeprom.Buffer, EEPROM_BUFFER_SIZE );
GregCr 0:e5420f1a8a1a 954 EepromLoadGeneralSettings( );
GregCr 0:e5420f1a8a1a 955 EepromLoadSettings( ( RadioPacketTypes_t )modTmp );
GregCr 0:e5420f1a8a1a 956 MenuSetPage( START_PAGE );
GregCr 0:e5420f1a8a1a 957 }
GregCr 0:e5420f1a8a1a 958 else if( graphObjectTouched == BTN8_BORDER )
GregCr 0:e5420f1a8a1a 959 {
GregCr 0:e5420f1a8a1a 960 EepromSaveSettings( DEMO_SETTINGS );
GregCr 0:e5420f1a8a1a 961 MenuSetPage( START_PAGE );
GregCr 0:e5420f1a8a1a 962 }
GregCr 0:e5420f1a8a1a 963 else if( refresh == true )
GregCr 0:e5420f1a8a1a 964 {
GregCr 0:e5420f1a8a1a 965 MenuSetPage( PAGE_UTILITIES );
GregCr 0:e5420f1a8a1a 966 }
GregCr 0:e5420f1a8a1a 967 break;
GregCr 0:e5420f1a8a1a 968
GregCr 0:e5420f1a8a1a 969 case PAGE_RADIO_TEST:
GregCr 1:b96176a4ccb8 970 if( graphObjectTouched == BTN0b_BORDER )
GregCr 0:e5420f1a8a1a 971 {
GregCr 0:e5420f1a8a1a 972 Eeprom.EepromData.DemoSettings.HoldDemo = true;
GregCr 0:e5420f1a8a1a 973 MenuSetPage( PAGE_SLEEP_MODE );
GregCr 0:e5420f1a8a1a 974 }
GregCr 1:b96176a4ccb8 975 else if( graphObjectTouched == BTN1_BORDER )
GregCr 0:e5420f1a8a1a 976 {
GregCr 0:e5420f1a8a1a 977 Eeprom.EepromData.DemoSettings.HoldDemo = true;
GregCr 0:e5420f1a8a1a 978 MenuSetPage( PAGE_STBY_RC_MODE );
GregCr 0:e5420f1a8a1a 979 }
GregCr 1:b96176a4ccb8 980 else if( graphObjectTouched == BTN2_BORDER )
GregCr 0:e5420f1a8a1a 981 {
GregCr 0:e5420f1a8a1a 982 Eeprom.EepromData.DemoSettings.HoldDemo = true;
GregCr 0:e5420f1a8a1a 983 MenuSetPage( PAGE_STBY_XOSC_MODE );
GregCr 0:e5420f1a8a1a 984 }
GregCr 1:b96176a4ccb8 985 else if( graphObjectTouched == BTN3_BORDER )
GregCr 0:e5420f1a8a1a 986 {
GregCr 0:e5420f1a8a1a 987 Eeprom.EepromData.DemoSettings.HoldDemo = true;
GregCr 0:e5420f1a8a1a 988 MenuSetPage( PAGE_TX_CW );
GregCr 0:e5420f1a8a1a 989 }
GregCr 1:b96176a4ccb8 990 else if( graphObjectTouched == BTN4_BORDER )
GregCr 0:e5420f1a8a1a 991 {
GregCr 0:e5420f1a8a1a 992 Eeprom.EepromData.DemoSettings.HoldDemo = true;
GregCr 0:e5420f1a8a1a 993 MenuSetPage( PAGE_CONT_MODULATION );
GregCr 0:e5420f1a8a1a 994 }
GregCr 1:b96176a4ccb8 995 else if( graphObjectTouched == BTN5_BORDER )
GregCr 1:b96176a4ccb8 996 {
GregCr 1:b96176a4ccb8 997 Eeprom.EepromData.DemoSettings.HoldDemo = true;
GregCr 1:b96176a4ccb8 998 MenuSetPage( PAGE_CONT_RX );
GregCr 1:b96176a4ccb8 999 }
GregCr 0:e5420f1a8a1a 1000 else if( graphObjectTouched == BTN6_BORDER )
GregCr 0:e5420f1a8a1a 1001 {
GregCr 0:e5420f1a8a1a 1002 Eeprom.EepromData.DemoSettings.HoldDemo = true;
GregCr 1:b96176a4ccb8 1003 MenuSetPage( PAGE_RSSI_TEST );
GregCr 0:e5420f1a8a1a 1004 }
GregCr 0:e5420f1a8a1a 1005 else if( graphObjectTouched == BTN7_BORDER )
GregCr 0:e5420f1a8a1a 1006 {
GregCr 0:e5420f1a8a1a 1007 Eeprom.EepromData.DemoSettings.HoldDemo = true;
GregCr 0:e5420f1a8a1a 1008 MenuSetPage( START_PAGE );
GregCr 0:e5420f1a8a1a 1009 }
GregCr 0:e5420f1a8a1a 1010 break;
GregCr 0:e5420f1a8a1a 1011
GregCr 1:b96176a4ccb8 1012 case PAGE_RSSI_TEST:
GregCr 1:b96176a4ccb8 1013 if( graphObjectTouched == BTN7_BORDER )
GregCr 1:b96176a4ccb8 1014 {
GregCr 1:b96176a4ccb8 1015 StopDemoApplication( );
GregCr 1:b96176a4ccb8 1016 Eeprom.EepromData.DemoSettings.HoldDemo = true;
GregCr 1:b96176a4ccb8 1017 PreviousPage = PAGE_RADIO_TEST; // clear Previous page
GregCr 1:b96176a4ccb8 1018 MenuSetPage( PAGE_RADIO_TEST );
GregCr 1:b96176a4ccb8 1019 }
GregCr 1:b96176a4ccb8 1020 else if( graphObjectTouched == BTN8_BORDER )
GregCr 1:b96176a4ccb8 1021 {
GregCr 1:b96176a4ccb8 1022 if( Eeprom.EepromData.DemoSettings.HoldDemo == true )
GregCr 1:b96176a4ccb8 1023 {
GregCr 1:b96176a4ccb8 1024 Eeprom.EepromData.DemoSettings.HoldDemo = false;
GregCr 1:b96176a4ccb8 1025 StopDemoApplication( );
GregCr 1:b96176a4ccb8 1026 ButtonChangeText( BTN8_BORDER, ( uint8_t* )" STOP", NULL );
GregCr 1:b96176a4ccb8 1027 RunDemoTestRssi( );
GregCr 1:b96176a4ccb8 1028 }
GregCr 1:b96176a4ccb8 1029 else
GregCr 1:b96176a4ccb8 1030 {
GregCr 1:b96176a4ccb8 1031 Eeprom.EepromData.DemoSettings.HoldDemo = true;
GregCr 1:b96176a4ccb8 1032 StopDemoApplication( );
GregCr 1:b96176a4ccb8 1033 ButtonChangeText( BTN8_BORDER, ( uint8_t* )" START", NULL );
GregCr 1:b96176a4ccb8 1034 }
GregCr 1:b96176a4ccb8 1035 }
GregCr 1:b96176a4ccb8 1036 else if( graphObjectTouched == BTN9_BORDER )
GregCr 1:b96176a4ccb8 1037 {
GregCr 1:b96176a4ccb8 1038 Eeprom.EepromData.DemoSettings.HoldDemo = true;
GregCr 1:b96176a4ccb8 1039 StopDemoApplication( );
GregCr 1:b96176a4ccb8 1040 // "CANCEL" or "OK & SAVE" button of PAGE_RADIO_PARAM use
GregCr 1:b96176a4ccb8 1041 // PreviousPage to set next page. Speed up the navigation.
GregCr 1:b96176a4ccb8 1042 PreviousPage = PAGE_RSSI_TEST;
GregCr 1:b96176a4ccb8 1043 MenuSetPage( PAGE_RADIO_PARAM );
GregCr 1:b96176a4ccb8 1044 }
GregCr 1:b96176a4ccb8 1045 break;
GregCr 1:b96176a4ccb8 1046
GregCr 0:e5420f1a8a1a 1047 case PAGE_SLEEP_MODE:
GregCr 0:e5420f1a8a1a 1048 if( graphObjectTouched == BTN7_BORDER )
GregCr 0:e5420f1a8a1a 1049 {
GregCr 0:e5420f1a8a1a 1050 StopDemoApplication( );
GregCr 0:e5420f1a8a1a 1051 Eeprom.EepromData.DemoSettings.HoldDemo = true;
GregCr 1:b96176a4ccb8 1052 PreviousPage = PAGE_RADIO_TEST; // clear Previous page
GregCr 1:b96176a4ccb8 1053 MenuSetPage( PAGE_RADIO_TEST );
GregCr 0:e5420f1a8a1a 1054 }
GregCr 0:e5420f1a8a1a 1055 else if( graphObjectTouched == BTN8_BORDER )
GregCr 0:e5420f1a8a1a 1056 {
GregCr 0:e5420f1a8a1a 1057 if( Eeprom.EepromData.DemoSettings.HoldDemo == true )
GregCr 0:e5420f1a8a1a 1058 {
GregCr 0:e5420f1a8a1a 1059 Eeprom.EepromData.DemoSettings.HoldDemo = false;
GregCr 0:e5420f1a8a1a 1060 StopDemoApplication( );
GregCr 0:e5420f1a8a1a 1061 ButtonChangeText( BTN8_BORDER, ( uint8_t* )" STOP", NULL );
GregCr 0:e5420f1a8a1a 1062 RunDemoSleepMode( );
GregCr 0:e5420f1a8a1a 1063 }
GregCr 0:e5420f1a8a1a 1064 else
GregCr 0:e5420f1a8a1a 1065 {
GregCr 0:e5420f1a8a1a 1066 Eeprom.EepromData.DemoSettings.HoldDemo = true;
GregCr 0:e5420f1a8a1a 1067 StopDemoApplication( );
GregCr 0:e5420f1a8a1a 1068 ButtonChangeText( BTN8_BORDER, ( uint8_t* )" START", NULL );
GregCr 0:e5420f1a8a1a 1069 MenuSetPage( PAGE_SLEEP_MODE );
GregCr 0:e5420f1a8a1a 1070 }
GregCr 0:e5420f1a8a1a 1071 }
GregCr 0:e5420f1a8a1a 1072 else if( graphObjectTouched == BTN9_BORDER )
GregCr 0:e5420f1a8a1a 1073 {
GregCr 0:e5420f1a8a1a 1074 Eeprom.EepromData.DemoSettings.HoldDemo = true;
GregCr 0:e5420f1a8a1a 1075 StopDemoApplication( );
GregCr 0:e5420f1a8a1a 1076 // "CANCEL" or "OK & SAVE" button of PAGE_RADIO_PARAM use
GregCr 0:e5420f1a8a1a 1077 // PreviousPage to set next page. Speed up the navigation.
GregCr 0:e5420f1a8a1a 1078 PreviousPage = PAGE_SLEEP_MODE;
GregCr 0:e5420f1a8a1a 1079 MenuSetPage( PAGE_RADIO_PARAM );
GregCr 0:e5420f1a8a1a 1080 }
GregCr 0:e5420f1a8a1a 1081 break;
GregCr 0:e5420f1a8a1a 1082
GregCr 0:e5420f1a8a1a 1083 case PAGE_STBY_RC_MODE:
GregCr 0:e5420f1a8a1a 1084 if( graphObjectTouched == BTN7_BORDER )
GregCr 0:e5420f1a8a1a 1085 {
GregCr 0:e5420f1a8a1a 1086 StopDemoApplication( );
GregCr 0:e5420f1a8a1a 1087 Eeprom.EepromData.DemoSettings.HoldDemo = true;
GregCr 1:b96176a4ccb8 1088 PreviousPage = PAGE_RADIO_TEST; // clear Previous page
GregCr 1:b96176a4ccb8 1089 MenuSetPage( PAGE_RADIO_TEST );
GregCr 0:e5420f1a8a1a 1090 }
GregCr 0:e5420f1a8a1a 1091 else if( graphObjectTouched == BTN8_BORDER )
GregCr 0:e5420f1a8a1a 1092 {
GregCr 0:e5420f1a8a1a 1093 if( Eeprom.EepromData.DemoSettings.HoldDemo == true )
GregCr 0:e5420f1a8a1a 1094 {
GregCr 0:e5420f1a8a1a 1095 Eeprom.EepromData.DemoSettings.HoldDemo = false;
GregCr 0:e5420f1a8a1a 1096 StopDemoApplication( );
GregCr 0:e5420f1a8a1a 1097 ButtonChangeText( BTN8_BORDER, ( uint8_t* )" STOP", NULL );
GregCr 0:e5420f1a8a1a 1098 RunDemoStandbyRcMode( );
GregCr 0:e5420f1a8a1a 1099 }
GregCr 0:e5420f1a8a1a 1100 else
GregCr 0:e5420f1a8a1a 1101 {
GregCr 0:e5420f1a8a1a 1102 Eeprom.EepromData.DemoSettings.HoldDemo = true;
GregCr 0:e5420f1a8a1a 1103 StopDemoApplication( );
GregCr 0:e5420f1a8a1a 1104 ButtonChangeText( BTN8_BORDER, ( uint8_t* )" START", NULL );
GregCr 0:e5420f1a8a1a 1105 }
GregCr 0:e5420f1a8a1a 1106 }
GregCr 0:e5420f1a8a1a 1107 else if( graphObjectTouched == BTN9_BORDER )
GregCr 0:e5420f1a8a1a 1108 {
GregCr 0:e5420f1a8a1a 1109 Eeprom.EepromData.DemoSettings.HoldDemo = true;
GregCr 0:e5420f1a8a1a 1110 StopDemoApplication( );
GregCr 0:e5420f1a8a1a 1111 // "CANCEL" or "OK & SAVE" button of PAGE_RADIO_PARAM use
GregCr 0:e5420f1a8a1a 1112 // PreviousPage to set next page. Speed up the navigation.
GregCr 0:e5420f1a8a1a 1113 PreviousPage = PAGE_STBY_RC_MODE;
GregCr 0:e5420f1a8a1a 1114 MenuSetPage( PAGE_RADIO_PARAM );
GregCr 0:e5420f1a8a1a 1115 }
GregCr 0:e5420f1a8a1a 1116 break;
GregCr 0:e5420f1a8a1a 1117
GregCr 0:e5420f1a8a1a 1118 case PAGE_STBY_XOSC_MODE:
GregCr 0:e5420f1a8a1a 1119 if( graphObjectTouched == BTN7_BORDER )
GregCr 0:e5420f1a8a1a 1120 {
GregCr 0:e5420f1a8a1a 1121 StopDemoApplication( );
GregCr 0:e5420f1a8a1a 1122 Eeprom.EepromData.DemoSettings.HoldDemo = true;
GregCr 1:b96176a4ccb8 1123 PreviousPage = PAGE_RADIO_TEST; // clear Previous page
GregCr 1:b96176a4ccb8 1124 MenuSetPage( PAGE_RADIO_TEST );
GregCr 0:e5420f1a8a1a 1125 }
GregCr 0:e5420f1a8a1a 1126 else if( graphObjectTouched == BTN8_BORDER )
GregCr 0:e5420f1a8a1a 1127 {
GregCr 0:e5420f1a8a1a 1128 if( Eeprom.EepromData.DemoSettings.HoldDemo == true )
GregCr 0:e5420f1a8a1a 1129 {
GregCr 0:e5420f1a8a1a 1130 Eeprom.EepromData.DemoSettings.HoldDemo = false;
GregCr 0:e5420f1a8a1a 1131 StopDemoApplication( );
GregCr 0:e5420f1a8a1a 1132 ButtonChangeText( BTN8_BORDER, ( uint8_t* )" STOP", NULL );
GregCr 0:e5420f1a8a1a 1133 RunDemoStandbyXoscMode( );
GregCr 0:e5420f1a8a1a 1134 }
GregCr 0:e5420f1a8a1a 1135 else
GregCr 0:e5420f1a8a1a 1136 {
GregCr 0:e5420f1a8a1a 1137 Eeprom.EepromData.DemoSettings.HoldDemo = true;
GregCr 0:e5420f1a8a1a 1138 StopDemoApplication( );
GregCr 0:e5420f1a8a1a 1139 ButtonChangeText( BTN8_BORDER, ( uint8_t* )" START", NULL );
GregCr 0:e5420f1a8a1a 1140 }
GregCr 0:e5420f1a8a1a 1141 }
GregCr 0:e5420f1a8a1a 1142 else if( graphObjectTouched == BTN9_BORDER )
GregCr 0:e5420f1a8a1a 1143 {
GregCr 0:e5420f1a8a1a 1144 Eeprom.EepromData.DemoSettings.HoldDemo = true;
GregCr 0:e5420f1a8a1a 1145 StopDemoApplication( );
GregCr 0:e5420f1a8a1a 1146 // "CANCEL" or "OK & SAVE" button of PAGE_RADIO_PARAM use
GregCr 0:e5420f1a8a1a 1147 // PreviousPage to set next page. Speed up the navigation.
GregCr 0:e5420f1a8a1a 1148 PreviousPage = PAGE_STBY_XOSC_MODE;
GregCr 0:e5420f1a8a1a 1149 MenuSetPage( PAGE_RADIO_PARAM );
GregCr 0:e5420f1a8a1a 1150 }
GregCr 0:e5420f1a8a1a 1151 break;
GregCr 0:e5420f1a8a1a 1152
GregCr 0:e5420f1a8a1a 1153 case PAGE_TX_CW:
GregCr 0:e5420f1a8a1a 1154 if( graphObjectTouched == BTN7_BORDER )
GregCr 0:e5420f1a8a1a 1155 {
GregCr 0:e5420f1a8a1a 1156 StopDemoApplication( );
GregCr 0:e5420f1a8a1a 1157 Eeprom.EepromData.DemoSettings.HoldDemo = true;
GregCr 1:b96176a4ccb8 1158 PreviousPage = PAGE_RADIO_TEST; // clear Previous page
GregCr 1:b96176a4ccb8 1159 MenuSetPage( PAGE_RADIO_TEST );
GregCr 0:e5420f1a8a1a 1160 }
GregCr 0:e5420f1a8a1a 1161 else if( graphObjectTouched == BTN8_BORDER )
GregCr 0:e5420f1a8a1a 1162 {
GregCr 0:e5420f1a8a1a 1163 if( Eeprom.EepromData.DemoSettings.HoldDemo == true )
GregCr 0:e5420f1a8a1a 1164 {
GregCr 0:e5420f1a8a1a 1165 Eeprom.EepromData.DemoSettings.HoldDemo = false;
GregCr 0:e5420f1a8a1a 1166 StopDemoApplication( );
GregCr 0:e5420f1a8a1a 1167 ButtonChangeText( BTN8_BORDER, ( uint8_t* )" STOP", NULL );
GregCr 0:e5420f1a8a1a 1168 RunDemoTxCw( );
GregCr 0:e5420f1a8a1a 1169 }
GregCr 0:e5420f1a8a1a 1170 else
GregCr 0:e5420f1a8a1a 1171 {
GregCr 0:e5420f1a8a1a 1172 Eeprom.EepromData.DemoSettings.HoldDemo = true;
GregCr 0:e5420f1a8a1a 1173 StopDemoApplication( );
GregCr 0:e5420f1a8a1a 1174 ButtonChangeText( BTN8_BORDER, ( uint8_t* )" START", NULL );
GregCr 0:e5420f1a8a1a 1175 }
GregCr 0:e5420f1a8a1a 1176 }
GregCr 0:e5420f1a8a1a 1177 else if( graphObjectTouched == BTN9_BORDER )
GregCr 0:e5420f1a8a1a 1178 {
GregCr 0:e5420f1a8a1a 1179 Eeprom.EepromData.DemoSettings.HoldDemo = true;
GregCr 0:e5420f1a8a1a 1180 StopDemoApplication( );
GregCr 0:e5420f1a8a1a 1181 // "CANCEL" or "OK & SAVE" button of PAGE_RADIO_PARAM use
GregCr 0:e5420f1a8a1a 1182 // PreviousPage to set next page. Speed up the navigation.
GregCr 0:e5420f1a8a1a 1183 PreviousPage = PAGE_TX_CW;
GregCr 0:e5420f1a8a1a 1184 MenuSetPage( PAGE_RADIO_PARAM );
GregCr 0:e5420f1a8a1a 1185 }
GregCr 0:e5420f1a8a1a 1186 break;
GregCr 0:e5420f1a8a1a 1187
GregCr 0:e5420f1a8a1a 1188 case PAGE_CONT_MODULATION:
GregCr 0:e5420f1a8a1a 1189 if( graphObjectTouched == BTN7_BORDER )
GregCr 0:e5420f1a8a1a 1190 {
GregCr 0:e5420f1a8a1a 1191 StopDemoApplication( );
GregCr 0:e5420f1a8a1a 1192 Eeprom.EepromData.DemoSettings.HoldDemo = true;
GregCr 1:b96176a4ccb8 1193 PreviousPage = PAGE_RADIO_TEST; // clear Previous page
GregCr 1:b96176a4ccb8 1194 MenuSetPage( PAGE_RADIO_TEST );
GregCr 0:e5420f1a8a1a 1195 }
GregCr 0:e5420f1a8a1a 1196 else if( graphObjectTouched == BTN8_BORDER )
GregCr 0:e5420f1a8a1a 1197 {
GregCr 0:e5420f1a8a1a 1198 if( Eeprom.EepromData.DemoSettings.HoldDemo == true )
GregCr 0:e5420f1a8a1a 1199 {
GregCr 0:e5420f1a8a1a 1200 Eeprom.EepromData.DemoSettings.HoldDemo = false;
GregCr 0:e5420f1a8a1a 1201 StopDemoApplication( );
GregCr 0:e5420f1a8a1a 1202 ButtonChangeText( BTN8_BORDER, ( uint8_t* )" STOP", NULL );
GregCr 0:e5420f1a8a1a 1203 RunDemoTxContinuousModulation( );
GregCr 0:e5420f1a8a1a 1204 }
GregCr 0:e5420f1a8a1a 1205 else
GregCr 0:e5420f1a8a1a 1206 {
GregCr 0:e5420f1a8a1a 1207 Eeprom.EepromData.DemoSettings.HoldDemo = true;
GregCr 0:e5420f1a8a1a 1208 StopDemoApplication( );
GregCr 0:e5420f1a8a1a 1209 ButtonChangeText( BTN8_BORDER, ( uint8_t* )" START", NULL );
GregCr 0:e5420f1a8a1a 1210 wait_ms( 200 ); // debouncing of the touch screen
GregCr 0:e5420f1a8a1a 1211 }
GregCr 0:e5420f1a8a1a 1212 }
GregCr 0:e5420f1a8a1a 1213 else if( graphObjectTouched == BTN9_BORDER )
GregCr 0:e5420f1a8a1a 1214 {
GregCr 0:e5420f1a8a1a 1215 Eeprom.EepromData.DemoSettings.HoldDemo = true;
GregCr 0:e5420f1a8a1a 1216 StopDemoApplication( );
GregCr 0:e5420f1a8a1a 1217 // "CANCEL" or "OK & SAVE" button of PAGE_RADIO_PARAM use
GregCr 0:e5420f1a8a1a 1218 // PreviousPage to set next page. Speed up the navigation.
GregCr 0:e5420f1a8a1a 1219 PreviousPage = PAGE_CONT_MODULATION;
GregCr 0:e5420f1a8a1a 1220 MenuSetPage( PAGE_RADIO_PARAM );
GregCr 0:e5420f1a8a1a 1221 }
GregCr 0:e5420f1a8a1a 1222 break;
GregCr 0:e5420f1a8a1a 1223 case PAGE_CONT_RX:
GregCr 0:e5420f1a8a1a 1224 if( graphObjectTouched == BTN7_BORDER )
GregCr 0:e5420f1a8a1a 1225 {
GregCr 0:e5420f1a8a1a 1226 StopDemoApplication( );
GregCr 0:e5420f1a8a1a 1227 Eeprom.EepromData.DemoSettings.HoldDemo = true;
GregCr 1:b96176a4ccb8 1228 PreviousPage = PAGE_RADIO_TEST; // clear Previous page
GregCr 1:b96176a4ccb8 1229 MenuSetPage( PAGE_RADIO_TEST );
GregCr 0:e5420f1a8a1a 1230 }
GregCr 0:e5420f1a8a1a 1231 else if( graphObjectTouched == BTN8_BORDER )
GregCr 0:e5420f1a8a1a 1232 {
GregCr 0:e5420f1a8a1a 1233 if( Eeprom.EepromData.DemoSettings.HoldDemo == true )
GregCr 0:e5420f1a8a1a 1234 {
GregCr 0:e5420f1a8a1a 1235 Eeprom.EepromData.DemoSettings.HoldDemo = false;
GregCr 0:e5420f1a8a1a 1236 StopDemoApplication( );
GregCr 0:e5420f1a8a1a 1237 ButtonChangeText( BTN8_BORDER, ( uint8_t* )" STOP", NULL );
GregCr 0:e5420f1a8a1a 1238 RunDemoRxContinuous( );
GregCr 0:e5420f1a8a1a 1239 }
GregCr 0:e5420f1a8a1a 1240 else
GregCr 0:e5420f1a8a1a 1241 {
GregCr 0:e5420f1a8a1a 1242 Eeprom.EepromData.DemoSettings.HoldDemo = true;
GregCr 0:e5420f1a8a1a 1243 StopDemoApplication( );
GregCr 0:e5420f1a8a1a 1244 ButtonChangeText( BTN8_BORDER, ( uint8_t* )" START", NULL );
GregCr 0:e5420f1a8a1a 1245 }
GregCr 0:e5420f1a8a1a 1246 }
GregCr 0:e5420f1a8a1a 1247 else if( graphObjectTouched == BTN9_BORDER )
GregCr 0:e5420f1a8a1a 1248 {
GregCr 0:e5420f1a8a1a 1249 Eeprom.EepromData.DemoSettings.HoldDemo = true;
GregCr 0:e5420f1a8a1a 1250 StopDemoApplication( );
GregCr 0:e5420f1a8a1a 1251 // "CANCEL" or "OK & SAVE" button of PAGE_RADIO_PARAM use
GregCr 0:e5420f1a8a1a 1252 // PreviousPage to set next page. Speed up the navigation.
GregCr 0:e5420f1a8a1a 1253 PreviousPage = PAGE_CONT_RX;
GregCr 0:e5420f1a8a1a 1254 MenuSetPage( PAGE_RADIO_PARAM );
GregCr 0:e5420f1a8a1a 1255 }
GregCr 0:e5420f1a8a1a 1256 break;
GregCr 0:e5420f1a8a1a 1257 }
GregCr 0:e5420f1a8a1a 1258 }
GregCr 0:e5420f1a8a1a 1259 return CurrentPage;
GregCr 0:e5420f1a8a1a 1260 }
GregCr 0:e5420f1a8a1a 1261
GregCr 0:e5420f1a8a1a 1262 void MenuSetPage( uint8_t page )
GregCr 0:e5420f1a8a1a 1263 {
GregCr 0:e5420f1a8a1a 1264 if( page != CurrentPage )
GregCr 0:e5420f1a8a1a 1265 {
GregCr 0:e5420f1a8a1a 1266 // remove all button and text (except title, page border and line)
GregCr 0:e5420f1a8a1a 1267 // and disable all button (touchActive = false).
GregCr 0:e5420f1a8a1a 1268 GraphObject_t clearRect = { NULL, GO_RECTANGLE, 3, 35, 282, 230, 1, \
GregCr 0:e5420f1a8a1a 1269 BACK_COLOR, BACK_COLOR, true, BACK_COLOR, \
GregCr 0:e5420f1a8a1a 1270 NULL, false };
GregCr 0:e5420f1a8a1a 1271
GregCr 0:e5420f1a8a1a 1272 GraphObjectClear( &clearRect, true );
GregCr 0:e5420f1a8a1a 1273 for( uint8_t i = 0; i < GRAPH_OBJECTS_COUNT; i++ )
GregCr 0:e5420f1a8a1a 1274 {
GregCr 0:e5420f1a8a1a 1275 MenuObjects[i].TouchActive = false;
GregCr 0:e5420f1a8a1a 1276 }
GregCr 0:e5420f1a8a1a 1277 }
GregCr 0:e5420f1a8a1a 1278
GregCr 0:e5420f1a8a1a 1279 switch( page )
GregCr 0:e5420f1a8a1a 1280 {
GregCr 0:e5420f1a8a1a 1281 case START_PAGE:
GregCr 0:e5420f1a8a1a 1282 if( DeviceConnected == SX1261 )
GregCr 0:e5420f1a8a1a 1283 {
GregCr 1:b96176a4ccb8 1284 if( MatchingFreq == 0 )
GregCr 1:b96176a4ccb8 1285 {
GregCr 1:b96176a4ccb8 1286 DrawText( TITLE_TEXT, ( uint8_t* )" SX1261 915MHz Demo Kit", NULL, NULL );
GregCr 1:b96176a4ccb8 1287 }
GregCr 1:b96176a4ccb8 1288 else
GregCr 1:b96176a4ccb8 1289 {
GregCr 1:b96176a4ccb8 1290 DrawText( TITLE_TEXT, ( uint8_t* )" SX1261 868MHz Demo Kit", NULL, NULL );
GregCr 1:b96176a4ccb8 1291 }
GregCr 0:e5420f1a8a1a 1292 }
GregCr 0:e5420f1a8a1a 1293 else
GregCr 0:e5420f1a8a1a 1294 {
GregCr 1:b96176a4ccb8 1295 if( MatchingFreq == 0 )
GregCr 1:b96176a4ccb8 1296 {
GregCr 1:b96176a4ccb8 1297 DrawText( TITLE_TEXT, ( uint8_t* )" SX1262 915MHz Demo Kit", NULL, NULL );
GregCr 1:b96176a4ccb8 1298 }
GregCr 1:b96176a4ccb8 1299 else
GregCr 1:b96176a4ccb8 1300 {
GregCr 1:b96176a4ccb8 1301 DrawText( TITLE_TEXT, ( uint8_t* )" SX1262 868MHz Demo Kit", NULL, NULL );
GregCr 1:b96176a4ccb8 1302 }
GregCr 0:e5420f1a8a1a 1303 }
GregCr 0:e5420f1a8a1a 1304 DisplayDriverDrawLogo( SemtechLogo, 20, 37 );
GregCr 0:e5420f1a8a1a 1305 DrawActiveButton( BTN2_BORDER, ( uint8_t* )"DEMO Ping Pong", NULL );
GregCr 0:e5420f1a8a1a 1306 DrawActiveButton( BTN3_BORDER, ( uint8_t* )"DEMO PER", NULL );
GregCr 0:e5420f1a8a1a 1307 DrawActiveButton( BTN4_BORDER, ( uint8_t* )"Radio Test Modes", NULL );
GregCr 0:e5420f1a8a1a 1308 DrawActiveButton( BTN5_BORDER, ( uint8_t* )"Radio Settings", NULL );
GregCr 0:e5420f1a8a1a 1309 DrawActiveButton( BTN6_BORDER, ( uint8_t* )"Utilities", NULL );
GregCr 0:e5420f1a8a1a 1310 CurrentPage = START_PAGE;
GregCr 0:e5420f1a8a1a 1311 break;
GregCr 0:e5420f1a8a1a 1312
GregCr 0:e5420f1a8a1a 1313 case PAGE_PING_PONG:
GregCr 0:e5420f1a8a1a 1314 if( CurrentPage == PAGE_PING_PONG )
GregCr 0:e5420f1a8a1a 1315 {
GregCr 0:e5420f1a8a1a 1316 if( Eeprom.EepromData.DemoSettings.HoldDemo == true )
GregCr 0:e5420f1a8a1a 1317 {
GregCr 0:e5420f1a8a1a 1318 ButtonChangeText( BTN8_BORDER, ( uint8_t* )" START", NULL );
GregCr 0:e5420f1a8a1a 1319 }
GregCr 0:e5420f1a8a1a 1320 if( Eeprom.EepromData.DemoSettings.Entity == MASTER )
GregCr 0:e5420f1a8a1a 1321 {
GregCr 0:e5420f1a8a1a 1322 DrawText( LINE4_COL0_TEXT, NULL, ( uint8_t* )GetMenuDemoRxOkSlave( ), ( uint8_t* )GetMenuDemoRxOk( ) );
GregCr 0:e5420f1a8a1a 1323 DrawText( LINE5_COL0_TEXT, NULL, ( uint8_t* )GetMenuDemoRxKoSlave( ), ( uint8_t* )GetMenuDemoRxKo( ) );
GregCr 0:e5420f1a8a1a 1324 DrawText( LINE6_COL0_TEXT, NULL, ( uint8_t* )GetMenuDemoResultPerCent1( Eeprom.EepromData.DemoSettings.CntPacketRxOKSlave, Eeprom.EepromData.DemoSettings.CntPacketRxOKSlave + Eeprom.EepromData.DemoSettings.CntPacketRxKOSlave ), \
GregCr 0:e5420f1a8a1a 1325 ( uint8_t* )GetMenuDemoResultPerCent2( Eeprom.EepromData.DemoSettings.CntPacketRxOK, Eeprom.EepromData.DemoSettings.CntPacketRxOK + Eeprom.EepromData.DemoSettings.CntPacketRxKO + Eeprom.EepromData.DemoSettings.RxTimeOutCount ) );
GregCr 0:e5420f1a8a1a 1326 DrawText( LINE7_COL0_TEXT, NULL, ( uint8_t* )GetMenuDemoResultPerCent1( Eeprom.EepromData.DemoSettings.CntPacketRxKOSlave, Eeprom.EepromData.DemoSettings.CntPacketRxOKSlave + Eeprom.EepromData.DemoSettings.CntPacketRxKOSlave ), \
GregCr 0:e5420f1a8a1a 1327 ( 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 1328 DrawText( LINE8_COL0_TEXT, NULL, ( uint8_t* )" ", ( uint8_t* )GetMenuDemoRssi( ) );
GregCr 0:e5420f1a8a1a 1329 DrawText( LINE9_COL0_TEXT, NULL, ( uint8_t* )" ", ( uint8_t* )GetMenuDemoSnr( ) );
GregCr 0:e5420f1a8a1a 1330 }
GregCr 0:e5420f1a8a1a 1331 else
GregCr 0:e5420f1a8a1a 1332 {
GregCr 0:e5420f1a8a1a 1333 DrawText( LINE4_COL0_TEXT, NULL, ( uint8_t* )GetMenuDemoRxOk( ), NULL );
GregCr 0:e5420f1a8a1a 1334 DrawText( LINE5_COL0_TEXT, NULL, ( uint8_t* )GetMenuDemoRxKo( ), NULL );
GregCr 0:e5420f1a8a1a 1335 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 1336 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 1337 DrawText( LINE8_COL0_TEXT, NULL, ( uint8_t* )GetMenuDemoRssi( ), NULL );
GregCr 0:e5420f1a8a1a 1338 DrawText( LINE9_COL0_TEXT, NULL, ( uint8_t* )GetMenuDemoSnr( ), NULL );
GregCr 0:e5420f1a8a1a 1339 }
GregCr 0:e5420f1a8a1a 1340 }
GregCr 0:e5420f1a8a1a 1341 else
GregCr 0:e5420f1a8a1a 1342 {
GregCr 0:e5420f1a8a1a 1343 DrawText( TITLE_TEXT, ( uint8_t* )" PING PONG Demo", NULL, NULL );
GregCr 0:e5420f1a8a1a 1344 DisplayCurrentRadioParams( PAGE_PING_PONG );
GregCr 0:e5420f1a8a1a 1345 DrawText( LINE3_COL0_TEXT, ( uint8_t* )GetTotalPackets( ), ( uint8_t* )" SLAVE", NULL );
GregCr 0:e5420f1a8a1a 1346 DrawText( LINE4_COL0_TEXT, ( uint8_t* )"Rx OK", ( uint8_t* )" 0", NULL );
GregCr 0:e5420f1a8a1a 1347 DrawText( LINE5_COL0_TEXT, ( uint8_t* )"Rx KO", ( uint8_t* )" 0", NULL );
GregCr 0:e5420f1a8a1a 1348 DrawText( LINE6_COL0_TEXT, ( uint8_t* )"Rx PSR", ( uint8_t* )" 0.00", NULL );
GregCr 0:e5420f1a8a1a 1349 DrawText( LINE7_COL0_TEXT, ( uint8_t* )"Rx PER", ( uint8_t* )" 0.00", NULL );
GregCr 0:e5420f1a8a1a 1350
GregCr 0:e5420f1a8a1a 1351 if( Eeprom.EepromData.DemoSettings.Entity == MASTER )
GregCr 0:e5420f1a8a1a 1352 {
GregCr 0:e5420f1a8a1a 1353 DrawActiveButton( BTN0_BORDER, ( uint8_t* )" MASTER", NULL );
GregCr 0:e5420f1a8a1a 1354 DrawText( LINE3_COL0_TEXT, NULL, NULL, ( uint8_t* )"MASTER" );
GregCr 0:e5420f1a8a1a 1355 DrawText( LINE4_COL0_TEXT, NULL, NULL, ( uint8_t* )" 0" );
GregCr 0:e5420f1a8a1a 1356 DrawText( LINE5_COL0_TEXT, NULL, NULL, ( uint8_t* )" 0" );
GregCr 0:e5420f1a8a1a 1357 DrawText( LINE6_COL0_TEXT, NULL, NULL, ( uint8_t* )" 0.00" );
GregCr 0:e5420f1a8a1a 1358 DrawText( LINE7_COL0_TEXT, NULL, NULL, ( uint8_t* )" 0.00" );
GregCr 0:e5420f1a8a1a 1359 DrawText( LINE8_COL0_TEXT, ( uint8_t* )"Last Rssi", ( uint8_t* )" ", ( uint8_t* )" 0" );
GregCr 0:e5420f1a8a1a 1360 DrawText( LINE9_COL0_TEXT, ( uint8_t* )"Last SNR", ( uint8_t* )" ", ( uint8_t* )" 0" );
GregCr 0:e5420f1a8a1a 1361 }
GregCr 0:e5420f1a8a1a 1362 else
GregCr 0:e5420f1a8a1a 1363 {
GregCr 0:e5420f1a8a1a 1364 DrawText( LINE8_COL0_TEXT, ( uint8_t* )"Last Rssi", ( uint8_t* )" 0", ( uint8_t* )" ");
GregCr 0:e5420f1a8a1a 1365 DrawText( LINE9_COL0_TEXT, ( uint8_t* )"Last SNR", ( uint8_t* )" 0", ( uint8_t* )" " );
GregCr 0:e5420f1a8a1a 1366 DrawActiveButton( BTN0_BORDER, ( uint8_t* )" SLAVE", NULL );
GregCr 0:e5420f1a8a1a 1367 }
GregCr 1:b96176a4ccb8 1368 DrawActiveButton( BTN7_BORDER, ( uint8_t* )" BACK", NULL );
GregCr 0:e5420f1a8a1a 1369 DrawActiveButton( BTN8_BORDER, ( uint8_t* )" START", NULL );
GregCr 0:e5420f1a8a1a 1370 DrawActiveButton( BTN9_BORDER, ( uint8_t* )" SETTINGS", NULL );
GregCr 0:e5420f1a8a1a 1371 }
GregCr 0:e5420f1a8a1a 1372 CurrentPage = PAGE_PING_PONG;
GregCr 0:e5420f1a8a1a 1373 break;
GregCr 0:e5420f1a8a1a 1374 case PAGE_PER:
GregCr 0:e5420f1a8a1a 1375 if( CurrentPage == PAGE_PER )
GregCr 0:e5420f1a8a1a 1376 {
GregCr 0:e5420f1a8a1a 1377 if( Eeprom.EepromData.DemoSettings.HoldDemo == true )
GregCr 0:e5420f1a8a1a 1378 {
GregCr 0:e5420f1a8a1a 1379 ButtonChangeText( BTN8_BORDER, ( uint8_t* )" START", NULL );
GregCr 0:e5420f1a8a1a 1380 }
GregCr 0:e5420f1a8a1a 1381 if( Eeprom.EepromData.DemoSettings.Entity == MASTER )
GregCr 0:e5420f1a8a1a 1382 {
GregCr 0:e5420f1a8a1a 1383 DrawText( LINE4_COL0_TEXT, NULL, ( uint8_t* )GetMenuDemoNumSentPacket( ), NULL );
GregCr 0:e5420f1a8a1a 1384 }
GregCr 0:e5420f1a8a1a 1385 else
GregCr 0:e5420f1a8a1a 1386 {
GregCr 0:e5420f1a8a1a 1387 DrawText( LINE4_COL0_TEXT, NULL, ( uint8_t* )GetMenuDemoRxOk( ), NULL );
GregCr 0:e5420f1a8a1a 1388 DrawText( LINE5_COL0_TEXT, NULL, ( uint8_t* )GetMenuDemoRxKo( ), NULL );
GregCr 0:e5420f1a8a1a 1389 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 1390 DrawText( LINE7_COL0_TEXT, NULL, ( uint8_t* )GetMenuDemoFreqError( ), NULL );
GregCr 0:e5420f1a8a1a 1391 DrawText( LINE8_COL0_TEXT, NULL, ( uint8_t* )GetMenuDemoRssi( ), NULL );
GregCr 0:e5420f1a8a1a 1392 DrawText( LINE9_COL0_TEXT, NULL, ( uint8_t* )GetMenuDemoSnr( ), NULL );
GregCr 0:e5420f1a8a1a 1393 }
GregCr 0:e5420f1a8a1a 1394 }
GregCr 0:e5420f1a8a1a 1395 else
GregCr 0:e5420f1a8a1a 1396 {
GregCr 0:e5420f1a8a1a 1397 DrawText( TITLE_TEXT, ( uint8_t* )" PER Demo", NULL, NULL );
GregCr 0:e5420f1a8a1a 1398 DrawText( LINE3_COL0_TEXT, ( uint8_t* )"Test Total", ( uint8_t* )GetMenuDemoMaxNumPacket( ), NULL );
GregCr 0:e5420f1a8a1a 1399 DisplayCurrentRadioParams( PAGE_PER );
GregCr 0:e5420f1a8a1a 1400
GregCr 0:e5420f1a8a1a 1401 if( Eeprom.EepromData.DemoSettings.Entity == MASTER )
GregCr 0:e5420f1a8a1a 1402 {
GregCr 0:e5420f1a8a1a 1403 DrawActiveButton( BTN0_BORDER, ( uint8_t* )" MASTER", NULL );
GregCr 0:e5420f1a8a1a 1404 DrawText( LINE4_COL0_TEXT, ( uint8_t* )"Transmitted", ( uint8_t* )GetMenuDemoNumSentPacket( ), NULL );
GregCr 0:e5420f1a8a1a 1405 }
GregCr 0:e5420f1a8a1a 1406 else
GregCr 0:e5420f1a8a1a 1407 {
GregCr 0:e5420f1a8a1a 1408 DrawActiveButton( BTN0_BORDER, ( uint8_t* )" SLAVE", NULL );
GregCr 0:e5420f1a8a1a 1409 DrawText( LINE4_COL0_TEXT, ( uint8_t* )"Rx OK", ( uint8_t* )" 0", NULL );
GregCr 0:e5420f1a8a1a 1410 DrawText( LINE5_COL0_TEXT, ( uint8_t* )"Rx KO", ( uint8_t* )" 0", NULL );
GregCr 0:e5420f1a8a1a 1411 DrawText( LINE6_COL0_TEXT, ( uint8_t* )"PER", ( uint8_t* )" 0.00", NULL );
GregCr 0:e5420f1a8a1a 1412 DrawText( LINE7_COL0_TEXT, ( uint8_t* )"Freq Err", ( uint8_t* )" 0", NULL );
GregCr 0:e5420f1a8a1a 1413 DrawText( LINE8_COL0_TEXT, ( uint8_t* )"Last Rssi", ( uint8_t* )" 0", NULL );
GregCr 0:e5420f1a8a1a 1414 DrawText( LINE9_COL0_TEXT, ( uint8_t* )"Last SNR", ( uint8_t* )" 0", NULL );
GregCr 0:e5420f1a8a1a 1415 }
GregCr 1:b96176a4ccb8 1416 DrawActiveButton( BTN7_BORDER, ( uint8_t* )" BACK", NULL );
GregCr 0:e5420f1a8a1a 1417 DrawActiveButton( BTN8_BORDER, ( uint8_t* )" START", NULL );
GregCr 0:e5420f1a8a1a 1418 DrawActiveButton( BTN9_BORDER, ( uint8_t* )" SETTINGS", NULL );
GregCr 0:e5420f1a8a1a 1419 }
GregCr 0:e5420f1a8a1a 1420 CurrentPage = PAGE_PER;
GregCr 0:e5420f1a8a1a 1421 break;
GregCr 0:e5420f1a8a1a 1422
GregCr 0:e5420f1a8a1a 1423 case PAGE_RADIO_PARAM:
GregCr 0:e5420f1a8a1a 1424 if( ErrorParam == true )
GregCr 0:e5420f1a8a1a 1425 {
GregCr 0:e5420f1a8a1a 1426 MenuObjects[BTN3_VALUE_TEXT].FrontColor = OBJECT_ERROR;
GregCr 0:e5420f1a8a1a 1427 MenuObjects[BTN4_VALUE_TEXT].FrontColor = OBJECT_ERROR;
GregCr 0:e5420f1a8a1a 1428 MenuObjects[BTN6_VALUE_TEXT].FrontColor = OBJECT_ERROR;
GregCr 0:e5420f1a8a1a 1429 }
GregCr 0:e5420f1a8a1a 1430 if( CurrentPage != PAGE_RADIO_PARAM )
GregCr 0:e5420f1a8a1a 1431 {
GregCr 0:e5420f1a8a1a 1432 DrawText( TITLE_TEXT, ( uint8_t* )" Radio Settings", NULL, NULL );
GregCr 0:e5420f1a8a1a 1433 DrawActiveButton( BTN0_BORDER, ( uint8_t* )"Mod:", ( uint8_t* )GetMenuRadioFrameType( ) );
GregCr 0:e5420f1a8a1a 1434 DrawActiveButton( BTN1_BORDER, ( uint8_t* )"Freq:", ( uint8_t* )GetRadioFrequency( ) );
GregCr 0:e5420f1a8a1a 1435 DrawActiveButton( BTN2_BORDER, ( uint8_t* )"Tx Pow:", ( uint8_t* )GetRadioTxPower( ) );
GregCr 0:e5420f1a8a1a 1436 DrawActiveButton( BTN3_BORDER, ( uint8_t* )"Param 1:", ( uint8_t* )GetRadioModulationParameters1( ) );
GregCr 0:e5420f1a8a1a 1437 DrawActiveButton( BTN4_BORDER, ( uint8_t* )"Param 2:", ( uint8_t* )GetRadioModulationParameters2( ) );
GregCr 0:e5420f1a8a1a 1438 DrawActiveButton( BTN5_BORDER, ( uint8_t* )"Param 3:", ( uint8_t* )GetRadioModulationParameters3( ) );
GregCr 0:e5420f1a8a1a 1439 DrawActiveButton( BTN6_BORDER, ( uint8_t* )"Param 4:", ( uint8_t* )GetRadioModulationParameters4( ) );
GregCr 0:e5420f1a8a1a 1440 DrawActiveButton( BTN7_BORDER, ( uint8_t* )" CANCEL", NULL );
GregCr 0:e5420f1a8a1a 1441 DrawActiveButton( BTN8_BORDER, ( uint8_t* )" OK & SAVE", NULL );
GregCr 0:e5420f1a8a1a 1442 DrawActiveButton( BTN9_BORDER, ( uint8_t* )"PL:", ( uint8_t* )GetRadioPayloadLength( ) );
GregCr 0:e5420f1a8a1a 1443 }
GregCr 0:e5420f1a8a1a 1444 MenuObjects[BTN3_VALUE_TEXT].FrontColor = TEXT_VALUE;
GregCr 0:e5420f1a8a1a 1445 MenuObjects[BTN4_VALUE_TEXT].FrontColor = TEXT_VALUE;
GregCr 0:e5420f1a8a1a 1446 MenuObjects[BTN6_VALUE_TEXT].FrontColor = TEXT_VALUE;
GregCr 0:e5420f1a8a1a 1447 CurrentPage = PAGE_RADIO_PARAM;
GregCr 0:e5420f1a8a1a 1448 break;
GregCr 0:e5420f1a8a1a 1449
GregCr 0:e5420f1a8a1a 1450 case PAGE_RADIO_PARAM_FREQ:
GregCr 0:e5420f1a8a1a 1451 if( CurrentPage != PAGE_RADIO_PARAM_FREQ )
GregCr 0:e5420f1a8a1a 1452 {
GregCr 0:e5420f1a8a1a 1453 DrawText( TITLE_TEXT, ( uint8_t* )" Radio Settings : Freq", NULL, NULL );
GregCr 0:e5420f1a8a1a 1454 DrawActiveButton( BTN0_BORDER, ( uint8_t* )" OK", NULL );
GregCr 0:e5420f1a8a1a 1455 DrawActiveButton( BTN2_BORDER, ( uint8_t* )"Freq:", ( uint8_t* )GetRadioFrequency( ) );
GregCr 0:e5420f1a8a1a 1456 DrawActiveButton( BTN3_BORDER, ( uint8_t* )"Preset1:", ( uint8_t* )GetRadioFreqBasePS1( ) );
GregCr 0:e5420f1a8a1a 1457 DrawActiveButton( BTN4_BORDER, ( uint8_t* )"Preset2:", ( uint8_t* )GetRadioFreqBasePS2( ) );
GregCr 0:e5420f1a8a1a 1458 DrawActiveButton( BTN5_BORDER, ( uint8_t* )"Preset3:", ( uint8_t* )GetRadioFreqBasePS3( ) );
GregCr 0:e5420f1a8a1a 1459 DrawActiveButton( BTN6_BORDER, ( uint8_t* )"Step:", ( uint8_t* )GetRadioFreqBase( ) );
GregCr 0:e5420f1a8a1a 1460 DrawActiveButton( BTN7_BORDER, ( uint8_t* )" -", NULL );
GregCr 0:e5420f1a8a1a 1461 DrawActiveButton( BTN8_BORDER, ( uint8_t* )" +", NULL );
GregCr 0:e5420f1a8a1a 1462 }
GregCr 0:e5420f1a8a1a 1463 CurrentPage = PAGE_RADIO_PARAM_FREQ;
GregCr 0:e5420f1a8a1a 1464 break;
GregCr 0:e5420f1a8a1a 1465
GregCr 0:e5420f1a8a1a 1466 case PAGE_UTILITIES:
GregCr 0:e5420f1a8a1a 1467 if( CurrentPage != PAGE_UTILITIES )
GregCr 0:e5420f1a8a1a 1468 {
GregCr 0:e5420f1a8a1a 1469 DrawText( TITLE_TEXT, ( uint8_t* )" Utilities", NULL, NULL );
GregCr 0:e5420f1a8a1a 1470 // FIRMWARE_VERSION is defined in DemoApplication.h
GregCr 0:e5420f1a8a1a 1471 DrawText( LINE0_TEXT, ( uint8_t* )FIRMWARE_VERSION, NULL, NULL );
GregCr 0:e5420f1a8a1a 1472
GregCr 0:e5420f1a8a1a 1473 DrawActiveButton( BTN0_BORDER, ( uint8_t* )"Fact. Reset", NULL );
GregCr 0:e5420f1a8a1a 1474 DrawActiveButton( BTN3_BORDER, ( uint8_t* )"RxBoost:", ( uint8_t* )GetMenuDemoRadioBoostedRx( ) );
GregCr 0:e5420f1a8a1a 1475 DrawActiveButton( BTN4_BORDER, ( uint8_t* )"DC Reg: ", ( uint8_t* )GetMenuDemoRadioPowerMode( ) );
GregCr 0:e5420f1a8a1a 1476 DrawActiveButton( BTN5_BORDER, ( uint8_t* )"Packets:", ( uint8_t* )GetMenuDemoMaxNumPacket( ) );
GregCr 0:e5420f1a8a1a 1477 DrawActiveButton( BTN7_BORDER, ( uint8_t* )" CANCEL", NULL );
GregCr 0:e5420f1a8a1a 1478 DrawActiveButton( BTN8_BORDER, ( uint8_t* )" OK & SAVE", NULL );
GregCr 0:e5420f1a8a1a 1479 }
GregCr 0:e5420f1a8a1a 1480 CurrentPage = PAGE_UTILITIES;
GregCr 0:e5420f1a8a1a 1481 break;
GregCr 0:e5420f1a8a1a 1482
GregCr 0:e5420f1a8a1a 1483 case PAGE_RADIO_TEST:
GregCr 0:e5420f1a8a1a 1484 DrawText( TITLE_TEXT, ( uint8_t* )" Radio Test Modes", NULL, NULL );
GregCr 1:b96176a4ccb8 1485 DrawActiveButton( BTN0b_BORDER, ( uint8_t* )" Sleep Mode", NULL );
GregCr 1:b96176a4ccb8 1486 DrawActiveButton( BTN1_BORDER, ( uint8_t* )" Standby RC Mode", NULL );
GregCr 1:b96176a4ccb8 1487 DrawActiveButton( BTN2_BORDER, ( uint8_t* )" Standby XOSC Mode", NULL );
GregCr 1:b96176a4ccb8 1488 DrawActiveButton( BTN3_BORDER, ( uint8_t* )" Set Tx CW", NULL );
GregCr 1:b96176a4ccb8 1489 DrawActiveButton( BTN4_BORDER, ( uint8_t* )" Set Cont. Modulation", NULL );
GregCr 1:b96176a4ccb8 1490 DrawActiveButton( BTN5_BORDER, ( uint8_t* )" Set Cont. Receive", NULL );
GregCr 1:b96176a4ccb8 1491 DrawActiveButton( BTN6_BORDER, ( uint8_t* )" Test Rssi ", NULL );
GregCr 1:b96176a4ccb8 1492 DrawActiveButton( BTN7_BORDER, ( uint8_t* )" BACK", NULL );
GregCr 0:e5420f1a8a1a 1493 CurrentPage = PAGE_RADIO_TEST;
GregCr 0:e5420f1a8a1a 1494 break;
GregCr 0:e5420f1a8a1a 1495
GregCr 1:b96176a4ccb8 1496 case PAGE_RSSI_TEST:
GregCr 1:b96176a4ccb8 1497 if( CurrentPage == PAGE_RSSI_TEST )
GregCr 1:b96176a4ccb8 1498 {
GregCr 1:b96176a4ccb8 1499 if( Eeprom.EepromData.DemoSettings.HoldDemo == true )
GregCr 1:b96176a4ccb8 1500 {
GregCr 1:b96176a4ccb8 1501 ButtonChangeText( BTN8_BORDER, ( uint8_t* )" START", NULL );
GregCr 1:b96176a4ccb8 1502 }
GregCr 1:b96176a4ccb8 1503 DrawText( LINE6_COL0_TEXT, NULL, ( uint8_t* )GetMenuDemoRssi( ), NULL );
GregCr 1:b96176a4ccb8 1504 }
GregCr 1:b96176a4ccb8 1505 else
GregCr 1:b96176a4ccb8 1506 {
GregCr 1:b96176a4ccb8 1507 DrawText( TITLE_TEXT, ( uint8_t* )" Test Rssi ", NULL, NULL );
GregCr 1:b96176a4ccb8 1508 DisplayCurrentRadioParams( PAGE_CONT_RX );
GregCr 1:b96176a4ccb8 1509 DrawText( LINE6_COL0_TEXT, ( uint8_t* )"Rssi", ( uint8_t* )" 0.00", NULL );
GregCr 1:b96176a4ccb8 1510 DrawActiveButton( BTN7_BORDER, ( uint8_t* )" BACK", NULL );
GregCr 1:b96176a4ccb8 1511 DrawActiveButton( BTN8_BORDER, ( uint8_t* )" START", NULL );
GregCr 1:b96176a4ccb8 1512 DrawActiveButton( BTN9_BORDER, ( uint8_t* )" SETTINGS", NULL );
GregCr 1:b96176a4ccb8 1513 }
GregCr 1:b96176a4ccb8 1514 CurrentPage = PAGE_RSSI_TEST;
GregCr 1:b96176a4ccb8 1515 break;
GregCr 1:b96176a4ccb8 1516
GregCr 0:e5420f1a8a1a 1517 case PAGE_SLEEP_MODE:
GregCr 1:b96176a4ccb8 1518 if( CurrentPage != PAGE_SLEEP_MODE )
GregCr 0:e5420f1a8a1a 1519 {
GregCr 0:e5420f1a8a1a 1520 DrawText( TITLE_TEXT, ( uint8_t* )" Sleep Mode", NULL, NULL );
GregCr 0:e5420f1a8a1a 1521 DisplayCurrentRadioParams( PAGE_SLEEP_MODE );
GregCr 1:b96176a4ccb8 1522 DrawActiveButton( BTN7_BORDER, ( uint8_t* )" BACK", NULL );
GregCr 0:e5420f1a8a1a 1523 DrawActiveButton( BTN8_BORDER, ( uint8_t* )" START", NULL );
GregCr 0:e5420f1a8a1a 1524 DrawActiveButton( BTN9_BORDER, ( uint8_t* )" SETTINGS", NULL );
GregCr 0:e5420f1a8a1a 1525 CurrentPage = PAGE_SLEEP_MODE;
GregCr 0:e5420f1a8a1a 1526 }
GregCr 0:e5420f1a8a1a 1527 break;
GregCr 0:e5420f1a8a1a 1528
GregCr 0:e5420f1a8a1a 1529 case PAGE_STBY_RC_MODE:
GregCr 0:e5420f1a8a1a 1530 if( CurrentPage != PAGE_STBY_RC_MODE )
GregCr 0:e5420f1a8a1a 1531 {
GregCr 0:e5420f1a8a1a 1532 DrawText( TITLE_TEXT, ( uint8_t* )" Standby RC Mode", NULL, NULL );
GregCr 0:e5420f1a8a1a 1533 DisplayCurrentRadioParams( PAGE_STBY_RC_MODE );
GregCr 1:b96176a4ccb8 1534 DrawActiveButton( BTN7_BORDER, ( uint8_t* )" BACK", NULL );
GregCr 0:e5420f1a8a1a 1535 DrawActiveButton( BTN8_BORDER, ( uint8_t* )" START", NULL );
GregCr 0:e5420f1a8a1a 1536 DrawActiveButton( BTN9_BORDER, ( uint8_t* )" SETTINGS", NULL );
GregCr 0:e5420f1a8a1a 1537 CurrentPage = PAGE_STBY_RC_MODE;
GregCr 0:e5420f1a8a1a 1538 }
GregCr 0:e5420f1a8a1a 1539 break;
GregCr 0:e5420f1a8a1a 1540
GregCr 0:e5420f1a8a1a 1541 case PAGE_STBY_XOSC_MODE:
GregCr 0:e5420f1a8a1a 1542 if( CurrentPage != PAGE_STBY_XOSC_MODE )
GregCr 0:e5420f1a8a1a 1543 {
GregCr 0:e5420f1a8a1a 1544 DrawText( TITLE_TEXT, ( uint8_t* )" Standby XOSC Mode", NULL, NULL );
GregCr 0:e5420f1a8a1a 1545 DisplayCurrentRadioParams( PAGE_STBY_XOSC_MODE );
GregCr 1:b96176a4ccb8 1546 DrawActiveButton( BTN7_BORDER, ( uint8_t* )" BACK", NULL );
GregCr 0:e5420f1a8a1a 1547 DrawActiveButton( BTN8_BORDER, ( uint8_t* )" START", NULL );
GregCr 0:e5420f1a8a1a 1548 DrawActiveButton( BTN9_BORDER, ( uint8_t* )" SETTINGS", NULL );
GregCr 0:e5420f1a8a1a 1549 CurrentPage = PAGE_STBY_XOSC_MODE;
GregCr 0:e5420f1a8a1a 1550 }
GregCr 0:e5420f1a8a1a 1551 break;
GregCr 0:e5420f1a8a1a 1552
GregCr 0:e5420f1a8a1a 1553 case PAGE_TX_CW:
GregCr 0:e5420f1a8a1a 1554 if( CurrentPage != PAGE_TX_CW )
GregCr 0:e5420f1a8a1a 1555 {
GregCr 0:e5420f1a8a1a 1556 DrawText( TITLE_TEXT, ( uint8_t* )" Set Tx CW", NULL, NULL );
GregCr 0:e5420f1a8a1a 1557 DisplayCurrentRadioParams( PAGE_TX_CW );
GregCr 1:b96176a4ccb8 1558 DrawActiveButton( BTN7_BORDER, ( uint8_t* )" BACK", NULL );
GregCr 0:e5420f1a8a1a 1559 DrawActiveButton( BTN8_BORDER, ( uint8_t* )" START", NULL );
GregCr 0:e5420f1a8a1a 1560 DrawActiveButton( BTN9_BORDER, ( uint8_t* )" SETTINGS", NULL );
GregCr 0:e5420f1a8a1a 1561 CurrentPage = PAGE_TX_CW;
GregCr 0:e5420f1a8a1a 1562 }
GregCr 0:e5420f1a8a1a 1563 break;
GregCr 0:e5420f1a8a1a 1564
GregCr 0:e5420f1a8a1a 1565 case PAGE_CONT_MODULATION:
GregCr 0:e5420f1a8a1a 1566 if( CurrentPage != PAGE_CONT_MODULATION )
GregCr 0:e5420f1a8a1a 1567 {
GregCr 0:e5420f1a8a1a 1568 DrawText( TITLE_TEXT, ( uint8_t* )" Set Cont. Modulation", NULL, NULL );
GregCr 0:e5420f1a8a1a 1569 DisplayCurrentRadioParams( PAGE_CONT_MODULATION );
GregCr 1:b96176a4ccb8 1570 DrawActiveButton( BTN7_BORDER, ( uint8_t* )" BACK", NULL );
GregCr 0:e5420f1a8a1a 1571 DrawActiveButton( BTN8_BORDER, ( uint8_t* )" START", NULL );
GregCr 0:e5420f1a8a1a 1572 DrawActiveButton( BTN9_BORDER, ( uint8_t* )" SETTINGS", NULL );
GregCr 0:e5420f1a8a1a 1573 CurrentPage = PAGE_CONT_MODULATION;
GregCr 0:e5420f1a8a1a 1574 }
GregCr 0:e5420f1a8a1a 1575 break;
GregCr 0:e5420f1a8a1a 1576
GregCr 0:e5420f1a8a1a 1577 case PAGE_CONT_RX:
GregCr 0:e5420f1a8a1a 1578 if( CurrentPage == PAGE_CONT_RX )
GregCr 0:e5420f1a8a1a 1579 {
GregCr 0:e5420f1a8a1a 1580 if( Eeprom.EepromData.DemoSettings.HoldDemo == true )
GregCr 0:e5420f1a8a1a 1581 {
GregCr 0:e5420f1a8a1a 1582 ButtonChangeText( BTN8_BORDER, ( uint8_t* )" START", NULL );
GregCr 0:e5420f1a8a1a 1583 }
GregCr 0:e5420f1a8a1a 1584 DrawText( LINE4_COL0_TEXT, NULL, ( uint8_t* )GetMenuDemoRxOk( ), NULL );
GregCr 0:e5420f1a8a1a 1585 DrawText( LINE5_COL0_TEXT, NULL, ( uint8_t* )GetMenuDemoRxKo( ), NULL );
GregCr 0:e5420f1a8a1a 1586 DrawText( LINE6_COL0_TEXT, NULL, ( uint8_t* )GetMenuDemoResultPerCent1( Eeprom.EepromData.DemoSettings.CntPacketRxKO, Eeprom.EepromData.DemoSettings.CntPacketRxOK + Eeprom.EepromData.DemoSettings.CntPacketRxKO ), NULL );
GregCr 0:e5420f1a8a1a 1587 DrawText( LINE7_COL0_TEXT, NULL, ( uint8_t* )GetMenuDemoFreqError( ), NULL );
GregCr 0:e5420f1a8a1a 1588 DrawText( LINE8_COL0_TEXT, NULL, ( uint8_t* )GetMenuDemoRssi( ), NULL );
GregCr 0:e5420f1a8a1a 1589 DrawText( LINE9_COL0_TEXT, NULL, ( uint8_t* )GetMenuDemoSnr( ), NULL );
GregCr 0:e5420f1a8a1a 1590 }
GregCr 0:e5420f1a8a1a 1591 else
GregCr 0:e5420f1a8a1a 1592 {
GregCr 0:e5420f1a8a1a 1593 DrawText( TITLE_TEXT, ( uint8_t* )" Set Cont. Rx ", NULL, NULL );
GregCr 0:e5420f1a8a1a 1594 DisplayCurrentRadioParams( PAGE_CONT_RX );
GregCr 0:e5420f1a8a1a 1595 DrawText( LINE4_COL0_TEXT, ( uint8_t* )"Rx OK", ( uint8_t* )" 0", NULL );
GregCr 0:e5420f1a8a1a 1596 DrawText( LINE5_COL0_TEXT, ( uint8_t* )"Rx KO", ( uint8_t* )" 0", NULL );
GregCr 0:e5420f1a8a1a 1597 DrawText( LINE6_COL0_TEXT, ( uint8_t* )"PER", ( uint8_t* )" 0.00", NULL );
GregCr 0:e5420f1a8a1a 1598 DrawText( LINE7_COL0_TEXT, ( uint8_t* )"Freq Err", ( uint8_t* )" 0", NULL );
GregCr 0:e5420f1a8a1a 1599 DrawText( LINE8_COL0_TEXT, ( uint8_t* )"Last Rssi", ( uint8_t* )" 0", NULL );
GregCr 0:e5420f1a8a1a 1600 DrawText( LINE9_COL0_TEXT, ( uint8_t* )"Last SNR", ( uint8_t* )" 0", NULL );
GregCr 1:b96176a4ccb8 1601 DrawActiveButton( BTN7_BORDER, ( uint8_t* )" BACK", NULL );
GregCr 0:e5420f1a8a1a 1602 DrawActiveButton( BTN8_BORDER, ( uint8_t* )" START", NULL );
GregCr 0:e5420f1a8a1a 1603 DrawActiveButton( BTN9_BORDER, ( uint8_t* )" SETTINGS", NULL );
GregCr 0:e5420f1a8a1a 1604 }
GregCr 0:e5420f1a8a1a 1605 CurrentPage = PAGE_CONT_RX;
GregCr 0:e5420f1a8a1a 1606 break;
GregCr 0:e5420f1a8a1a 1607
GregCr 0:e5420f1a8a1a 1608 default:
GregCr 0:e5420f1a8a1a 1609 break;
GregCr 0:e5420f1a8a1a 1610 }
GregCr 0:e5420f1a8a1a 1611 }
GregCr 0:e5420f1a8a1a 1612
GregCr 0:e5420f1a8a1a 1613 void DisplayCurrentRadioParams( uint8_t page )
GregCr 0:e5420f1a8a1a 1614 {
GregCr 0:e5420f1a8a1a 1615 switch( page )
GregCr 0:e5420f1a8a1a 1616 {
GregCr 0:e5420f1a8a1a 1617 case PAGE_SLEEP_MODE:
GregCr 0:e5420f1a8a1a 1618 case PAGE_STBY_RC_MODE:
GregCr 0:e5420f1a8a1a 1619 case PAGE_STBY_XOSC_MODE:
GregCr 0:e5420f1a8a1a 1620 case PAGE_TX_CW:
GregCr 0:e5420f1a8a1a 1621 // Do display different without packet settings (no modulation here)
GregCr 0:e5420f1a8a1a 1622 // 2 + (9) + 4 + (7) = 22 (=<28 : ok)
GregCr 0:e5420f1a8a1a 1623 sprintf( StringText ,"f:%s, P:%s", GetRadioFrequencyMHz( ), GetRadioTxPower( ) ); // StringText3 + StringText2
GregCr 0:e5420f1a8a1a 1624 DrawText( LINE0_TEXT, ( uint8_t* )StringText, NULL, NULL);
GregCr 0:e5420f1a8a1a 1625 sprintf( StringText ,"Radio Power Mode: %s", ( uint8_t* )GetMenuDemoRadioPowerMode( ) + 2 );
GregCr 0:e5420f1a8a1a 1626 DrawText( LINE1_TEXT, ( uint8_t* )StringText, NULL, NULL);
GregCr 0:e5420f1a8a1a 1627 sprintf( StringText ,"Press START to launch test" );
GregCr 0:e5420f1a8a1a 1628 DrawText( LINE3_TEXT, ( uint8_t* )StringText, NULL, NULL);
GregCr 0:e5420f1a8a1a 1629 break;
GregCr 0:e5420f1a8a1a 1630
GregCr 0:e5420f1a8a1a 1631 case PAGE_CONT_MODULATION:
GregCr 0:e5420f1a8a1a 1632 // 2 + (9) + 4 + (7) + 2 + (4) = 28 (=<28 : ok)
GregCr 0:e5420f1a8a1a 1633 sprintf( StringText ,"f:%s, P:%s, %s", GetRadioFrequencyMHz( ), GetRadioTxPower( ), \
GregCr 0:e5420f1a8a1a 1634 ( uint8_t* )GetMenuDemoRadioPowerMode( ) + 2 ); // StringText3 + StringText2
GregCr 0:e5420f1a8a1a 1635 DrawText( LINE0_TEXT, ( uint8_t* )StringText, NULL, NULL);
GregCr 0:e5420f1a8a1a 1636 if( Eeprom.EepromData.DemoSettings.ModulationType == PACKET_TYPE_LORA )
GregCr 0:e5420f1a8a1a 1637 {
GregCr 0:e5420f1a8a1a 1638 // (5) + 2 + (4) + 2 + (12) = 25 (=<28 : ok)
GregCr 0:e5420f1a8a1a 1639 sprintf( StringText ,"%s: %s, %s", GetMenuRadioFrameType( ) + 1, \
GregCr 0:e5420f1a8a1a 1640 GetRadioModulationParameters1( ),
GregCr 0:e5420f1a8a1a 1641 GetRadioModulationParameters4( ) ); // StringText2
GregCr 0:e5420f1a8a1a 1642 }
GregCr 0:e5420f1a8a1a 1643 else
GregCr 0:e5420f1a8a1a 1644 {
GregCr 0:e5420f1a8a1a 1645 if( ErrorParam == true )
GregCr 0:e5420f1a8a1a 1646 {
GregCr 0:e5420f1a8a1a 1647 MenuObjects[LINE1_TEXT].FrontColor = OBJECT_ERROR;
GregCr 0:e5420f1a8a1a 1648 MenuObjects[LINE2_TEXT].FrontColor = OBJECT_ERROR;
GregCr 0:e5420f1a8a1a 1649 }
GregCr 0:e5420f1a8a1a 1650 // (4) + 2 + (10) + 1 + (11) = 28 (=<28 : ok)
GregCr 0:e5420f1a8a1a 1651 sprintf( StringText ,"%s: %s/%s", GetMenuRadioFrameType( ) + 1, \
GregCr 0:e5420f1a8a1a 1652 GetRadioModulationParameters1( ), \
GregCr 0:e5420f1a8a1a 1653 GetRadioModulationParameters4( ) ); // StringText2
GregCr 0:e5420f1a8a1a 1654 }
GregCr 0:e5420f1a8a1a 1655 DrawText( LINE1_TEXT, ( uint8_t* )StringText, NULL, NULL);
GregCr 0:e5420f1a8a1a 1656 // (10) + 2 + (10) = 22 (=<28 : ok)
GregCr 0:e5420f1a8a1a 1657 sprintf( StringText ,"%s, %s", GetRadioModulationParameters2( ), \
GregCr 0:e5420f1a8a1a 1658 GetRadioModulationParameters3( ) );
GregCr 0:e5420f1a8a1a 1659 DrawText( LINE2_TEXT, ( uint8_t* )StringText, NULL, NULL);
GregCr 0:e5420f1a8a1a 1660 sprintf( StringText ,"Press START to launch test" );
GregCr 0:e5420f1a8a1a 1661 DrawText( LINE4_TEXT, ( uint8_t* )StringText, NULL, NULL);
GregCr 0:e5420f1a8a1a 1662 MenuObjects[LINE1_TEXT].FrontColor = TEXT_COLOR;
GregCr 0:e5420f1a8a1a 1663 MenuObjects[LINE2_TEXT].FrontColor = TEXT_COLOR;
GregCr 0:e5420f1a8a1a 1664 break;
GregCr 0:e5420f1a8a1a 1665
GregCr 0:e5420f1a8a1a 1666 case PAGE_CONT_RX: // standart display
GregCr 0:e5420f1a8a1a 1667 case PAGE_PING_PONG:
GregCr 0:e5420f1a8a1a 1668 case PAGE_PER:
GregCr 0:e5420f1a8a1a 1669 // 2 + (9) + 4 + (7) = 22 (=<28 : ok)
GregCr 0:e5420f1a8a1a 1670 sprintf( StringText ,"f:%s, P:%s", GetRadioFrequencyMHz( ), GetRadioTxPower( ) ); // StringText3 + StringText2
GregCr 0:e5420f1a8a1a 1671 DrawText( LINE0_TEXT, ( uint8_t* )StringText, NULL, NULL);
GregCr 0:e5420f1a8a1a 1672 if( Eeprom.EepromData.DemoSettings.ModulationType == PACKET_TYPE_LORA )
GregCr 0:e5420f1a8a1a 1673 {
GregCr 0:e5420f1a8a1a 1674 // (5) + 2 + (4) + 2 + (12) = 25 (=<28 : ok)
GregCr 0:e5420f1a8a1a 1675 sprintf( StringText ,"%s: %s, %s", GetMenuRadioFrameType( ) + 1, \
GregCr 0:e5420f1a8a1a 1676 GetRadioModulationParameters1( ),
GregCr 0:e5420f1a8a1a 1677 GetRadioModulationParameters4( ) ); // StringText2
GregCr 0:e5420f1a8a1a 1678 }
GregCr 0:e5420f1a8a1a 1679 else
GregCr 0:e5420f1a8a1a 1680 {
GregCr 0:e5420f1a8a1a 1681 if( ErrorParam == true )
GregCr 0:e5420f1a8a1a 1682 {
GregCr 0:e5420f1a8a1a 1683 MenuObjects[LINE1_TEXT].FrontColor = OBJECT_ERROR;
GregCr 0:e5420f1a8a1a 1684 MenuObjects[LINE2_TEXT].FrontColor = OBJECT_ERROR;
GregCr 0:e5420f1a8a1a 1685 }
GregCr 0:e5420f1a8a1a 1686 // (4) + 2 + (10) + 1 + (11) = 28 (=<28 : ok)
GregCr 0:e5420f1a8a1a 1687 sprintf( StringText ,"%s: %s/%s", GetMenuRadioFrameType( ) + 1, \
GregCr 0:e5420f1a8a1a 1688 GetRadioModulationParameters1( ), \
GregCr 0:e5420f1a8a1a 1689 GetRadioModulationParameters4( ) ); // StringText2
GregCr 0:e5420f1a8a1a 1690 }
GregCr 0:e5420f1a8a1a 1691 DrawText( LINE1_TEXT, ( uint8_t* )StringText, NULL, NULL);
GregCr 0:e5420f1a8a1a 1692 // 3 + (3) + 1 + (10) + 1 + (10) = 28 (=<28 : ok)
GregCr 0:e5420f1a8a1a 1693 sprintf( StringText ,"PL:%s/%s/%s", GetRadioPayloadLength( ), \
GregCr 0:e5420f1a8a1a 1694 GetRadioModulationParameters2( ), \
GregCr 0:e5420f1a8a1a 1695 GetRadioModulationParameters3( ) ); // StringText + StringText2 + StringText3
GregCr 0:e5420f1a8a1a 1696 DrawText( LINE2_TEXT, ( uint8_t* )StringText, NULL, NULL);
GregCr 0:e5420f1a8a1a 1697 MenuObjects[LINE1_TEXT].FrontColor = TEXT_COLOR;
GregCr 0:e5420f1a8a1a 1698 MenuObjects[LINE2_TEXT].FrontColor = TEXT_COLOR;
GregCr 0:e5420f1a8a1a 1699 break;
GregCr 0:e5420f1a8a1a 1700 }
GregCr 0:e5420f1a8a1a 1701 }
GregCr 0:e5420f1a8a1a 1702
GregCr 0:e5420f1a8a1a 1703 char* GetMenuRadioFrameType( void )
GregCr 0:e5420f1a8a1a 1704 {
GregCr 0:e5420f1a8a1a 1705 switch( Eeprom.EepromData.DemoSettings.ModulationType )
GregCr 0:e5420f1a8a1a 1706 {
GregCr 0:e5420f1a8a1a 1707 case PACKET_TYPE_GFSK: return ( char* )" GFSK";
GregCr 0:e5420f1a8a1a 1708 case PACKET_TYPE_LORA:
GregCr 0:e5420f1a8a1a 1709 default: return ( char* )" LORA";
GregCr 0:e5420f1a8a1a 1710 }
GregCr 0:e5420f1a8a1a 1711 }
GregCr 0:e5420f1a8a1a 1712
GregCr 0:e5420f1a8a1a 1713 char* GetRadioModulationParameters1( void )
GregCr 0:e5420f1a8a1a 1714 {
GregCr 0:e5420f1a8a1a 1715 if( Eeprom.EepromData.DemoSettings.ModulationType == PACKET_TYPE_LORA )
GregCr 0:e5420f1a8a1a 1716 {
GregCr 0:e5420f1a8a1a 1717 switch( Eeprom.EepromData.DemoSettings.ModulationParam1 )
GregCr 0:e5420f1a8a1a 1718 {
GregCr 0:e5420f1a8a1a 1719 case LORA_SF5: return ( char* )"SF5";
GregCr 0:e5420f1a8a1a 1720 case LORA_SF6: return ( char* )"SF6";
GregCr 0:e5420f1a8a1a 1721 case LORA_SF7: return ( char* )"SF7";
GregCr 0:e5420f1a8a1a 1722 case LORA_SF8: return ( char* )"SF8";
GregCr 0:e5420f1a8a1a 1723 case LORA_SF9: return ( char* )"SF9";
GregCr 0:e5420f1a8a1a 1724 case LORA_SF10: return ( char* )"SF10";
GregCr 0:e5420f1a8a1a 1725 case LORA_SF11: return ( char* )"SF11";
GregCr 0:e5420f1a8a1a 1726 case LORA_SF12: return ( char* )"SF12";
GregCr 0:e5420f1a8a1a 1727 default: return ( char* )"X";
GregCr 0:e5420f1a8a1a 1728 }
GregCr 0:e5420f1a8a1a 1729 }
GregCr 0:e5420f1a8a1a 1730 else // PACKET_TYPE_GFSK
GregCr 0:e5420f1a8a1a 1731 {
GregCr 0:e5420f1a8a1a 1732 // quicker than using a float (which is not optimized in MBED)
GregCr 0:e5420f1a8a1a 1733 sprintf( StringText2, "%3d.%1d kbps", \
GregCr 0:e5420f1a8a1a 1734 Eeprom.EepromData.DemoSettings.ModulationParam1 / 1000, \
GregCr 0:e5420f1a8a1a 1735 ( Eeprom.EepromData.DemoSettings.ModulationParam1 % 1000) / 100 );
GregCr 0:e5420f1a8a1a 1736 return StringText2;
GregCr 0:e5420f1a8a1a 1737 }
GregCr 0:e5420f1a8a1a 1738 }
GregCr 0:e5420f1a8a1a 1739
GregCr 0:e5420f1a8a1a 1740 char* GetRadioModulationParameters2( void )
GregCr 0:e5420f1a8a1a 1741 {
GregCr 0:e5420f1a8a1a 1742 if( Eeprom.EepromData.DemoSettings.ModulationType == PACKET_TYPE_LORA )
GregCr 0:e5420f1a8a1a 1743 {
GregCr 0:e5420f1a8a1a 1744 switch( Eeprom.EepromData.DemoSettings.ModulationParam2 )
GregCr 0:e5420f1a8a1a 1745 {
GregCr 0:e5420f1a8a1a 1746 case LORA_BW_500: return ( char* )"BW 500 kHz";
GregCr 0:e5420f1a8a1a 1747 case LORA_BW_250: return ( char* )"BW 250 kHz";
GregCr 0:e5420f1a8a1a 1748 case LORA_BW_125: return ( char* )"BW 125 kHz";
GregCr 0:e5420f1a8a1a 1749 case LORA_BW_062: return ( char* )"BW 62 kHz";
GregCr 0:e5420f1a8a1a 1750 case LORA_BW_041: return ( char* )"BW 41 kHz";
GregCr 0:e5420f1a8a1a 1751 case LORA_BW_031: return ( char* )"BW 31 kHz";
GregCr 0:e5420f1a8a1a 1752 case LORA_BW_020: return ( char* )"BW 20 kHz";
GregCr 0:e5420f1a8a1a 1753 case LORA_BW_015: return ( char* )"BW 15 kHz";
GregCr 0:e5420f1a8a1a 1754 case LORA_BW_010: return ( char* )"BW 10 kHz";
GregCr 0:e5420f1a8a1a 1755 case LORA_BW_007: return ( char* )"BW 7 kHz";
GregCr 0:e5420f1a8a1a 1756 default: return ( char* )"X";
GregCr 0:e5420f1a8a1a 1757 }
GregCr 0:e5420f1a8a1a 1758 }
GregCr 0:e5420f1a8a1a 1759 else // Eeprom.EepromData.DemoSettings.ModulationType == PACKET_TYPE_GFSK
GregCr 0:e5420f1a8a1a 1760 {
GregCr 0:e5420f1a8a1a 1761 // quicker than using a float (which is not optimized in MBED)
GregCr 0:e5420f1a8a1a 1762 sprintf( StringText3, "Fd %3d kHz", \
GregCr 0:e5420f1a8a1a 1763 Eeprom.EepromData.DemoSettings.ModulationParam2 / 1000 );
GregCr 0:e5420f1a8a1a 1764 return StringText3;
GregCr 0:e5420f1a8a1a 1765 }
GregCr 0:e5420f1a8a1a 1766 }
GregCr 0:e5420f1a8a1a 1767
GregCr 0:e5420f1a8a1a 1768 char* GetRadioModulationParameters3( void )
GregCr 0:e5420f1a8a1a 1769 {
GregCr 0:e5420f1a8a1a 1770 if( Eeprom.EepromData.DemoSettings.ModulationType == PACKET_TYPE_LORA )
GregCr 0:e5420f1a8a1a 1771 {
GregCr 0:e5420f1a8a1a 1772 switch( Eeprom.EepromData.DemoSettings.ModulationParam3 )
GregCr 0:e5420f1a8a1a 1773 {
GregCr 0:e5420f1a8a1a 1774 case LORA_CR_4_5: return ( char* )"CR 4/5";
GregCr 0:e5420f1a8a1a 1775 case LORA_CR_4_6: return ( char* )"CR 4/6";
GregCr 0:e5420f1a8a1a 1776 case LORA_CR_4_7: return ( char* )"CR 4/7";
GregCr 0:e5420f1a8a1a 1777 case LORA_CR_4_8: return ( char* )"CR 4/8";
GregCr 0:e5420f1a8a1a 1778 default: return ( char* )"X";
GregCr 0:e5420f1a8a1a 1779 }
GregCr 0:e5420f1a8a1a 1780 }
GregCr 0:e5420f1a8a1a 1781 else // PACKET_TYPE_GFSK
GregCr 0:e5420f1a8a1a 1782 {
GregCr 0:e5420f1a8a1a 1783 switch( Eeprom.EepromData.DemoSettings.ModulationParam3 )
GregCr 0:e5420f1a8a1a 1784 {
GregCr 0:e5420f1a8a1a 1785 case MOD_SHAPING_OFF: return ( char* )"NONE ";
GregCr 0:e5420f1a8a1a 1786 case MOD_SHAPING_G_BT_03: return ( char* )"G BT .3";
GregCr 0:e5420f1a8a1a 1787 case MOD_SHAPING_G_BT_05: return ( char* )"G BT .5";
GregCr 0:e5420f1a8a1a 1788 case MOD_SHAPING_G_BT_07: return ( char* )"G BT .7";
GregCr 0:e5420f1a8a1a 1789 case MOD_SHAPING_G_BT_1: return ( char* )"G BT 1 ";
GregCr 0:e5420f1a8a1a 1790 default: return ( char* )"X";
GregCr 0:e5420f1a8a1a 1791 }
GregCr 0:e5420f1a8a1a 1792 }
GregCr 0:e5420f1a8a1a 1793 }
GregCr 0:e5420f1a8a1a 1794
GregCr 0:e5420f1a8a1a 1795 char* GetRadioModulationParameters4( void )
GregCr 0:e5420f1a8a1a 1796 {
GregCr 0:e5420f1a8a1a 1797 if( Eeprom.EepromData.DemoSettings.ModulationType == PACKET_TYPE_LORA )
GregCr 0:e5420f1a8a1a 1798 {
GregCr 0:e5420f1a8a1a 1799 if( Eeprom.EepromData.DemoSettings.PacketParam2 == LORA_PACKET_FIXED_LENGTH )
GregCr 0:e5420f1a8a1a 1800 {
GregCr 0:e5420f1a8a1a 1801 return ( char* )"Fixed length";
GregCr 0:e5420f1a8a1a 1802 }
GregCr 0:e5420f1a8a1a 1803 else // RADIO_PACKET_VARIABLE_LENGTH
GregCr 0:e5420f1a8a1a 1804 {
GregCr 0:e5420f1a8a1a 1805 return ( char* )"Variable len";
GregCr 0:e5420f1a8a1a 1806 }
GregCr 0:e5420f1a8a1a 1807 }
GregCr 0:e5420f1a8a1a 1808 else // Eeprom.EepromData.DemoSettings.ModulationType == PACKET_TYPE_GFSK
GregCr 0:e5420f1a8a1a 1809 {
GregCr 0:e5420f1a8a1a 1810 switch( Eeprom.EepromData.DemoSettings.ModulationParam4 )
GregCr 0:e5420f1a8a1a 1811 {
GregCr 0:e5420f1a8a1a 1812 case RX_BW_4800 : return ( char* )"BW 4.8 kHz";
GregCr 0:e5420f1a8a1a 1813 case RX_BW_5800 : return ( char* )"BW 5.8 kHz";
GregCr 0:e5420f1a8a1a 1814 case RX_BW_7300 : return ( char* )"BW 7.3 kHz";
GregCr 0:e5420f1a8a1a 1815 case RX_BW_9700 : return ( char* )"BW 9.7 kHz";
GregCr 0:e5420f1a8a1a 1816 case RX_BW_11700 : return ( char* )"BW 11.7 kHz";
GregCr 0:e5420f1a8a1a 1817 case RX_BW_14600 : return ( char* )"BW 14.6 kHz";
GregCr 0:e5420f1a8a1a 1818 case RX_BW_19500 : return ( char* )"BW 19.5 kHz";
GregCr 0:e5420f1a8a1a 1819 case RX_BW_23400 : return ( char* )"BW 23.4 kHz";
GregCr 0:e5420f1a8a1a 1820 case RX_BW_29300 : return ( char* )"BW 29.3 kHz";
GregCr 0:e5420f1a8a1a 1821 case RX_BW_39000 : return ( char* )"BW 39 kHz";
GregCr 0:e5420f1a8a1a 1822 case RX_BW_46900 : return ( char* )"BW 46.9 kHz";
GregCr 0:e5420f1a8a1a 1823 case RX_BW_58600 : return ( char* )"BW 58.6 kHz";
GregCr 0:e5420f1a8a1a 1824 case RX_BW_78200 : return ( char* )"BW 78.2 kHz";
GregCr 0:e5420f1a8a1a 1825 case RX_BW_93800 : return ( char* )"BW 93.8 kHz";
GregCr 0:e5420f1a8a1a 1826 case RX_BW_117300 : return ( char* )"BW 117 kHz";
GregCr 0:e5420f1a8a1a 1827 case RX_BW_156200 : return ( char* )"BW 156 kHz";
GregCr 0:e5420f1a8a1a 1828 case RX_BW_187200 : return ( char* )"BW 187 kHz";
GregCr 0:e5420f1a8a1a 1829 case RX_BW_234300 : return ( char* )"BW 234 kHz";
GregCr 0:e5420f1a8a1a 1830 case RX_BW_312000 : return ( char* )"BW 312 kHz";
GregCr 0:e5420f1a8a1a 1831 case RX_BW_373600 : return ( char* )"BW 373 kHz";
GregCr 0:e5420f1a8a1a 1832 case RX_BW_467000 : return ( char* )"BW 467 kHz";
GregCr 0:e5420f1a8a1a 1833 default: return ( char* )"X";
GregCr 0:e5420f1a8a1a 1834 }
GregCr 0:e5420f1a8a1a 1835 }
GregCr 0:e5420f1a8a1a 1836 }
GregCr 0:e5420f1a8a1a 1837
GregCr 0:e5420f1a8a1a 1838 char* GetRadioFrequency( void )
GregCr 0:e5420f1a8a1a 1839 {
GregCr 0:e5420f1a8a1a 1840 sprintf( StringText2, "%lu Hz", \
GregCr 0:e5420f1a8a1a 1841 ( unsigned long )Eeprom.EepromData.DemoSettings.Frequency );
GregCr 0:e5420f1a8a1a 1842 return StringText2;
GregCr 0:e5420f1a8a1a 1843 }
GregCr 0:e5420f1a8a1a 1844
GregCr 0:e5420f1a8a1a 1845 char* GetRadioFrequencyMHz( void )
GregCr 0:e5420f1a8a1a 1846 {
GregCr 0:e5420f1a8a1a 1847 // quicker than using a float (which is not optimized in MBED)
GregCr 0:e5420f1a8a1a 1848 sprintf( StringText3, "%3d.%1d MHz", \
GregCr 0:e5420f1a8a1a 1849 Eeprom.EepromData.DemoSettings.Frequency / 1000000, \
GregCr 0:e5420f1a8a1a 1850 ( Eeprom.EepromData.DemoSettings.Frequency % 1000000 ) / 100000 );
GregCr 0:e5420f1a8a1a 1851 return StringText3;
GregCr 0:e5420f1a8a1a 1852 }
GregCr 0:e5420f1a8a1a 1853
GregCr 0:e5420f1a8a1a 1854 char* GetRadioFreqBase( void )
GregCr 0:e5420f1a8a1a 1855 {
GregCr 0:e5420f1a8a1a 1856 switch( CurrentFreqBase )
GregCr 0:e5420f1a8a1a 1857 {
GregCr 0:e5420f1a8a1a 1858 case FB1: return ( char* )"1 Hz";
GregCr 0:e5420f1a8a1a 1859 case FB10: return ( char* )"10 Hz";
GregCr 0:e5420f1a8a1a 1860 case FB100: return ( char* )"100 Hz";
GregCr 0:e5420f1a8a1a 1861 case FB1K: return ( char* )"1 kHz";
GregCr 0:e5420f1a8a1a 1862 case FB10K: return ( char* )"10 kHz";
GregCr 0:e5420f1a8a1a 1863 case FB100K: return ( char* )"100 kHz";
GregCr 0:e5420f1a8a1a 1864 case FB1M: return ( char* )"1 MHz";
GregCr 0:e5420f1a8a1a 1865 case FB10M: return ( char* )"10 MHz";
GregCr 0:e5420f1a8a1a 1866 default: return ( char* )"X";
GregCr 0:e5420f1a8a1a 1867 }
GregCr 0:e5420f1a8a1a 1868 }
GregCr 0:e5420f1a8a1a 1869
GregCr 0:e5420f1a8a1a 1870 char* GetRadioFreqBasePS1( void )
GregCr 0:e5420f1a8a1a 1871 {
GregCr 0:e5420f1a8a1a 1872 sprintf( StringText, "%lu Hz", DEMO_CENTRAL_FREQ_PRESET1 );
GregCr 0:e5420f1a8a1a 1873 return StringText;
GregCr 0:e5420f1a8a1a 1874 }
GregCr 0:e5420f1a8a1a 1875
GregCr 0:e5420f1a8a1a 1876 char* GetRadioFreqBasePS2( void )
GregCr 0:e5420f1a8a1a 1877 {
GregCr 0:e5420f1a8a1a 1878 sprintf( StringText, "%lu Hz", DEMO_CENTRAL_FREQ_PRESET2 );
GregCr 0:e5420f1a8a1a 1879 return StringText;
GregCr 0:e5420f1a8a1a 1880 }
GregCr 0:e5420f1a8a1a 1881
GregCr 0:e5420f1a8a1a 1882 char* GetRadioFreqBasePS3( void )
GregCr 0:e5420f1a8a1a 1883 {
GregCr 0:e5420f1a8a1a 1884 sprintf( StringText, "%lu Hz", DEMO_CENTRAL_FREQ_PRESET3 );
GregCr 0:e5420f1a8a1a 1885 return StringText;
GregCr 0:e5420f1a8a1a 1886 }
GregCr 0:e5420f1a8a1a 1887
GregCr 0:e5420f1a8a1a 1888 char* GetRadioTxPower( void )
GregCr 0:e5420f1a8a1a 1889 {
GregCr 0:e5420f1a8a1a 1890 sprintf( StringText2, "%d dBm", Eeprom.EepromData.DemoSettings.TxPower );
GregCr 0:e5420f1a8a1a 1891 return StringText2;
GregCr 0:e5420f1a8a1a 1892 }
GregCr 0:e5420f1a8a1a 1893
GregCr 0:e5420f1a8a1a 1894 char* GetRadioPayloadLength( void )
GregCr 0:e5420f1a8a1a 1895 {
GregCr 0:e5420f1a8a1a 1896 if( Eeprom.EepromData.DemoSettings.ModulationType == PACKET_TYPE_LORA )
GregCr 0:e5420f1a8a1a 1897 {
GregCr 0:e5420f1a8a1a 1898 sprintf( StringText2, "%d", Eeprom.EepromData.DemoSettings.PacketParam3 );
GregCr 0:e5420f1a8a1a 1899 }
GregCr 0:e5420f1a8a1a 1900 else // PACKET_TYPE_GFSK
GregCr 0:e5420f1a8a1a 1901 {
GregCr 0:e5420f1a8a1a 1902 sprintf( StringText2, "%d", Eeprom.EepromData.DemoSettings.PacketParam6 );
GregCr 0:e5420f1a8a1a 1903 }
GregCr 0:e5420f1a8a1a 1904 return StringText2;
GregCr 0:e5420f1a8a1a 1905 }
GregCr 0:e5420f1a8a1a 1906
GregCr 0:e5420f1a8a1a 1907 char* GetMenuDemoMaxNumPacket( void )
GregCr 0:e5420f1a8a1a 1908 {
GregCr 0:e5420f1a8a1a 1909 if( Eeprom.EepromData.DemoSettings.MaxNumPacket == 0 )
GregCr 0:e5420f1a8a1a 1910 {
GregCr 0:e5420f1a8a1a 1911 return ( char* )"Infinite";
GregCr 0:e5420f1a8a1a 1912 }
GregCr 0:e5420f1a8a1a 1913 else
GregCr 0:e5420f1a8a1a 1914 {
GregCr 0:e5420f1a8a1a 1915 sprintf( StringText, "%6d", \
GregCr 0:e5420f1a8a1a 1916 Eeprom.EepromData.DemoSettings.MaxNumPacket );
GregCr 0:e5420f1a8a1a 1917 }
GregCr 0:e5420f1a8a1a 1918 return StringText;
GregCr 0:e5420f1a8a1a 1919 }
GregCr 0:e5420f1a8a1a 1920
GregCr 0:e5420f1a8a1a 1921 char* GetMenuDemoNumSentPacket( void )
GregCr 0:e5420f1a8a1a 1922 {
GregCr 0:e5420f1a8a1a 1923 sprintf( StringText2, "%6d", Eeprom.EepromData.DemoSettings.CntPacketTx );
GregCr 0:e5420f1a8a1a 1924 return StringText2;
GregCr 0:e5420f1a8a1a 1925 }
GregCr 0:e5420f1a8a1a 1926
GregCr 0:e5420f1a8a1a 1927 char* GetMenuDemoFreqError( void )
GregCr 0:e5420f1a8a1a 1928 {
GregCr 0:e5420f1a8a1a 1929 if( Eeprom.EepromData.DemoSettings.ModulationType == PACKET_TYPE_LORA )
GregCr 0:e5420f1a8a1a 1930 {
GregCr 0:e5420f1a8a1a 1931 sprintf( StringText2, "%6d", Eeprom.EepromData.DemoSettings.FreqErrorEst );
GregCr 0:e5420f1a8a1a 1932 }
GregCr 0:e5420f1a8a1a 1933 else
GregCr 0:e5420f1a8a1a 1934 {
GregCr 0:e5420f1a8a1a 1935 sprintf( StringText2, "N/A" );
GregCr 0:e5420f1a8a1a 1936 }
GregCr 0:e5420f1a8a1a 1937 return StringText2;
GregCr 0:e5420f1a8a1a 1938 }
GregCr 0:e5420f1a8a1a 1939
GregCr 0:e5420f1a8a1a 1940 char* GetMenuDemoRxOk( void )
GregCr 0:e5420f1a8a1a 1941 {
GregCr 0:e5420f1a8a1a 1942 sprintf( StringText2, "%6lu", \
GregCr 0:e5420f1a8a1a 1943 ( unsigned long )( Eeprom.EepromData.DemoSettings.CntPacketRxOK ) );
GregCr 0:e5420f1a8a1a 1944 return StringText2;
GregCr 0:e5420f1a8a1a 1945 }
GregCr 0:e5420f1a8a1a 1946
GregCr 0:e5420f1a8a1a 1947 char* GetMenuDemoRxKo( void )
GregCr 0:e5420f1a8a1a 1948 {
GregCr 0:e5420f1a8a1a 1949 sprintf( StringText2, "%6lu", \
GregCr 0:e5420f1a8a1a 1950 ( unsigned long )( Eeprom.EepromData.DemoSettings.CntPacketRxKO + \
GregCr 0:e5420f1a8a1a 1951 Eeprom.EepromData.DemoSettings.RxTimeOutCount ) );
GregCr 0:e5420f1a8a1a 1952 return StringText2;
GregCr 0:e5420f1a8a1a 1953 }
GregCr 0:e5420f1a8a1a 1954
GregCr 0:e5420f1a8a1a 1955 char* GetMenuDemoRxOkSlave( void )
GregCr 0:e5420f1a8a1a 1956 {
GregCr 0:e5420f1a8a1a 1957 sprintf( StringText3, "%6lu", \
GregCr 0:e5420f1a8a1a 1958 ( unsigned long )( Eeprom.EepromData.DemoSettings.CntPacketRxOKSlave ) );
GregCr 0:e5420f1a8a1a 1959 return StringText3;
GregCr 0:e5420f1a8a1a 1960 }
GregCr 0:e5420f1a8a1a 1961
GregCr 0:e5420f1a8a1a 1962 char* GetMenuDemoResultPerCent1( uint32_t value, uint32_t reference )
GregCr 0:e5420f1a8a1a 1963 {
GregCr 0:e5420f1a8a1a 1964 // quicker than using a float (which is not optimized in MBED)
GregCr 0:e5420f1a8a1a 1965 sprintf( StringText2, "%3d.%02d", \
GregCr 0:e5420f1a8a1a 1966 ( ( value * 10000 ) / reference ) / 100, \
GregCr 0:e5420f1a8a1a 1967 ( ( value * 10000 ) / reference ) % 100 );
GregCr 0:e5420f1a8a1a 1968 return StringText2;
GregCr 0:e5420f1a8a1a 1969 }
GregCr 0:e5420f1a8a1a 1970
GregCr 0:e5420f1a8a1a 1971 char* GetMenuDemoResultPerCent2( uint32_t value, uint32_t reference )
GregCr 0:e5420f1a8a1a 1972 {
GregCr 0:e5420f1a8a1a 1973 // quicker than using a float (which is not optimized in MBED)
GregCr 0:e5420f1a8a1a 1974 sprintf( StringText3, "%3d.%02d", \
GregCr 0:e5420f1a8a1a 1975 ( ( value * 10000 ) / reference ) / 100, \
GregCr 0:e5420f1a8a1a 1976 ( ( value * 10000 ) / reference ) % 100 );
GregCr 0:e5420f1a8a1a 1977 return StringText3;
GregCr 0:e5420f1a8a1a 1978 }
GregCr 0:e5420f1a8a1a 1979
GregCr 0:e5420f1a8a1a 1980 char* GetMenuDemoRxKoSlave( void )
GregCr 0:e5420f1a8a1a 1981 {
GregCr 0:e5420f1a8a1a 1982 sprintf( StringText3, "%6lu", \
GregCr 0:e5420f1a8a1a 1983 ( unsigned long )( Eeprom.EepromData.DemoSettings.CntPacketRxKOSlave ) );
GregCr 0:e5420f1a8a1a 1984 return StringText3;
GregCr 0:e5420f1a8a1a 1985 }
GregCr 0:e5420f1a8a1a 1986
GregCr 0:e5420f1a8a1a 1987 char* GetMenuDemoRssi( void )
GregCr 0:e5420f1a8a1a 1988 {
GregCr 0:e5420f1a8a1a 1989 sprintf( StringText2, "%6d", Eeprom.EepromData.DemoSettings.RssiValue );
GregCr 0:e5420f1a8a1a 1990 return StringText2;
GregCr 0:e5420f1a8a1a 1991 }
GregCr 0:e5420f1a8a1a 1992
GregCr 0:e5420f1a8a1a 1993 char* GetMenuDemoSnr( void )
GregCr 0:e5420f1a8a1a 1994 {
GregCr 0:e5420f1a8a1a 1995 if( Eeprom.EepromData.DemoSettings.SnrValue >= 0 )
GregCr 0:e5420f1a8a1a 1996 {
GregCr 0:e5420f1a8a1a 1997 sprintf( StringText2, " /" );
GregCr 0:e5420f1a8a1a 1998 }
GregCr 0:e5420f1a8a1a 1999 else
GregCr 0:e5420f1a8a1a 2000 {
GregCr 0:e5420f1a8a1a 2001 sprintf( StringText2, "%6d", Eeprom.EepromData.DemoSettings.SnrValue );
GregCr 0:e5420f1a8a1a 2002 }
GregCr 0:e5420f1a8a1a 2003 return StringText2;
GregCr 0:e5420f1a8a1a 2004 }
GregCr 0:e5420f1a8a1a 2005
GregCr 0:e5420f1a8a1a 2006 char* GetTotalPackets( void )
GregCr 0:e5420f1a8a1a 2007 {
GregCr 0:e5420f1a8a1a 2008 if( Eeprom.EepromData.DemoSettings.MaxNumPacket == 0 )
GregCr 0:e5420f1a8a1a 2009 {
GregCr 0:e5420f1a8a1a 2010 return ( char* )"Total: Inf.";
GregCr 0:e5420f1a8a1a 2011 }
GregCr 0:e5420f1a8a1a 2012 else
GregCr 0:e5420f1a8a1a 2013 {
GregCr 0:e5420f1a8a1a 2014 sprintf( StringText, "Total: %5lu", \
GregCr 0:e5420f1a8a1a 2015 ( unsigned long )( Eeprom.EepromData.DemoSettings.MaxNumPacket ) );
GregCr 0:e5420f1a8a1a 2016 return StringText;
GregCr 0:e5420f1a8a1a 2017 }
GregCr 0:e5420f1a8a1a 2018 }
GregCr 0:e5420f1a8a1a 2019
GregCr 0:e5420f1a8a1a 2020 char* GetMenuDemoRadioPowerMode( void )
GregCr 0:e5420f1a8a1a 2021 {
GregCr 0:e5420f1a8a1a 2022 if( Eeprom.EepromData.DemoSettings.RadioPowerMode == USE_LDO )
GregCr 0:e5420f1a8a1a 2023 {
GregCr 0:e5420f1a8a1a 2024 return ( char* )" LDO";
GregCr 0:e5420f1a8a1a 2025 }
GregCr 0:e5420f1a8a1a 2026 else
GregCr 0:e5420f1a8a1a 2027 {
GregCr 0:e5420f1a8a1a 2028 return ( char* )" DCDC";
GregCr 0:e5420f1a8a1a 2029 }
GregCr 0:e5420f1a8a1a 2030 }
GregCr 0:e5420f1a8a1a 2031
GregCr 0:e5420f1a8a1a 2032 char* GetMenuDemoRadioBoostedRx( void )
GregCr 0:e5420f1a8a1a 2033 {
GregCr 0:e5420f1a8a1a 2034 if( Eeprom.EepromData.DemoSettings.BoostedRx == 0x01 )
GregCr 0:e5420f1a8a1a 2035 {
GregCr 0:e5420f1a8a1a 2036 return ( char* )" True";
GregCr 0:e5420f1a8a1a 2037 }
GregCr 0:e5420f1a8a1a 2038 else
GregCr 0:e5420f1a8a1a 2039 {
GregCr 0:e5420f1a8a1a 2040 return ( char* )" False";
GregCr 0:e5420f1a8a1a 2041 }
GregCr 0:e5420f1a8a1a 2042 }
GregCr 0:e5420f1a8a1a 2043
GregCr 0:e5420f1a8a1a 2044
GregCr 0:e5420f1a8a1a 2045 void CheckScreen( void )
GregCr 0:e5420f1a8a1a 2046 {
GregCr 0:e5420f1a8a1a 2047 CheckScreenFlag = true;
GregCr 0:e5420f1a8a1a 2048 }
GregCr 0:e5420f1a8a1a 2049
GregCr 0:e5420f1a8a1a 2050 void DebouncedScreen (void )
GregCr 0:e5420f1a8a1a 2051 {
GregCr 0:e5420f1a8a1a 2052 ScreenBeenDebounced = false;
GregCr 0:e5420f1a8a1a 2053 DebouncedScreenTouch.detach( );
GregCr 0:e5420f1a8a1a 2054 }
GregCr 0:e5420f1a8a1a 2055
GregCr 0:e5420f1a8a1a 2056 void RadioSettingsCheckError( void )
GregCr 0:e5420f1a8a1a 2057 {
GregCr 0:e5420f1a8a1a 2058 if( Eeprom.EepromData.DemoSettings.ModulationType == PACKET_TYPE_GFSK )
GregCr 0:e5420f1a8a1a 2059 {
GregCr 0:e5420f1a8a1a 2060 switch( Eeprom.EepromData.DemoSettings.ModulationParam4 )
GregCr 0:e5420f1a8a1a 2061 {
GregCr 0:e5420f1a8a1a 2062 case RX_BW_4800:
GregCr 0:e5420f1a8a1a 2063 ErrorParam = ( (Eeprom.EepromData.DemoSettings.ModulationParam2 * 2) + Eeprom.EepromData.DemoSettings.ModulationParam1 ) >= 4800;
GregCr 0:e5420f1a8a1a 2064 break;
GregCr 0:e5420f1a8a1a 2065
GregCr 0:e5420f1a8a1a 2066 case RX_BW_5800:
GregCr 0:e5420f1a8a1a 2067 ErrorParam = ( (Eeprom.EepromData.DemoSettings.ModulationParam2 * 2) + Eeprom.EepromData.DemoSettings.ModulationParam1 ) >= 5800;
GregCr 0:e5420f1a8a1a 2068 break;
GregCr 0:e5420f1a8a1a 2069
GregCr 0:e5420f1a8a1a 2070 case RX_BW_7300:
GregCr 0:e5420f1a8a1a 2071 ErrorParam = ( (Eeprom.EepromData.DemoSettings.ModulationParam2 * 2) + Eeprom.EepromData.DemoSettings.ModulationParam1 ) >= 7300;
GregCr 0:e5420f1a8a1a 2072 break;
GregCr 0:e5420f1a8a1a 2073
GregCr 0:e5420f1a8a1a 2074 case RX_BW_9700:
GregCr 0:e5420f1a8a1a 2075 ErrorParam = ( (Eeprom.EepromData.DemoSettings.ModulationParam2 * 2) + Eeprom.EepromData.DemoSettings.ModulationParam1 ) >= 9700;
GregCr 0:e5420f1a8a1a 2076 break;
GregCr 0:e5420f1a8a1a 2077
GregCr 0:e5420f1a8a1a 2078 case RX_BW_11700:
GregCr 0:e5420f1a8a1a 2079 ErrorParam = ( (Eeprom.EepromData.DemoSettings.ModulationParam2 * 2) + Eeprom.EepromData.DemoSettings.ModulationParam1 ) >= 11700;
GregCr 0:e5420f1a8a1a 2080 break;
GregCr 0:e5420f1a8a1a 2081
GregCr 0:e5420f1a8a1a 2082 case RX_BW_14600:
GregCr 0:e5420f1a8a1a 2083 ErrorParam = ( (Eeprom.EepromData.DemoSettings.ModulationParam2 * 2) + Eeprom.EepromData.DemoSettings.ModulationParam1 ) >= 14600;
GregCr 0:e5420f1a8a1a 2084 break;
GregCr 0:e5420f1a8a1a 2085
GregCr 0:e5420f1a8a1a 2086 case RX_BW_19500:
GregCr 0:e5420f1a8a1a 2087 ErrorParam = ( (Eeprom.EepromData.DemoSettings.ModulationParam2 * 2) + Eeprom.EepromData.DemoSettings.ModulationParam1 ) >= 19500;
GregCr 0:e5420f1a8a1a 2088 break;
GregCr 0:e5420f1a8a1a 2089
GregCr 0:e5420f1a8a1a 2090 case RX_BW_23400:
GregCr 0:e5420f1a8a1a 2091 ErrorParam = ( (Eeprom.EepromData.DemoSettings.ModulationParam2 * 2) + Eeprom.EepromData.DemoSettings.ModulationParam1 ) >= 23400;
GregCr 0:e5420f1a8a1a 2092 break;
GregCr 0:e5420f1a8a1a 2093
GregCr 0:e5420f1a8a1a 2094 case RX_BW_29300:
GregCr 0:e5420f1a8a1a 2095 ErrorParam = ( (Eeprom.EepromData.DemoSettings.ModulationParam2 * 2) + Eeprom.EepromData.DemoSettings.ModulationParam1 ) >= 29300;
GregCr 0:e5420f1a8a1a 2096 break;
GregCr 0:e5420f1a8a1a 2097
GregCr 0:e5420f1a8a1a 2098 case RX_BW_39000:
GregCr 0:e5420f1a8a1a 2099 ErrorParam = ( (Eeprom.EepromData.DemoSettings.ModulationParam2 * 2) + Eeprom.EepromData.DemoSettings.ModulationParam1 ) >= 39000;
GregCr 0:e5420f1a8a1a 2100 break;
GregCr 0:e5420f1a8a1a 2101
GregCr 0:e5420f1a8a1a 2102 case RX_BW_46900:
GregCr 0:e5420f1a8a1a 2103 ErrorParam = ( (Eeprom.EepromData.DemoSettings.ModulationParam2 * 2) + Eeprom.EepromData.DemoSettings.ModulationParam1 ) >= 46900;
GregCr 0:e5420f1a8a1a 2104 break;
GregCr 0:e5420f1a8a1a 2105
GregCr 0:e5420f1a8a1a 2106 case RX_BW_58600:
GregCr 0:e5420f1a8a1a 2107 ErrorParam = ( (Eeprom.EepromData.DemoSettings.ModulationParam2 * 2) + Eeprom.EepromData.DemoSettings.ModulationParam1 ) >= 58600;
GregCr 0:e5420f1a8a1a 2108 break;
GregCr 0:e5420f1a8a1a 2109
GregCr 0:e5420f1a8a1a 2110 case RX_BW_78200:
GregCr 0:e5420f1a8a1a 2111 ErrorParam = ( (Eeprom.EepromData.DemoSettings.ModulationParam2 * 2) + Eeprom.EepromData.DemoSettings.ModulationParam1 ) >= 78200;
GregCr 0:e5420f1a8a1a 2112 break;
GregCr 0:e5420f1a8a1a 2113
GregCr 0:e5420f1a8a1a 2114 case RX_BW_93800:
GregCr 0:e5420f1a8a1a 2115 ErrorParam = ( (Eeprom.EepromData.DemoSettings.ModulationParam2 * 2) + Eeprom.EepromData.DemoSettings.ModulationParam1 ) >= 93800;
GregCr 0:e5420f1a8a1a 2116 break;
GregCr 0:e5420f1a8a1a 2117
GregCr 0:e5420f1a8a1a 2118 case RX_BW_117300:
GregCr 0:e5420f1a8a1a 2119 ErrorParam = ( (Eeprom.EepromData.DemoSettings.ModulationParam2 * 2) + Eeprom.EepromData.DemoSettings.ModulationParam1 ) >= 117300;
GregCr 0:e5420f1a8a1a 2120 break;
GregCr 0:e5420f1a8a1a 2121
GregCr 0:e5420f1a8a1a 2122 case RX_BW_156200:
GregCr 0:e5420f1a8a1a 2123 ErrorParam = ( (Eeprom.EepromData.DemoSettings.ModulationParam2 * 2) + Eeprom.EepromData.DemoSettings.ModulationParam1 ) >= 156200;
GregCr 0:e5420f1a8a1a 2124 break;
GregCr 0:e5420f1a8a1a 2125
GregCr 0:e5420f1a8a1a 2126 case RX_BW_187200:
GregCr 0:e5420f1a8a1a 2127 ErrorParam = ( (Eeprom.EepromData.DemoSettings.ModulationParam2 * 2) + Eeprom.EepromData.DemoSettings.ModulationParam1 ) >= 187200;
GregCr 0:e5420f1a8a1a 2128 break;
GregCr 0:e5420f1a8a1a 2129
GregCr 0:e5420f1a8a1a 2130 case RX_BW_234300:
GregCr 0:e5420f1a8a1a 2131 ErrorParam = ( (Eeprom.EepromData.DemoSettings.ModulationParam2 * 2) + Eeprom.EepromData.DemoSettings.ModulationParam1 ) >= 234300;
GregCr 0:e5420f1a8a1a 2132 break;
GregCr 0:e5420f1a8a1a 2133
GregCr 0:e5420f1a8a1a 2134 case RX_BW_312000:
GregCr 0:e5420f1a8a1a 2135 ErrorParam = ( (Eeprom.EepromData.DemoSettings.ModulationParam2 * 2) + Eeprom.EepromData.DemoSettings.ModulationParam1 ) >= 312000;
GregCr 0:e5420f1a8a1a 2136 break;
GregCr 0:e5420f1a8a1a 2137
GregCr 0:e5420f1a8a1a 2138 case RX_BW_373600:
GregCr 0:e5420f1a8a1a 2139 ErrorParam = ( (Eeprom.EepromData.DemoSettings.ModulationParam2 * 2) + Eeprom.EepromData.DemoSettings.ModulationParam1 ) >= 373600;
GregCr 0:e5420f1a8a1a 2140 break;
GregCr 0:e5420f1a8a1a 2141
GregCr 0:e5420f1a8a1a 2142 case RX_BW_467000:
GregCr 0:e5420f1a8a1a 2143 ErrorParam = ( (Eeprom.EepromData.DemoSettings.ModulationParam2 * 2) + Eeprom.EepromData.DemoSettings.ModulationParam1 ) >= 467000;
GregCr 0:e5420f1a8a1a 2144 break;
GregCr 0:e5420f1a8a1a 2145
GregCr 0:e5420f1a8a1a 2146 default:
GregCr 0:e5420f1a8a1a 2147 ErrorParam = true;
GregCr 0:e5420f1a8a1a 2148 break;
GregCr 0:e5420f1a8a1a 2149 }
GregCr 0:e5420f1a8a1a 2150 if( ErrorParam == true )
GregCr 0:e5420f1a8a1a 2151 {
GregCr 0:e5420f1a8a1a 2152 MenuObjects[BTN3_VALUE_TEXT].FrontColor = OBJECT_ERROR;
GregCr 0:e5420f1a8a1a 2153 MenuObjects[BTN4_VALUE_TEXT].FrontColor = OBJECT_ERROR;
GregCr 0:e5420f1a8a1a 2154 MenuObjects[BTN6_VALUE_TEXT].FrontColor = OBJECT_ERROR;
GregCr 0:e5420f1a8a1a 2155 }
GregCr 0:e5420f1a8a1a 2156 else
GregCr 0:e5420f1a8a1a 2157 {
GregCr 0:e5420f1a8a1a 2158 RadioSettingsClearError( );
GregCr 0:e5420f1a8a1a 2159 }
GregCr 0:e5420f1a8a1a 2160 ButtonChangeText( BTN3_BORDER, NULL, ( uint8_t* )GetRadioModulationParameters1( ) );
GregCr 0:e5420f1a8a1a 2161 ButtonChangeText( BTN4_BORDER, NULL, ( uint8_t* )GetRadioModulationParameters2( ) );
GregCr 0:e5420f1a8a1a 2162 ButtonChangeText( BTN6_BORDER, NULL, ( uint8_t* )GetRadioModulationParameters4( ) );
GregCr 0:e5420f1a8a1a 2163 }
GregCr 0:e5420f1a8a1a 2164 }
GregCr 0:e5420f1a8a1a 2165
GregCr 0:e5420f1a8a1a 2166 void RadioSettingsClearError( void )
GregCr 0:e5420f1a8a1a 2167 {
GregCr 0:e5420f1a8a1a 2168 MenuObjects[BTN3_VALUE_TEXT].FrontColor = TEXT_VALUE;
GregCr 0:e5420f1a8a1a 2169 MenuObjects[BTN4_VALUE_TEXT].FrontColor = TEXT_VALUE;
GregCr 0:e5420f1a8a1a 2170 MenuObjects[BTN6_VALUE_TEXT].FrontColor = TEXT_VALUE;
GregCr 0:e5420f1a8a1a 2171 }
GregCr 0:e5420f1a8a1a 2172
GregCr 0:e5420f1a8a1a 2173 /*!
GregCr 0:e5420f1a8a1a 2174 * \brief Draw button
GregCr 0:e5420f1a8a1a 2175 *
GregCr 0:e5420f1a8a1a 2176 * \param [in] buttonId Id of the button to draw
GregCr 0:e5420f1a8a1a 2177 * \param [in] *text1 Text to draw as label
GregCr 0:e5420f1a8a1a 2178 * \param [in] *text2 Text to draw as value
GregCr 0:e5420f1a8a1a 2179 */
GregCr 0:e5420f1a8a1a 2180 void DrawActiveButton( uint8_t buttonId, uint8_t* text1, uint8_t* text2 )
GregCr 0:e5420f1a8a1a 2181 {
GregCr 0:e5420f1a8a1a 2182 GraphObjectDraw( &( MenuObjects[buttonId] ), NULL, NULL, true );
GregCr 0:e5420f1a8a1a 2183 if( text2 == NULL )
GregCr 0:e5420f1a8a1a 2184 {
GregCr 0:e5420f1a8a1a 2185 if( text1 != NULL )
GregCr 0:e5420f1a8a1a 2186 {
GregCr 0:e5420f1a8a1a 2187 GraphObjectDraw( &( MenuObjects[buttonId + 1] ), text1, NULL, false );
GregCr 0:e5420f1a8a1a 2188 }
GregCr 0:e5420f1a8a1a 2189 }
GregCr 0:e5420f1a8a1a 2190 else
GregCr 0:e5420f1a8a1a 2191 {
GregCr 0:e5420f1a8a1a 2192 if( text1 != NULL )
GregCr 0:e5420f1a8a1a 2193 {
GregCr 0:e5420f1a8a1a 2194 GraphObjectDraw( &( MenuObjects[buttonId + 2] ), text1, NULL, false );
GregCr 0:e5420f1a8a1a 2195 }
GregCr 0:e5420f1a8a1a 2196 GraphObjectDraw( &( MenuObjects[buttonId + 3] ), text2, NULL, false );
GregCr 0:e5420f1a8a1a 2197 }
GregCr 0:e5420f1a8a1a 2198 }
GregCr 0:e5420f1a8a1a 2199
GregCr 0:e5420f1a8a1a 2200 void ButtonChangeText( uint8_t buttonId, uint8_t* text1, uint8_t* text2 )
GregCr 0:e5420f1a8a1a 2201 {
GregCr 0:e5420f1a8a1a 2202 if( text2 == NULL )
GregCr 0:e5420f1a8a1a 2203 {
GregCr 0:e5420f1a8a1a 2204 if( text1 != NULL )
GregCr 0:e5420f1a8a1a 2205 {
GregCr 0:e5420f1a8a1a 2206 GraphObjectDraw( &( MenuObjects[buttonId + 1] ), text1, NULL, false );
GregCr 0:e5420f1a8a1a 2207 }
GregCr 0:e5420f1a8a1a 2208 }
GregCr 0:e5420f1a8a1a 2209 else
GregCr 0:e5420f1a8a1a 2210 {
GregCr 0:e5420f1a8a1a 2211 if( text1 != NULL )
GregCr 0:e5420f1a8a1a 2212 {
GregCr 0:e5420f1a8a1a 2213 GraphObjectDraw( &( MenuObjects[buttonId + 2] ), text1, NULL, false );
GregCr 0:e5420f1a8a1a 2214 }
GregCr 0:e5420f1a8a1a 2215 GraphObjectDraw( &( MenuObjects[buttonId + 3] ), text2, NULL, false );
GregCr 0:e5420f1a8a1a 2216 }
GregCr 0:e5420f1a8a1a 2217 }
GregCr 0:e5420f1a8a1a 2218
GregCr 0:e5420f1a8a1a 2219 void DrawText( uint8_t lineId, uint8_t* text0, uint8_t* text1, uint8_t* text2 )
GregCr 0:e5420f1a8a1a 2220 {
GregCr 0:e5420f1a8a1a 2221 if( text0 != NULL )
GregCr 0:e5420f1a8a1a 2222 {
GregCr 0:e5420f1a8a1a 2223 GraphObjectDraw( &( MenuObjects[lineId] ), text0, NULL, false );
GregCr 0:e5420f1a8a1a 2224 }
GregCr 0:e5420f1a8a1a 2225 if( text1 != NULL )
GregCr 0:e5420f1a8a1a 2226 {
GregCr 0:e5420f1a8a1a 2227 GraphObjectDraw( &( MenuObjects[lineId + 1] ), text1, NULL, false );
GregCr 0:e5420f1a8a1a 2228 }
GregCr 0:e5420f1a8a1a 2229 if( text2 != NULL )
GregCr 0:e5420f1a8a1a 2230 {
GregCr 0:e5420f1a8a1a 2231 GraphObjectDraw( &( MenuObjects[lineId + 2] ), text2, NULL, false );
GregCr 0:e5420f1a8a1a 2232 }
GregCr 0:e5420f1a8a1a 2233 }
GregCr 0:e5420f1a8a1a 2234