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:
Tue Sep 05 08:15:37 2017 +0000
Revision:
0:e5420f1a8a1a
Child:
1:b96176a4ccb8
Candidate Release

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