20 Gennaio 2022 LA0002

Dependencies:   mbed QEI DmTftLibrary

Committer:
mverdy
Date:
Thu Nov 08 10:14:39 2018 +0000
Revision:
20:626b92b70bf7
Child:
21:ab8027016a2c
Addition of missing modules to synchronize with v1.5.2

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mverdy 20:626b92b70bf7 1 /*
mverdy 20:626b92b70bf7 2 ______ _
mverdy 20:626b92b70bf7 3 / _____) _ | |
mverdy 20:626b92b70bf7 4 ( (____ _____ ____ _| |_ _____ ____| |__
mverdy 20:626b92b70bf7 5 \____ \| ___ | (_ _) ___ |/ ___) _ \
mverdy 20:626b92b70bf7 6 _____) ) ____| | | || |_| ____( (___| | | |
mverdy 20:626b92b70bf7 7 (______/|_____)_|_|_| \__)_____)\____)_| |_|
mverdy 20:626b92b70bf7 8 (C)2016 Semtech
mverdy 20:626b92b70bf7 9
mverdy 20:626b92b70bf7 10 Description: Display demo menus and manage touch sensor.
mverdy 20:626b92b70bf7 11
mverdy 20:626b92b70bf7 12 Maintainer: Gregory Cristian & Gilbert Menth
mverdy 20:626b92b70bf7 13 */
mverdy 20:626b92b70bf7 14
mverdy 20:626b92b70bf7 15 #include <stdio.h>
mverdy 20:626b92b70bf7 16 #include "mbed.h"
mverdy 20:626b92b70bf7 17 #include "Menu.h"
mverdy 20:626b92b70bf7 18 #include "DisplayDriver.h"
mverdy 20:626b92b70bf7 19 #include "Eeprom.h"
mverdy 20:626b92b70bf7 20 #include "DemoApplication.h"
mverdy 20:626b92b70bf7 21 #include "main.h"
mverdy 20:626b92b70bf7 22 #include "app_config.h"
mverdy 20:626b92b70bf7 23
mverdy 20:626b92b70bf7 24 #if defined(HAS_GPS_SENSOR)
mverdy 20:626b92b70bf7 25 #include "GpsMax7.h"
mverdy 20:626b92b70bf7 26
mverdy 20:626b92b70bf7 27 /*!
mverdy 20:626b92b70bf7 28 * \brief Pointer to GPS Data, will be updated when Max7GpsgetData( ) is called.
mverdy 20:626b92b70bf7 29 */
mverdy 20:626b92b70bf7 30 GpsStruct *thisGps;
mverdy 20:626b92b70bf7 31 #endif
mverdy 20:626b92b70bf7 32
mverdy 20:626b92b70bf7 33 #if defined(HAS_PROXIMITY_SENSOR)
mverdy 20:626b92b70bf7 34 #include "SX9306.h"
mverdy 20:626b92b70bf7 35 #endif
mverdy 20:626b92b70bf7 36
mverdy 20:626b92b70bf7 37
mverdy 20:626b92b70bf7 38 /*!
mverdy 20:626b92b70bf7 39 * \brief Maximum character count on the same line with function DrawText
mverdy 20:626b92b70bf7 40 * This include needed space for the outline (at the begin and the end of line).
mverdy 20:626b92b70bf7 41 * MAX_CHAR_PER_BTN is the same, but for a button.
mverdy 20:626b92b70bf7 42 */
mverdy 20:626b92b70bf7 43 #define MAX_CHAR_PER_LINE 28
mverdy 20:626b92b70bf7 44
mverdy 20:626b92b70bf7 45 #define SCALE_LINE_COUNT 5
mverdy 20:626b92b70bf7 46 #define RANGING_FULLSCALE_MIN 10
mverdy 20:626b92b70bf7 47 #define RANGING_FULLSCALE_MAX 30000
mverdy 20:626b92b70bf7 48
mverdy 20:626b92b70bf7 49 /*!
mverdy 20:626b92b70bf7 50 * \brief Bitmap of Semtech Logo stored here (copied from a C file).
mverdy 20:626b92b70bf7 51 */
mverdy 20:626b92b70bf7 52 extern uint8_t SemtechLogo[];
mverdy 20:626b92b70bf7 53
mverdy 20:626b92b70bf7 54
mverdy 20:626b92b70bf7 55 /*!
mverdy 20:626b92b70bf7 56 * \brief This ticker give the rythme to check X and Y coordinates of activated
mverdy 20:626b92b70bf7 57 * touched region (if pressed). CheckScreenFlag keep the status if Touchscreen
mverdy 20:626b92b70bf7 58 * has been checked or not, until checked.
mverdy 20:626b92b70bf7 59 */
mverdy 20:626b92b70bf7 60 Ticker CheckScreenTouch;
mverdy 20:626b92b70bf7 61 volatile bool CheckScreenFlag = false;
mverdy 20:626b92b70bf7 62
mverdy 20:626b92b70bf7 63 /*!
mverdy 20:626b92b70bf7 64 * \brief This ticker give the rythme to refresh a page when continuous info
mverdy 20:626b92b70bf7 65 * has to be printed in the same page.
mverdy 20:626b92b70bf7 66 */
mverdy 20:626b92b70bf7 67 Ticker CheckPageRefresh;
mverdy 20:626b92b70bf7 68 volatile bool PageRefresh = false;
mverdy 20:626b92b70bf7 69
mverdy 20:626b92b70bf7 70 /*!
mverdy 20:626b92b70bf7 71 * \brief This ticker give the rythme to avoid quick menu change
mverdy 20:626b92b70bf7 72 */
mverdy 20:626b92b70bf7 73 Ticker DebouncedScreenTouch;
mverdy 20:626b92b70bf7 74 volatile bool ScreenBeenDebounced = false;
mverdy 20:626b92b70bf7 75
mverdy 20:626b92b70bf7 76 /*!
mverdy 20:626b92b70bf7 77 * \brief List og graphical object in the application.
mverdy 20:626b92b70bf7 78 */
mverdy 20:626b92b70bf7 79 enum MenuObjectsId
mverdy 20:626b92b70bf7 80 {
mverdy 20:626b92b70bf7 81 PAGE_BORDER = 0,
mverdy 20:626b92b70bf7 82 TITLE_LINE,
mverdy 20:626b92b70bf7 83 TITLE_TEXT,
mverdy 20:626b92b70bf7 84 FIRM_LOGO,
mverdy 20:626b92b70bf7 85 BTN0_BORDER, // to accord with DrawActiveButton( ), each button should
mverdy 20:626b92b70bf7 86 BTN0_MENU_TEXT, // have consecutively MENU_TEXT (full large text),
mverdy 20:626b92b70bf7 87 BTN0_LABEL_TEXT, // LABEL_TEXT (left side of the button) and VALUE_TEXT
mverdy 20:626b92b70bf7 88 BTN0_VALUE_TEXT, // (right side of the button).
mverdy 20:626b92b70bf7 89 BTN1_BORDER,
mverdy 20:626b92b70bf7 90 BTN1_MENU_TEXT,
mverdy 20:626b92b70bf7 91 BTN1_LABEL_TEXT,
mverdy 20:626b92b70bf7 92 BTN1_VALUE_TEXT,
mverdy 20:626b92b70bf7 93 BTN2_BORDER,
mverdy 20:626b92b70bf7 94 BTN2_MENU_TEXT,
mverdy 20:626b92b70bf7 95 BTN2_LABEL_TEXT,
mverdy 20:626b92b70bf7 96 BTN2_VALUE_TEXT,
mverdy 20:626b92b70bf7 97 BTN3_BORDER,
mverdy 20:626b92b70bf7 98 BTN3_MENU_TEXT,
mverdy 20:626b92b70bf7 99 BTN3_LABEL_TEXT,
mverdy 20:626b92b70bf7 100 BTN3_VALUE_TEXT,
mverdy 20:626b92b70bf7 101 BTN4_BORDER,
mverdy 20:626b92b70bf7 102 BTN4_MENU_TEXT,
mverdy 20:626b92b70bf7 103 BTN4_LABEL_TEXT,
mverdy 20:626b92b70bf7 104 BTN4_VALUE_TEXT,
mverdy 20:626b92b70bf7 105 BTN5_BORDER,
mverdy 20:626b92b70bf7 106 BTN5_MENU_TEXT,
mverdy 20:626b92b70bf7 107 BTN5_LABEL_TEXT,
mverdy 20:626b92b70bf7 108 BTN5_VALUE_TEXT,
mverdy 20:626b92b70bf7 109 BTN6_BORDER,
mverdy 20:626b92b70bf7 110 BTN6_MENU_TEXT,
mverdy 20:626b92b70bf7 111 BTN6_LABEL_TEXT,
mverdy 20:626b92b70bf7 112 BTN6_VALUE_TEXT,
mverdy 20:626b92b70bf7 113 BTN7_BORDER,
mverdy 20:626b92b70bf7 114 BTN7_MENU_TEXT,
mverdy 20:626b92b70bf7 115 BTN8_BORDER,
mverdy 20:626b92b70bf7 116 BTN8_MENU_TEXT,
mverdy 20:626b92b70bf7 117 BTN9_BORDER,
mverdy 20:626b92b70bf7 118 BTN9_MENU_TEXT,
mverdy 20:626b92b70bf7 119 LINE0_TEXT,
mverdy 20:626b92b70bf7 120 LINE1_TEXT,
mverdy 20:626b92b70bf7 121 LINE2_TEXT,
mverdy 20:626b92b70bf7 122 LINE2_COL0_TEXT,
mverdy 20:626b92b70bf7 123 LINE2_COL1_TEXT,
mverdy 20:626b92b70bf7 124 LINE3_TEXT,
mverdy 20:626b92b70bf7 125 LINE3_COL0_TEXT,
mverdy 20:626b92b70bf7 126 LINE3_COL1_TEXT,
mverdy 20:626b92b70bf7 127 LINE3_COL2_TEXT,
mverdy 20:626b92b70bf7 128 LINE4_TEXT, // to accord with DrawText( ), each text line should
mverdy 20:626b92b70bf7 129 LINE4_COL0_TEXT, // have consecutively TEXT (full large text),
mverdy 20:626b92b70bf7 130 LINE4_COL1_TEXT, // COL0_TEXT (left side of the line), COL1_TEXT (center
mverdy 20:626b92b70bf7 131 LINE4_COL2_TEXT, // region of the line) and COL2_TEXT (right side of the
mverdy 20:626b92b70bf7 132 LINE5_COL0_TEXT, // line). COL0..2 are optionals if doesn't exist.
mverdy 20:626b92b70bf7 133 LINE5_COL1_TEXT,
mverdy 20:626b92b70bf7 134 LINE5_COL2_TEXT,
mverdy 20:626b92b70bf7 135 LINE6_COL0_TEXT,
mverdy 20:626b92b70bf7 136 LINE6_COL1_TEXT,
mverdy 20:626b92b70bf7 137 LINE6_COL2_TEXT,
mverdy 20:626b92b70bf7 138 LINE7_COL0_TEXT,
mverdy 20:626b92b70bf7 139 LINE7_COL1_TEXT,
mverdy 20:626b92b70bf7 140 LINE7_COL2_TEXT,
mverdy 20:626b92b70bf7 141 LINE8_COL0_TEXT,
mverdy 20:626b92b70bf7 142 LINE8_COL1_TEXT,
mverdy 20:626b92b70bf7 143 LINE9_COL0_TEXT,
mverdy 20:626b92b70bf7 144 LINE9_COL1_TEXT,
mverdy 20:626b92b70bf7 145 RNG_DIST_TEXT,
mverdy 20:626b92b70bf7 146 RNG_DIST_CIRCLE,
mverdy 20:626b92b70bf7 147 RNG_DS1_TEXT,
mverdy 20:626b92b70bf7 148 RNG_DS2_TEXT,
mverdy 20:626b92b70bf7 149 RNG_DS3_TEXT,
mverdy 20:626b92b70bf7 150 RNG_DS4_TEXT,
mverdy 20:626b92b70bf7 151 RNG_DS5_TEXT,
mverdy 20:626b92b70bf7 152 RNG_DS0_LINE,
mverdy 20:626b92b70bf7 153 RNG_DS1_LINE,
mverdy 20:626b92b70bf7 154 RNG_DS2_LINE,
mverdy 20:626b92b70bf7 155 RNG_DS3_LINE,
mverdy 20:626b92b70bf7 156 RNG_DS4_LINE,
mverdy 20:626b92b70bf7 157 RNG_DS5_LINE,
mverdy 20:626b92b70bf7 158 RNG_MST_SCR,
mverdy 20:626b92b70bf7 159 };
mverdy 20:626b92b70bf7 160 #define GRAPH_OBJECTS_COUNT 78
mverdy 20:626b92b70bf7 161 GraphObject_t MenuObjects[GRAPH_OBJECTS_COUNT] =
mverdy 20:626b92b70bf7 162 {
mverdy 20:626b92b70bf7 163 // { Id, Type, Xpos, Ypos, Height, Width, LineW, BackColor, FrontColor, DoFill, FillCol, Source, TouchActive }
mverdy 20:626b92b70bf7 164 { PAGE_BORDER, GO_RECTANGLE, 0, 0, 320, 240, 1, BACK_COLOR, PAGE_COLOR, false, NULL, NULL, false },
mverdy 20:626b92b70bf7 165 { TITLE_LINE, GO_LINE, 0, 30, 1, 240, 1, BACK_COLOR, PAGE_COLOR, false, NULL, NULL, false },
mverdy 20:626b92b70bf7 166 { TITLE_TEXT, GO_TEXT, 15, 9, NULL, 208, 1, BACK_COLOR, WHITE, false, NULL, NULL, false },
mverdy 20:626b92b70bf7 167 { FIRM_LOGO, GO_IMAGE, 20, 37, 95, 215, 1, BACK_COLOR, WHITE, false, NULL, SemtechLogo, false },
mverdy 20:626b92b70bf7 168 { BTN0_BORDER, GO_RECTANGLE, 10, 40, 30, 106, 1, BACK_COLOR, BUTTON_BORDER, false, NULL, NULL, false },
mverdy 20:626b92b70bf7 169 { BTN0_MENU_TEXT, GO_TEXT, 15, 48, NULL, 96, 1, BACK_COLOR, MENU_TEXT, false, NULL, NULL, false },
mverdy 20:626b92b70bf7 170 { BTN0_LABEL_TEXT, GO_TEXT, 15, 48, NULL, 32, 1, BACK_COLOR, TEXT_COLOR, false, NULL, NULL, false },
mverdy 20:626b92b70bf7 171 { BTN0_VALUE_TEXT, GO_TEXT, 47, 48, NULL, 64, 1, BACK_COLOR, TEXT_VALUE, false, NULL, NULL, false },
mverdy 20:626b92b70bf7 172 { BTN1_BORDER, GO_RECTANGLE, 10, 75, 30, 222, 1, BACK_COLOR, BUTTON_BORDER, false, NULL, NULL, false },
mverdy 20:626b92b70bf7 173 { BTN1_MENU_TEXT, GO_TEXT, 15, 83, NULL, 200, 1, BACK_COLOR, MENU_TEXT, false, NULL, NULL, false },
mverdy 20:626b92b70bf7 174 { BTN1_LABEL_TEXT, GO_TEXT, 15, 83, NULL, 64, 1, BACK_COLOR, TEXT_COLOR, false, NULL, NULL, false },
mverdy 20:626b92b70bf7 175 { BTN1_VALUE_TEXT, GO_TEXT, 79, 83, NULL, 152, 1, BACK_COLOR, TEXT_VALUE, false, NULL, NULL, false },
mverdy 20:626b92b70bf7 176 { BTN2_BORDER, GO_RECTANGLE, 10, 110, 30, 222, 1, BACK_COLOR, BUTTON_BORDER, false, NULL, NULL, false },
mverdy 20:626b92b70bf7 177 { BTN2_MENU_TEXT, GO_TEXT, 15, 118, NULL, 200, 1, BACK_COLOR, MENU_TEXT, false, NULL, NULL, false },
mverdy 20:626b92b70bf7 178 { BTN2_LABEL_TEXT, GO_TEXT, 15, 118, NULL, 64, 1, BACK_COLOR, TEXT_COLOR, false, NULL, NULL, false },
mverdy 20:626b92b70bf7 179 { BTN2_VALUE_TEXT, GO_TEXT, 79, 118, NULL, 152, 1, BACK_COLOR, TEXT_VALUE, false, NULL, NULL, false },
mverdy 20:626b92b70bf7 180 { BTN3_BORDER, GO_RECTANGLE, 10, 145, 30, 222, 1, BACK_COLOR, BUTTON_BORDER, false, NULL, NULL, false },
mverdy 20:626b92b70bf7 181 { BTN3_MENU_TEXT, GO_TEXT, 15, 153, NULL, 200, 1, BACK_COLOR, MENU_TEXT, false, NULL, NULL, false },
mverdy 20:626b92b70bf7 182 { BTN3_LABEL_TEXT, GO_TEXT, 15, 153, NULL, 64, 1, BACK_COLOR, TEXT_COLOR, false, NULL, NULL, false },
mverdy 20:626b92b70bf7 183 { BTN3_VALUE_TEXT, GO_TEXT, 79, 153, NULL, 152, 1, BACK_COLOR, TEXT_VALUE, false, NULL, NULL, false },
mverdy 20:626b92b70bf7 184 { BTN4_BORDER, GO_RECTANGLE, 10, 180, 30, 222, 1, BACK_COLOR, BUTTON_BORDER, false, NULL, NULL, false },
mverdy 20:626b92b70bf7 185 { BTN4_MENU_TEXT, GO_TEXT, 15, 188, NULL, 200, 1, BACK_COLOR, MENU_TEXT, false, NULL, NULL, false },
mverdy 20:626b92b70bf7 186 { BTN4_LABEL_TEXT, GO_TEXT, 15, 188, NULL, 64, 1, BACK_COLOR, TEXT_COLOR, false, NULL, NULL, false },
mverdy 20:626b92b70bf7 187 { BTN4_VALUE_TEXT, GO_TEXT, 79, 188, NULL, 152, 1, BACK_COLOR, TEXT_VALUE, false, NULL, NULL, false },
mverdy 20:626b92b70bf7 188 { BTN5_BORDER, GO_RECTANGLE, 10, 215, 30, 222, 1, BACK_COLOR, BUTTON_BORDER, false, NULL, NULL, false },
mverdy 20:626b92b70bf7 189 { BTN5_MENU_TEXT, GO_TEXT, 15, 223, NULL, 200, 1, BACK_COLOR, MENU_TEXT, false, NULL, NULL, false },
mverdy 20:626b92b70bf7 190 { BTN5_LABEL_TEXT, GO_TEXT, 15, 223, NULL, 64, 1, BACK_COLOR, TEXT_COLOR, false, NULL, NULL, false },
mverdy 20:626b92b70bf7 191 { BTN5_VALUE_TEXT, GO_TEXT, 79, 223, NULL, 152, 1, BACK_COLOR, TEXT_VALUE, false, NULL, NULL, false },
mverdy 20:626b92b70bf7 192 { BTN6_BORDER, GO_RECTANGLE, 10, 250, 30, 222, 1, BACK_COLOR, BUTTON_BORDER, false, NULL, NULL, false },
mverdy 20:626b92b70bf7 193 { BTN6_MENU_TEXT, GO_TEXT, 15, 258, NULL, 200, 1, BACK_COLOR, MENU_TEXT, false, NULL, NULL, false },
mverdy 20:626b92b70bf7 194 { BTN6_LABEL_TEXT, GO_TEXT, 15, 258, NULL, 64, 1, BACK_COLOR, TEXT_COLOR, false, NULL, NULL, false },
mverdy 20:626b92b70bf7 195 { BTN6_VALUE_TEXT, GO_TEXT, 79, 258, NULL, 152, 1, BACK_COLOR, TEXT_VALUE, false, NULL, NULL, false },
mverdy 20:626b92b70bf7 196 { BTN7_BORDER, GO_RECTANGLE, 10, 285, 30, 106, 1, BACK_COLOR, BUTTON_BORDER, false, NULL, NULL, false },
mverdy 20:626b92b70bf7 197 { BTN7_MENU_TEXT, GO_TEXT, 15, 293, NULL, 96, 1, BACK_COLOR, MENU_TEXT, false, NULL, NULL, false },
mverdy 20:626b92b70bf7 198 { BTN8_BORDER, GO_RECTANGLE, 125, 285, 30, 107, 1, BACK_COLOR, BUTTON_BORDER, false, NULL, NULL, false },
mverdy 20:626b92b70bf7 199 { BTN8_MENU_TEXT, GO_TEXT, 130, 293, NULL, 96, 1, BACK_COLOR, MENU_TEXT, false, NULL, NULL, false },
mverdy 20:626b92b70bf7 200 { BTN9_BORDER, GO_RECTANGLE, 125, 40, 30, 107, 1, BACK_COLOR, BUTTON_BORDER, false, NULL, NULL, false },
mverdy 20:626b92b70bf7 201 { BTN9_MENU_TEXT, GO_TEXT, 130, 48, NULL, 96, 1, BACK_COLOR, MENU_TEXT, false, NULL, NULL, false },
mverdy 20:626b92b70bf7 202 { LINE0_TEXT, GO_TEXT, 5, 80, NULL, 232, 1, BACK_COLOR, TEXT_COLOR, false, NULL, NULL, false },
mverdy 20:626b92b70bf7 203 { LINE1_TEXT, GO_TEXT, 5, 100, NULL, 232, 1, BACK_COLOR, TEXT_COLOR, false, NULL, NULL, false },
mverdy 20:626b92b70bf7 204 { LINE2_TEXT, GO_TEXT, 5, 120, NULL, 232, 1, BACK_COLOR, TEXT_COLOR, false, NULL, NULL, false },
mverdy 20:626b92b70bf7 205 { LINE2_COL0_TEXT, GO_TEXT, 5, 120, NULL, 104, 1, BACK_COLOR, TEXT_COLOR, false, NULL, NULL, false },
mverdy 20:626b92b70bf7 206 { LINE2_COL1_TEXT, GO_TEXT, 110, 120, NULL, 56, 1, BACK_COLOR, TEXT_COLOR, false, NULL, NULL, false },
mverdy 20:626b92b70bf7 207 { LINE3_TEXT, GO_TEXT, 5, 140, NULL, 232, 1, BACK_COLOR, TEXT_COLOR, false, NULL, NULL, false },
mverdy 20:626b92b70bf7 208 { LINE3_COL0_TEXT, GO_TEXT, 5, 140, NULL, 104, 1, BACK_COLOR, TEXT_COLOR, false, NULL, NULL, false },
mverdy 20:626b92b70bf7 209 { LINE3_COL1_TEXT, GO_TEXT, 110, 140, NULL, 56, 1, BACK_COLOR, TEXT_COLOR, false, NULL, NULL, false },
mverdy 20:626b92b70bf7 210 { LINE3_COL2_TEXT, GO_TEXT, 170, 140, NULL, 64, 1, BACK_COLOR, TEXT_COLOR, false, NULL, NULL, false },
mverdy 20:626b92b70bf7 211 { LINE4_TEXT, GO_TEXT, 5, 160, NULL, 232, 1, BACK_COLOR, TEXT_COLOR, false, NULL, NULL, false },
mverdy 20:626b92b70bf7 212 { LINE4_COL0_TEXT, GO_TEXT, 5, 160, NULL, 104, 1, BACK_COLOR, TEXT_COLOR, false, NULL, NULL, false },
mverdy 20:626b92b70bf7 213 { LINE4_COL1_TEXT, GO_TEXT, 110, 160, NULL, 56, 1, BACK_COLOR, TEXT_VALUE, false, NULL, NULL, false },
mverdy 20:626b92b70bf7 214 { LINE4_COL2_TEXT, GO_TEXT, 170, 160, NULL, 64, 1, BACK_COLOR, TEXT_VALUE, false, NULL, NULL, false },
mverdy 20:626b92b70bf7 215 { LINE5_COL0_TEXT, GO_TEXT, 5, 180, NULL, 104, 1, BACK_COLOR, TEXT_COLOR, false, NULL, NULL, false },
mverdy 20:626b92b70bf7 216 { LINE5_COL1_TEXT, GO_TEXT, 110, 180, NULL, 56, 1, BACK_COLOR, TEXT_VALUE, false, NULL, NULL, false },
mverdy 20:626b92b70bf7 217 { LINE5_COL2_TEXT, GO_TEXT, 170, 180, NULL, 64, 1, BACK_COLOR, TEXT_VALUE, false, NULL, NULL, false },
mverdy 20:626b92b70bf7 218 { LINE6_COL0_TEXT, GO_TEXT, 5, 200, NULL, 104, 1, BACK_COLOR, TEXT_COLOR, false, NULL, NULL, false },
mverdy 20:626b92b70bf7 219 { LINE6_COL1_TEXT, GO_TEXT, 110, 200, NULL, 56, 1, BACK_COLOR, TEXT_VALUE, false, NULL, NULL, false },
mverdy 20:626b92b70bf7 220 { LINE6_COL2_TEXT, GO_TEXT, 170, 200, NULL, 64, 1, BACK_COLOR, TEXT_VALUE, false, NULL, NULL, false },
mverdy 20:626b92b70bf7 221 { LINE7_COL0_TEXT, GO_TEXT, 5, 220, NULL, 104, 1, BACK_COLOR, TEXT_COLOR, false, NULL, NULL, false },
mverdy 20:626b92b70bf7 222 { LINE7_COL1_TEXT, GO_TEXT, 110, 220, NULL, 56, 1, BACK_COLOR, TEXT_VALUE, false, NULL, NULL, false },
mverdy 20:626b92b70bf7 223 { LINE7_COL2_TEXT, GO_TEXT, 170, 220, NULL, 64, 1, BACK_COLOR, TEXT_VALUE, false, NULL, NULL, false },
mverdy 20:626b92b70bf7 224 { LINE8_COL0_TEXT, GO_TEXT, 5, 240, NULL, 104, 1, BACK_COLOR, TEXT_COLOR, false, NULL, NULL, false },
mverdy 20:626b92b70bf7 225 { LINE8_COL1_TEXT, GO_TEXT, 110, 240, NULL, 56, 1, BACK_COLOR, TEXT_VALUE, false, NULL, NULL, false },
mverdy 20:626b92b70bf7 226 { LINE9_COL0_TEXT, GO_TEXT, 5, 260, NULL, 104, 1, BACK_COLOR, TEXT_COLOR, false, NULL, NULL, false },
mverdy 20:626b92b70bf7 227 { LINE9_COL1_TEXT, GO_TEXT, 110, 260, NULL, 56, 1, BACK_COLOR, TEXT_VALUE, false, NULL, NULL, false },
mverdy 20:626b92b70bf7 228 { RNG_DIST_TEXT, GO_TEXT, 63, 75, NULL, 120, 1, BACK_COLOR, TEXT_COLOR, false, NULL, NULL, false },
mverdy 20:626b92b70bf7 229 { RNG_DIST_CIRCLE, GO_CIRCLE, 175, 270, 10, 10, 1, BACK_COLOR, GRAY1, true, GRAY1, NULL, false },
mverdy 20:626b92b70bf7 230 { RNG_DS1_TEXT, GO_TEXT, 188, 230, NULL, 40, 1, BACK_COLOR, TEXT_COLOR, false, NULL, NULL, false },
mverdy 20:626b92b70bf7 231 { RNG_DS2_TEXT, GO_TEXT, 188, 198, NULL, 40, 1, BACK_COLOR, TEXT_COLOR, false, NULL, NULL, false },
mverdy 20:626b92b70bf7 232 { RNG_DS3_TEXT, GO_TEXT, 188, 166, NULL, 40, 1, BACK_COLOR, TEXT_COLOR, false, NULL, NULL, false },
mverdy 20:626b92b70bf7 233 { RNG_DS4_TEXT, GO_TEXT, 188, 134, NULL, 40, 1, BACK_COLOR, TEXT_COLOR, false, NULL, NULL, false },
mverdy 20:626b92b70bf7 234 { RNG_DS5_TEXT, GO_TEXT, 188, 102, NULL, 40, 1, BACK_COLOR, TEXT_COLOR, false, NULL, NULL, false },
mverdy 20:626b92b70bf7 235 { RNG_DS0_LINE, GO_LINE, 185, 110, 160, 1, 1, BACK_COLOR, CIRCLE_FCOLOR, false, NULL, NULL, false },
mverdy 20:626b92b70bf7 236 { RNG_DS1_LINE, GO_LINE, 183, 238, 1, 5, 1, BACK_COLOR, CIRCLE_FCOLOR, false, NULL, NULL, false },
mverdy 20:626b92b70bf7 237 { RNG_DS2_LINE, GO_LINE, 183, 206, 1, 5, 1, BACK_COLOR, CIRCLE_FCOLOR, false, NULL, NULL, false },
mverdy 20:626b92b70bf7 238 { RNG_DS3_LINE, GO_LINE, 183, 174, 1, 5, 1, BACK_COLOR, CIRCLE_FCOLOR, false, NULL, NULL, false },
mverdy 20:626b92b70bf7 239 { RNG_DS4_LINE, GO_LINE, 183, 142, 1, 5, 1, BACK_COLOR, CIRCLE_FCOLOR, false, NULL, NULL, false },
mverdy 20:626b92b70bf7 240 { RNG_DS5_LINE, GO_LINE, 183, 110, 1, 5, 1, BACK_COLOR, CIRCLE_FCOLOR, false, NULL, NULL, false },
mverdy 20:626b92b70bf7 241 { RNG_MST_SCR, GO_RECTANGLE, 1, 70, 214, 238, 1, BACK_COLOR, BACK_COLOR, false, NULL, NULL, false },
mverdy 20:626b92b70bf7 242 };
mverdy 20:626b92b70bf7 243
mverdy 20:626b92b70bf7 244 /*!
mverdy 20:626b92b70bf7 245 * \brief DrawText( ) need char* to display a text. It can display until
mverdy 20:626b92b70bf7 246 * 3 different texts on the same line. To avoid recursive use of the same
mverdy 20:626b92b70bf7 247 * ressource, 3 temporary string are declared.
mverdy 20:626b92b70bf7 248 */
mverdy 20:626b92b70bf7 249 char StringText[MAX_CHAR_PER_LINE + 1]; // don't forget the /0 (end of string)
mverdy 20:626b92b70bf7 250 char StringText2[MAX_CHAR_PER_LINE + 1];
mverdy 20:626b92b70bf7 251 char StringText3[MAX_CHAR_PER_LINE + 1];
mverdy 20:626b92b70bf7 252
mverdy 20:626b92b70bf7 253 /*!
mverdy 20:626b92b70bf7 254 * \brief CurrentPage store current displayed page (cf.: list of availlable
mverdy 20:626b92b70bf7 255 * pages in Menu.h). PeviousPage is used only when navigate through "Radio
mverdy 20:626b92b70bf7 256 * Config" to be able to restore the page before "Radio Congig", witch can be
mverdy 20:626b92b70bf7 257 * PingPong, PER or START_PAGE. The goal is to speed menu navigation.
mverdy 20:626b92b70bf7 258 */
mverdy 20:626b92b70bf7 259 static uint8_t CurrentPage = START_PAGE;
mverdy 20:626b92b70bf7 260 static uint8_t PreviousPage = START_PAGE;
mverdy 20:626b92b70bf7 261
mverdy 20:626b92b70bf7 262 /*!
mverdy 20:626b92b70bf7 263 * \brief In "Radio Config Freq", we can update the central frequency. To avoid
mverdy 20:626b92b70bf7 264 * keyboard, we use (+) et (-) keys. CurrentFreqBase is the offset to be applied
mverdy 20:626b92b70bf7 265 * when we increase or decrease the frequency.
mverdy 20:626b92b70bf7 266 */
mverdy 20:626b92b70bf7 267 static FreqBase CurrentFreqBase = FB100K;
mverdy 20:626b92b70bf7 268
mverdy 20:626b92b70bf7 269
mverdy 20:626b92b70bf7 270 void CheckScreen( void );
mverdy 20:626b92b70bf7 271 void CheckRefresh( void );
mverdy 20:626b92b70bf7 272 void DebouncedScreen( void );
mverdy 20:626b92b70bf7 273 void DrawActiveButton( uint8_t buttonId, uint8_t* text1, uint8_t* text2 );
mverdy 20:626b92b70bf7 274 void ButtonChangeText( uint8_t buttonId, uint8_t* text1, uint8_t* text2 );
mverdy 20:626b92b70bf7 275 void RemoveButton( uint8_t buttonId );
mverdy 20:626b92b70bf7 276 void DrawText( uint8_t lineId, uint8_t* text0, uint8_t* text1, uint8_t* text2 );
mverdy 20:626b92b70bf7 277
mverdy 20:626b92b70bf7 278
mverdy 20:626b92b70bf7 279 void MenuInit( void )
mverdy 20:626b92b70bf7 280 {
mverdy 20:626b92b70bf7 281 DisplayDriverInit( );
mverdy 20:626b92b70bf7 282 GraphObjectDraw( &( MenuObjects[PAGE_BORDER] ), NULL, false, false );
mverdy 20:626b92b70bf7 283 GraphObjectDraw( &( MenuObjects[TITLE_LINE] ), NULL, false, false );
mverdy 20:626b92b70bf7 284 MenuSetPage( START_PAGE );
mverdy 20:626b92b70bf7 285 CheckScreenTouch.attach_us( &CheckScreen, 100000 ); // every 100 ms
mverdy 20:626b92b70bf7 286
mverdy 20:626b92b70bf7 287 // Page Utilities only for GPS and proximity sensor :
mverdy 20:626b92b70bf7 288 CheckPageRefresh.attach_us( &CheckRefresh, 1000000 ); // every 1 s
mverdy 20:626b92b70bf7 289 }
mverdy 20:626b92b70bf7 290
mverdy 20:626b92b70bf7 291 uint8_t MenuHandler( bool refresh )
mverdy 20:626b92b70bf7 292 {
mverdy 20:626b92b70bf7 293 uint8_t graphObjectTouched = 0xFF;
mverdy 20:626b92b70bf7 294
mverdy 20:626b92b70bf7 295 if( ( CheckScreenFlag == true ) && ( Eeprom.EepromData.DemoSettings.RngStatus != RNG_PROCESS ) )
mverdy 20:626b92b70bf7 296 {
mverdy 20:626b92b70bf7 297 if( ScreenBeenDebounced == false )
mverdy 20:626b92b70bf7 298 {
mverdy 20:626b92b70bf7 299 ScreenBeenDebounced = true;
mverdy 20:626b92b70bf7 300 CheckScreenFlag = false;
mverdy 20:626b92b70bf7 301 DebouncedScreenTouch.attach_us( &DebouncedScreen, 150000 ); // every 150 ms
mverdy 20:626b92b70bf7 302 GraphObjectTouched( MenuObjects, GRAPH_OBJECTS_COUNT, &graphObjectTouched );
mverdy 20:626b92b70bf7 303 }
mverdy 20:626b92b70bf7 304 }
mverdy 20:626b92b70bf7 305 else
mverdy 20:626b92b70bf7 306 {
mverdy 20:626b92b70bf7 307 // in the Utilities page, GPS infos must be refresh each second
mverdy 20:626b92b70bf7 308 if( CurrentPage == PAGE_UTILITIES )
mverdy 20:626b92b70bf7 309 {
mverdy 20:626b92b70bf7 310 if( PageRefresh == true )
mverdy 20:626b92b70bf7 311 {
mverdy 20:626b92b70bf7 312 PageRefresh = false;
mverdy 20:626b92b70bf7 313 refresh = true;
mverdy 20:626b92b70bf7 314 }
mverdy 20:626b92b70bf7 315 }
mverdy 20:626b92b70bf7 316 }
mverdy 20:626b92b70bf7 317
mverdy 20:626b92b70bf7 318 if( refresh == true )
mverdy 20:626b92b70bf7 319 {
mverdy 20:626b92b70bf7 320 MenuSetPage( CurrentPage );
mverdy 20:626b92b70bf7 321 }
mverdy 20:626b92b70bf7 322 else if( ( graphObjectTouched != 0xFF ) || ( refresh == true ) )
mverdy 20:626b92b70bf7 323 {
mverdy 20:626b92b70bf7 324 switch( CurrentPage )
mverdy 20:626b92b70bf7 325 {
mverdy 20:626b92b70bf7 326 case START_PAGE:
mverdy 20:626b92b70bf7 327 if( graphObjectTouched == BTN2_BORDER )
mverdy 20:626b92b70bf7 328 {
mverdy 20:626b92b70bf7 329 Eeprom.EepromData.DemoSettings.HoldDemo = true;
mverdy 20:626b92b70bf7 330 if( Eeprom.EepromData.DemoSettings.ModulationType == PACKET_TYPE_RANGING )
mverdy 20:626b92b70bf7 331 {
mverdy 20:626b92b70bf7 332 Eeprom.EepromData.DemoSettings.ModulationType = PACKET_TYPE_LORA;
mverdy 20:626b92b70bf7 333 }
mverdy 20:626b92b70bf7 334 EepromLoadSettings( ( RadioPacketTypes_t )Eeprom.EepromData.DemoSettings.ModulationType );
mverdy 20:626b92b70bf7 335 MenuSetPage( PAGE_PING_PONG );
mverdy 20:626b92b70bf7 336 }
mverdy 20:626b92b70bf7 337 else if( graphObjectTouched == BTN3_BORDER )
mverdy 20:626b92b70bf7 338 {
mverdy 20:626b92b70bf7 339 Eeprom.EepromData.DemoSettings.HoldDemo = true;
mverdy 20:626b92b70bf7 340 if( Eeprom.EepromData.DemoSettings.ModulationType == PACKET_TYPE_RANGING )
mverdy 20:626b92b70bf7 341 {
mverdy 20:626b92b70bf7 342 Eeprom.EepromData.DemoSettings.ModulationType = PACKET_TYPE_LORA;
mverdy 20:626b92b70bf7 343 }
mverdy 20:626b92b70bf7 344 EepromLoadSettings( ( RadioPacketTypes_t )Eeprom.EepromData.DemoSettings.ModulationType );
mverdy 20:626b92b70bf7 345 MenuSetPage( PAGE_PER );
mverdy 20:626b92b70bf7 346 }
mverdy 20:626b92b70bf7 347 else if( graphObjectTouched == BTN4_BORDER )
mverdy 20:626b92b70bf7 348 {
mverdy 20:626b92b70bf7 349 Eeprom.EepromData.DemoSettings.HoldDemo = true;
mverdy 20:626b92b70bf7 350 EepromLoadSettings( PACKET_TYPE_RANGING );
mverdy 20:626b92b70bf7 351 if( Eeprom.EepromData.DemoSettings.Entity == MASTER )
mverdy 20:626b92b70bf7 352 {
mverdy 20:626b92b70bf7 353 MenuSetPage( PAGE_RANGING_MASTER );
mverdy 20:626b92b70bf7 354 }
mverdy 20:626b92b70bf7 355 else
mverdy 20:626b92b70bf7 356 {
mverdy 20:626b92b70bf7 357 MenuSetPage( PAGE_RANGING_SLAVE );
mverdy 20:626b92b70bf7 358 }
mverdy 20:626b92b70bf7 359 }
mverdy 20:626b92b70bf7 360 else if( graphObjectTouched == BTN5_BORDER )
mverdy 20:626b92b70bf7 361 {
mverdy 20:626b92b70bf7 362 EepromLoadSettings( ( RadioPacketTypes_t )Eeprom.EepromData.DemoSettings.ModulationType );
mverdy 20:626b92b70bf7 363 MenuSetPage( PAGE_RADIO_TEST );
mverdy 20:626b92b70bf7 364 }
mverdy 20:626b92b70bf7 365 else if( graphObjectTouched == BTN6_BORDER )
mverdy 20:626b92b70bf7 366 {
mverdy 20:626b92b70bf7 367 EepromLoadSettings( ( RadioPacketTypes_t )Eeprom.EepromData.DemoSettings.ModulationType );
mverdy 20:626b92b70bf7 368 MenuSetPage( PAGE_RADIO_PARAM );
mverdy 20:626b92b70bf7 369 }
mverdy 20:626b92b70bf7 370 else if( graphObjectTouched == BTN7_BORDER )
mverdy 20:626b92b70bf7 371 {
mverdy 20:626b92b70bf7 372 MenuSetPage( PAGE_UTILITIES );
mverdy 20:626b92b70bf7 373 }
mverdy 20:626b92b70bf7 374 break;
mverdy 20:626b92b70bf7 375
mverdy 20:626b92b70bf7 376 case PAGE_PING_PONG:
mverdy 20:626b92b70bf7 377 if( graphObjectTouched == BTN0_BORDER )
mverdy 20:626b92b70bf7 378 {
mverdy 20:626b92b70bf7 379 ButtonChangeText( BTN8_BORDER, ( uint8_t* )" START", NULL );
mverdy 20:626b92b70bf7 380 if( Eeprom.EepromData.DemoSettings.Entity == MASTER )
mverdy 20:626b92b70bf7 381 {
mverdy 20:626b92b70bf7 382 Eeprom.EepromData.DemoSettings.Entity = SLAVE;
mverdy 20:626b92b70bf7 383 ButtonChangeText( BTN0_BORDER, ( uint8_t* )" SLAVE", NULL );
mverdy 20:626b92b70bf7 384 DrawText( LINE3_COL0_TEXT, NULL, NULL, ( uint8_t* )" " );
mverdy 20:626b92b70bf7 385 DrawText( LINE4_COL0_TEXT, NULL, NULL, ( uint8_t* )" " );
mverdy 20:626b92b70bf7 386 DrawText( LINE5_COL0_TEXT, NULL, NULL, ( uint8_t* )" " );
mverdy 20:626b92b70bf7 387 DrawText( LINE6_COL0_TEXT, NULL, NULL, ( uint8_t* )" " );
mverdy 20:626b92b70bf7 388 DrawText( LINE7_COL0_TEXT, NULL, NULL, ( uint8_t* )" " );
mverdy 20:626b92b70bf7 389 }
mverdy 20:626b92b70bf7 390 else
mverdy 20:626b92b70bf7 391 {
mverdy 20:626b92b70bf7 392 Eeprom.EepromData.DemoSettings.Entity = MASTER;
mverdy 20:626b92b70bf7 393 ButtonChangeText( BTN0_BORDER, ( uint8_t* )" MASTER", NULL );
mverdy 20:626b92b70bf7 394 DrawText( LINE3_COL0_TEXT, NULL, NULL, ( uint8_t* )"MASTER" );
mverdy 20:626b92b70bf7 395 }
mverdy 20:626b92b70bf7 396 Eeprom.EepromData.DemoSettings.HoldDemo = true;
mverdy 20:626b92b70bf7 397 EepromSaveSettings( DEMO_SETTINGS );
mverdy 20:626b92b70bf7 398 MenuSetPage( PAGE_PING_PONG );
mverdy 20:626b92b70bf7 399 }
mverdy 20:626b92b70bf7 400 else if( graphObjectTouched == BTN7_BORDER )
mverdy 20:626b92b70bf7 401 {
mverdy 20:626b92b70bf7 402 StopDemoApplication( );
mverdy 20:626b92b70bf7 403 Eeprom.EepromData.DemoSettings.HoldDemo = true;
mverdy 20:626b92b70bf7 404 PreviousPage = START_PAGE; // clear Previous page
mverdy 20:626b92b70bf7 405 MenuSetPage( START_PAGE );
mverdy 20:626b92b70bf7 406 }
mverdy 20:626b92b70bf7 407 else if( graphObjectTouched == BTN8_BORDER )
mverdy 20:626b92b70bf7 408 {
mverdy 20:626b92b70bf7 409 if( Eeprom.EepromData.DemoSettings.HoldDemo == true )
mverdy 20:626b92b70bf7 410 {
mverdy 20:626b92b70bf7 411 Eeprom.EepromData.DemoSettings.HoldDemo = false;
mverdy 20:626b92b70bf7 412 ButtonChangeText( BTN8_BORDER, ( uint8_t* )" STOP", NULL );
mverdy 20:626b92b70bf7 413 Eeprom.EepromData.DemoSettings.CntPacketTx = 0;
mverdy 20:626b92b70bf7 414 Eeprom.EepromData.DemoSettings.CntPacketRxOK = 0;
mverdy 20:626b92b70bf7 415 Eeprom.EepromData.DemoSettings.CntPacketRxOKSlave = 0;
mverdy 20:626b92b70bf7 416 Eeprom.EepromData.DemoSettings.CntPacketRxKO = 0;
mverdy 20:626b92b70bf7 417 Eeprom.EepromData.DemoSettings.CntPacketRxKOSlave = 0;
mverdy 20:626b92b70bf7 418 Eeprom.EepromData.DemoSettings.RxTimeOutCount = 0;
mverdy 20:626b92b70bf7 419 StopDemoApplication( );
mverdy 20:626b92b70bf7 420 RunDemoApplicationPingPong( );
mverdy 20:626b92b70bf7 421 }
mverdy 20:626b92b70bf7 422 else
mverdy 20:626b92b70bf7 423 {
mverdy 20:626b92b70bf7 424 Eeprom.EepromData.DemoSettings.HoldDemo = true;
mverdy 20:626b92b70bf7 425 ButtonChangeText( BTN8_BORDER, ( uint8_t* )" START", NULL );
mverdy 20:626b92b70bf7 426 StopDemoApplication( );
mverdy 20:626b92b70bf7 427 wait_ms( 200 ); // debouncing of the touch screen
mverdy 20:626b92b70bf7 428 }
mverdy 20:626b92b70bf7 429 }
mverdy 20:626b92b70bf7 430 else if( graphObjectTouched == BTN9_BORDER )
mverdy 20:626b92b70bf7 431 {
mverdy 20:626b92b70bf7 432 Eeprom.EepromData.DemoSettings.HoldDemo = true;
mverdy 20:626b92b70bf7 433 StopDemoApplication( );
mverdy 20:626b92b70bf7 434 // "CANCEL" or "OK & SAVE" button of PAGE_RADIO_PARAM use
mverdy 20:626b92b70bf7 435 // PreviousPage to set next page. Speed up the navigation.
mverdy 20:626b92b70bf7 436 PreviousPage = PAGE_PING_PONG;
mverdy 20:626b92b70bf7 437 MenuSetPage( PAGE_RADIO_PARAM );
mverdy 20:626b92b70bf7 438 }
mverdy 20:626b92b70bf7 439 else if( refresh == true )
mverdy 20:626b92b70bf7 440 {
mverdy 20:626b92b70bf7 441 MenuSetPage( PAGE_PING_PONG );
mverdy 20:626b92b70bf7 442 }
mverdy 20:626b92b70bf7 443 break;
mverdy 20:626b92b70bf7 444
mverdy 20:626b92b70bf7 445 case PAGE_PER:
mverdy 20:626b92b70bf7 446 if( graphObjectTouched == BTN0_BORDER )
mverdy 20:626b92b70bf7 447 {
mverdy 20:626b92b70bf7 448 ButtonChangeText( BTN8_BORDER, ( uint8_t* )" START", NULL );
mverdy 20:626b92b70bf7 449 if( Eeprom.EepromData.DemoSettings.Entity == MASTER )
mverdy 20:626b92b70bf7 450 {
mverdy 20:626b92b70bf7 451 Eeprom.EepromData.DemoSettings.Entity = SLAVE;
mverdy 20:626b92b70bf7 452 ButtonChangeText( BTN0_BORDER, ( uint8_t* )" SLAVE", NULL );
mverdy 20:626b92b70bf7 453 DrawText( LINE4_COL0_TEXT, ( uint8_t* )"Rx OK", NULL, NULL );
mverdy 20:626b92b70bf7 454 DrawText( LINE5_COL0_TEXT, ( uint8_t* )"Rx KO", NULL, NULL );
mverdy 20:626b92b70bf7 455 DrawText( LINE6_COL0_TEXT, ( uint8_t* )"PER", NULL, NULL );
mverdy 20:626b92b70bf7 456 DrawText( LINE8_COL0_TEXT, ( uint8_t* )"Last Rssi", NULL, NULL );
mverdy 20:626b92b70bf7 457 DrawText( LINE9_COL0_TEXT, ( uint8_t* )"Last SNR", NULL, NULL );
mverdy 20:626b92b70bf7 458 }
mverdy 20:626b92b70bf7 459 else
mverdy 20:626b92b70bf7 460 {
mverdy 20:626b92b70bf7 461 Eeprom.EepromData.DemoSettings.Entity = MASTER;
mverdy 20:626b92b70bf7 462 ButtonChangeText( BTN0_BORDER, ( uint8_t* )" MASTER", NULL );
mverdy 20:626b92b70bf7 463 DrawText( LINE4_COL0_TEXT, ( uint8_t* )"Transmitted", ( uint8_t* )GetMenuDemoNumSentPacket( ), NULL );
mverdy 20:626b92b70bf7 464 DrawText( LINE5_COL0_TEXT, ( uint8_t* )" ", ( uint8_t* )" ", NULL );
mverdy 20:626b92b70bf7 465 DrawText( LINE6_COL0_TEXT, ( uint8_t* )" ", ( uint8_t* )" ", NULL );
mverdy 20:626b92b70bf7 466 DrawText( LINE8_COL0_TEXT, ( uint8_t* )" ", ( uint8_t* )" ", NULL );
mverdy 20:626b92b70bf7 467 DrawText( LINE9_COL0_TEXT, ( uint8_t* )" ", ( uint8_t* )" ", NULL );
mverdy 20:626b92b70bf7 468 }
mverdy 20:626b92b70bf7 469 Eeprom.EepromData.DemoSettings.HoldDemo = true;
mverdy 20:626b92b70bf7 470 EepromSaveSettings( DEMO_SETTINGS );
mverdy 20:626b92b70bf7 471 MenuSetPage( PAGE_PER );
mverdy 20:626b92b70bf7 472 }
mverdy 20:626b92b70bf7 473 else if( graphObjectTouched == BTN7_BORDER )
mverdy 20:626b92b70bf7 474 {
mverdy 20:626b92b70bf7 475 Eeprom.EepromData.DemoSettings.HoldDemo = true;
mverdy 20:626b92b70bf7 476 PreviousPage = START_PAGE; // clear Previous page
mverdy 20:626b92b70bf7 477 MenuSetPage( START_PAGE );
mverdy 20:626b92b70bf7 478 }
mverdy 20:626b92b70bf7 479 else if( graphObjectTouched == BTN8_BORDER )
mverdy 20:626b92b70bf7 480 {
mverdy 20:626b92b70bf7 481 if( Eeprom.EepromData.DemoSettings.HoldDemo == true )
mverdy 20:626b92b70bf7 482 {
mverdy 20:626b92b70bf7 483 Eeprom.EepromData.DemoSettings.HoldDemo = false;
mverdy 20:626b92b70bf7 484 ButtonChangeText( BTN8_BORDER, ( uint8_t* )" STOP", NULL );
mverdy 20:626b92b70bf7 485 StopDemoApplication( );
mverdy 20:626b92b70bf7 486 Eeprom.EepromData.DemoSettings.CntPacketTx = 0;
mverdy 20:626b92b70bf7 487 Eeprom.EepromData.DemoSettings.CntPacketRxOK = 0;
mverdy 20:626b92b70bf7 488 Eeprom.EepromData.DemoSettings.CntPacketRxKO = 0;
mverdy 20:626b92b70bf7 489 Eeprom.EepromData.DemoSettings.RxTimeOutCount = 0;
mverdy 20:626b92b70bf7 490 RunDemoApplicationPer( );
mverdy 20:626b92b70bf7 491 }
mverdy 20:626b92b70bf7 492 else
mverdy 20:626b92b70bf7 493 {
mverdy 20:626b92b70bf7 494 Eeprom.EepromData.DemoSettings.HoldDemo = true;
mverdy 20:626b92b70bf7 495 ButtonChangeText( BTN8_BORDER, ( uint8_t* )" START", NULL );
mverdy 20:626b92b70bf7 496 StopDemoApplication( );
mverdy 20:626b92b70bf7 497 wait_ms( 200 ); // debouncing of the touch screen
mverdy 20:626b92b70bf7 498 }
mverdy 20:626b92b70bf7 499 }
mverdy 20:626b92b70bf7 500 else if( graphObjectTouched == BTN9_BORDER )
mverdy 20:626b92b70bf7 501 {
mverdy 20:626b92b70bf7 502 Eeprom.EepromData.DemoSettings.HoldDemo = true;
mverdy 20:626b92b70bf7 503 StopDemoApplication( );
mverdy 20:626b92b70bf7 504 // "CANCEL" or "OK & SAVE" button of PAGE_RADIO_PARAM use
mverdy 20:626b92b70bf7 505 // PreviousPage to set next page. Speed up the navigation.
mverdy 20:626b92b70bf7 506 PreviousPage = PAGE_PER;
mverdy 20:626b92b70bf7 507 MenuSetPage( PAGE_RADIO_PARAM );
mverdy 20:626b92b70bf7 508 }
mverdy 20:626b92b70bf7 509 else if( refresh == true )
mverdy 20:626b92b70bf7 510 {
mverdy 20:626b92b70bf7 511 MenuSetPage( PAGE_PER );
mverdy 20:626b92b70bf7 512 }
mverdy 20:626b92b70bf7 513 break;
mverdy 20:626b92b70bf7 514
mverdy 20:626b92b70bf7 515 case PAGE_RANGING_MASTER:
mverdy 20:626b92b70bf7 516 if( graphObjectTouched == BTN0_BORDER )
mverdy 20:626b92b70bf7 517 {
mverdy 20:626b92b70bf7 518 Eeprom.EepromData.DemoSettings.Entity = SLAVE;
mverdy 20:626b92b70bf7 519 ButtonChangeText( BTN0_BORDER, ( uint8_t* )" SLAVE", NULL );
mverdy 20:626b92b70bf7 520 Eeprom.EepromData.DemoSettings.HoldDemo = true;
mverdy 20:626b92b70bf7 521 StopDemoApplication( );
mverdy 20:626b92b70bf7 522 EepromSaveSettings( DEMO_SETTINGS );
mverdy 20:626b92b70bf7 523 MenuSetPage( PAGE_RANGING_SLAVE );
mverdy 20:626b92b70bf7 524 }
mverdy 20:626b92b70bf7 525 else if( graphObjectTouched == BTN7_BORDER )
mverdy 20:626b92b70bf7 526 {
mverdy 20:626b92b70bf7 527 StopDemoApplication( );
mverdy 20:626b92b70bf7 528 Eeprom.EepromData.DemoSettings.HoldDemo = true;
mverdy 20:626b92b70bf7 529 PreviousPage = START_PAGE; // clear Previous page
mverdy 20:626b92b70bf7 530 MenuSetPage( START_PAGE );
mverdy 20:626b92b70bf7 531 }
mverdy 20:626b92b70bf7 532 else if( graphObjectTouched == BTN8_BORDER )
mverdy 20:626b92b70bf7 533 {
mverdy 20:626b92b70bf7 534 if( Eeprom.EepromData.DemoSettings.HoldDemo == true )
mverdy 20:626b92b70bf7 535 {
mverdy 20:626b92b70bf7 536 Eeprom.EepromData.DemoSettings.HoldDemo = false;
mverdy 20:626b92b70bf7 537 ButtonChangeText( BTN8_BORDER, ( uint8_t* )" PROCESS..", NULL );
mverdy 20:626b92b70bf7 538 }
mverdy 20:626b92b70bf7 539 else
mverdy 20:626b92b70bf7 540 {
mverdy 20:626b92b70bf7 541 Eeprom.EepromData.DemoSettings.HoldDemo = true;
mverdy 20:626b92b70bf7 542 ButtonChangeText( BTN8_BORDER, ( uint8_t* )" REFRESH", NULL );
mverdy 20:626b92b70bf7 543 StopDemoApplication( );
mverdy 20:626b92b70bf7 544 }
mverdy 20:626b92b70bf7 545 }
mverdy 20:626b92b70bf7 546 else if( graphObjectTouched == BTN9_BORDER )
mverdy 20:626b92b70bf7 547 {
mverdy 20:626b92b70bf7 548 Eeprom.EepromData.DemoSettings.HoldDemo = true;
mverdy 20:626b92b70bf7 549 // "SETTINGS" button can occure without "START"/"STOP" button
mverdy 20:626b92b70bf7 550 // also "SETTINGS" should stop the demo
mverdy 20:626b92b70bf7 551 StopDemoApplication( );
mverdy 20:626b92b70bf7 552 // "CANCEL" or "OK & SAVE" button of PAGE_RADIO_PARAM use
mverdy 20:626b92b70bf7 553 // PreviousPage to set next page. Speed up the navigation.
mverdy 20:626b92b70bf7 554 PreviousPage = PAGE_RANGING_MASTER;
mverdy 20:626b92b70bf7 555 MenuSetPage( PAGE_RADIO_PARAM );
mverdy 20:626b92b70bf7 556 }
mverdy 20:626b92b70bf7 557 else if( graphObjectTouched == RNG_MST_SCR )
mverdy 20:626b92b70bf7 558 {
mverdy 20:626b92b70bf7 559 // screen touched .. launch new measure
mverdy 20:626b92b70bf7 560 if( Eeprom.EepromData.DemoSettings.HoldDemo == true )
mverdy 20:626b92b70bf7 561 {
mverdy 20:626b92b70bf7 562 Eeprom.EepromData.DemoSettings.HoldDemo = false;
mverdy 20:626b92b70bf7 563 ButtonChangeText( BTN8_BORDER, ( uint8_t* )" PROCESS..", NULL );
mverdy 20:626b92b70bf7 564 }
mverdy 20:626b92b70bf7 565 else
mverdy 20:626b92b70bf7 566 {
mverdy 20:626b92b70bf7 567 Eeprom.EepromData.DemoSettings.HoldDemo = true;
mverdy 20:626b92b70bf7 568 ButtonChangeText( BTN8_BORDER, ( uint8_t* )" REFRESH", NULL );
mverdy 20:626b92b70bf7 569 StopDemoApplication( );
mverdy 20:626b92b70bf7 570 }
mverdy 20:626b92b70bf7 571 }
mverdy 20:626b92b70bf7 572 else if( refresh == true )
mverdy 20:626b92b70bf7 573 {
mverdy 20:626b92b70bf7 574 MenuSetPage( PAGE_RANGING_MASTER );
mverdy 20:626b92b70bf7 575 }
mverdy 20:626b92b70bf7 576 break;
mverdy 20:626b92b70bf7 577
mverdy 20:626b92b70bf7 578 case PAGE_RANGING_SLAVE:
mverdy 20:626b92b70bf7 579 if( graphObjectTouched == BTN0_BORDER )
mverdy 20:626b92b70bf7 580 {
mverdy 20:626b92b70bf7 581 Eeprom.EepromData.DemoSettings.Entity = MASTER;
mverdy 20:626b92b70bf7 582 ButtonChangeText( BTN0_BORDER, ( uint8_t* )" MASTER", NULL );
mverdy 20:626b92b70bf7 583 Eeprom.EepromData.DemoSettings.HoldDemo = true;
mverdy 20:626b92b70bf7 584 StopDemoApplication( );
mverdy 20:626b92b70bf7 585 EepromSaveSettings( DEMO_SETTINGS );
mverdy 20:626b92b70bf7 586 MenuSetPage( PAGE_RANGING_MASTER );
mverdy 20:626b92b70bf7 587 }
mverdy 20:626b92b70bf7 588 else if( graphObjectTouched == BTN7_BORDER )
mverdy 20:626b92b70bf7 589 {
mverdy 20:626b92b70bf7 590 StopDemoApplication( );
mverdy 20:626b92b70bf7 591 Eeprom.EepromData.DemoSettings.HoldDemo = true;
mverdy 20:626b92b70bf7 592 PreviousPage = START_PAGE; // clear Previous page
mverdy 20:626b92b70bf7 593 MenuSetPage( START_PAGE );
mverdy 20:626b92b70bf7 594 }
mverdy 20:626b92b70bf7 595 else if( graphObjectTouched == BTN8_BORDER )
mverdy 20:626b92b70bf7 596 {
mverdy 20:626b92b70bf7 597 if( Eeprom.EepromData.DemoSettings.HoldDemo == true )
mverdy 20:626b92b70bf7 598 {
mverdy 20:626b92b70bf7 599 Eeprom.EepromData.DemoSettings.HoldDemo = false;
mverdy 20:626b92b70bf7 600 ButtonChangeText( BTN8_BORDER, ( uint8_t* )" STOP", NULL );
mverdy 20:626b92b70bf7 601 StopDemoApplication( );
mverdy 20:626b92b70bf7 602 RunDemoApplicationRanging( );
mverdy 20:626b92b70bf7 603 }
mverdy 20:626b92b70bf7 604 else
mverdy 20:626b92b70bf7 605 {
mverdy 20:626b92b70bf7 606 Eeprom.EepromData.DemoSettings.HoldDemo = true;
mverdy 20:626b92b70bf7 607 ButtonChangeText( BTN8_BORDER, ( uint8_t* )" START", NULL );
mverdy 20:626b92b70bf7 608 StopDemoApplication( );
mverdy 20:626b92b70bf7 609 }
mverdy 20:626b92b70bf7 610 }
mverdy 20:626b92b70bf7 611 else if( graphObjectTouched == BTN9_BORDER )
mverdy 20:626b92b70bf7 612 {
mverdy 20:626b92b70bf7 613 Eeprom.EepromData.DemoSettings.HoldDemo = true;
mverdy 20:626b92b70bf7 614 // "SETTINGS" button can occure without "START"/"STOP" button
mverdy 20:626b92b70bf7 615 // also "SETTINGS" should stop the demo
mverdy 20:626b92b70bf7 616 StopDemoApplication( );
mverdy 20:626b92b70bf7 617 // "CANCEL" or "OK & SAVE" button of PAGE_RADIO_PARAM use
mverdy 20:626b92b70bf7 618 // PreviousPage to set next page. Speed up the navigation.
mverdy 20:626b92b70bf7 619 PreviousPage = PAGE_RANGING_SLAVE;
mverdy 20:626b92b70bf7 620 MenuSetPage( PAGE_RADIO_PARAM );
mverdy 20:626b92b70bf7 621 }
mverdy 20:626b92b70bf7 622 else if( refresh == true )
mverdy 20:626b92b70bf7 623 {
mverdy 20:626b92b70bf7 624 MenuSetPage( PAGE_RANGING_SLAVE );
mverdy 20:626b92b70bf7 625 }
mverdy 20:626b92b70bf7 626 break;
mverdy 20:626b92b70bf7 627
mverdy 20:626b92b70bf7 628 case PAGE_RADIO_PARAM:
mverdy 20:626b92b70bf7 629 if( graphObjectTouched == BTN0_BORDER )
mverdy 20:626b92b70bf7 630 {
mverdy 20:626b92b70bf7 631 if( Eeprom.EepromData.DemoSettings.ModulationType == PACKET_TYPE_LORA )
mverdy 20:626b92b70bf7 632 {
mverdy 20:626b92b70bf7 633 Eeprom.EepromData.DemoSettings.ModulationType = PACKET_TYPE_FLRC;
mverdy 20:626b92b70bf7 634 }
mverdy 20:626b92b70bf7 635 else if( Eeprom.EepromData.DemoSettings.ModulationType == PACKET_TYPE_FLRC )
mverdy 20:626b92b70bf7 636 {
mverdy 20:626b92b70bf7 637 Eeprom.EepromData.DemoSettings.ModulationType = PACKET_TYPE_GFSK;
mverdy 20:626b92b70bf7 638 }
mverdy 20:626b92b70bf7 639 else if( Eeprom.EepromData.DemoSettings.ModulationType == PACKET_TYPE_GFSK )
mverdy 20:626b92b70bf7 640 {
mverdy 20:626b92b70bf7 641 if( PreviousPage == START_PAGE )
mverdy 20:626b92b70bf7 642 {
mverdy 20:626b92b70bf7 643 Eeprom.EepromData.DemoSettings.ModulationType = PACKET_TYPE_RANGING;
mverdy 20:626b92b70bf7 644 }
mverdy 20:626b92b70bf7 645 else
mverdy 20:626b92b70bf7 646 {
mverdy 20:626b92b70bf7 647 Eeprom.EepromData.DemoSettings.ModulationType = PACKET_TYPE_LORA;
mverdy 20:626b92b70bf7 648 }
mverdy 20:626b92b70bf7 649 }
mverdy 20:626b92b70bf7 650 else // PACKET_TYPE_RANGING
mverdy 20:626b92b70bf7 651 {
mverdy 20:626b92b70bf7 652 if( PreviousPage == START_PAGE )
mverdy 20:626b92b70bf7 653 {
mverdy 20:626b92b70bf7 654 Eeprom.EepromData.DemoSettings.ModulationType = PACKET_TYPE_LORA;
mverdy 20:626b92b70bf7 655 }
mverdy 20:626b92b70bf7 656 }
mverdy 20:626b92b70bf7 657 EepromLoadSettings( ( RadioPacketTypes_t )Eeprom.EepromData.DemoSettings.ModulationType );
mverdy 20:626b92b70bf7 658 MenuSetPage( PAGE_RADIO_PARAM );
mverdy 20:626b92b70bf7 659 }
mverdy 20:626b92b70bf7 660 else if( graphObjectTouched == BTN9_BORDER )
mverdy 20:626b92b70bf7 661 {
mverdy 20:626b92b70bf7 662 EepromSetRangingDefaultSettings( );
mverdy 20:626b92b70bf7 663 EepromLoadSettings( PACKET_TYPE_RANGING );
mverdy 20:626b92b70bf7 664 ButtonChangeText( BTN3_BORDER, NULL, ( uint8_t* )GetRadioModulationParameters1( ) );
mverdy 20:626b92b70bf7 665 ButtonChangeText( BTN4_BORDER, NULL, ( uint8_t* )GetRadioModulationParameters2( ) );
mverdy 20:626b92b70bf7 666 ButtonChangeText( BTN5_BORDER, NULL, ( uint8_t* )GetRadioModulationParameters3( ) );
mverdy 20:626b92b70bf7 667 }
mverdy 20:626b92b70bf7 668 else if( graphObjectTouched == BTN1_BORDER )
mverdy 20:626b92b70bf7 669 {
mverdy 20:626b92b70bf7 670 MenuSetPage( PAGE_RADIO_PARAM_FREQ );
mverdy 20:626b92b70bf7 671 }
mverdy 20:626b92b70bf7 672 else if( graphObjectTouched == BTN2_BORDER )
mverdy 20:626b92b70bf7 673 {
mverdy 20:626b92b70bf7 674 Eeprom.EepromData.DemoSettings.TxPower += 1;
mverdy 20:626b92b70bf7 675 if( Eeprom.EepromData.DemoSettings.TxPower > DEMO_POWER_TX_MAX )
mverdy 20:626b92b70bf7 676 {
mverdy 20:626b92b70bf7 677 Eeprom.EepromData.DemoSettings.TxPower = DEMO_POWER_TX_MIN;
mverdy 20:626b92b70bf7 678 }
mverdy 20:626b92b70bf7 679 ButtonChangeText( BTN2_BORDER, NULL, ( uint8_t* )GetRadioTxPower( ) );
mverdy 20:626b92b70bf7 680 }
mverdy 20:626b92b70bf7 681 else if( graphObjectTouched == BTN3_BORDER )
mverdy 20:626b92b70bf7 682 {
mverdy 20:626b92b70bf7 683 if( Eeprom.EepromData.DemoSettings.ModulationType == PACKET_TYPE_LORA )
mverdy 20:626b92b70bf7 684 {
mverdy 20:626b92b70bf7 685 if( Eeprom.EepromData.DemoSettings.ModulationParam1 < LORA_SF12 )
mverdy 20:626b92b70bf7 686 {
mverdy 20:626b92b70bf7 687 Eeprom.EepromData.DemoSettings.ModulationParam1 = Eeprom.EepromData.DemoSettings.ModulationParam1 + 0x10;
mverdy 20:626b92b70bf7 688 }
mverdy 20:626b92b70bf7 689 else
mverdy 20:626b92b70bf7 690 {
mverdy 20:626b92b70bf7 691 Eeprom.EepromData.DemoSettings.ModulationParam1 = LORA_SF5;
mverdy 20:626b92b70bf7 692 }
mverdy 20:626b92b70bf7 693 }
mverdy 20:626b92b70bf7 694 else if( Eeprom.EepromData.DemoSettings.ModulationType == PACKET_TYPE_RANGING )
mverdy 20:626b92b70bf7 695 {
mverdy 20:626b92b70bf7 696 if( Eeprom.EepromData.DemoSettings.ModulationParam1 < LORA_SF10 )
mverdy 20:626b92b70bf7 697 {
mverdy 20:626b92b70bf7 698 Eeprom.EepromData.DemoSettings.ModulationParam1 = Eeprom.EepromData.DemoSettings.ModulationParam1 + 0x10;
mverdy 20:626b92b70bf7 699 }
mverdy 20:626b92b70bf7 700 else
mverdy 20:626b92b70bf7 701 {
mverdy 20:626b92b70bf7 702 Eeprom.EepromData.DemoSettings.ModulationParam1 = LORA_SF5;
mverdy 20:626b92b70bf7 703 }
mverdy 20:626b92b70bf7 704 }
mverdy 20:626b92b70bf7 705 else if( Eeprom.EepromData.DemoSettings.ModulationType == PACKET_TYPE_FLRC )
mverdy 20:626b92b70bf7 706 {
mverdy 20:626b92b70bf7 707 switch( Eeprom.EepromData.DemoSettings.ModulationParam1 )
mverdy 20:626b92b70bf7 708 {
mverdy 20:626b92b70bf7 709 case FLRC_BR_1_300_BW_1_2:
mverdy 20:626b92b70bf7 710 Eeprom.EepromData.DemoSettings.ModulationParam1 = FLRC_BR_1_040_BW_1_2;
mverdy 20:626b92b70bf7 711 break;
mverdy 20:626b92b70bf7 712
mverdy 20:626b92b70bf7 713 case FLRC_BR_1_040_BW_1_2:
mverdy 20:626b92b70bf7 714 Eeprom.EepromData.DemoSettings.ModulationParam1 = FLRC_BR_0_650_BW_0_6;
mverdy 20:626b92b70bf7 715 break;
mverdy 20:626b92b70bf7 716
mverdy 20:626b92b70bf7 717 case FLRC_BR_0_650_BW_0_6:
mverdy 20:626b92b70bf7 718 Eeprom.EepromData.DemoSettings.ModulationParam1 = FLRC_BR_0_520_BW_0_6;
mverdy 20:626b92b70bf7 719 break;
mverdy 20:626b92b70bf7 720
mverdy 20:626b92b70bf7 721 case FLRC_BR_0_520_BW_0_6:
mverdy 20:626b92b70bf7 722 Eeprom.EepromData.DemoSettings.ModulationParam1 = FLRC_BR_0_325_BW_0_3;
mverdy 20:626b92b70bf7 723 break;
mverdy 20:626b92b70bf7 724
mverdy 20:626b92b70bf7 725 case FLRC_BR_0_325_BW_0_3:
mverdy 20:626b92b70bf7 726 Eeprom.EepromData.DemoSettings.ModulationParam1 = FLRC_BR_0_260_BW_0_3;
mverdy 20:626b92b70bf7 727 break;
mverdy 20:626b92b70bf7 728
mverdy 20:626b92b70bf7 729 case FLRC_BR_0_260_BW_0_3:
mverdy 20:626b92b70bf7 730 Eeprom.EepromData.DemoSettings.ModulationParam1 = FLRC_BR_1_300_BW_1_2;
mverdy 20:626b92b70bf7 731 break;
mverdy 20:626b92b70bf7 732 }
mverdy 20:626b92b70bf7 733 }
mverdy 20:626b92b70bf7 734 else // PACKET_TYPE_GFSK
mverdy 20:626b92b70bf7 735 {
mverdy 20:626b92b70bf7 736 switch( Eeprom.EepromData.DemoSettings.ModulationParam1 )
mverdy 20:626b92b70bf7 737 {
mverdy 20:626b92b70bf7 738 case GFSK_BLE_BR_2_000_BW_2_4:
mverdy 20:626b92b70bf7 739 Eeprom.EepromData.DemoSettings.ModulationParam1 = GFSK_BLE_BR_1_600_BW_2_4;
mverdy 20:626b92b70bf7 740 break;
mverdy 20:626b92b70bf7 741
mverdy 20:626b92b70bf7 742 case GFSK_BLE_BR_1_600_BW_2_4:
mverdy 20:626b92b70bf7 743 Eeprom.EepromData.DemoSettings.ModulationParam1 = GFSK_BLE_BR_1_000_BW_2_4;
mverdy 20:626b92b70bf7 744 break;
mverdy 20:626b92b70bf7 745
mverdy 20:626b92b70bf7 746 case GFSK_BLE_BR_1_000_BW_2_4:
mverdy 20:626b92b70bf7 747 Eeprom.EepromData.DemoSettings.ModulationParam1 = GFSK_BLE_BR_1_000_BW_1_2;
mverdy 20:626b92b70bf7 748 break;
mverdy 20:626b92b70bf7 749
mverdy 20:626b92b70bf7 750 case GFSK_BLE_BR_1_000_BW_1_2:
mverdy 20:626b92b70bf7 751 Eeprom.EepromData.DemoSettings.ModulationParam1 = GFSK_BLE_BR_0_800_BW_2_4;
mverdy 20:626b92b70bf7 752 break;
mverdy 20:626b92b70bf7 753
mverdy 20:626b92b70bf7 754 case GFSK_BLE_BR_0_800_BW_2_4:
mverdy 20:626b92b70bf7 755 Eeprom.EepromData.DemoSettings.ModulationParam1 = GFSK_BLE_BR_0_800_BW_1_2;
mverdy 20:626b92b70bf7 756 break;
mverdy 20:626b92b70bf7 757
mverdy 20:626b92b70bf7 758 case GFSK_BLE_BR_0_800_BW_1_2:
mverdy 20:626b92b70bf7 759 Eeprom.EepromData.DemoSettings.ModulationParam1 = GFSK_BLE_BR_0_500_BW_1_2;
mverdy 20:626b92b70bf7 760 break;
mverdy 20:626b92b70bf7 761
mverdy 20:626b92b70bf7 762 case GFSK_BLE_BR_0_500_BW_1_2:
mverdy 20:626b92b70bf7 763 Eeprom.EepromData.DemoSettings.ModulationParam1 = GFSK_BLE_BR_0_500_BW_0_6;
mverdy 20:626b92b70bf7 764 break;
mverdy 20:626b92b70bf7 765
mverdy 20:626b92b70bf7 766 case GFSK_BLE_BR_0_500_BW_0_6:
mverdy 20:626b92b70bf7 767 Eeprom.EepromData.DemoSettings.ModulationParam1 = GFSK_BLE_BR_0_400_BW_1_2;
mverdy 20:626b92b70bf7 768 break;
mverdy 20:626b92b70bf7 769
mverdy 20:626b92b70bf7 770 case GFSK_BLE_BR_0_400_BW_1_2:
mverdy 20:626b92b70bf7 771 Eeprom.EepromData.DemoSettings.ModulationParam1 = GFSK_BLE_BR_0_400_BW_0_6;
mverdy 20:626b92b70bf7 772 break;
mverdy 20:626b92b70bf7 773
mverdy 20:626b92b70bf7 774 case GFSK_BLE_BR_0_400_BW_0_6:
mverdy 20:626b92b70bf7 775 Eeprom.EepromData.DemoSettings.ModulationParam1 = GFSK_BLE_BR_0_250_BW_0_6;
mverdy 20:626b92b70bf7 776 break;
mverdy 20:626b92b70bf7 777
mverdy 20:626b92b70bf7 778 case GFSK_BLE_BR_0_250_BW_0_6:
mverdy 20:626b92b70bf7 779 Eeprom.EepromData.DemoSettings.ModulationParam1 = GFSK_BLE_BR_0_250_BW_0_3;
mverdy 20:626b92b70bf7 780 break;
mverdy 20:626b92b70bf7 781
mverdy 20:626b92b70bf7 782 case GFSK_BLE_BR_0_250_BW_0_3:
mverdy 20:626b92b70bf7 783 Eeprom.EepromData.DemoSettings.ModulationParam1 = GFSK_BLE_BR_0_125_BW_0_3;
mverdy 20:626b92b70bf7 784 break;
mverdy 20:626b92b70bf7 785
mverdy 20:626b92b70bf7 786 case GFSK_BLE_BR_0_125_BW_0_3:
mverdy 20:626b92b70bf7 787 Eeprom.EepromData.DemoSettings.ModulationParam1 = GFSK_BLE_BR_2_000_BW_2_4;
mverdy 20:626b92b70bf7 788 break;
mverdy 20:626b92b70bf7 789 }
mverdy 20:626b92b70bf7 790 }
mverdy 20:626b92b70bf7 791 ButtonChangeText( BTN3_BORDER, NULL, ( uint8_t* )GetRadioModulationParameters1( ) );
mverdy 20:626b92b70bf7 792 }
mverdy 20:626b92b70bf7 793 else if( graphObjectTouched == BTN4_BORDER )
mverdy 20:626b92b70bf7 794 {
mverdy 20:626b92b70bf7 795 if( Eeprom.EepromData.DemoSettings.ModulationType == PACKET_TYPE_LORA )
mverdy 20:626b92b70bf7 796 {
mverdy 20:626b92b70bf7 797 switch( Eeprom.EepromData.DemoSettings.ModulationParam2 )
mverdy 20:626b92b70bf7 798 {
mverdy 20:626b92b70bf7 799 case LORA_BW_0200:
mverdy 20:626b92b70bf7 800 Eeprom.EepromData.DemoSettings.ModulationParam2 = LORA_BW_0400;
mverdy 20:626b92b70bf7 801 break;
mverdy 20:626b92b70bf7 802
mverdy 20:626b92b70bf7 803 case LORA_BW_0400:
mverdy 20:626b92b70bf7 804 Eeprom.EepromData.DemoSettings.ModulationParam2 = LORA_BW_0800;
mverdy 20:626b92b70bf7 805 break;
mverdy 20:626b92b70bf7 806
mverdy 20:626b92b70bf7 807 case LORA_BW_0800:
mverdy 20:626b92b70bf7 808 Eeprom.EepromData.DemoSettings.ModulationParam2 = LORA_BW_1600;
mverdy 20:626b92b70bf7 809 break;
mverdy 20:626b92b70bf7 810
mverdy 20:626b92b70bf7 811 case LORA_BW_1600:
mverdy 20:626b92b70bf7 812 Eeprom.EepromData.DemoSettings.ModulationParam2 = LORA_BW_0200;
mverdy 20:626b92b70bf7 813 break;
mverdy 20:626b92b70bf7 814 }
mverdy 20:626b92b70bf7 815 }
mverdy 20:626b92b70bf7 816 else if( Eeprom.EepromData.DemoSettings.ModulationType == PACKET_TYPE_RANGING )
mverdy 20:626b92b70bf7 817 {
mverdy 20:626b92b70bf7 818 switch( Eeprom.EepromData.DemoSettings.ModulationParam2 )
mverdy 20:626b92b70bf7 819 {
mverdy 20:626b92b70bf7 820 case LORA_BW_0400:
mverdy 20:626b92b70bf7 821 Eeprom.EepromData.DemoSettings.ModulationParam2 = LORA_BW_0800;
mverdy 20:626b92b70bf7 822 break;
mverdy 20:626b92b70bf7 823
mverdy 20:626b92b70bf7 824 case LORA_BW_0800:
mverdy 20:626b92b70bf7 825 Eeprom.EepromData.DemoSettings.ModulationParam2 = LORA_BW_1600;
mverdy 20:626b92b70bf7 826 break;
mverdy 20:626b92b70bf7 827
mverdy 20:626b92b70bf7 828 case LORA_BW_1600:
mverdy 20:626b92b70bf7 829 Eeprom.EepromData.DemoSettings.ModulationParam2 = LORA_BW_0400;
mverdy 20:626b92b70bf7 830 break;
mverdy 20:626b92b70bf7 831 }
mverdy 20:626b92b70bf7 832 }
mverdy 20:626b92b70bf7 833 else if( Eeprom.EepromData.DemoSettings.ModulationType == PACKET_TYPE_FLRC )
mverdy 20:626b92b70bf7 834 {
mverdy 20:626b92b70bf7 835 if( Eeprom.EepromData.DemoSettings.ModulationParam2 < FLRC_CR_1_0 )
mverdy 20:626b92b70bf7 836 {
mverdy 20:626b92b70bf7 837 Eeprom.EepromData.DemoSettings.ModulationParam2 = Eeprom.EepromData.DemoSettings.ModulationParam2 + 2;;
mverdy 20:626b92b70bf7 838 }
mverdy 20:626b92b70bf7 839 else
mverdy 20:626b92b70bf7 840 {
mverdy 20:626b92b70bf7 841 Eeprom.EepromData.DemoSettings.ModulationParam2 = FLRC_CR_1_2;
mverdy 20:626b92b70bf7 842 }
mverdy 20:626b92b70bf7 843 }
mverdy 20:626b92b70bf7 844 else // PACKET_TYPE_GFSK
mverdy 20:626b92b70bf7 845 {
mverdy 20:626b92b70bf7 846 if( Eeprom.EepromData.DemoSettings.ModulationParam2 < GFSK_BLE_MOD_IND_4_00 )
mverdy 20:626b92b70bf7 847 {
mverdy 20:626b92b70bf7 848 Eeprom.EepromData.DemoSettings.ModulationParam2++;
mverdy 20:626b92b70bf7 849 }
mverdy 20:626b92b70bf7 850 else
mverdy 20:626b92b70bf7 851 {
mverdy 20:626b92b70bf7 852 Eeprom.EepromData.DemoSettings.ModulationParam2 = GFSK_BLE_MOD_IND_0_35;
mverdy 20:626b92b70bf7 853 }
mverdy 20:626b92b70bf7 854 }
mverdy 20:626b92b70bf7 855 ButtonChangeText( BTN4_BORDER, NULL, ( uint8_t* )GetRadioModulationParameters2( ) );
mverdy 20:626b92b70bf7 856 }
mverdy 20:626b92b70bf7 857 else if( graphObjectTouched == BTN5_BORDER )
mverdy 20:626b92b70bf7 858 {
mverdy 20:626b92b70bf7 859 if( ( Eeprom.EepromData.DemoSettings.ModulationType == PACKET_TYPE_LORA ) || \
mverdy 20:626b92b70bf7 860 ( Eeprom.EepromData.DemoSettings.ModulationType == PACKET_TYPE_RANGING ) )
mverdy 20:626b92b70bf7 861 {
mverdy 20:626b92b70bf7 862 if( Eeprom.EepromData.DemoSettings.ModulationParam3 < LORA_CR_LI_4_7 )
mverdy 20:626b92b70bf7 863 {
mverdy 20:626b92b70bf7 864 Eeprom.EepromData.DemoSettings.ModulationParam3++;
mverdy 20:626b92b70bf7 865 }
mverdy 20:626b92b70bf7 866 else
mverdy 20:626b92b70bf7 867 {
mverdy 20:626b92b70bf7 868 Eeprom.EepromData.DemoSettings.ModulationParam3 = LORA_CR_4_5;
mverdy 20:626b92b70bf7 869 }
mverdy 20:626b92b70bf7 870 }
mverdy 20:626b92b70bf7 871 else // PACKET_TYPE_GFSK and PACKET_TYPE_FLRC
mverdy 20:626b92b70bf7 872 {
mverdy 20:626b92b70bf7 873 if( Eeprom.EepromData.DemoSettings.ModulationParam3 < RADIO_MOD_SHAPING_BT_0_5 )
mverdy 20:626b92b70bf7 874 {
mverdy 20:626b92b70bf7 875 Eeprom.EepromData.DemoSettings.ModulationParam3 = Eeprom.EepromData.DemoSettings.ModulationParam3 + 0x10;
mverdy 20:626b92b70bf7 876 }
mverdy 20:626b92b70bf7 877 else
mverdy 20:626b92b70bf7 878 {
mverdy 20:626b92b70bf7 879 Eeprom.EepromData.DemoSettings.ModulationParam3 = RADIO_MOD_SHAPING_BT_OFF;
mverdy 20:626b92b70bf7 880 }
mverdy 20:626b92b70bf7 881 }
mverdy 20:626b92b70bf7 882 ButtonChangeText( BTN5_BORDER, NULL, ( uint8_t* )GetRadioModulationParameters3( ) );
mverdy 20:626b92b70bf7 883 }
mverdy 20:626b92b70bf7 884 else if( graphObjectTouched == BTN6_BORDER )
mverdy 20:626b92b70bf7 885 {
mverdy 20:626b92b70bf7 886 if( Eeprom.EepromData.DemoSettings.ModulationType == PACKET_TYPE_LORA )
mverdy 20:626b92b70bf7 887 {
mverdy 20:626b92b70bf7 888 if( Eeprom.EepromData.DemoSettings.PacketParam3 < 32 )
mverdy 20:626b92b70bf7 889 {
mverdy 20:626b92b70bf7 890 Eeprom.EepromData.DemoSettings.PacketParam3++;
mverdy 20:626b92b70bf7 891 }
mverdy 20:626b92b70bf7 892 else if( Eeprom.EepromData.DemoSettings.PacketParam3 <= ( DEMO_GFS_LORA_MAX_PAYLOAD - 8 ) )
mverdy 20:626b92b70bf7 893 {
mverdy 20:626b92b70bf7 894 Eeprom.EepromData.DemoSettings.PacketParam3 += 8;
mverdy 20:626b92b70bf7 895 }
mverdy 20:626b92b70bf7 896 else
mverdy 20:626b92b70bf7 897 {
mverdy 20:626b92b70bf7 898 Eeprom.EepromData.DemoSettings.PacketParam3 = DEMO_MIN_PAYLOAD;
mverdy 20:626b92b70bf7 899 }
mverdy 20:626b92b70bf7 900 }
mverdy 20:626b92b70bf7 901 else if( Eeprom.EepromData.DemoSettings.ModulationType == PACKET_TYPE_FLRC )
mverdy 20:626b92b70bf7 902 {
mverdy 20:626b92b70bf7 903 if( Eeprom.EepromData.DemoSettings.PacketParam5 < 32 )
mverdy 20:626b92b70bf7 904 {
mverdy 20:626b92b70bf7 905 Eeprom.EepromData.DemoSettings.PacketParam5++;
mverdy 20:626b92b70bf7 906 }
mverdy 20:626b92b70bf7 907 else if( Eeprom.EepromData.DemoSettings.PacketParam5 <= ( DEMO_FLRC_MAX_PAYLOAD - 8 ) )
mverdy 20:626b92b70bf7 908 {
mverdy 20:626b92b70bf7 909 Eeprom.EepromData.DemoSettings.PacketParam5 += 8;
mverdy 20:626b92b70bf7 910 }
mverdy 20:626b92b70bf7 911 else
mverdy 20:626b92b70bf7 912 {
mverdy 20:626b92b70bf7 913 Eeprom.EepromData.DemoSettings.PacketParam5 = DEMO_MIN_PAYLOAD;
mverdy 20:626b92b70bf7 914 }
mverdy 20:626b92b70bf7 915 }
mverdy 20:626b92b70bf7 916 else if( Eeprom.EepromData.DemoSettings.ModulationType == PACKET_TYPE_GFSK )
mverdy 20:626b92b70bf7 917 {
mverdy 20:626b92b70bf7 918 if( Eeprom.EepromData.DemoSettings.PacketParam5 < 32 )
mverdy 20:626b92b70bf7 919 {
mverdy 20:626b92b70bf7 920 Eeprom.EepromData.DemoSettings.PacketParam5++;
mverdy 20:626b92b70bf7 921 }
mverdy 20:626b92b70bf7 922 else if( Eeprom.EepromData.DemoSettings.PacketParam5 <= ( DEMO_GFS_LORA_MAX_PAYLOAD - 8 ) )
mverdy 20:626b92b70bf7 923 {
mverdy 20:626b92b70bf7 924 Eeprom.EepromData.DemoSettings.PacketParam5 += 8;
mverdy 20:626b92b70bf7 925 }
mverdy 20:626b92b70bf7 926 else
mverdy 20:626b92b70bf7 927 {
mverdy 20:626b92b70bf7 928 Eeprom.EepromData.DemoSettings.PacketParam5 = DEMO_MIN_PAYLOAD;
mverdy 20:626b92b70bf7 929 }
mverdy 20:626b92b70bf7 930 }
mverdy 20:626b92b70bf7 931 if( Eeprom.EepromData.DemoSettings.ModulationType == PACKET_TYPE_RANGING )
mverdy 20:626b92b70bf7 932 {
mverdy 20:626b92b70bf7 933 MenuSetPage( PAGE_RANGING_PARAM );
mverdy 20:626b92b70bf7 934 }
mverdy 20:626b92b70bf7 935 else
mverdy 20:626b92b70bf7 936 {
mverdy 20:626b92b70bf7 937 ButtonChangeText( BTN6_BORDER, NULL, ( uint8_t* )GetRadioPayloadLength( ) );
mverdy 20:626b92b70bf7 938 }
mverdy 20:626b92b70bf7 939 }
mverdy 20:626b92b70bf7 940 else if( graphObjectTouched == BTN7_BORDER )
mverdy 20:626b92b70bf7 941 {
mverdy 20:626b92b70bf7 942 uint8_t modTmp = Eeprom.EepromData.DemoSettings.ModulationType;
mverdy 20:626b92b70bf7 943
mverdy 20:626b92b70bf7 944 EepromMcuReadBuffer( 0, Eeprom.Buffer, EEPROM_BUFFER_SIZE );
mverdy 20:626b92b70bf7 945 EepromLoadGeneralSettings( );
mverdy 20:626b92b70bf7 946 EepromLoadSettings( ( RadioPacketTypes_t )modTmp );
mverdy 20:626b92b70bf7 947 MenuSetPage( PreviousPage );
mverdy 20:626b92b70bf7 948 }
mverdy 20:626b92b70bf7 949 else if( graphObjectTouched == BTN8_BORDER )
mverdy 20:626b92b70bf7 950 {
mverdy 20:626b92b70bf7 951 switch( Eeprom.EepromData.DemoSettings.ModulationType )
mverdy 20:626b92b70bf7 952 {
mverdy 20:626b92b70bf7 953 case PACKET_TYPE_RANGING:
mverdy 20:626b92b70bf7 954 EepromSaveSettings( RADIO_RANGING_PARAMS );
mverdy 20:626b92b70bf7 955 break;
mverdy 20:626b92b70bf7 956
mverdy 20:626b92b70bf7 957 case PACKET_TYPE_LORA:
mverdy 20:626b92b70bf7 958 EepromSaveSettings( RADIO_LORA_PARAMS );
mverdy 20:626b92b70bf7 959 break;
mverdy 20:626b92b70bf7 960
mverdy 20:626b92b70bf7 961 case PACKET_TYPE_FLRC:
mverdy 20:626b92b70bf7 962 EepromSaveSettings( RADIO_FLRC_PARAMS );
mverdy 20:626b92b70bf7 963 break;
mverdy 20:626b92b70bf7 964
mverdy 20:626b92b70bf7 965 case PACKET_TYPE_GFSK:
mverdy 20:626b92b70bf7 966 EepromSaveSettings( RADIO_GFSK_PARAMS );
mverdy 20:626b92b70bf7 967 break;
mverdy 20:626b92b70bf7 968 }
mverdy 20:626b92b70bf7 969 EepromSaveSettings( DEMO_SETTINGS );
mverdy 20:626b92b70bf7 970 MenuSetPage( PreviousPage );
mverdy 20:626b92b70bf7 971 }
mverdy 20:626b92b70bf7 972 break;
mverdy 20:626b92b70bf7 973
mverdy 20:626b92b70bf7 974 case PAGE_RANGING_PARAM:
mverdy 20:626b92b70bf7 975 if( graphObjectTouched == BTN1_BORDER )
mverdy 20:626b92b70bf7 976 {
mverdy 20:626b92b70bf7 977 Eeprom.EepromData.DemoSettings.RngRequestCount += 5;
mverdy 20:626b92b70bf7 978 if( Eeprom.EepromData.DemoSettings.RngRequestCount >= DEMO_RNG_CHANNELS_COUNT_MAX )
mverdy 20:626b92b70bf7 979 {
mverdy 20:626b92b70bf7 980 Eeprom.EepromData.DemoSettings.RngRequestCount = DEMO_RNG_CHANNELS_COUNT_MIN;
mverdy 20:626b92b70bf7 981 }
mverdy 20:626b92b70bf7 982 ButtonChangeText( BTN1_BORDER, NULL, ( uint8_t* )GetRangingRequestCount( ) );
mverdy 20:626b92b70bf7 983 }
mverdy 20:626b92b70bf7 984 else if( graphObjectTouched == BTN2_BORDER )
mverdy 20:626b92b70bf7 985 {
mverdy 20:626b92b70bf7 986 switch( Eeprom.EepromData.DemoSettings.RngAddress )
mverdy 20:626b92b70bf7 987 {
mverdy 20:626b92b70bf7 988 case DEMO_RNG_ADDR_1:
mverdy 20:626b92b70bf7 989 Eeprom.EepromData.DemoSettings.RngAddress = DEMO_RNG_ADDR_2;
mverdy 20:626b92b70bf7 990 break;
mverdy 20:626b92b70bf7 991
mverdy 20:626b92b70bf7 992 case DEMO_RNG_ADDR_2:
mverdy 20:626b92b70bf7 993 Eeprom.EepromData.DemoSettings.RngAddress = DEMO_RNG_ADDR_3;
mverdy 20:626b92b70bf7 994 break;
mverdy 20:626b92b70bf7 995
mverdy 20:626b92b70bf7 996 case DEMO_RNG_ADDR_3:
mverdy 20:626b92b70bf7 997 Eeprom.EepromData.DemoSettings.RngAddress = DEMO_RNG_ADDR_4;
mverdy 20:626b92b70bf7 998 break;
mverdy 20:626b92b70bf7 999
mverdy 20:626b92b70bf7 1000 case DEMO_RNG_ADDR_4:
mverdy 20:626b92b70bf7 1001 Eeprom.EepromData.DemoSettings.RngAddress = DEMO_RNG_ADDR_5;
mverdy 20:626b92b70bf7 1002 break;
mverdy 20:626b92b70bf7 1003
mverdy 20:626b92b70bf7 1004 case DEMO_RNG_ADDR_5:
mverdy 20:626b92b70bf7 1005 Eeprom.EepromData.DemoSettings.RngAddress = DEMO_RNG_ADDR_1;
mverdy 20:626b92b70bf7 1006 break;
mverdy 20:626b92b70bf7 1007 }
mverdy 20:626b92b70bf7 1008 ButtonChangeText( BTN2_BORDER, NULL, ( uint8_t* )GetRangingAddress( ) );
mverdy 20:626b92b70bf7 1009 }
mverdy 20:626b92b70bf7 1010 else if( graphObjectTouched == BTN3_BORDER )
mverdy 20:626b92b70bf7 1011 {
mverdy 20:626b92b70bf7 1012 switch( Eeprom.EepromData.DemoSettings.RngAntenna )
mverdy 20:626b92b70bf7 1013 {
mverdy 20:626b92b70bf7 1014 case DEMO_RNG_ANT_1:
mverdy 20:626b92b70bf7 1015 Eeprom.EepromData.DemoSettings.RngAntenna = DEMO_RNG_ANT_0;
mverdy 20:626b92b70bf7 1016 break;
mverdy 20:626b92b70bf7 1017
mverdy 20:626b92b70bf7 1018 case DEMO_RNG_ANT_0:
mverdy 20:626b92b70bf7 1019 Eeprom.EepromData.DemoSettings.RngAntenna = DEMO_RNG_ANT_BOTH;
mverdy 20:626b92b70bf7 1020 break;
mverdy 20:626b92b70bf7 1021
mverdy 20:626b92b70bf7 1022 case DEMO_RNG_ANT_BOTH:
mverdy 20:626b92b70bf7 1023 Eeprom.EepromData.DemoSettings.RngAntenna = DEMO_RNG_ANT_1;
mverdy 20:626b92b70bf7 1024 break;
mverdy 20:626b92b70bf7 1025 }
mverdy 20:626b92b70bf7 1026 ButtonChangeText( BTN3_BORDER, NULL, ( uint8_t* )GetRangingAntenna( ) );
mverdy 20:626b92b70bf7 1027 }
mverdy 20:626b92b70bf7 1028 else if( graphObjectTouched == BTN4_BORDER )
mverdy 20:626b92b70bf7 1029 {
mverdy 20:626b92b70bf7 1030 Eeprom.EepromData.DemoSettings.RngUnit++;
mverdy 20:626b92b70bf7 1031 if( Eeprom.EepromData.DemoSettings.RngUnit > DEMO_RNG_UNIT_SEL_MI )
mverdy 20:626b92b70bf7 1032 {
mverdy 20:626b92b70bf7 1033 Eeprom.EepromData.DemoSettings.RngUnit = DEMO_RNG_UNIT_SEL_M;
mverdy 20:626b92b70bf7 1034 }
mverdy 20:626b92b70bf7 1035 ButtonChangeText( BTN4_BORDER, NULL, ( uint8_t* )GetRangingUnit( ) );
mverdy 20:626b92b70bf7 1036 }
mverdy 20:626b92b70bf7 1037 else if( graphObjectTouched == BTN7_BORDER )
mverdy 20:626b92b70bf7 1038 {
mverdy 20:626b92b70bf7 1039 EepromMcuReadBuffer( 0, Eeprom.Buffer, EEPROM_BUFFER_SIZE );
mverdy 20:626b92b70bf7 1040 EepromLoadGeneralSettings( );
mverdy 20:626b92b70bf7 1041 EepromLoadSettings( PACKET_TYPE_RANGING );
mverdy 20:626b92b70bf7 1042 MenuSetPage( PAGE_RADIO_PARAM );
mverdy 20:626b92b70bf7 1043 }
mverdy 20:626b92b70bf7 1044 else if( graphObjectTouched == BTN8_BORDER )
mverdy 20:626b92b70bf7 1045 {
mverdy 20:626b92b70bf7 1046 EepromSaveSettings( RADIO_RANGING_PARAMS );
mverdy 20:626b92b70bf7 1047 MenuSetPage( PAGE_RADIO_PARAM );
mverdy 20:626b92b70bf7 1048 }
mverdy 20:626b92b70bf7 1049 break;
mverdy 20:626b92b70bf7 1050
mverdy 20:626b92b70bf7 1051 case PAGE_RADIO_PARAM_FREQ:
mverdy 20:626b92b70bf7 1052 if( graphObjectTouched == BTN0_BORDER )
mverdy 20:626b92b70bf7 1053 {
mverdy 20:626b92b70bf7 1054 Eeprom.EepromData.DemoSettings.Frequency -= CurrentFreqBase;
mverdy 20:626b92b70bf7 1055 if( Eeprom.EepromData.DemoSettings.Frequency < DEMO_CENTRAL_FREQ_MIN )
mverdy 20:626b92b70bf7 1056 {
mverdy 20:626b92b70bf7 1057 Eeprom.EepromData.DemoSettings.Frequency = DEMO_CENTRAL_FREQ_MIN;
mverdy 20:626b92b70bf7 1058 }
mverdy 20:626b92b70bf7 1059 ButtonChangeText( BTN2_BORDER, NULL, ( uint8_t* )GetRadioFrequency( ) );
mverdy 20:626b92b70bf7 1060 }
mverdy 20:626b92b70bf7 1061 else if( graphObjectTouched == BTN1_BORDER )
mverdy 20:626b92b70bf7 1062 {
mverdy 20:626b92b70bf7 1063 switch( CurrentFreqBase )
mverdy 20:626b92b70bf7 1064 {
mverdy 20:626b92b70bf7 1065 case FB1:
mverdy 20:626b92b70bf7 1066 CurrentFreqBase = FB10;
mverdy 20:626b92b70bf7 1067 break;
mverdy 20:626b92b70bf7 1068
mverdy 20:626b92b70bf7 1069 case FB10:
mverdy 20:626b92b70bf7 1070 CurrentFreqBase = FB100;
mverdy 20:626b92b70bf7 1071 break;
mverdy 20:626b92b70bf7 1072
mverdy 20:626b92b70bf7 1073 case FB100:
mverdy 20:626b92b70bf7 1074 CurrentFreqBase = FB1K;
mverdy 20:626b92b70bf7 1075 break;
mverdy 20:626b92b70bf7 1076
mverdy 20:626b92b70bf7 1077 case FB1K:
mverdy 20:626b92b70bf7 1078 CurrentFreqBase = FB10K;
mverdy 20:626b92b70bf7 1079 break;
mverdy 20:626b92b70bf7 1080
mverdy 20:626b92b70bf7 1081 case FB10K:
mverdy 20:626b92b70bf7 1082 CurrentFreqBase = FB100K;
mverdy 20:626b92b70bf7 1083 break;
mverdy 20:626b92b70bf7 1084
mverdy 20:626b92b70bf7 1085 case FB100K:
mverdy 20:626b92b70bf7 1086 CurrentFreqBase = FB1M;
mverdy 20:626b92b70bf7 1087 break;
mverdy 20:626b92b70bf7 1088
mverdy 20:626b92b70bf7 1089 case FB1M:
mverdy 20:626b92b70bf7 1090 CurrentFreqBase = FB10M;
mverdy 20:626b92b70bf7 1091 break;
mverdy 20:626b92b70bf7 1092
mverdy 20:626b92b70bf7 1093 case FB10M:
mverdy 20:626b92b70bf7 1094 CurrentFreqBase = FB1;
mverdy 20:626b92b70bf7 1095 break;
mverdy 20:626b92b70bf7 1096 }
mverdy 20:626b92b70bf7 1097 ButtonChangeText( BTN1_BORDER, NULL, ( uint8_t* )GetRadioFreqBase( ) );
mverdy 20:626b92b70bf7 1098 }
mverdy 20:626b92b70bf7 1099 else if( graphObjectTouched == BTN3_BORDER )
mverdy 20:626b92b70bf7 1100 {
mverdy 20:626b92b70bf7 1101 Eeprom.EepromData.DemoSettings.Frequency = DEMO_CENTRAL_FREQ_PRESET1;
mverdy 20:626b92b70bf7 1102 MenuSetPage( PAGE_RADIO_PARAM );
mverdy 20:626b92b70bf7 1103 }
mverdy 20:626b92b70bf7 1104 else if( graphObjectTouched == BTN4_BORDER )
mverdy 20:626b92b70bf7 1105 {
mverdy 20:626b92b70bf7 1106 Eeprom.EepromData.DemoSettings.Frequency = DEMO_CENTRAL_FREQ_PRESET2;
mverdy 20:626b92b70bf7 1107 MenuSetPage( PAGE_RADIO_PARAM );
mverdy 20:626b92b70bf7 1108 }
mverdy 20:626b92b70bf7 1109 else if( graphObjectTouched == BTN5_BORDER )
mverdy 20:626b92b70bf7 1110 {
mverdy 20:626b92b70bf7 1111 Eeprom.EepromData.DemoSettings.Frequency = DEMO_CENTRAL_FREQ_PRESET3;
mverdy 20:626b92b70bf7 1112 MenuSetPage( PAGE_RADIO_PARAM );
mverdy 20:626b92b70bf7 1113 }
mverdy 20:626b92b70bf7 1114 else if( graphObjectTouched == BTN7_BORDER )
mverdy 20:626b92b70bf7 1115 {
mverdy 20:626b92b70bf7 1116 memcpy( &( Eeprom.EepromData.DemoSettings.Frequency ), Eeprom.Buffer + APP_FREQ_EEPROM_ADDR, 4 );
mverdy 20:626b92b70bf7 1117 MenuSetPage( PAGE_RADIO_PARAM );
mverdy 20:626b92b70bf7 1118 }
mverdy 20:626b92b70bf7 1119 else if( graphObjectTouched == BTN8_BORDER )
mverdy 20:626b92b70bf7 1120 {
mverdy 20:626b92b70bf7 1121 MenuSetPage( PAGE_RADIO_PARAM );
mverdy 20:626b92b70bf7 1122 }
mverdy 20:626b92b70bf7 1123 else if( graphObjectTouched == BTN9_BORDER )
mverdy 20:626b92b70bf7 1124 {
mverdy 20:626b92b70bf7 1125 Eeprom.EepromData.DemoSettings.Frequency += CurrentFreqBase;
mverdy 20:626b92b70bf7 1126 if( Eeprom.EepromData.DemoSettings.Frequency > DEMO_CENTRAL_FREQ_MAX )
mverdy 20:626b92b70bf7 1127 {
mverdy 20:626b92b70bf7 1128 Eeprom.EepromData.DemoSettings.Frequency = DEMO_CENTRAL_FREQ_MAX;
mverdy 20:626b92b70bf7 1129 }
mverdy 20:626b92b70bf7 1130 ButtonChangeText( BTN2_BORDER, NULL, ( uint8_t* )GetRadioFrequency( ) );
mverdy 20:626b92b70bf7 1131 }
mverdy 20:626b92b70bf7 1132 break;
mverdy 20:626b92b70bf7 1133
mverdy 20:626b92b70bf7 1134 case PAGE_UTILITIES:
mverdy 20:626b92b70bf7 1135 if( graphObjectTouched == BTN0_BORDER )
mverdy 20:626b92b70bf7 1136 {
mverdy 20:626b92b70bf7 1137 FactoryReset( );
mverdy 20:626b92b70bf7 1138 MenuSetPage( START_PAGE );
mverdy 20:626b92b70bf7 1139 }
mverdy 20:626b92b70bf7 1140 else if( graphObjectTouched == BTN4_BORDER )
mverdy 20:626b92b70bf7 1141 {
mverdy 20:626b92b70bf7 1142 if( Eeprom.EepromData.DemoSettings.RadioPowerMode == USE_LDO )
mverdy 20:626b92b70bf7 1143 {
mverdy 20:626b92b70bf7 1144 Eeprom.EepromData.DemoSettings.RadioPowerMode = USE_DCDC;
mverdy 20:626b92b70bf7 1145 }
mverdy 20:626b92b70bf7 1146 else
mverdy 20:626b92b70bf7 1147 {
mverdy 20:626b92b70bf7 1148 Eeprom.EepromData.DemoSettings.RadioPowerMode = USE_LDO;
mverdy 20:626b92b70bf7 1149 }
mverdy 20:626b92b70bf7 1150 ButtonChangeText( BTN4_BORDER, NULL, ( uint8_t* )GetMenuDemoRadioPowerMode( ) );
mverdy 20:626b92b70bf7 1151 }
mverdy 20:626b92b70bf7 1152 else if( graphObjectTouched == BTN5_BORDER )
mverdy 20:626b92b70bf7 1153 {
mverdy 20:626b92b70bf7 1154 switch( Eeprom.EepromData.DemoSettings.MaxNumPacket )
mverdy 20:626b92b70bf7 1155 {
mverdy 20:626b92b70bf7 1156 case 0:
mverdy 20:626b92b70bf7 1157 Eeprom.EepromData.DemoSettings.MaxNumPacket = 100;
mverdy 20:626b92b70bf7 1158 break;
mverdy 20:626b92b70bf7 1159
mverdy 20:626b92b70bf7 1160 case 100:
mverdy 20:626b92b70bf7 1161 Eeprom.EepromData.DemoSettings.MaxNumPacket = 200;
mverdy 20:626b92b70bf7 1162 break;
mverdy 20:626b92b70bf7 1163
mverdy 20:626b92b70bf7 1164 case 200:
mverdy 20:626b92b70bf7 1165 Eeprom.EepromData.DemoSettings.MaxNumPacket = 500;
mverdy 20:626b92b70bf7 1166 break;
mverdy 20:626b92b70bf7 1167
mverdy 20:626b92b70bf7 1168 case 500:
mverdy 20:626b92b70bf7 1169 Eeprom.EepromData.DemoSettings.MaxNumPacket = 1000;
mverdy 20:626b92b70bf7 1170 break;
mverdy 20:626b92b70bf7 1171
mverdy 20:626b92b70bf7 1172 case 1000:
mverdy 20:626b92b70bf7 1173 Eeprom.EepromData.DemoSettings.MaxNumPacket = 0;
mverdy 20:626b92b70bf7 1174 break;
mverdy 20:626b92b70bf7 1175 }
mverdy 20:626b92b70bf7 1176 ButtonChangeText( BTN5_BORDER, NULL, ( uint8_t* )GetMenuDemoMaxNumPacket( ) );
mverdy 20:626b92b70bf7 1177 }
mverdy 20:626b92b70bf7 1178 else if( graphObjectTouched == BTN6_BORDER )
mverdy 20:626b92b70bf7 1179 {
mverdy 20:626b92b70bf7 1180 if( Eeprom.EepromData.DemoSettings.AntennaSwitch == 0 )
mverdy 20:626b92b70bf7 1181 {
mverdy 20:626b92b70bf7 1182 Eeprom.EepromData.DemoSettings.AntennaSwitch = 1;
mverdy 20:626b92b70bf7 1183 ButtonChangeText( BTN6_BORDER, NULL, ( uint8_t* )"ANT0" );
mverdy 20:626b92b70bf7 1184 }
mverdy 20:626b92b70bf7 1185 else
mverdy 20:626b92b70bf7 1186 {
mverdy 20:626b92b70bf7 1187 Eeprom.EepromData.DemoSettings.AntennaSwitch = 0;
mverdy 20:626b92b70bf7 1188 ButtonChangeText( BTN6_BORDER, NULL, ( uint8_t* )"ANT1" );
mverdy 20:626b92b70bf7 1189 }
mverdy 20:626b92b70bf7 1190 }
mverdy 20:626b92b70bf7 1191 else if( graphObjectTouched == BTN7_BORDER )
mverdy 20:626b92b70bf7 1192 {
mverdy 20:626b92b70bf7 1193 uint8_t modTmp = Eeprom.EepromData.DemoSettings.ModulationType;
mverdy 20:626b92b70bf7 1194
mverdy 20:626b92b70bf7 1195 EepromMcuReadBuffer( 0, Eeprom.Buffer, EEPROM_BUFFER_SIZE );
mverdy 20:626b92b70bf7 1196 EepromLoadGeneralSettings( );
mverdy 20:626b92b70bf7 1197 EepromLoadSettings( ( RadioPacketTypes_t )modTmp );
mverdy 20:626b92b70bf7 1198 MenuSetPage( START_PAGE );
mverdy 20:626b92b70bf7 1199 }
mverdy 20:626b92b70bf7 1200 else if( graphObjectTouched == BTN8_BORDER )
mverdy 20:626b92b70bf7 1201 {
mverdy 20:626b92b70bf7 1202 EepromSaveSettings( DEMO_SETTINGS );
mverdy 20:626b92b70bf7 1203 MenuSetPage( START_PAGE );
mverdy 20:626b92b70bf7 1204 }
mverdy 20:626b92b70bf7 1205 else if( refresh == true )
mverdy 20:626b92b70bf7 1206 {
mverdy 20:626b92b70bf7 1207 MenuSetPage( PAGE_UTILITIES );
mverdy 20:626b92b70bf7 1208 }
mverdy 20:626b92b70bf7 1209 break;
mverdy 20:626b92b70bf7 1210
mverdy 20:626b92b70bf7 1211 case PAGE_RADIO_TEST:
mverdy 20:626b92b70bf7 1212 if( graphObjectTouched == BTN1_BORDER )
mverdy 20:626b92b70bf7 1213 {
mverdy 20:626b92b70bf7 1214 Eeprom.EepromData.DemoSettings.HoldDemo = true;
mverdy 20:626b92b70bf7 1215 MenuSetPage( PAGE_SLEEP_MODE );
mverdy 20:626b92b70bf7 1216 }
mverdy 20:626b92b70bf7 1217 else if( graphObjectTouched == BTN2_BORDER )
mverdy 20:626b92b70bf7 1218 {
mverdy 20:626b92b70bf7 1219 Eeprom.EepromData.DemoSettings.HoldDemo = true;
mverdy 20:626b92b70bf7 1220 MenuSetPage( PAGE_STBY_RC_MODE );
mverdy 20:626b92b70bf7 1221 }
mverdy 20:626b92b70bf7 1222 else if( graphObjectTouched == BTN3_BORDER )
mverdy 20:626b92b70bf7 1223 {
mverdy 20:626b92b70bf7 1224 Eeprom.EepromData.DemoSettings.HoldDemo = true;
mverdy 20:626b92b70bf7 1225 MenuSetPage( PAGE_STBY_XOSC_MODE );
mverdy 20:626b92b70bf7 1226 }
mverdy 20:626b92b70bf7 1227 else if( graphObjectTouched == BTN4_BORDER )
mverdy 20:626b92b70bf7 1228 {
mverdy 20:626b92b70bf7 1229 Eeprom.EepromData.DemoSettings.HoldDemo = true;
mverdy 20:626b92b70bf7 1230 MenuSetPage( PAGE_TX_CW );
mverdy 20:626b92b70bf7 1231 }
mverdy 20:626b92b70bf7 1232 else if( graphObjectTouched == BTN5_BORDER )
mverdy 20:626b92b70bf7 1233 {
mverdy 20:626b92b70bf7 1234 Eeprom.EepromData.DemoSettings.HoldDemo = true;
mverdy 20:626b92b70bf7 1235 MenuSetPage( PAGE_CONT_MODULATION );
mverdy 20:626b92b70bf7 1236 }
mverdy 20:626b92b70bf7 1237 else if( graphObjectTouched == BTN7_BORDER )
mverdy 20:626b92b70bf7 1238 {
mverdy 20:626b92b70bf7 1239 Eeprom.EepromData.DemoSettings.HoldDemo = true;
mverdy 20:626b92b70bf7 1240 MenuSetPage( START_PAGE );
mverdy 20:626b92b70bf7 1241 }
mverdy 20:626b92b70bf7 1242 break;
mverdy 20:626b92b70bf7 1243
mverdy 20:626b92b70bf7 1244 case PAGE_SLEEP_MODE:
mverdy 20:626b92b70bf7 1245 if( graphObjectTouched == BTN7_BORDER )
mverdy 20:626b92b70bf7 1246 {
mverdy 20:626b92b70bf7 1247 StopDemoApplication( );
mverdy 20:626b92b70bf7 1248 Eeprom.EepromData.DemoSettings.HoldDemo = true;
mverdy 20:626b92b70bf7 1249 PreviousPage = START_PAGE; // clear Previous page
mverdy 20:626b92b70bf7 1250 MenuSetPage( START_PAGE );
mverdy 20:626b92b70bf7 1251 }
mverdy 20:626b92b70bf7 1252 else if( graphObjectTouched == BTN8_BORDER )
mverdy 20:626b92b70bf7 1253 {
mverdy 20:626b92b70bf7 1254 if( Eeprom.EepromData.DemoSettings.HoldDemo == true )
mverdy 20:626b92b70bf7 1255 {
mverdy 20:626b92b70bf7 1256 Eeprom.EepromData.DemoSettings.HoldDemo = false;
mverdy 20:626b92b70bf7 1257 StopDemoApplication( );
mverdy 20:626b92b70bf7 1258 ButtonChangeText( BTN8_BORDER, ( uint8_t* )" STOP", NULL );
mverdy 20:626b92b70bf7 1259 RunDemoSleepMode( );
mverdy 20:626b92b70bf7 1260 }
mverdy 20:626b92b70bf7 1261 else
mverdy 20:626b92b70bf7 1262 {
mverdy 20:626b92b70bf7 1263 Eeprom.EepromData.DemoSettings.HoldDemo = true;
mverdy 20:626b92b70bf7 1264 StopDemoApplication( );
mverdy 20:626b92b70bf7 1265 ButtonChangeText( BTN8_BORDER, ( uint8_t* )" START", NULL );
mverdy 20:626b92b70bf7 1266 MenuSetPage( PAGE_SLEEP_MODE );
mverdy 20:626b92b70bf7 1267 }
mverdy 20:626b92b70bf7 1268 }
mverdy 20:626b92b70bf7 1269 else if( graphObjectTouched == BTN9_BORDER )
mverdy 20:626b92b70bf7 1270 {
mverdy 20:626b92b70bf7 1271 Eeprom.EepromData.DemoSettings.HoldDemo = true;
mverdy 20:626b92b70bf7 1272 // "CANCEL" or "OK & SAVE" button of PAGE_RADIO_PARAM use
mverdy 20:626b92b70bf7 1273 // PreviousPage to set next page. Speed up the navigation.
mverdy 20:626b92b70bf7 1274 PreviousPage = PAGE_SLEEP_MODE;
mverdy 20:626b92b70bf7 1275 MenuSetPage( PAGE_RADIO_PARAM );
mverdy 20:626b92b70bf7 1276 }
mverdy 20:626b92b70bf7 1277 break;
mverdy 20:626b92b70bf7 1278
mverdy 20:626b92b70bf7 1279 case PAGE_STBY_RC_MODE:
mverdy 20:626b92b70bf7 1280 if( graphObjectTouched == BTN7_BORDER )
mverdy 20:626b92b70bf7 1281 {
mverdy 20:626b92b70bf7 1282 StopDemoApplication( );
mverdy 20:626b92b70bf7 1283 Eeprom.EepromData.DemoSettings.HoldDemo = true;
mverdy 20:626b92b70bf7 1284 PreviousPage = START_PAGE; // clear Previous page
mverdy 20:626b92b70bf7 1285 MenuSetPage( START_PAGE );
mverdy 20:626b92b70bf7 1286 }
mverdy 20:626b92b70bf7 1287 else if( graphObjectTouched == BTN8_BORDER )
mverdy 20:626b92b70bf7 1288 {
mverdy 20:626b92b70bf7 1289 if( Eeprom.EepromData.DemoSettings.HoldDemo == true )
mverdy 20:626b92b70bf7 1290 {
mverdy 20:626b92b70bf7 1291 Eeprom.EepromData.DemoSettings.HoldDemo = false;
mverdy 20:626b92b70bf7 1292 StopDemoApplication( );
mverdy 20:626b92b70bf7 1293 RunDemoStandbyRcMode( );
mverdy 20:626b92b70bf7 1294 ButtonChangeText( BTN8_BORDER, ( uint8_t* )" STOP", NULL );
mverdy 20:626b92b70bf7 1295 }
mverdy 20:626b92b70bf7 1296 else
mverdy 20:626b92b70bf7 1297 {
mverdy 20:626b92b70bf7 1298 Eeprom.EepromData.DemoSettings.HoldDemo = true;
mverdy 20:626b92b70bf7 1299 StopDemoApplication( );
mverdy 20:626b92b70bf7 1300 ButtonChangeText( BTN8_BORDER, ( uint8_t* )" START", NULL );
mverdy 20:626b92b70bf7 1301 }
mverdy 20:626b92b70bf7 1302 }
mverdy 20:626b92b70bf7 1303 else if( graphObjectTouched == BTN9_BORDER )
mverdy 20:626b92b70bf7 1304 {
mverdy 20:626b92b70bf7 1305 Eeprom.EepromData.DemoSettings.HoldDemo = true;
mverdy 20:626b92b70bf7 1306 // "CANCEL" or "OK & SAVE" button of PAGE_RADIO_PARAM use
mverdy 20:626b92b70bf7 1307 // PreviousPage to set next page. Speed up the navigation.
mverdy 20:626b92b70bf7 1308 PreviousPage = PAGE_STBY_RC_MODE;
mverdy 20:626b92b70bf7 1309 MenuSetPage( PAGE_RADIO_PARAM );
mverdy 20:626b92b70bf7 1310 }
mverdy 20:626b92b70bf7 1311 break;
mverdy 20:626b92b70bf7 1312
mverdy 20:626b92b70bf7 1313 case PAGE_STBY_XOSC_MODE:
mverdy 20:626b92b70bf7 1314 if( graphObjectTouched == BTN7_BORDER )
mverdy 20:626b92b70bf7 1315 {
mverdy 20:626b92b70bf7 1316 StopDemoApplication( );
mverdy 20:626b92b70bf7 1317 Eeprom.EepromData.DemoSettings.HoldDemo = true;
mverdy 20:626b92b70bf7 1318 PreviousPage = START_PAGE; // clear Previous page
mverdy 20:626b92b70bf7 1319 MenuSetPage( START_PAGE );
mverdy 20:626b92b70bf7 1320 }
mverdy 20:626b92b70bf7 1321 else if( graphObjectTouched == BTN8_BORDER )
mverdy 20:626b92b70bf7 1322 {
mverdy 20:626b92b70bf7 1323 if( Eeprom.EepromData.DemoSettings.HoldDemo == true )
mverdy 20:626b92b70bf7 1324 {
mverdy 20:626b92b70bf7 1325 Eeprom.EepromData.DemoSettings.HoldDemo = false;
mverdy 20:626b92b70bf7 1326 StopDemoApplication( );
mverdy 20:626b92b70bf7 1327 RunDemoStandbyXoscMode( );
mverdy 20:626b92b70bf7 1328 ButtonChangeText( BTN8_BORDER, ( uint8_t* )" STOP", NULL );
mverdy 20:626b92b70bf7 1329 }
mverdy 20:626b92b70bf7 1330 else
mverdy 20:626b92b70bf7 1331 {
mverdy 20:626b92b70bf7 1332 Eeprom.EepromData.DemoSettings.HoldDemo = true;
mverdy 20:626b92b70bf7 1333 StopDemoApplication( );
mverdy 20:626b92b70bf7 1334 ButtonChangeText( BTN8_BORDER, ( uint8_t* )" START", NULL );
mverdy 20:626b92b70bf7 1335 }
mverdy 20:626b92b70bf7 1336 }
mverdy 20:626b92b70bf7 1337 else if( graphObjectTouched == BTN9_BORDER )
mverdy 20:626b92b70bf7 1338 {
mverdy 20:626b92b70bf7 1339 Eeprom.EepromData.DemoSettings.HoldDemo = true;
mverdy 20:626b92b70bf7 1340 // "CANCEL" or "OK & SAVE" button of PAGE_RADIO_PARAM use
mverdy 20:626b92b70bf7 1341 // PreviousPage to set next page. Speed up the navigation.
mverdy 20:626b92b70bf7 1342 PreviousPage = PAGE_STBY_XOSC_MODE;
mverdy 20:626b92b70bf7 1343 MenuSetPage( PAGE_RADIO_PARAM );
mverdy 20:626b92b70bf7 1344 }
mverdy 20:626b92b70bf7 1345 break;
mverdy 20:626b92b70bf7 1346
mverdy 20:626b92b70bf7 1347 case PAGE_TX_CW:
mverdy 20:626b92b70bf7 1348 if( graphObjectTouched == BTN7_BORDER )
mverdy 20:626b92b70bf7 1349 {
mverdy 20:626b92b70bf7 1350 StopDemoApplication( );
mverdy 20:626b92b70bf7 1351 Eeprom.EepromData.DemoSettings.HoldDemo = true;
mverdy 20:626b92b70bf7 1352 PreviousPage = START_PAGE; // clear Previous page
mverdy 20:626b92b70bf7 1353 MenuSetPage( START_PAGE );
mverdy 20:626b92b70bf7 1354 }
mverdy 20:626b92b70bf7 1355 else if( graphObjectTouched == BTN8_BORDER )
mverdy 20:626b92b70bf7 1356 {
mverdy 20:626b92b70bf7 1357 if( Eeprom.EepromData.DemoSettings.HoldDemo == true )
mverdy 20:626b92b70bf7 1358 {
mverdy 20:626b92b70bf7 1359 Eeprom.EepromData.DemoSettings.HoldDemo = false;
mverdy 20:626b92b70bf7 1360 StopDemoApplication( );
mverdy 20:626b92b70bf7 1361 RunDemoTxCw( );
mverdy 20:626b92b70bf7 1362 ButtonChangeText( BTN8_BORDER, ( uint8_t* )" STOP", NULL );
mverdy 20:626b92b70bf7 1363 }
mverdy 20:626b92b70bf7 1364 else
mverdy 20:626b92b70bf7 1365 {
mverdy 20:626b92b70bf7 1366 Eeprom.EepromData.DemoSettings.HoldDemo = true;
mverdy 20:626b92b70bf7 1367 StopDemoApplication( );
mverdy 20:626b92b70bf7 1368 ButtonChangeText( BTN8_BORDER, ( uint8_t* )" START", NULL );
mverdy 20:626b92b70bf7 1369 }
mverdy 20:626b92b70bf7 1370 }
mverdy 20:626b92b70bf7 1371 else if( graphObjectTouched == BTN9_BORDER )
mverdy 20:626b92b70bf7 1372 {
mverdy 20:626b92b70bf7 1373 Eeprom.EepromData.DemoSettings.HoldDemo = true;
mverdy 20:626b92b70bf7 1374 // "CANCEL" or "OK & SAVE" button of PAGE_RADIO_PARAM use
mverdy 20:626b92b70bf7 1375 // PreviousPage to set next page. Speed up the navigation.
mverdy 20:626b92b70bf7 1376 PreviousPage = PAGE_TX_CW;
mverdy 20:626b92b70bf7 1377 MenuSetPage( PAGE_RADIO_PARAM );
mverdy 20:626b92b70bf7 1378 }
mverdy 20:626b92b70bf7 1379 break;
mverdy 20:626b92b70bf7 1380
mverdy 20:626b92b70bf7 1381 case PAGE_CONT_MODULATION:
mverdy 20:626b92b70bf7 1382 if( graphObjectTouched == BTN7_BORDER )
mverdy 20:626b92b70bf7 1383 {
mverdy 20:626b92b70bf7 1384 StopDemoApplication( );
mverdy 20:626b92b70bf7 1385 Eeprom.EepromData.DemoSettings.HoldDemo = true;
mverdy 20:626b92b70bf7 1386 PreviousPage = START_PAGE; // clear Previous page
mverdy 20:626b92b70bf7 1387 MenuSetPage( START_PAGE );
mverdy 20:626b92b70bf7 1388 }
mverdy 20:626b92b70bf7 1389 else if( graphObjectTouched == BTN8_BORDER )
mverdy 20:626b92b70bf7 1390 {
mverdy 20:626b92b70bf7 1391 if( Eeprom.EepromData.DemoSettings.HoldDemo == true )
mverdy 20:626b92b70bf7 1392 {
mverdy 20:626b92b70bf7 1393 Eeprom.EepromData.DemoSettings.HoldDemo = false;
mverdy 20:626b92b70bf7 1394 StopDemoApplication( );
mverdy 20:626b92b70bf7 1395 RunDemoTxContinuousModulation( );
mverdy 20:626b92b70bf7 1396 ButtonChangeText( BTN8_BORDER, ( uint8_t* )" STOP", NULL );
mverdy 20:626b92b70bf7 1397 }
mverdy 20:626b92b70bf7 1398 else
mverdy 20:626b92b70bf7 1399 {
mverdy 20:626b92b70bf7 1400 Eeprom.EepromData.DemoSettings.HoldDemo = true;
mverdy 20:626b92b70bf7 1401 StopDemoApplication( );
mverdy 20:626b92b70bf7 1402 ButtonChangeText( BTN8_BORDER, ( uint8_t* )" START", NULL );
mverdy 20:626b92b70bf7 1403 }
mverdy 20:626b92b70bf7 1404 }
mverdy 20:626b92b70bf7 1405 else if( graphObjectTouched == BTN9_BORDER )
mverdy 20:626b92b70bf7 1406 {
mverdy 20:626b92b70bf7 1407 Eeprom.EepromData.DemoSettings.HoldDemo = true;
mverdy 20:626b92b70bf7 1408 // "CANCEL" or "OK & SAVE" button of PAGE_RADIO_PARAM use
mverdy 20:626b92b70bf7 1409 // PreviousPage to set next page. Speed up the navigation.
mverdy 20:626b92b70bf7 1410 PreviousPage = PAGE_CONT_MODULATION;
mverdy 20:626b92b70bf7 1411 MenuSetPage( PAGE_RADIO_PARAM );
mverdy 20:626b92b70bf7 1412 }
mverdy 20:626b92b70bf7 1413 break;
mverdy 20:626b92b70bf7 1414 }
mverdy 20:626b92b70bf7 1415 }
mverdy 20:626b92b70bf7 1416 return CurrentPage;
mverdy 20:626b92b70bf7 1417 }
mverdy 20:626b92b70bf7 1418
mverdy 20:626b92b70bf7 1419 void MenuSetPage( uint8_t page )
mverdy 20:626b92b70bf7 1420 {
mverdy 20:626b92b70bf7 1421 if( page != CurrentPage )
mverdy 20:626b92b70bf7 1422 {
mverdy 20:626b92b70bf7 1423 // remove all button and text (except title, page border and line)
mverdy 20:626b92b70bf7 1424 // and disable all button (touchActive = false).
mverdy 20:626b92b70bf7 1425 GraphObject_t clearRect = { NULL, GO_RECTANGLE, 3, 35, 282, 230, 1, \
mverdy 20:626b92b70bf7 1426 BACK_COLOR, BACK_COLOR, true, BACK_COLOR, \
mverdy 20:626b92b70bf7 1427 NULL, false };
mverdy 20:626b92b70bf7 1428
mverdy 20:626b92b70bf7 1429 GraphObjectClear( &clearRect, true );
mverdy 20:626b92b70bf7 1430 for( uint8_t i = 0; i < GRAPH_OBJECTS_COUNT; i++ )
mverdy 20:626b92b70bf7 1431 {
mverdy 20:626b92b70bf7 1432 MenuObjects[i].TouchActive = false;
mverdy 20:626b92b70bf7 1433 }
mverdy 20:626b92b70bf7 1434 }
mverdy 20:626b92b70bf7 1435
mverdy 20:626b92b70bf7 1436 switch( page )
mverdy 20:626b92b70bf7 1437 {
mverdy 20:626b92b70bf7 1438 case START_PAGE:
mverdy 20:626b92b70bf7 1439 DrawText( TITLE_TEXT, ( uint8_t* )" SX1280 Demo Kit", NULL, NULL );
mverdy 20:626b92b70bf7 1440 DisplayDriverDrawLogo( SemtechLogo, 20, 37 );
mverdy 20:626b92b70bf7 1441 DrawActiveButton( BTN2_BORDER, ( uint8_t* )"DEMO Ping Pong", NULL );
mverdy 20:626b92b70bf7 1442 DrawActiveButton( BTN3_BORDER, ( uint8_t* )"DEMO PER FHSS", NULL );
mverdy 20:626b92b70bf7 1443 DrawActiveButton( BTN4_BORDER, ( uint8_t* )"Outdoor ranging demo", NULL );
mverdy 20:626b92b70bf7 1444 DrawActiveButton( BTN5_BORDER, ( uint8_t* )"Radio Test Modes", NULL );
mverdy 20:626b92b70bf7 1445 DrawActiveButton( BTN6_BORDER, ( uint8_t* )"Radio Settings", NULL );
mverdy 20:626b92b70bf7 1446 DrawActiveButton( BTN7_BORDER, ( uint8_t* )"Utilities", NULL );
mverdy 20:626b92b70bf7 1447 CurrentPage = START_PAGE;
mverdy 20:626b92b70bf7 1448 break;
mverdy 20:626b92b70bf7 1449
mverdy 20:626b92b70bf7 1450 case PAGE_PING_PONG:
mverdy 20:626b92b70bf7 1451 if( CurrentPage == PAGE_PING_PONG )
mverdy 20:626b92b70bf7 1452 {
mverdy 20:626b92b70bf7 1453 if( Eeprom.EepromData.DemoSettings.HoldDemo == true )
mverdy 20:626b92b70bf7 1454 {
mverdy 20:626b92b70bf7 1455 ButtonChangeText( BTN8_BORDER, ( uint8_t* )" START", NULL );
mverdy 20:626b92b70bf7 1456 }
mverdy 20:626b92b70bf7 1457 if( Eeprom.EepromData.DemoSettings.Entity == MASTER )
mverdy 20:626b92b70bf7 1458 {
mverdy 20:626b92b70bf7 1459 DrawText( LINE4_COL0_TEXT, NULL, ( uint8_t* )GetMenuDemoRxOkSlave( ), ( uint8_t* )GetMenuDemoRxOk( ) );
mverdy 20:626b92b70bf7 1460 DrawText( LINE5_COL0_TEXT, NULL, ( uint8_t* )GetMenuDemoRxKoSlave( ), ( uint8_t* )GetMenuDemoRxKo( ) );
mverdy 20:626b92b70bf7 1461 DrawText( LINE6_COL0_TEXT, NULL, ( uint8_t* )GetMenuDemoResultPerCent1( Eeprom.EepromData.DemoSettings.CntPacketRxOKSlave, Eeprom.EepromData.DemoSettings.CntPacketRxOKSlave + Eeprom.EepromData.DemoSettings.CntPacketRxKOSlave ), \
mverdy 20:626b92b70bf7 1462 ( uint8_t* )GetMenuDemoResultPerCent2( Eeprom.EepromData.DemoSettings.CntPacketRxOK, Eeprom.EepromData.DemoSettings.CntPacketRxOK + Eeprom.EepromData.DemoSettings.CntPacketRxKO + Eeprom.EepromData.DemoSettings.RxTimeOutCount ) );
mverdy 20:626b92b70bf7 1463 DrawText( LINE7_COL0_TEXT, NULL, ( uint8_t* )GetMenuDemoResultPerCent1( Eeprom.EepromData.DemoSettings.CntPacketRxKOSlave, Eeprom.EepromData.DemoSettings.CntPacketRxOKSlave + Eeprom.EepromData.DemoSettings.CntPacketRxKOSlave ), \
mverdy 20:626b92b70bf7 1464 ( uint8_t* )GetMenuDemoResultPerCent2( Eeprom.EepromData.DemoSettings.CntPacketRxKO + Eeprom.EepromData.DemoSettings.RxTimeOutCount, Eeprom.EepromData.DemoSettings.CntPacketRxOK + Eeprom.EepromData.DemoSettings.CntPacketRxKO + Eeprom.EepromData.DemoSettings.RxTimeOutCount ) );
mverdy 20:626b92b70bf7 1465 DrawText( LINE8_COL0_TEXT, NULL, ( uint8_t* )GetMenuDemoRssi( ), NULL );
mverdy 20:626b92b70bf7 1466 DrawText( LINE9_COL0_TEXT, NULL, ( uint8_t* )GetMenuDemoSnr( ), NULL );
mverdy 20:626b92b70bf7 1467 }
mverdy 20:626b92b70bf7 1468 else
mverdy 20:626b92b70bf7 1469 {
mverdy 20:626b92b70bf7 1470 DrawText( LINE4_COL0_TEXT, NULL, ( uint8_t* )GetMenuDemoRxOk( ), NULL );
mverdy 20:626b92b70bf7 1471 DrawText( LINE5_COL0_TEXT, NULL, ( uint8_t* )GetMenuDemoRxKo( ), NULL );
mverdy 20:626b92b70bf7 1472 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 );
mverdy 20:626b92b70bf7 1473 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 );
mverdy 20:626b92b70bf7 1474 DrawText( LINE8_COL0_TEXT, NULL, ( uint8_t* )GetMenuDemoRssi( ), NULL );
mverdy 20:626b92b70bf7 1475 DrawText( LINE9_COL0_TEXT, NULL, ( uint8_t* )GetMenuDemoSnr( ), NULL );
mverdy 20:626b92b70bf7 1476 }
mverdy 20:626b92b70bf7 1477 }
mverdy 20:626b92b70bf7 1478 else
mverdy 20:626b92b70bf7 1479 {
mverdy 20:626b92b70bf7 1480 DrawText( TITLE_TEXT, ( uint8_t* )" PING PONG Demo", NULL, NULL );
mverdy 20:626b92b70bf7 1481 DisplayCurrentRadioParams( PAGE_PING_PONG );
mverdy 20:626b92b70bf7 1482 DrawText( LINE3_COL0_TEXT, ( uint8_t* )GetTotalPackets( ), ( uint8_t* )" SLAVE", NULL );
mverdy 20:626b92b70bf7 1483 DrawText( LINE4_COL0_TEXT, ( uint8_t* )"Rx OK", ( uint8_t* )" 0", NULL );
mverdy 20:626b92b70bf7 1484 DrawText( LINE5_COL0_TEXT, ( uint8_t* )"Rx KO", ( uint8_t* )" 0", NULL );
mverdy 20:626b92b70bf7 1485 DrawText( LINE6_COL0_TEXT, ( uint8_t* )"Rx PSR", ( uint8_t* )" 0.00", NULL );
mverdy 20:626b92b70bf7 1486 DrawText( LINE7_COL0_TEXT, ( uint8_t* )"Rx PER", ( uint8_t* )" 0.00", NULL );
mverdy 20:626b92b70bf7 1487 DrawText( LINE8_COL0_TEXT, ( uint8_t* )"Last Rssi", ( uint8_t* )" 0", NULL );
mverdy 20:626b92b70bf7 1488 DrawText( LINE9_COL0_TEXT, ( uint8_t* )"Last SNR", ( uint8_t* )" 0", NULL );
mverdy 20:626b92b70bf7 1489 if( Eeprom.EepromData.DemoSettings.Entity == MASTER )
mverdy 20:626b92b70bf7 1490 {
mverdy 20:626b92b70bf7 1491 DrawActiveButton( BTN0_BORDER, ( uint8_t* )" MASTER", NULL );
mverdy 20:626b92b70bf7 1492 DrawText( LINE3_COL0_TEXT, NULL, NULL, ( uint8_t* )"MASTER" );
mverdy 20:626b92b70bf7 1493 DrawText( LINE4_COL0_TEXT, NULL, NULL, ( uint8_t* )" 0" );
mverdy 20:626b92b70bf7 1494 DrawText( LINE5_COL0_TEXT, NULL, NULL, ( uint8_t* )" 0" );
mverdy 20:626b92b70bf7 1495 DrawText( LINE6_COL0_TEXT, NULL, NULL, ( uint8_t* )" 0.00" );
mverdy 20:626b92b70bf7 1496 DrawText( LINE7_COL0_TEXT, NULL, NULL, ( uint8_t* )" 0.00" );
mverdy 20:626b92b70bf7 1497 }
mverdy 20:626b92b70bf7 1498 else
mverdy 20:626b92b70bf7 1499 {
mverdy 20:626b92b70bf7 1500 DrawActiveButton( BTN0_BORDER, ( uint8_t* )" SLAVE", NULL );
mverdy 20:626b92b70bf7 1501 }
mverdy 20:626b92b70bf7 1502 DrawActiveButton( BTN7_BORDER, ( uint8_t* )" EXIT", NULL );
mverdy 20:626b92b70bf7 1503 DrawActiveButton( BTN8_BORDER, ( uint8_t* )" START", NULL );
mverdy 20:626b92b70bf7 1504 DrawActiveButton( BTN9_BORDER, ( uint8_t* )" SETTINGS", NULL );
mverdy 20:626b92b70bf7 1505 }
mverdy 20:626b92b70bf7 1506 CurrentPage = PAGE_PING_PONG;
mverdy 20:626b92b70bf7 1507 break;
mverdy 20:626b92b70bf7 1508
mverdy 20:626b92b70bf7 1509 case PAGE_PER:
mverdy 20:626b92b70bf7 1510 if( CurrentPage == PAGE_PER )
mverdy 20:626b92b70bf7 1511 {
mverdy 20:626b92b70bf7 1512 if( Eeprom.EepromData.DemoSettings.HoldDemo == true )
mverdy 20:626b92b70bf7 1513 {
mverdy 20:626b92b70bf7 1514 ButtonChangeText( BTN8_BORDER, ( uint8_t* )" START", NULL );
mverdy 20:626b92b70bf7 1515 }
mverdy 20:626b92b70bf7 1516 if( Eeprom.EepromData.DemoSettings.Entity == MASTER )
mverdy 20:626b92b70bf7 1517 {
mverdy 20:626b92b70bf7 1518 DrawText( LINE4_COL0_TEXT, NULL, ( uint8_t* )GetMenuDemoNumSentPacket( ), NULL );
mverdy 20:626b92b70bf7 1519 }
mverdy 20:626b92b70bf7 1520 else
mverdy 20:626b92b70bf7 1521 {
mverdy 20:626b92b70bf7 1522 DrawText( LINE4_COL0_TEXT, NULL, ( uint8_t* )GetMenuDemoRxOk( ), NULL );
mverdy 20:626b92b70bf7 1523 DrawText( LINE5_COL0_TEXT, NULL, ( uint8_t* )GetMenuDemoRxKo( ), NULL );
mverdy 20:626b92b70bf7 1524 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 );
mverdy 20:626b92b70bf7 1525 DrawText( LINE8_COL0_TEXT, NULL, ( uint8_t* )GetMenuDemoRssi( ), NULL );
mverdy 20:626b92b70bf7 1526 DrawText( LINE9_COL0_TEXT, NULL, ( uint8_t* )GetMenuDemoSnr( ), NULL );
mverdy 20:626b92b70bf7 1527 }
mverdy 20:626b92b70bf7 1528 }
mverdy 20:626b92b70bf7 1529 else
mverdy 20:626b92b70bf7 1530 {
mverdy 20:626b92b70bf7 1531 DrawText( TITLE_TEXT, ( uint8_t* )" PER Demo FHSS", NULL, NULL );
mverdy 20:626b92b70bf7 1532 DrawText( LINE3_COL0_TEXT, ( uint8_t* )"Test Total", ( uint8_t* )GetMenuDemoMaxNumPacket( ), NULL );
mverdy 20:626b92b70bf7 1533 DisplayCurrentRadioParams( PAGE_PER );
mverdy 20:626b92b70bf7 1534 if( Eeprom.EepromData.DemoSettings.Entity == MASTER )
mverdy 20:626b92b70bf7 1535 {
mverdy 20:626b92b70bf7 1536 DrawActiveButton( BTN0_BORDER, ( uint8_t* )" MASTER", NULL );
mverdy 20:626b92b70bf7 1537 DrawText( LINE4_COL0_TEXT, ( uint8_t* )"Transmitted", ( uint8_t* )GetMenuDemoNumSentPacket( ), NULL );
mverdy 20:626b92b70bf7 1538 }
mverdy 20:626b92b70bf7 1539 else
mverdy 20:626b92b70bf7 1540 {
mverdy 20:626b92b70bf7 1541 DrawActiveButton( BTN0_BORDER, ( uint8_t* )" SLAVE", NULL );
mverdy 20:626b92b70bf7 1542 DrawText( LINE4_COL0_TEXT, ( uint8_t* )"Rx OK", ( uint8_t* )" 0", NULL );
mverdy 20:626b92b70bf7 1543 DrawText( LINE5_COL0_TEXT, ( uint8_t* )"Rx KO", ( uint8_t* )" 0", NULL );
mverdy 20:626b92b70bf7 1544 DrawText( LINE6_COL0_TEXT, ( uint8_t* )"PER", ( uint8_t* )" 0.00", NULL );
mverdy 20:626b92b70bf7 1545 DrawText( LINE8_COL0_TEXT, ( uint8_t* )"Last Rssi", ( uint8_t* )" 0", NULL );
mverdy 20:626b92b70bf7 1546 DrawText( LINE9_COL0_TEXT, ( uint8_t* )"Last SNR", ( uint8_t* )" 0", NULL );
mverdy 20:626b92b70bf7 1547 }
mverdy 20:626b92b70bf7 1548 DrawActiveButton( BTN7_BORDER, ( uint8_t* )" EXIT", NULL );
mverdy 20:626b92b70bf7 1549 DrawActiveButton( BTN8_BORDER, ( uint8_t* )" START", NULL );
mverdy 20:626b92b70bf7 1550 DrawActiveButton( BTN9_BORDER, ( uint8_t* )" SETTINGS", NULL );
mverdy 20:626b92b70bf7 1551 }
mverdy 20:626b92b70bf7 1552 CurrentPage = PAGE_PER;
mverdy 20:626b92b70bf7 1553 break;
mverdy 20:626b92b70bf7 1554
mverdy 20:626b92b70bf7 1555 case PAGE_RANGING_MASTER:
mverdy 20:626b92b70bf7 1556 if( CurrentPage == PAGE_RANGING_MASTER )
mverdy 20:626b92b70bf7 1557 {
mverdy 20:626b92b70bf7 1558 if( Eeprom.EepromData.DemoSettings.HoldDemo == true )
mverdy 20:626b92b70bf7 1559 {
mverdy 20:626b92b70bf7 1560 ButtonChangeText( BTN8_BORDER, ( uint8_t* )" REFRESH", NULL );
mverdy 20:626b92b70bf7 1561 }
mverdy 20:626b92b70bf7 1562 // Clear actual distance token
mverdy 20:626b92b70bf7 1563 GraphObjectClear( &( MenuObjects[RNG_DIST_CIRCLE] ), true );
mverdy 20:626b92b70bf7 1564 // update scale of circles
mverdy 20:626b92b70bf7 1565 for( uint8_t i = SCALE_LINE_COUNT; i > 0; i-- )
mverdy 20:626b92b70bf7 1566 {
mverdy 20:626b92b70bf7 1567 sprintf( StringText, "%d", i * ( Eeprom.EepromData.DemoSettings.RngFullScale / SCALE_LINE_COUNT ) );
mverdy 20:626b92b70bf7 1568 DrawText( RNG_DS1_TEXT + i - 1, ( uint8_t* )" ", NULL, NULL );
mverdy 20:626b92b70bf7 1569 DrawText( RNG_DS1_TEXT + i - 1, ( uint8_t* )StringText, NULL, NULL );
mverdy 20:626b92b70bf7 1570 }
mverdy 20:626b92b70bf7 1571 uint16_t DistPixel;
mverdy 20:626b92b70bf7 1572 // Compute position (pixel) of token
mverdy 20:626b92b70bf7 1573 // distance line high is 160px : it's the reference for distance graphical objects (represent full scale)
mverdy 20:626b92b70bf7 1574 DistPixel = ( uint16_t )( Eeprom.EepromData.DemoSettings.RngDistance * 160.0 / Eeprom.EepromData.DemoSettings.RngFullScale );
mverdy 20:626b92b70bf7 1575 MenuObjects[RNG_DIST_CIRCLE].FrontColor = WHITE;
mverdy 20:626b92b70bf7 1576 // Need to change full scale ? yes if dist > fullscale or if dist < fullscale / SCALE_LINE_COUNT
mverdy 20:626b92b70bf7 1577 // fullscale will be updated next time
mverdy 20:626b92b70bf7 1578 if( DistPixel > 160 )
mverdy 20:626b92b70bf7 1579 {
mverdy 20:626b92b70bf7 1580 DistPixel = 160;
mverdy 20:626b92b70bf7 1581 MenuObjects[RNG_DIST_CIRCLE].FrontColor = OBJECT_ERROR;
mverdy 20:626b92b70bf7 1582 Eeprom.EepromData.DemoSettings.RngFullScale = ( uint16_t )ceil( 1.2 * ( Eeprom.EepromData.DemoSettings.RngDistance / SCALE_LINE_COUNT ) ) * SCALE_LINE_COUNT;
mverdy 20:626b92b70bf7 1583 if( Eeprom.EepromData.DemoSettings.RngFullScale > RANGING_FULLSCALE_MAX )
mverdy 20:626b92b70bf7 1584 {
mverdy 20:626b92b70bf7 1585 Eeprom.EepromData.DemoSettings.RngFullScale = RANGING_FULLSCALE_MAX;
mverdy 20:626b92b70bf7 1586 }
mverdy 20:626b92b70bf7 1587 }
mverdy 20:626b92b70bf7 1588 else if( DistPixel < ( 160 / SCALE_LINE_COUNT ) )
mverdy 20:626b92b70bf7 1589 {
mverdy 20:626b92b70bf7 1590 Eeprom.EepromData.DemoSettings.RngFullScale = ( uint16_t )ceil( 1.2 * ( Eeprom.EepromData.DemoSettings.RngDistance / SCALE_LINE_COUNT ) ) * SCALE_LINE_COUNT;
mverdy 20:626b92b70bf7 1591 if( Eeprom.EepromData.DemoSettings.RngFullScale < RANGING_FULLSCALE_MIN )
mverdy 20:626b92b70bf7 1592 {
mverdy 20:626b92b70bf7 1593 Eeprom.EepromData.DemoSettings.RngFullScale = RANGING_FULLSCALE_MIN;
mverdy 20:626b92b70bf7 1594 }
mverdy 20:626b92b70bf7 1595 }
mverdy 20:626b92b70bf7 1596 // Check timeout error
mverdy 20:626b92b70bf7 1597 if( Eeprom.EepromData.DemoSettings.RngStatus != RNG_VALID )
mverdy 20:626b92b70bf7 1598 {
mverdy 20:626b92b70bf7 1599 MenuObjects[RNG_DIST_CIRCLE].FrontColor = OBJECT_ERROR;
mverdy 20:626b92b70bf7 1600 }
mverdy 20:626b92b70bf7 1601 switch( Eeprom.EepromData.DemoSettings.RngUnit )
mverdy 20:626b92b70bf7 1602 {
mverdy 20:626b92b70bf7 1603 case DEMO_RNG_UNIT_SEL_M:
mverdy 20:626b92b70bf7 1604 // Print distance on the top with decimal under 1000
mverdy 20:626b92b70bf7 1605 if( Eeprom.EepromData.DemoSettings.RngDistance >= 1000.0 )
mverdy 20:626b92b70bf7 1606 {
mverdy 20:626b92b70bf7 1607 sprintf( StringText, "Range: %5d m", ( uint16_t )Eeprom.EepromData.DemoSettings.RngDistance );
mverdy 20:626b92b70bf7 1608 sprintf( StringText2, "%6d", ( uint16_t )Eeprom.EepromData.DemoSettings.RngRawDistance );
mverdy 20:626b92b70bf7 1609 }
mverdy 20:626b92b70bf7 1610 else
mverdy 20:626b92b70bf7 1611 {
mverdy 20:626b92b70bf7 1612 sprintf( StringText, "Range: %5.1f m", Eeprom.EepromData.DemoSettings.RngDistance );
mverdy 20:626b92b70bf7 1613 sprintf( StringText2, "%6.1f", Eeprom.EepromData.DemoSettings.RngRawDistance );
mverdy 20:626b92b70bf7 1614 }
mverdy 20:626b92b70bf7 1615 break;
mverdy 20:626b92b70bf7 1616
mverdy 20:626b92b70bf7 1617 case DEMO_RNG_UNIT_SEL_YD:
mverdy 20:626b92b70bf7 1618 // Print distance on the top with decimal under 1000
mverdy 20:626b92b70bf7 1619 if( Eeprom.EepromData.DemoSettings.RngDistance >= 1000.0 )
mverdy 20:626b92b70bf7 1620 {
mverdy 20:626b92b70bf7 1621 sprintf( StringText, "Range: %5d yd", ( uint16_t )Eeprom.EepromData.DemoSettings.RngDistance );
mverdy 20:626b92b70bf7 1622 sprintf( StringText2, "%6d", ( uint16_t )Eeprom.EepromData.DemoSettings.RngRawDistance );
mverdy 20:626b92b70bf7 1623 }
mverdy 20:626b92b70bf7 1624 else
mverdy 20:626b92b70bf7 1625 {
mverdy 20:626b92b70bf7 1626 sprintf( StringText, "Range: %5.1f yd", Eeprom.EepromData.DemoSettings.RngDistance );
mverdy 20:626b92b70bf7 1627 sprintf( StringText2, "%6.1f", Eeprom.EepromData.DemoSettings.RngRawDistance );
mverdy 20:626b92b70bf7 1628 }
mverdy 20:626b92b70bf7 1629 break;
mverdy 20:626b92b70bf7 1630
mverdy 20:626b92b70bf7 1631 case DEMO_RNG_UNIT_SEL_MI:
mverdy 20:626b92b70bf7 1632 sprintf( StringText, "Range: %5.2f mi", Eeprom.EepromData.DemoSettings.RngDistance );
mverdy 20:626b92b70bf7 1633 sprintf( StringText2, "%6.1f", Eeprom.EepromData.DemoSettings.RngRawDistance );
mverdy 20:626b92b70bf7 1634 break;
mverdy 20:626b92b70bf7 1635 }
mverdy 20:626b92b70bf7 1636 DrawText( RNG_DIST_TEXT, ( uint8_t* )StringText, NULL, NULL );
mverdy 20:626b92b70bf7 1637 DrawText( LINE5_COL0_TEXT, NULL, ( uint8_t* )StringText2, NULL );
mverdy 20:626b92b70bf7 1638 DrawText( LINE6_COL0_TEXT, NULL, ( uint8_t* )GetMenuDemoNumSentPacket( ), NULL );
mverdy 20:626b92b70bf7 1639 DrawText( LINE7_COL0_TEXT, NULL, ( uint8_t* )GetFrequencyError( ), NULL );
mverdy 20:626b92b70bf7 1640 DrawText( LINE8_COL0_TEXT, NULL, ( uint8_t* )GetRngChannelsOk( ), NULL );
mverdy 20:626b92b70bf7 1641 sprintf( StringText, "%6d", Eeprom.EepromData.DemoSettings.CntPacketRxOKSlave );
mverdy 20:626b92b70bf7 1642 DrawText( LINE9_COL0_TEXT, NULL, ( uint8_t* )StringText, NULL );
mverdy 20:626b92b70bf7 1643
mverdy 20:626b92b70bf7 1644 // Draw token at its new position. 270 is the absolute px position (y) of distance 0
mverdy 20:626b92b70bf7 1645 MenuObjects[RNG_DIST_CIRCLE].Ypos = 270 - DistPixel;
mverdy 20:626b92b70bf7 1646 GraphObjectDraw( &( MenuObjects[RNG_DIST_CIRCLE] ), NULL, true, false );
mverdy 20:626b92b70bf7 1647 }
mverdy 20:626b92b70bf7 1648 else
mverdy 20:626b92b70bf7 1649 {
mverdy 20:626b92b70bf7 1650 GraphObject_t clearRect = { NULL, GO_RECTANGLE, 1, 284, 35, 238, \
mverdy 20:626b92b70bf7 1651 1, BACK_COLOR, BACK_COLOR, true, \
mverdy 20:626b92b70bf7 1652 BACK_COLOR, NULL, false };
mverdy 20:626b92b70bf7 1653
mverdy 20:626b92b70bf7 1654 DrawText( TITLE_TEXT, ( uint8_t* )" Outdoor ranging demo", NULL, NULL );
mverdy 20:626b92b70bf7 1655 DrawActiveButton( BTN0_BORDER, ( uint8_t* )" MASTER", NULL );
mverdy 20:626b92b70bf7 1656 DisplayCurrentRadioParams( PAGE_RANGING_MASTER );
mverdy 20:626b92b70bf7 1657 // Draw lines
mverdy 20:626b92b70bf7 1658 GraphObjectDraw( &( MenuObjects[RNG_DS0_LINE] ), NULL, true, false );
mverdy 20:626b92b70bf7 1659 for( uint8_t i = RNG_DS1_LINE; i <= RNG_DS5_LINE; i++ )
mverdy 20:626b92b70bf7 1660 {
mverdy 20:626b92b70bf7 1661 GraphObjectDraw( &( MenuObjects[i] ), NULL, true, false );
mverdy 20:626b92b70bf7 1662 }
mverdy 20:626b92b70bf7 1663 // Draw around scale of distance
mverdy 20:626b92b70bf7 1664 for( uint8_t i = SCALE_LINE_COUNT; i > 0; i-- )
mverdy 20:626b92b70bf7 1665 {
mverdy 20:626b92b70bf7 1666 sprintf( StringText, "%d", i * ( Eeprom.EepromData.DemoSettings.RngFullScale / SCALE_LINE_COUNT ) );
mverdy 20:626b92b70bf7 1667 GraphObjectDraw( &( MenuObjects[RNG_DS1_LINE + i - 1] ), NULL, false, false );
mverdy 20:626b92b70bf7 1668 DrawText( RNG_DS1_TEXT + i - 1, ( uint8_t* )StringText, NULL, NULL );
mverdy 20:626b92b70bf7 1669 }
mverdy 20:626b92b70bf7 1670 // Clear the area for 2 downstair buttons (7 & 8)
mverdy 20:626b92b70bf7 1671 // { Id, Type, Xpos, Ypos, Height, Width, LineWidth, BackColor, \
mverdy 20:626b92b70bf7 1672 FrontColor, DoFill, FillCol, Source, TouchActive }
mverdy 20:626b92b70bf7 1673 GraphObjectClear( &clearRect, true );
mverdy 20:626b92b70bf7 1674 GraphObjectDraw( &( MenuObjects[PAGE_BORDER] ), NULL, false, false );
mverdy 20:626b92b70bf7 1675 DrawText( RNG_DIST_TEXT, ( uint8_t* )"Range: -----", NULL, NULL );
mverdy 20:626b92b70bf7 1676 DrawText( LINE5_COL0_TEXT, ( uint8_t* )"Raw [m] :", ( uint8_t* )" -----", NULL );
mverdy 20:626b92b70bf7 1677 DrawText( LINE6_COL0_TEXT, ( uint8_t* )"Packet :", ( uint8_t* )GetMenuDemoNumSentPacket( ), NULL );
mverdy 20:626b92b70bf7 1678 DrawText( LINE7_COL0_TEXT, ( uint8_t* )"FEI [Hz] :", ( uint8_t* )GetFrequencyError( ), NULL );
mverdy 20:626b92b70bf7 1679 DrawText( LINE8_COL0_TEXT, ( uint8_t* )"Channel :", ( uint8_t* )GetRngChannelsOk( ), NULL );
mverdy 20:626b92b70bf7 1680
mverdy 20:626b92b70bf7 1681 DrawActiveButton( BTN7_BORDER, ( uint8_t* )" EXIT", NULL );
mverdy 20:626b92b70bf7 1682 DrawActiveButton( BTN8_BORDER, ( uint8_t* )" START", NULL );
mverdy 20:626b92b70bf7 1683 DrawActiveButton( BTN9_BORDER, ( uint8_t* )" SETTINGS", NULL );
mverdy 20:626b92b70bf7 1684 // draw active rectangle for user touch (like "REFRESH" button)
mverdy 20:626b92b70bf7 1685 GraphObjectDraw( &( MenuObjects[RNG_MST_SCR] ), NULL, false, true );
mverdy 20:626b92b70bf7 1686 }
mverdy 20:626b92b70bf7 1687 CurrentPage = PAGE_RANGING_MASTER;
mverdy 20:626b92b70bf7 1688 break;
mverdy 20:626b92b70bf7 1689
mverdy 20:626b92b70bf7 1690 case PAGE_RANGING_SLAVE:
mverdy 20:626b92b70bf7 1691 if( CurrentPage == PAGE_RANGING_SLAVE )
mverdy 20:626b92b70bf7 1692 {
mverdy 20:626b92b70bf7 1693 if( Eeprom.EepromData.DemoSettings.HoldDemo == true )
mverdy 20:626b92b70bf7 1694 {
mverdy 20:626b92b70bf7 1695 ButtonChangeText( BTN8_BORDER, ( uint8_t* )" START", NULL );
mverdy 20:626b92b70bf7 1696 }
mverdy 20:626b92b70bf7 1697 DrawText( LINE4_COL0_TEXT, NULL, ( uint8_t* )GetMenuDemoNumSentPacket( ), NULL );
mverdy 20:626b92b70bf7 1698 DrawText( LINE5_COL0_TEXT, NULL, ( uint8_t* )GetFrequencyError( ), NULL );
mverdy 20:626b92b70bf7 1699 DrawText( LINE6_COL0_TEXT, NULL, ( uint8_t* )GetRngChannelsOk( ), NULL );
mverdy 20:626b92b70bf7 1700 sprintf( StringText ," %s", GetRangingAntenna( ) );
mverdy 20:626b92b70bf7 1701 DrawText( LINE7_COL0_TEXT, NULL, ( uint8_t* )StringText, NULL );
mverdy 20:626b92b70bf7 1702 }
mverdy 20:626b92b70bf7 1703 else
mverdy 20:626b92b70bf7 1704 {
mverdy 20:626b92b70bf7 1705 DrawText( TITLE_TEXT, ( uint8_t* )" Outdoor ranging demo", NULL, NULL );
mverdy 20:626b92b70bf7 1706 DisplayCurrentRadioParams( PAGE_RANGING_SLAVE );
mverdy 20:626b92b70bf7 1707 DrawText( LINE4_COL0_TEXT, ( uint8_t* )"Packet :", ( uint8_t* )GetMenuDemoNumSentPacket( ), NULL );
mverdy 20:626b92b70bf7 1708 DrawText( LINE5_COL0_TEXT, ( uint8_t* )"FEI [Hz] :", ( uint8_t* )GetFrequencyError( ), NULL );
mverdy 20:626b92b70bf7 1709 DrawText( LINE6_COL0_TEXT, ( uint8_t* )"Channel :", ( uint8_t* )GetRngChannelsOk( ), NULL );
mverdy 20:626b92b70bf7 1710 sprintf( StringText ," %s", GetRangingAntenna( ) );
mverdy 20:626b92b70bf7 1711 DrawText( LINE7_COL0_TEXT, ( uint8_t* )"Antenna :", ( uint8_t* )StringText, NULL );
mverdy 20:626b92b70bf7 1712 DrawActiveButton( BTN0_BORDER, ( uint8_t* )" SLAVE", NULL );
mverdy 20:626b92b70bf7 1713 DrawActiveButton( BTN7_BORDER, ( uint8_t* )" EXIT", NULL );
mverdy 20:626b92b70bf7 1714 DrawActiveButton( BTN8_BORDER, ( uint8_t* )" START", NULL );
mverdy 20:626b92b70bf7 1715 DrawActiveButton( BTN9_BORDER, ( uint8_t* )" SETTINGS", NULL );
mverdy 20:626b92b70bf7 1716 }
mverdy 20:626b92b70bf7 1717 CurrentPage = PAGE_RANGING_SLAVE;
mverdy 20:626b92b70bf7 1718 break;
mverdy 20:626b92b70bf7 1719
mverdy 20:626b92b70bf7 1720 case PAGE_RADIO_PARAM:
mverdy 20:626b92b70bf7 1721 if( CurrentPage == PAGE_RADIO_PARAM )
mverdy 20:626b92b70bf7 1722 {
mverdy 20:626b92b70bf7 1723 if( Eeprom.EepromData.DemoSettings.ModulationType == PACKET_TYPE_RANGING )
mverdy 20:626b92b70bf7 1724 {
mverdy 20:626b92b70bf7 1725 if( PreviousPage == START_PAGE )
mverdy 20:626b92b70bf7 1726 {
mverdy 20:626b92b70bf7 1727 ButtonChangeText( BTN0_BORDER, NULL, ( uint8_t* )GetMenuRadioFrameType( ) );
mverdy 20:626b92b70bf7 1728 }
mverdy 20:626b92b70bf7 1729 else
mverdy 20:626b92b70bf7 1730 {
mverdy 20:626b92b70bf7 1731 RemoveButton( BTN0_BORDER );
mverdy 20:626b92b70bf7 1732 }
mverdy 20:626b92b70bf7 1733 DrawActiveButton( BTN6_BORDER, ( uint8_t* )" RANGING SETTINGS", NULL );
mverdy 20:626b92b70bf7 1734 DrawActiveButton( BTN9_BORDER, ( uint8_t* )" BEST SET", NULL );
mverdy 20:626b92b70bf7 1735 }
mverdy 20:626b92b70bf7 1736 else
mverdy 20:626b92b70bf7 1737 {
mverdy 20:626b92b70bf7 1738 DrawActiveButton( BTN0_BORDER, ( uint8_t* )"Mod:", ( uint8_t* )GetMenuRadioFrameType( ) );
mverdy 20:626b92b70bf7 1739 DrawActiveButton( BTN6_BORDER, ( uint8_t* )"Payload:", ( uint8_t* )GetRadioPayloadLength( ) );
mverdy 20:626b92b70bf7 1740 RemoveButton( BTN9_BORDER );
mverdy 20:626b92b70bf7 1741 }
mverdy 20:626b92b70bf7 1742 ButtonChangeText( BTN1_BORDER, NULL, ( uint8_t* )GetRadioFrequency( ) );
mverdy 20:626b92b70bf7 1743 ButtonChangeText( BTN2_BORDER, NULL, ( uint8_t* )GetRadioTxPower( ) );
mverdy 20:626b92b70bf7 1744 ButtonChangeText( BTN3_BORDER, NULL, ( uint8_t* )GetRadioModulationParameters1( ) );
mverdy 20:626b92b70bf7 1745 ButtonChangeText( BTN4_BORDER, NULL, ( uint8_t* )GetRadioModulationParameters2( ) );
mverdy 20:626b92b70bf7 1746 ButtonChangeText( BTN5_BORDER, NULL, ( uint8_t* )GetRadioModulationParameters3( ) );
mverdy 20:626b92b70bf7 1747 }
mverdy 20:626b92b70bf7 1748 else
mverdy 20:626b92b70bf7 1749 {
mverdy 20:626b92b70bf7 1750 DrawText( TITLE_TEXT, ( uint8_t* )" Radio Settings", NULL, NULL );
mverdy 20:626b92b70bf7 1751 if( Eeprom.EepromData.DemoSettings.ModulationType == PACKET_TYPE_RANGING )
mverdy 20:626b92b70bf7 1752 {
mverdy 20:626b92b70bf7 1753 if( PreviousPage == START_PAGE )
mverdy 20:626b92b70bf7 1754 {
mverdy 20:626b92b70bf7 1755 DrawActiveButton( BTN0_BORDER, ( uint8_t* )"Mod:", ( uint8_t* )GetMenuRadioFrameType( ) );
mverdy 20:626b92b70bf7 1756 }
mverdy 20:626b92b70bf7 1757 DrawActiveButton( BTN6_BORDER, ( uint8_t* )" RANGING SETTINGS", NULL );
mverdy 20:626b92b70bf7 1758 DrawActiveButton( BTN9_BORDER, ( uint8_t* )" BEST SET", NULL );
mverdy 20:626b92b70bf7 1759 }
mverdy 20:626b92b70bf7 1760 else
mverdy 20:626b92b70bf7 1761 {
mverdy 20:626b92b70bf7 1762 DrawActiveButton( BTN0_BORDER, ( uint8_t* )"Mod:", ( uint8_t* )GetMenuRadioFrameType( ) );
mverdy 20:626b92b70bf7 1763 DrawActiveButton( BTN6_BORDER, ( uint8_t* )"Payload:", ( uint8_t* )GetRadioPayloadLength( ) );
mverdy 20:626b92b70bf7 1764 }
mverdy 20:626b92b70bf7 1765 DrawActiveButton( BTN1_BORDER, ( uint8_t* )"Freq:", ( uint8_t* )GetRadioFrequency( ) );
mverdy 20:626b92b70bf7 1766 DrawActiveButton( BTN2_BORDER, ( uint8_t* )"Tx Pow:", ( uint8_t* )GetRadioTxPower( ) );
mverdy 20:626b92b70bf7 1767 DrawActiveButton( BTN3_BORDER, ( uint8_t* )"Param 1:", ( uint8_t* )GetRadioModulationParameters1( ) );
mverdy 20:626b92b70bf7 1768 DrawActiveButton( BTN4_BORDER, ( uint8_t* )"Param 2:", ( uint8_t* )GetRadioModulationParameters2( ) );
mverdy 20:626b92b70bf7 1769 DrawActiveButton( BTN5_BORDER, ( uint8_t* )"Param 3:", ( uint8_t* )GetRadioModulationParameters3( ) );
mverdy 20:626b92b70bf7 1770 DrawActiveButton( BTN7_BORDER, ( uint8_t* )" CANCEL", NULL );
mverdy 20:626b92b70bf7 1771 DrawActiveButton( BTN8_BORDER, ( uint8_t* )" OK & SAVE", NULL );
mverdy 20:626b92b70bf7 1772 CurrentPage = PAGE_RADIO_PARAM;
mverdy 20:626b92b70bf7 1773 }
mverdy 20:626b92b70bf7 1774 break;
mverdy 20:626b92b70bf7 1775
mverdy 20:626b92b70bf7 1776 case PAGE_RANGING_PARAM:
mverdy 20:626b92b70bf7 1777 if( CurrentPage != PAGE_RANGING_PARAM )
mverdy 20:626b92b70bf7 1778 {
mverdy 20:626b92b70bf7 1779 DrawText( TITLE_TEXT, ( uint8_t* )" Settings : Ranging", NULL, NULL );
mverdy 20:626b92b70bf7 1780
mverdy 20:626b92b70bf7 1781 DrawActiveButton( BTN1_BORDER, ( uint8_t* )"Request:", ( uint8_t* )GetRangingRequestCount( ) );
mverdy 20:626b92b70bf7 1782 DrawActiveButton( BTN2_BORDER, ( uint8_t* )"Address:", ( uint8_t* )GetRangingAddress( ) );
mverdy 20:626b92b70bf7 1783 DrawActiveButton( BTN3_BORDER, ( uint8_t* )"Antenna:", ( uint8_t* )GetRangingAntenna( ) );
mverdy 20:626b92b70bf7 1784 DrawActiveButton( BTN4_BORDER, ( uint8_t* )"Unit:", ( uint8_t* )GetRangingUnit( ) );
mverdy 20:626b92b70bf7 1785 DrawActiveButton( BTN7_BORDER, ( uint8_t* )" CANCEL", NULL );
mverdy 20:626b92b70bf7 1786 DrawActiveButton( BTN8_BORDER, ( uint8_t* )" OK & SAVE", NULL );
mverdy 20:626b92b70bf7 1787 }
mverdy 20:626b92b70bf7 1788 CurrentPage = PAGE_RANGING_PARAM;
mverdy 20:626b92b70bf7 1789 break;
mverdy 20:626b92b70bf7 1790
mverdy 20:626b92b70bf7 1791 case PAGE_RADIO_PARAM_FREQ:
mverdy 20:626b92b70bf7 1792 if( CurrentPage != PAGE_RADIO_PARAM_FREQ )
mverdy 20:626b92b70bf7 1793 {
mverdy 20:626b92b70bf7 1794 DrawText( TITLE_TEXT, ( uint8_t* )" Radio Settings : Freq", NULL, NULL );
mverdy 20:626b92b70bf7 1795 DrawActiveButton( BTN0_BORDER, ( uint8_t* )" -", NULL );
mverdy 20:626b92b70bf7 1796 DrawActiveButton( BTN1_BORDER, ( uint8_t* )"Step:", ( uint8_t* )GetRadioFreqBase( ) );
mverdy 20:626b92b70bf7 1797 // do not draw boarder for indicate actual frequency (it is not a button)
mverdy 20:626b92b70bf7 1798 ButtonChangeText( BTN2_BORDER, ( uint8_t* )"Freq:", ( uint8_t* )GetRadioFrequency( ) );
mverdy 20:626b92b70bf7 1799 DrawActiveButton( BTN3_BORDER, ( uint8_t* )"Preset1:", ( uint8_t* )GetRadioFreqBasePS1( ) );
mverdy 20:626b92b70bf7 1800 DrawActiveButton( BTN4_BORDER, ( uint8_t* )"Preset2:", ( uint8_t* )GetRadioFreqBasePS2( ) );
mverdy 20:626b92b70bf7 1801 DrawActiveButton( BTN5_BORDER, ( uint8_t* )"Preset3:", ( uint8_t* )GetRadioFreqBasePS3( ) );
mverdy 20:626b92b70bf7 1802 DrawActiveButton( BTN7_BORDER, ( uint8_t* )" CANCEL", NULL );
mverdy 20:626b92b70bf7 1803 DrawActiveButton( BTN8_BORDER, ( uint8_t* )" OK", NULL );
mverdy 20:626b92b70bf7 1804 DrawActiveButton( BTN9_BORDER, ( uint8_t* )" +", NULL );
mverdy 20:626b92b70bf7 1805 }
mverdy 20:626b92b70bf7 1806 CurrentPage = PAGE_RADIO_PARAM_FREQ;
mverdy 20:626b92b70bf7 1807 break;
mverdy 20:626b92b70bf7 1808
mverdy 20:626b92b70bf7 1809 case PAGE_UTILITIES:
mverdy 20:626b92b70bf7 1810 if( CurrentPage == PAGE_UTILITIES )
mverdy 20:626b92b70bf7 1811 {
mverdy 20:626b92b70bf7 1812 DrawText( LINE1_TEXT, ( uint8_t* )GetGpsTime( ), NULL, NULL );
mverdy 20:626b92b70bf7 1813 DrawText( LINE2_TEXT, ( uint8_t* )GetGpsPos( ), NULL, NULL );
mverdy 20:626b92b70bf7 1814 DrawText( LINE3_TEXT, ( uint8_t* )GetProximityValue( ), NULL, NULL );
mverdy 20:626b92b70bf7 1815 }
mverdy 20:626b92b70bf7 1816 else
mverdy 20:626b92b70bf7 1817 {
mverdy 20:626b92b70bf7 1818 char version_holder[50];
mverdy 20:626b92b70bf7 1819 sprintf(&version_holder[0], "Version: %s (%s)", FIRMWARE_VERSION, FIRMWARE_DATE);
mverdy 20:626b92b70bf7 1820 DrawText( TITLE_TEXT, ( uint8_t* )" Utilities", NULL, NULL );
mverdy 20:626b92b70bf7 1821 // FIRMWARE_VERSION is defined in DemoApplication.h
mverdy 20:626b92b70bf7 1822 DrawText( LINE0_TEXT, ( uint8_t* )version_holder, NULL, NULL );
mverdy 20:626b92b70bf7 1823 DrawText( LINE1_TEXT, ( uint8_t* )GetGpsTime( ), NULL, NULL );
mverdy 20:626b92b70bf7 1824 DrawText( LINE2_TEXT, ( uint8_t* )GetGpsPos( ), NULL, NULL );
mverdy 20:626b92b70bf7 1825 DrawText( LINE3_TEXT, ( uint8_t* )GetProximityValue( ), NULL, NULL );
mverdy 20:626b92b70bf7 1826 DrawActiveButton( BTN0_BORDER, ( uint8_t* )"Fact. Reset", NULL );
mverdy 20:626b92b70bf7 1827 DrawActiveButton( BTN4_BORDER, ( uint8_t* )"PA Mode:", ( uint8_t* )GetMenuDemoRadioPowerMode( ) );
mverdy 20:626b92b70bf7 1828 DrawActiveButton( BTN5_BORDER, ( uint8_t* )"Packets:", ( uint8_t* )GetMenuDemoMaxNumPacket( ) );
mverdy 20:626b92b70bf7 1829 DrawActiveButton( BTN6_BORDER, ( uint8_t* )"Antenna:", ( uint8_t* )GetAntennaSetting( ) );
mverdy 20:626b92b70bf7 1830 DrawActiveButton( BTN7_BORDER, ( uint8_t* )" CANCEL", NULL );
mverdy 20:626b92b70bf7 1831 DrawActiveButton( BTN8_BORDER, ( uint8_t* )" OK & SAVE", NULL );
mverdy 20:626b92b70bf7 1832 }
mverdy 20:626b92b70bf7 1833 CurrentPage = PAGE_UTILITIES;
mverdy 20:626b92b70bf7 1834 break;
mverdy 20:626b92b70bf7 1835
mverdy 20:626b92b70bf7 1836 case PAGE_RADIO_TEST:
mverdy 20:626b92b70bf7 1837 DrawText( TITLE_TEXT, ( uint8_t* )" Radio Test Modes", NULL, NULL );
mverdy 20:626b92b70bf7 1838 DrawActiveButton( BTN1_BORDER, ( uint8_t* )" Sleep Mode", NULL );
mverdy 20:626b92b70bf7 1839 DrawActiveButton( BTN2_BORDER, ( uint8_t* )" Standby RC Mode", NULL );
mverdy 20:626b92b70bf7 1840 DrawActiveButton( BTN3_BORDER, ( uint8_t* )" Standby XOSC Mode", NULL );
mverdy 20:626b92b70bf7 1841 DrawActiveButton( BTN4_BORDER, ( uint8_t* )" Set Tx CW", NULL );
mverdy 20:626b92b70bf7 1842 DrawActiveButton( BTN5_BORDER, ( uint8_t* )" Set Cont. Modulation", NULL );
mverdy 20:626b92b70bf7 1843 DrawActiveButton( BTN7_BORDER, ( uint8_t* )" BACK", NULL );
mverdy 20:626b92b70bf7 1844 CurrentPage = PAGE_RADIO_TEST;
mverdy 20:626b92b70bf7 1845 break;
mverdy 20:626b92b70bf7 1846
mverdy 20:626b92b70bf7 1847 case PAGE_SLEEP_MODE:
mverdy 20:626b92b70bf7 1848 if( CurrentPage != PAGE_UTILITIES )
mverdy 20:626b92b70bf7 1849 {
mverdy 20:626b92b70bf7 1850 DrawText( TITLE_TEXT, ( uint8_t* )" Sleep Mode", NULL, NULL );
mverdy 20:626b92b70bf7 1851 DisplayCurrentRadioParams( PAGE_SLEEP_MODE );
mverdy 20:626b92b70bf7 1852 DrawActiveButton( BTN7_BORDER, ( uint8_t* )" EXIT", NULL );
mverdy 20:626b92b70bf7 1853 DrawActiveButton( BTN8_BORDER, ( uint8_t* )" START", NULL );
mverdy 20:626b92b70bf7 1854 DrawActiveButton( BTN9_BORDER, ( uint8_t* )" SETTINGS", NULL );
mverdy 20:626b92b70bf7 1855 CurrentPage = PAGE_SLEEP_MODE;
mverdy 20:626b92b70bf7 1856 }
mverdy 20:626b92b70bf7 1857 break;
mverdy 20:626b92b70bf7 1858
mverdy 20:626b92b70bf7 1859 case PAGE_STBY_RC_MODE:
mverdy 20:626b92b70bf7 1860 if( CurrentPage != PAGE_STBY_RC_MODE )
mverdy 20:626b92b70bf7 1861 {
mverdy 20:626b92b70bf7 1862 DrawText( TITLE_TEXT, ( uint8_t* )" Standby RC Mode", NULL, NULL );
mverdy 20:626b92b70bf7 1863 DisplayCurrentRadioParams( PAGE_STBY_RC_MODE );
mverdy 20:626b92b70bf7 1864 DrawActiveButton( BTN7_BORDER, ( uint8_t* )" EXIT", NULL );
mverdy 20:626b92b70bf7 1865 DrawActiveButton( BTN8_BORDER, ( uint8_t* )" START", NULL );
mverdy 20:626b92b70bf7 1866 DrawActiveButton( BTN9_BORDER, ( uint8_t* )" SETTINGS", NULL );
mverdy 20:626b92b70bf7 1867 CurrentPage = PAGE_STBY_RC_MODE;
mverdy 20:626b92b70bf7 1868 }
mverdy 20:626b92b70bf7 1869 break;
mverdy 20:626b92b70bf7 1870
mverdy 20:626b92b70bf7 1871 case PAGE_STBY_XOSC_MODE:
mverdy 20:626b92b70bf7 1872 if( CurrentPage != PAGE_STBY_XOSC_MODE )
mverdy 20:626b92b70bf7 1873 {
mverdy 20:626b92b70bf7 1874 DrawText( TITLE_TEXT, ( uint8_t* )" Standby XOSC Mode", NULL, NULL );
mverdy 20:626b92b70bf7 1875 DisplayCurrentRadioParams( PAGE_STBY_XOSC_MODE );
mverdy 20:626b92b70bf7 1876 DrawActiveButton( BTN7_BORDER, ( uint8_t* )" EXIT", NULL );
mverdy 20:626b92b70bf7 1877 DrawActiveButton( BTN8_BORDER, ( uint8_t* )" START", NULL );
mverdy 20:626b92b70bf7 1878 DrawActiveButton( BTN9_BORDER, ( uint8_t* )" SETTINGS", NULL );
mverdy 20:626b92b70bf7 1879 CurrentPage = PAGE_STBY_XOSC_MODE;
mverdy 20:626b92b70bf7 1880 }
mverdy 20:626b92b70bf7 1881 break;
mverdy 20:626b92b70bf7 1882
mverdy 20:626b92b70bf7 1883 case PAGE_TX_CW:
mverdy 20:626b92b70bf7 1884 if( CurrentPage != PAGE_TX_CW )
mverdy 20:626b92b70bf7 1885 {
mverdy 20:626b92b70bf7 1886 DrawText( TITLE_TEXT, ( uint8_t* )" Set Tx CW", NULL, NULL );
mverdy 20:626b92b70bf7 1887 DisplayCurrentRadioParams( PAGE_TX_CW );
mverdy 20:626b92b70bf7 1888 DrawActiveButton( BTN7_BORDER, ( uint8_t* )" EXIT", NULL );
mverdy 20:626b92b70bf7 1889 DrawActiveButton( BTN8_BORDER, ( uint8_t* )" START", NULL );
mverdy 20:626b92b70bf7 1890 DrawActiveButton( BTN9_BORDER, ( uint8_t* )" SETTINGS", NULL );
mverdy 20:626b92b70bf7 1891 CurrentPage = PAGE_TX_CW;
mverdy 20:626b92b70bf7 1892 }
mverdy 20:626b92b70bf7 1893 break;
mverdy 20:626b92b70bf7 1894
mverdy 20:626b92b70bf7 1895 case PAGE_CONT_MODULATION:
mverdy 20:626b92b70bf7 1896 if( CurrentPage != PAGE_CONT_MODULATION )
mverdy 20:626b92b70bf7 1897 {
mverdy 20:626b92b70bf7 1898 DrawText( TITLE_TEXT, ( uint8_t* )" Set Cont. Modulation", NULL, NULL );
mverdy 20:626b92b70bf7 1899 DisplayCurrentRadioParams( PAGE_CONT_MODULATION );
mverdy 20:626b92b70bf7 1900 DrawActiveButton( BTN7_BORDER, ( uint8_t* )" EXIT", NULL );
mverdy 20:626b92b70bf7 1901 DrawActiveButton( BTN8_BORDER, ( uint8_t* )" START", NULL );
mverdy 20:626b92b70bf7 1902 DrawActiveButton( BTN9_BORDER, ( uint8_t* )" SETTINGS", NULL );
mverdy 20:626b92b70bf7 1903 CurrentPage = PAGE_CONT_MODULATION;
mverdy 20:626b92b70bf7 1904 }
mverdy 20:626b92b70bf7 1905 break;
mverdy 20:626b92b70bf7 1906
mverdy 20:626b92b70bf7 1907 default:
mverdy 20:626b92b70bf7 1908 break;
mverdy 20:626b92b70bf7 1909 }
mverdy 20:626b92b70bf7 1910 }
mverdy 20:626b92b70bf7 1911
mverdy 20:626b92b70bf7 1912 void DisplayCurrentRadioParams( uint8_t page )
mverdy 20:626b92b70bf7 1913 {
mverdy 20:626b92b70bf7 1914 switch( page )
mverdy 20:626b92b70bf7 1915 {
mverdy 20:626b92b70bf7 1916 case PAGE_SLEEP_MODE:
mverdy 20:626b92b70bf7 1917 case PAGE_STBY_RC_MODE:
mverdy 20:626b92b70bf7 1918 case PAGE_STBY_XOSC_MODE:
mverdy 20:626b92b70bf7 1919 case PAGE_TX_CW:
mverdy 20:626b92b70bf7 1920 // Do display different without packet settings (no modulation here)
mverdy 20:626b92b70bf7 1921 // 2 + (9) + 4 + (7) + 2 + (4) = 28 (=<28 : ok)
mverdy 20:626b92b70bf7 1922 sprintf( StringText ,"f:%s, P:%s, %s", GetRadioFrequencyGHz( ), \
mverdy 20:626b92b70bf7 1923 GetRadioTxPower( ), GetAntennaSetting( ) );
mverdy 20:626b92b70bf7 1924 DrawText( LINE0_TEXT, ( uint8_t* )StringText, NULL, NULL );
mverdy 20:626b92b70bf7 1925 sprintf( StringText ,"Radio Power Mode: %s", ( uint8_t* )GetMenuDemoRadioPowerMode( ) );
mverdy 20:626b92b70bf7 1926 DrawText( LINE1_TEXT, ( uint8_t* )StringText, NULL, NULL );
mverdy 20:626b92b70bf7 1927 sprintf( StringText ,"Press START to launch test" );
mverdy 20:626b92b70bf7 1928 DrawText( LINE3_TEXT, ( uint8_t* )StringText, NULL, NULL );
mverdy 20:626b92b70bf7 1929 break;
mverdy 20:626b92b70bf7 1930
mverdy 20:626b92b70bf7 1931 case PAGE_CONT_MODULATION:
mverdy 20:626b92b70bf7 1932 // 2 + (9) + 4 + (7) + 2 + (4) = 28 (=<28 : ok)
mverdy 20:626b92b70bf7 1933 sprintf( StringText ,"f:%s, P:%s, %s", GetRadioFrequencyGHz( ), \
mverdy 20:626b92b70bf7 1934 GetRadioTxPower( ), GetAntennaSetting( ) );
mverdy 20:626b92b70bf7 1935 DrawText( LINE0_TEXT, ( uint8_t* )StringText, NULL, NULL );
mverdy 20:626b92b70bf7 1936 // (7) + 2 + (19) = 28 (=<28 : ok)
mverdy 20:626b92b70bf7 1937 sprintf( StringText ,"%s: %s", GetMenuRadioFrameType( ), \
mverdy 20:626b92b70bf7 1938 GetRadioModulationParameters1( ) );
mverdy 20:626b92b70bf7 1939 DrawText( LINE1_TEXT, ( uint8_t* )StringText, NULL, NULL );
mverdy 20:626b92b70bf7 1940 // (3) + 2 + (10) + 2 + (8) = 25 (=<28 : ok)
mverdy 20:626b92b70bf7 1941 sprintf( StringText ,"%s, %s, %s", GetRadioModulationParameters2( ), \
mverdy 20:626b92b70bf7 1942 GetRadioModulationParameters3( ),
mverdy 20:626b92b70bf7 1943 ( uint8_t* )GetMenuDemoRadioPowerMode( ) );
mverdy 20:626b92b70bf7 1944 DrawText( LINE2_TEXT, ( uint8_t* )StringText, NULL, NULL );
mverdy 20:626b92b70bf7 1945 sprintf( StringText ,"Press START to launch test" );
mverdy 20:626b92b70bf7 1946 DrawText( LINE4_TEXT, ( uint8_t* )StringText, NULL, NULL );
mverdy 20:626b92b70bf7 1947 break;
mverdy 20:626b92b70bf7 1948
mverdy 20:626b92b70bf7 1949 case PAGE_PING_PONG: // standart display
mverdy 20:626b92b70bf7 1950 case PAGE_PER:
mverdy 20:626b92b70bf7 1951 // 2 + (9) + 4 + (7) + 2 + (4) = 28 (=<28 : ok)
mverdy 20:626b92b70bf7 1952 sprintf( StringText ,"f:%s, P:%s, %s", GetRadioFrequencyGHz( ), \
mverdy 20:626b92b70bf7 1953 GetRadioTxPower( ), GetAntennaSetting( ) );
mverdy 20:626b92b70bf7 1954 DrawText( LINE0_TEXT, ( uint8_t* )StringText, NULL, NULL );
mverdy 20:626b92b70bf7 1955 // (7) + 2 + (19) = 28 (=<28 : ok)
mverdy 20:626b92b70bf7 1956 sprintf( StringText ,"%s: %s", GetMenuRadioFrameType( ), \
mverdy 20:626b92b70bf7 1957 GetRadioModulationParameters1( ) );
mverdy 20:626b92b70bf7 1958 DrawText( LINE1_TEXT, ( uint8_t* )StringText, NULL, NULL );
mverdy 20:626b92b70bf7 1959 // 3 + (3) + 2 + (10) + 2 + (8) = 28 (=<28 : ok)
mverdy 20:626b92b70bf7 1960 sprintf( StringText ,"PL:%s, %s, %s", GetRadioPayloadLength( ), \
mverdy 20:626b92b70bf7 1961 GetRadioModulationParameters2( ), \
mverdy 20:626b92b70bf7 1962 GetRadioModulationParameters3( ) );
mverdy 20:626b92b70bf7 1963 DrawText( LINE2_TEXT, ( uint8_t* )StringText, NULL, NULL );
mverdy 20:626b92b70bf7 1964 break;
mverdy 20:626b92b70bf7 1965
mverdy 20:626b92b70bf7 1966 case PAGE_RANGING_SLAVE:
mverdy 20:626b92b70bf7 1967 // 2 + (9) + 4 + (7) = 22 (=<28 : ok)
mverdy 20:626b92b70bf7 1968 sprintf( StringText ,"f:%s, P:%s", GetRadioFrequencyGHz( ), \
mverdy 20:626b92b70bf7 1969 GetRadioTxPower( ) );
mverdy 20:626b92b70bf7 1970 DrawText( LINE0_TEXT, ( uint8_t* )StringText, NULL, NULL );
mverdy 20:626b92b70bf7 1971 // (7) + 2 + (19) = 28 (=<28 : ok)
mverdy 20:626b92b70bf7 1972 sprintf( StringText ,"%s: %s", GetMenuRadioFrameType( ), \
mverdy 20:626b92b70bf7 1973 GetRadioModulationParameters1( ) );
mverdy 20:626b92b70bf7 1974 DrawText( LINE1_TEXT, ( uint8_t* )StringText, NULL, NULL );
mverdy 20:626b92b70bf7 1975 // (10) + 2 + (8) = 20 (=<28 : ok)
mverdy 20:626b92b70bf7 1976 sprintf( StringText ,"%s", GetRadioModulationParameters2( ) );
mverdy 20:626b92b70bf7 1977 DrawText( LINE2_TEXT, ( uint8_t* )StringText, NULL, NULL );
mverdy 20:626b92b70bf7 1978 break;
mverdy 20:626b92b70bf7 1979
mverdy 20:626b92b70bf7 1980 case PAGE_RANGING_MASTER:
mverdy 20:626b92b70bf7 1981 sprintf( StringText ,"f:%s", GetRadioFrequencyGHz( ) );
mverdy 20:626b92b70bf7 1982 DrawText( LINE1_TEXT, ( uint8_t* )StringText, NULL, NULL );
mverdy 20:626b92b70bf7 1983 DrawText( LINE2_COL0_TEXT, ( uint8_t* )"Antenna", ( uint8_t* )GetRangingAntenna( ), NULL );
mverdy 20:626b92b70bf7 1984 sprintf( StringText ,"%s", GetRadioTxPower( ) );
mverdy 20:626b92b70bf7 1985 MenuObjects[LINE3_COL1_TEXT].FrontColor = TEXT_COLOR;
mverdy 20:626b92b70bf7 1986 DrawText( LINE3_COL0_TEXT, ( uint8_t* )"Tx Power", ( uint8_t* )StringText, NULL );
mverdy 20:626b92b70bf7 1987 sprintf( StringText ,"%s", GetRadioModulationParameters2( ) );
mverdy 20:626b92b70bf7 1988 DrawText( LINE4_COL0_TEXT, ( uint8_t* )StringText, NULL, NULL );
mverdy 20:626b92b70bf7 1989 sprintf( StringText ,"%s", GetRadioModulationParameters1( ) );
mverdy 20:626b92b70bf7 1990 MenuObjects[LINE4_COL1_TEXT].FrontColor = TEXT_COLOR;
mverdy 20:626b92b70bf7 1991 DrawText( LINE4_COL1_TEXT, ( uint8_t* )StringText, NULL, NULL );
mverdy 20:626b92b70bf7 1992 MenuObjects[LINE3_COL1_TEXT].FrontColor = TEXT_VALUE;
mverdy 20:626b92b70bf7 1993 MenuObjects[LINE4_COL1_TEXT].FrontColor = TEXT_VALUE;
mverdy 20:626b92b70bf7 1994 break;
mverdy 20:626b92b70bf7 1995 }
mverdy 20:626b92b70bf7 1996 }
mverdy 20:626b92b70bf7 1997
mverdy 20:626b92b70bf7 1998 char* GetMenuRadioFrameType( void )
mverdy 20:626b92b70bf7 1999 {
mverdy 20:626b92b70bf7 2000 switch( Eeprom.EepromData.DemoSettings.ModulationType )
mverdy 20:626b92b70bf7 2001 {
mverdy 20:626b92b70bf7 2002 case PACKET_TYPE_FLRC: return ( char* )" FLRC";
mverdy 20:626b92b70bf7 2003 case PACKET_TYPE_RANGING: return ( char* )"RANGING";
mverdy 20:626b92b70bf7 2004 case PACKET_TYPE_GFSK: return ( char* )" GFSK";
mverdy 20:626b92b70bf7 2005 case PACKET_TYPE_BLE: return ( char* )" BLE";
mverdy 20:626b92b70bf7 2006 case PACKET_TYPE_LORA:
mverdy 20:626b92b70bf7 2007 default: return ( char* )" LORA";
mverdy 20:626b92b70bf7 2008 }
mverdy 20:626b92b70bf7 2009 }
mverdy 20:626b92b70bf7 2010
mverdy 20:626b92b70bf7 2011 char* GetRadioModulationParameters1( void )
mverdy 20:626b92b70bf7 2012 {
mverdy 20:626b92b70bf7 2013 if( Eeprom.EepromData.DemoSettings.ModulationType == PACKET_TYPE_FLRC )
mverdy 20:626b92b70bf7 2014 {
mverdy 20:626b92b70bf7 2015 switch( Eeprom.EepromData.DemoSettings.ModulationParam1 )
mverdy 20:626b92b70bf7 2016 {
mverdy 20:626b92b70bf7 2017 case FLRC_BR_1_300_BW_1_2: return ( char* )"1.3 Mbps/BW 1.2 MHz";
mverdy 20:626b92b70bf7 2018 case FLRC_BR_1_040_BW_1_2: return ( char* )"1.0 Mbps/BW 1.2 MHz";
mverdy 20:626b92b70bf7 2019 case FLRC_BR_0_650_BW_0_6: return ( char* )"650 kbps/BW 600 kHz";
mverdy 20:626b92b70bf7 2020 case FLRC_BR_0_520_BW_0_6: return ( char* )"520 kbps/BW 600 kHz";
mverdy 20:626b92b70bf7 2021 case FLRC_BR_0_325_BW_0_3: return ( char* )"325 kbps/BW 300 kHz";
mverdy 20:626b92b70bf7 2022 case FLRC_BR_0_260_BW_0_3: return ( char* )"260 kbps/BW 300 kHz";
mverdy 20:626b92b70bf7 2023 default: return ( char* )"X";
mverdy 20:626b92b70bf7 2024 }
mverdy 20:626b92b70bf7 2025 }
mverdy 20:626b92b70bf7 2026 else if( ( Eeprom.EepromData.DemoSettings.ModulationType == PACKET_TYPE_GFSK ) || \
mverdy 20:626b92b70bf7 2027 ( Eeprom.EepromData.DemoSettings.ModulationType == PACKET_TYPE_BLE ) )
mverdy 20:626b92b70bf7 2028 {
mverdy 20:626b92b70bf7 2029 switch( Eeprom.EepromData.DemoSettings.ModulationParam1 )
mverdy 20:626b92b70bf7 2030 {
mverdy 20:626b92b70bf7 2031 case GFSK_BLE_BR_2_000_BW_2_4: return ( char* )"2.0 Mbps/BW 2.4 MHz";
mverdy 20:626b92b70bf7 2032 case GFSK_BLE_BR_1_600_BW_2_4: return ( char* )"1.6 Mbps/BW 2.4 MHz";
mverdy 20:626b92b70bf7 2033 case GFSK_BLE_BR_1_000_BW_2_4: return ( char* )"1.0 Mbps/BW 2.4 MHz";
mverdy 20:626b92b70bf7 2034 case GFSK_BLE_BR_1_000_BW_1_2: return ( char* )"1.0 Mbps/BW 1.2 MHz";
mverdy 20:626b92b70bf7 2035 case GFSK_BLE_BR_0_800_BW_2_4: return ( char* )"800 kbps/BW 2.4 MHz";
mverdy 20:626b92b70bf7 2036 case GFSK_BLE_BR_0_800_BW_1_2: return ( char* )"800 kbps/BW 1.2 MHz";
mverdy 20:626b92b70bf7 2037 case GFSK_BLE_BR_0_500_BW_1_2: return ( char* )"500 kbps/BW 1.2 MHz";
mverdy 20:626b92b70bf7 2038 case GFSK_BLE_BR_0_500_BW_0_6: return ( char* )"500 kbps/BW 600 kHz";
mverdy 20:626b92b70bf7 2039 case GFSK_BLE_BR_0_400_BW_1_2: return ( char* )"400 kbps/BW 1.2 MHz";
mverdy 20:626b92b70bf7 2040 case GFSK_BLE_BR_0_400_BW_0_6: return ( char* )"400 kbps/BW 600 kHz";
mverdy 20:626b92b70bf7 2041 case GFSK_BLE_BR_0_250_BW_0_6: return ( char* )"250 kbps/BW 600 kHz";
mverdy 20:626b92b70bf7 2042 case GFSK_BLE_BR_0_250_BW_0_3: return ( char* )"250 kbps/BW 300 kHz";
mverdy 20:626b92b70bf7 2043 case GFSK_BLE_BR_0_125_BW_0_3: return ( char* )"125 kbps/BW 300 kHz";
mverdy 20:626b92b70bf7 2044 default: return ( char* )"X";
mverdy 20:626b92b70bf7 2045 }
mverdy 20:626b92b70bf7 2046 }
mverdy 20:626b92b70bf7 2047 else if( ( Eeprom.EepromData.DemoSettings.ModulationType == PACKET_TYPE_LORA ) || \
mverdy 20:626b92b70bf7 2048 ( Eeprom.EepromData.DemoSettings.ModulationType == PACKET_TYPE_RANGING ) )
mverdy 20:626b92b70bf7 2049 {
mverdy 20:626b92b70bf7 2050 switch( Eeprom.EepromData.DemoSettings.ModulationParam1 )
mverdy 20:626b92b70bf7 2051 {
mverdy 20:626b92b70bf7 2052 case LORA_SF5: return ( char* )"SF5";
mverdy 20:626b92b70bf7 2053 case LORA_SF6: return ( char* )"SF6";
mverdy 20:626b92b70bf7 2054 case LORA_SF7: return ( char* )"SF7";
mverdy 20:626b92b70bf7 2055 case LORA_SF8: return ( char* )"SF8";
mverdy 20:626b92b70bf7 2056 case LORA_SF9: return ( char* )"SF9";
mverdy 20:626b92b70bf7 2057 case LORA_SF10: return ( char* )"SF10";
mverdy 20:626b92b70bf7 2058 case LORA_SF11: return ( char* )"SF11";
mverdy 20:626b92b70bf7 2059 case LORA_SF12: return ( char* )"SF12";
mverdy 20:626b92b70bf7 2060 default: return ( char* )"X";
mverdy 20:626b92b70bf7 2061 }
mverdy 20:626b92b70bf7 2062 }
mverdy 20:626b92b70bf7 2063 else
mverdy 20:626b92b70bf7 2064 {
mverdy 20:626b92b70bf7 2065 return ( char* )"";
mverdy 20:626b92b70bf7 2066 }
mverdy 20:626b92b70bf7 2067 }
mverdy 20:626b92b70bf7 2068
mverdy 20:626b92b70bf7 2069 char* GetRadioModulationParameters2( void )
mverdy 20:626b92b70bf7 2070 {
mverdy 20:626b92b70bf7 2071 if( Eeprom.EepromData.DemoSettings.ModulationType == PACKET_TYPE_FLRC )
mverdy 20:626b92b70bf7 2072 {
mverdy 20:626b92b70bf7 2073 switch( Eeprom.EepromData.DemoSettings.ModulationParam2 )
mverdy 20:626b92b70bf7 2074 {
mverdy 20:626b92b70bf7 2075 case FLRC_CR_1_2: return ( char* )"CR 1/2";
mverdy 20:626b92b70bf7 2076 case FLRC_CR_3_4: return ( char* )"CR 3/4";
mverdy 20:626b92b70bf7 2077 case FLRC_CR_1_0: return ( char* )"CR 1";
mverdy 20:626b92b70bf7 2078 default: return ( char* )"X";
mverdy 20:626b92b70bf7 2079 }
mverdy 20:626b92b70bf7 2080 }
mverdy 20:626b92b70bf7 2081 else if( ( Eeprom.EepromData.DemoSettings.ModulationType == PACKET_TYPE_GFSK ) || \
mverdy 20:626b92b70bf7 2082 ( Eeprom.EepromData.DemoSettings.ModulationType == PACKET_TYPE_BLE ) )
mverdy 20:626b92b70bf7 2083 {
mverdy 20:626b92b70bf7 2084 switch( Eeprom.EepromData.DemoSettings.ModulationParam2 )
mverdy 20:626b92b70bf7 2085 {
mverdy 20:626b92b70bf7 2086 case GFSK_BLE_MOD_IND_0_35: return ( char* )"Mod.i 0.35";
mverdy 20:626b92b70bf7 2087 case GFSK_BLE_MOD_IND_0_50: return ( char* )"Mod.i 0.5";
mverdy 20:626b92b70bf7 2088 case GFSK_BLE_MOD_IND_0_75: return ( char* )"Mod.i 0.75";
mverdy 20:626b92b70bf7 2089 case GFSK_BLE_MOD_IND_1_00: return ( char* )"Mod.i 1";
mverdy 20:626b92b70bf7 2090 case GFSK_BLE_MOD_IND_1_25: return ( char* )"Mod.i 1.25";
mverdy 20:626b92b70bf7 2091 case GFSK_BLE_MOD_IND_1_50: return ( char* )"Mod.i 1.5";
mverdy 20:626b92b70bf7 2092 case GFSK_BLE_MOD_IND_1_75: return ( char* )"Mod.i 1.75";
mverdy 20:626b92b70bf7 2093 case GFSK_BLE_MOD_IND_2_00: return ( char* )"Mod.i 2";
mverdy 20:626b92b70bf7 2094 case GFSK_BLE_MOD_IND_2_25: return ( char* )"Mod.i 2.25";
mverdy 20:626b92b70bf7 2095 case GFSK_BLE_MOD_IND_2_50: return ( char* )"Mod.i 2.50";
mverdy 20:626b92b70bf7 2096 case GFSK_BLE_MOD_IND_2_75: return ( char* )"Mod.i 2.75";
mverdy 20:626b92b70bf7 2097 case GFSK_BLE_MOD_IND_3_00: return ( char* )"Mod.i 3";
mverdy 20:626b92b70bf7 2098 case GFSK_BLE_MOD_IND_3_25: return ( char* )"Mod.i 3.25";
mverdy 20:626b92b70bf7 2099 case GFSK_BLE_MOD_IND_3_50: return ( char* )"Mod.i 3.5";
mverdy 20:626b92b70bf7 2100 case GFSK_BLE_MOD_IND_3_75: return ( char* )"Mod.i 3.75";
mverdy 20:626b92b70bf7 2101 case GFSK_BLE_MOD_IND_4_00: return ( char* )"Mod.i 4";
mverdy 20:626b92b70bf7 2102 default: return ( char* )"X";
mverdy 20:626b92b70bf7 2103 }
mverdy 20:626b92b70bf7 2104 }
mverdy 20:626b92b70bf7 2105 else if( ( Eeprom.EepromData.DemoSettings.ModulationType == PACKET_TYPE_LORA ) || \
mverdy 20:626b92b70bf7 2106 ( Eeprom.EepromData.DemoSettings.ModulationType == PACKET_TYPE_RANGING ) )
mverdy 20:626b92b70bf7 2107 {
mverdy 20:626b92b70bf7 2108 switch( Eeprom.EepromData.DemoSettings.ModulationParam2 )
mverdy 20:626b92b70bf7 2109 {
mverdy 20:626b92b70bf7 2110 case LORA_BW_0200: return ( char* )"BW 200 kHz";
mverdy 20:626b92b70bf7 2111 case LORA_BW_0400: return ( char* )"BW 400 kHz";
mverdy 20:626b92b70bf7 2112 case LORA_BW_0800: return ( char* )"BW 800 kHz";
mverdy 20:626b92b70bf7 2113 case LORA_BW_1600: return ( char* )"BW 1.6 MHz";
mverdy 20:626b92b70bf7 2114 default: return ( char* )"X";
mverdy 20:626b92b70bf7 2115 }
mverdy 20:626b92b70bf7 2116 }
mverdy 20:626b92b70bf7 2117 else
mverdy 20:626b92b70bf7 2118 {
mverdy 20:626b92b70bf7 2119 return ( char* )"";
mverdy 20:626b92b70bf7 2120 }
mverdy 20:626b92b70bf7 2121 }
mverdy 20:626b92b70bf7 2122
mverdy 20:626b92b70bf7 2123 char* GetRadioModulationParameters3( void )
mverdy 20:626b92b70bf7 2124 {
mverdy 20:626b92b70bf7 2125 if( Eeprom.EepromData.DemoSettings.ModulationType == PACKET_TYPE_FLRC )
mverdy 20:626b92b70bf7 2126 {
mverdy 20:626b92b70bf7 2127 switch( Eeprom.EepromData.DemoSettings.ModulationParam3 )
mverdy 20:626b92b70bf7 2128 {
mverdy 20:626b92b70bf7 2129 case RADIO_MOD_SHAPING_BT_OFF: return ( char* )"BT OFF";
mverdy 20:626b92b70bf7 2130 case RADIO_MOD_SHAPING_BT_1_0: return ( char* )"BT 1";
mverdy 20:626b92b70bf7 2131 case RADIO_MOD_SHAPING_BT_0_5: return ( char* )"BT 0.5";
mverdy 20:626b92b70bf7 2132 default: return ( char* )"X";
mverdy 20:626b92b70bf7 2133 }
mverdy 20:626b92b70bf7 2134 }
mverdy 20:626b92b70bf7 2135 else if( ( Eeprom.EepromData.DemoSettings.ModulationType == PACKET_TYPE_GFSK ) || \
mverdy 20:626b92b70bf7 2136 ( Eeprom.EepromData.DemoSettings.ModulationType == PACKET_TYPE_BLE ) )
mverdy 20:626b92b70bf7 2137 {
mverdy 20:626b92b70bf7 2138 switch( Eeprom.EepromData.DemoSettings.ModulationParam3 )
mverdy 20:626b92b70bf7 2139 {
mverdy 20:626b92b70bf7 2140 case RADIO_MOD_SHAPING_BT_OFF: return ( char* )"BT OFF";
mverdy 20:626b92b70bf7 2141 case RADIO_MOD_SHAPING_BT_1_0: return ( char* )"BT 1";
mverdy 20:626b92b70bf7 2142 case RADIO_MOD_SHAPING_BT_0_5: return ( char* )"BT 0.5";
mverdy 20:626b92b70bf7 2143 default: return ( char* )"X";
mverdy 20:626b92b70bf7 2144 }
mverdy 20:626b92b70bf7 2145 }
mverdy 20:626b92b70bf7 2146 else if( ( Eeprom.EepromData.DemoSettings.ModulationType == PACKET_TYPE_LORA ) || \
mverdy 20:626b92b70bf7 2147 ( Eeprom.EepromData.DemoSettings.ModulationType == PACKET_TYPE_RANGING ) )
mverdy 20:626b92b70bf7 2148 {
mverdy 20:626b92b70bf7 2149 switch( Eeprom.EepromData.DemoSettings.ModulationParam3 )
mverdy 20:626b92b70bf7 2150 {
mverdy 20:626b92b70bf7 2151 case LORA_CR_4_5: return ( char* )"CR 4/5";
mverdy 20:626b92b70bf7 2152 case LORA_CR_4_6: return ( char* )"CR 4/6";
mverdy 20:626b92b70bf7 2153 case LORA_CR_4_7: return ( char* )"CR 4/7";
mverdy 20:626b92b70bf7 2154 case LORA_CR_4_8: return ( char* )"CR 4/8";
mverdy 20:626b92b70bf7 2155 case LORA_CR_LI_4_5: return ( char* )"CRLI 4/5";
mverdy 20:626b92b70bf7 2156 case LORA_CR_LI_4_6: return ( char* )"CRLI 4/6";
mverdy 20:626b92b70bf7 2157 case LORA_CR_LI_4_7: return ( char* )"CRLI 4/7";
mverdy 20:626b92b70bf7 2158 default: return ( char* )"X";
mverdy 20:626b92b70bf7 2159 }
mverdy 20:626b92b70bf7 2160 }
mverdy 20:626b92b70bf7 2161 else
mverdy 20:626b92b70bf7 2162 {
mverdy 20:626b92b70bf7 2163 return ( char* )"";
mverdy 20:626b92b70bf7 2164 }
mverdy 20:626b92b70bf7 2165 }
mverdy 20:626b92b70bf7 2166
mverdy 20:626b92b70bf7 2167 char* GetRadioFrequency( void )
mverdy 20:626b92b70bf7 2168 {
mverdy 20:626b92b70bf7 2169 sprintf( StringText2, "%lu Hz", \
mverdy 20:626b92b70bf7 2170 ( unsigned long )Eeprom.EepromData.DemoSettings.Frequency );
mverdy 20:626b92b70bf7 2171 return StringText2;
mverdy 20:626b92b70bf7 2172 }
mverdy 20:626b92b70bf7 2173
mverdy 20:626b92b70bf7 2174 void UpdateRadioFrequency( unsigned long freq )
mverdy 20:626b92b70bf7 2175 {
mverdy 20:626b92b70bf7 2176 sprintf( StringText ,"f:%1d.%03d GHz, P:%s, %s", freq / 1000000000, ( freq / 1000000 ) % 1000, GetRadioTxPower( ), GetAntennaSetting( ) );
mverdy 20:626b92b70bf7 2177 DrawText( LINE0_TEXT, ( uint8_t* )StringText, NULL, NULL );
mverdy 20:626b92b70bf7 2178 }
mverdy 20:626b92b70bf7 2179
mverdy 20:626b92b70bf7 2180 char* GetRadioFrequencyGHz( void )
mverdy 20:626b92b70bf7 2181 {
mverdy 20:626b92b70bf7 2182 // quicker than using a float (which is not optimized in MBED)
mverdy 20:626b92b70bf7 2183 sprintf( StringText3, "%1d.%03d GHz", \
mverdy 20:626b92b70bf7 2184 Eeprom.EepromData.DemoSettings.Frequency / 1000000000, \
mverdy 20:626b92b70bf7 2185 ( Eeprom.EepromData.DemoSettings.Frequency / 1000000 ) % 1000 );
mverdy 20:626b92b70bf7 2186 return StringText3;
mverdy 20:626b92b70bf7 2187 }
mverdy 20:626b92b70bf7 2188
mverdy 20:626b92b70bf7 2189 char* GetRadioFreqBase( void )
mverdy 20:626b92b70bf7 2190 {
mverdy 20:626b92b70bf7 2191 switch( CurrentFreqBase )
mverdy 20:626b92b70bf7 2192 {
mverdy 20:626b92b70bf7 2193 case FB1: return ( char* )"1 Hz";
mverdy 20:626b92b70bf7 2194 case FB10: return ( char* )"10 Hz";
mverdy 20:626b92b70bf7 2195 case FB100: return ( char* )"100 Hz";
mverdy 20:626b92b70bf7 2196 case FB1K: return ( char* )"1 kHz";
mverdy 20:626b92b70bf7 2197 case FB10K: return ( char* )"10 kHz";
mverdy 20:626b92b70bf7 2198 case FB100K: return ( char* )"100 kHz";
mverdy 20:626b92b70bf7 2199 case FB1M: return ( char* )"1 MHz";
mverdy 20:626b92b70bf7 2200 case FB10M: return ( char* )"10 MHz";
mverdy 20:626b92b70bf7 2201 default: return ( char* )"X";
mverdy 20:626b92b70bf7 2202 }
mverdy 20:626b92b70bf7 2203 }
mverdy 20:626b92b70bf7 2204
mverdy 20:626b92b70bf7 2205 char* GetRadioFreqBasePS1( void )
mverdy 20:626b92b70bf7 2206 {
mverdy 20:626b92b70bf7 2207 sprintf( StringText, "%lu Hz", DEMO_CENTRAL_FREQ_PRESET1 );
mverdy 20:626b92b70bf7 2208 return StringText;
mverdy 20:626b92b70bf7 2209 }
mverdy 20:626b92b70bf7 2210
mverdy 20:626b92b70bf7 2211 char* GetRadioFreqBasePS2( void )
mverdy 20:626b92b70bf7 2212 {
mverdy 20:626b92b70bf7 2213 sprintf( StringText, "%lu Hz", DEMO_CENTRAL_FREQ_PRESET2 );
mverdy 20:626b92b70bf7 2214 return StringText;
mverdy 20:626b92b70bf7 2215 }
mverdy 20:626b92b70bf7 2216
mverdy 20:626b92b70bf7 2217 char* GetRadioFreqBasePS3( void )
mverdy 20:626b92b70bf7 2218 {
mverdy 20:626b92b70bf7 2219 sprintf( StringText, "%lu Hz", DEMO_CENTRAL_FREQ_PRESET3 );
mverdy 20:626b92b70bf7 2220 return StringText;
mverdy 20:626b92b70bf7 2221 }
mverdy 20:626b92b70bf7 2222
mverdy 20:626b92b70bf7 2223 char* GetRadioTxPower( void )
mverdy 20:626b92b70bf7 2224 {
mverdy 20:626b92b70bf7 2225 sprintf( StringText2, "%d dBm", Eeprom.EepromData.DemoSettings.TxPower );
mverdy 20:626b92b70bf7 2226 return StringText2;
mverdy 20:626b92b70bf7 2227 }
mverdy 20:626b92b70bf7 2228
mverdy 20:626b92b70bf7 2229 char* GetRadioPayloadLength( void )
mverdy 20:626b92b70bf7 2230 {
mverdy 20:626b92b70bf7 2231 if( Eeprom.EepromData.DemoSettings.ModulationType == PACKET_TYPE_LORA )
mverdy 20:626b92b70bf7 2232 {
mverdy 20:626b92b70bf7 2233 sprintf( StringText2, "%d", Eeprom.EepromData.DemoSettings.PacketParam3 );
mverdy 20:626b92b70bf7 2234 }
mverdy 20:626b92b70bf7 2235 else // PACKET_TYPE_GFSK, PACKET_TYPE_FLRC
mverdy 20:626b92b70bf7 2236 {
mverdy 20:626b92b70bf7 2237 sprintf( StringText2, "%d", Eeprom.EepromData.DemoSettings.PacketParam5 );
mverdy 20:626b92b70bf7 2238 }
mverdy 20:626b92b70bf7 2239 return StringText2;
mverdy 20:626b92b70bf7 2240 }
mverdy 20:626b92b70bf7 2241
mverdy 20:626b92b70bf7 2242 char* GetMenuDemoMaxNumPacket( void )
mverdy 20:626b92b70bf7 2243 {
mverdy 20:626b92b70bf7 2244 if( Eeprom.EepromData.DemoSettings.MaxNumPacket == 0 )
mverdy 20:626b92b70bf7 2245 {
mverdy 20:626b92b70bf7 2246 return ( char* )"Infinite";
mverdy 20:626b92b70bf7 2247 }
mverdy 20:626b92b70bf7 2248 else
mverdy 20:626b92b70bf7 2249 {
mverdy 20:626b92b70bf7 2250 sprintf( StringText, "%6d", Eeprom.EepromData.DemoSettings.MaxNumPacket );
mverdy 20:626b92b70bf7 2251 }
mverdy 20:626b92b70bf7 2252 return StringText;
mverdy 20:626b92b70bf7 2253 }
mverdy 20:626b92b70bf7 2254
mverdy 20:626b92b70bf7 2255 char* GetMenuDemoNumSentPacket( void )
mverdy 20:626b92b70bf7 2256 {
mverdy 20:626b92b70bf7 2257 sprintf( StringText2, "%6d", Eeprom.EepromData.DemoSettings.CntPacketTx );
mverdy 20:626b92b70bf7 2258 return StringText2;
mverdy 20:626b92b70bf7 2259 }
mverdy 20:626b92b70bf7 2260
mverdy 20:626b92b70bf7 2261 char* GetMenuDemoRxOk( void )
mverdy 20:626b92b70bf7 2262 {
mverdy 20:626b92b70bf7 2263 sprintf( StringText2, "%6lu", \
mverdy 20:626b92b70bf7 2264 ( unsigned long )( Eeprom.EepromData.DemoSettings.CntPacketRxOK ) );
mverdy 20:626b92b70bf7 2265 return StringText2;
mverdy 20:626b92b70bf7 2266 }
mverdy 20:626b92b70bf7 2267
mverdy 20:626b92b70bf7 2268 char* GetMenuDemoRxKo( void )
mverdy 20:626b92b70bf7 2269 {
mverdy 20:626b92b70bf7 2270 sprintf( StringText2, "%6lu", \
mverdy 20:626b92b70bf7 2271 ( unsigned long )( Eeprom.EepromData.DemoSettings.CntPacketRxKO + \
mverdy 20:626b92b70bf7 2272 Eeprom.EepromData.DemoSettings.RxTimeOutCount ) );
mverdy 20:626b92b70bf7 2273 return StringText2;
mverdy 20:626b92b70bf7 2274 }
mverdy 20:626b92b70bf7 2275
mverdy 20:626b92b70bf7 2276 char* GetMenuDemoRxOkSlave( void )
mverdy 20:626b92b70bf7 2277 {
mverdy 20:626b92b70bf7 2278 sprintf( StringText3, "%6lu", \
mverdy 20:626b92b70bf7 2279 ( unsigned long )( Eeprom.EepromData.DemoSettings.CntPacketRxOKSlave ) );
mverdy 20:626b92b70bf7 2280 return StringText3;
mverdy 20:626b92b70bf7 2281 }
mverdy 20:626b92b70bf7 2282
mverdy 20:626b92b70bf7 2283 char* GetMenuDemoResultPerCent1( uint32_t value, uint32_t reference )
mverdy 20:626b92b70bf7 2284 {
mverdy 20:626b92b70bf7 2285 // quicker than using a float (which is not optimized in MBED)
mverdy 20:626b92b70bf7 2286 sprintf( StringText2, "%3d.%02d", \
mverdy 20:626b92b70bf7 2287 ( ( value * 10000 ) / reference ) / 100, \
mverdy 20:626b92b70bf7 2288 ( ( value * 10000 ) / reference ) % 100 );
mverdy 20:626b92b70bf7 2289 return StringText2;
mverdy 20:626b92b70bf7 2290 }
mverdy 20:626b92b70bf7 2291
mverdy 20:626b92b70bf7 2292 char* GetMenuDemoResultPerCent2( uint32_t value, uint32_t reference )
mverdy 20:626b92b70bf7 2293 {
mverdy 20:626b92b70bf7 2294 // quicker than using a float (which is not optimized in MBED)
mverdy 20:626b92b70bf7 2295 sprintf( StringText3, "%3d.%02d", \
mverdy 20:626b92b70bf7 2296 ( ( value * 10000 ) / reference ) / 100, \
mverdy 20:626b92b70bf7 2297 ( ( value * 10000 ) / reference ) % 100 );
mverdy 20:626b92b70bf7 2298 return StringText3;
mverdy 20:626b92b70bf7 2299 }
mverdy 20:626b92b70bf7 2300
mverdy 20:626b92b70bf7 2301 char* GetMenuDemoRxKoSlave( void )
mverdy 20:626b92b70bf7 2302 {
mverdy 20:626b92b70bf7 2303 sprintf( StringText3, "%6lu", \
mverdy 20:626b92b70bf7 2304 ( unsigned long )( Eeprom.EepromData.DemoSettings.CntPacketRxKOSlave ) );
mverdy 20:626b92b70bf7 2305 return StringText3;
mverdy 20:626b92b70bf7 2306 }
mverdy 20:626b92b70bf7 2307
mverdy 20:626b92b70bf7 2308 char* GetMenuDemoRssi( void )
mverdy 20:626b92b70bf7 2309 {
mverdy 20:626b92b70bf7 2310 sprintf( StringText2, "%6d", Eeprom.EepromData.DemoSettings.RssiValue );
mverdy 20:626b92b70bf7 2311 return StringText2;
mverdy 20:626b92b70bf7 2312 }
mverdy 20:626b92b70bf7 2313
mverdy 20:626b92b70bf7 2314 char* GetMenuDemoSnr( void )
mverdy 20:626b92b70bf7 2315 {
mverdy 20:626b92b70bf7 2316 if( Eeprom.EepromData.DemoSettings.SnrValue >= 0 )
mverdy 20:626b92b70bf7 2317 {
mverdy 20:626b92b70bf7 2318 sprintf( StringText2, " /" );
mverdy 20:626b92b70bf7 2319 }
mverdy 20:626b92b70bf7 2320 else
mverdy 20:626b92b70bf7 2321 {
mverdy 20:626b92b70bf7 2322 sprintf( StringText2, "%6d", Eeprom.EepromData.DemoSettings.SnrValue );
mverdy 20:626b92b70bf7 2323 }
mverdy 20:626b92b70bf7 2324 return StringText2;
mverdy 20:626b92b70bf7 2325 }
mverdy 20:626b92b70bf7 2326
mverdy 20:626b92b70bf7 2327 char* GetAntennaSetting( void )
mverdy 20:626b92b70bf7 2328 {
mverdy 20:626b92b70bf7 2329 if( Eeprom.EepromData.DemoSettings.AntennaSwitch == 0 )
mverdy 20:626b92b70bf7 2330 {
mverdy 20:626b92b70bf7 2331 return ( char* )"ANT1";
mverdy 20:626b92b70bf7 2332 }
mverdy 20:626b92b70bf7 2333 else
mverdy 20:626b92b70bf7 2334 {
mverdy 20:626b92b70bf7 2335 return ( char* )"ANT0";
mverdy 20:626b92b70bf7 2336 }
mverdy 20:626b92b70bf7 2337 }
mverdy 20:626b92b70bf7 2338
mverdy 20:626b92b70bf7 2339 char* GetTotalPackets( void )
mverdy 20:626b92b70bf7 2340 {
mverdy 20:626b92b70bf7 2341 if( Eeprom.EepromData.DemoSettings.MaxNumPacket == 0 )
mverdy 20:626b92b70bf7 2342 {
mverdy 20:626b92b70bf7 2343 return ( char* )"Total: Inf.";
mverdy 20:626b92b70bf7 2344 }
mverdy 20:626b92b70bf7 2345 else
mverdy 20:626b92b70bf7 2346 {
mverdy 20:626b92b70bf7 2347 sprintf( StringText, "Total: %5lu", \
mverdy 20:626b92b70bf7 2348 ( unsigned long )( Eeprom.EepromData.DemoSettings.MaxNumPacket ) );
mverdy 20:626b92b70bf7 2349 return StringText;
mverdy 20:626b92b70bf7 2350 }
mverdy 20:626b92b70bf7 2351 }
mverdy 20:626b92b70bf7 2352
mverdy 20:626b92b70bf7 2353 #if defined(HAS_GPS_SENSOR)
mverdy 20:626b92b70bf7 2354 char* GetGpsTime( void )
mverdy 20:626b92b70bf7 2355 {
mverdy 20:626b92b70bf7 2356 thisGps = Max7GpsgetData( );
mverdy 20:626b92b70bf7 2357 if( ( thisGps->Position.Fixed ) && ( thisGps->Time.Updated ) )
mverdy 20:626b92b70bf7 2358 {
mverdy 20:626b92b70bf7 2359 sprintf( StringText, "GPS: %s.%s.%s %s:%s:%s", thisGps->Time.Year, \
mverdy 20:626b92b70bf7 2360 thisGps->Time.Month, \
mverdy 20:626b92b70bf7 2361 thisGps->Time.Day, \
mverdy 20:626b92b70bf7 2362 thisGps->Time.Hour, \
mverdy 20:626b92b70bf7 2363 thisGps->Time.Minute, \
mverdy 20:626b92b70bf7 2364 thisGps->Time.Second );
mverdy 20:626b92b70bf7 2365 thisGps->Time.Updated = false;
mverdy 20:626b92b70bf7 2366 return StringText;
mverdy 20:626b92b70bf7 2367 }
mverdy 20:626b92b70bf7 2368 else
mverdy 20:626b92b70bf7 2369 {
mverdy 20:626b92b70bf7 2370 return ( char* )"GPS: Satellites searching..";
mverdy 20:626b92b70bf7 2371 }
mverdy 20:626b92b70bf7 2372 }
mverdy 20:626b92b70bf7 2373
mverdy 20:626b92b70bf7 2374 char* GetGpsPos( void )
mverdy 20:626b92b70bf7 2375 {
mverdy 20:626b92b70bf7 2376 thisGps = Max7GpsgetData( );
mverdy 20:626b92b70bf7 2377 if( thisGps->Position.Fixed )
mverdy 20:626b92b70bf7 2378 {
mverdy 20:626b92b70bf7 2379 sprintf( StringText,"%s, %s", thisGps->Position.Lat, \
mverdy 20:626b92b70bf7 2380 thisGps->Position.Long );
mverdy 20:626b92b70bf7 2381 return StringText;
mverdy 20:626b92b70bf7 2382 }
mverdy 20:626b92b70bf7 2383 else
mverdy 20:626b92b70bf7 2384 {
mverdy 20:626b92b70bf7 2385 return ( char* )"Pos: Satellites searching..";
mverdy 20:626b92b70bf7 2386 }
mverdy 20:626b92b70bf7 2387 }
mverdy 20:626b92b70bf7 2388 #else
mverdy 20:626b92b70bf7 2389 char* GetGpsTime( void )
mverdy 20:626b92b70bf7 2390 {
mverdy 20:626b92b70bf7 2391 return ( char* )"";
mverdy 20:626b92b70bf7 2392 }
mverdy 20:626b92b70bf7 2393
mverdy 20:626b92b70bf7 2394 char* GetGpsPos( void )
mverdy 20:626b92b70bf7 2395 {
mverdy 20:626b92b70bf7 2396 return ( char* )"GPS: Not supported";
mverdy 20:626b92b70bf7 2397 }
mverdy 20:626b92b70bf7 2398 #endif
mverdy 20:626b92b70bf7 2399
mverdy 20:626b92b70bf7 2400 #if defined(HAS_PROXIMITY_SENSOR)
mverdy 20:626b92b70bf7 2401 char* GetProximityValue( void )
mverdy 20:626b92b70bf7 2402 {
mverdy 20:626b92b70bf7 2403 sprintf( StringText,"Proximity : %06d, %06d", \
mverdy 20:626b92b70bf7 2404 SX9306proximityGetReadValue( 1 ), \
mverdy 20:626b92b70bf7 2405 SX9306proximityGetReadValue( 0 ) ); // Left then right
mverdy 20:626b92b70bf7 2406 return StringText;
mverdy 20:626b92b70bf7 2407 }
mverdy 20:626b92b70bf7 2408 #else
mverdy 20:626b92b70bf7 2409 char* GetProximityValue( void )
mverdy 20:626b92b70bf7 2410 {
mverdy 20:626b92b70bf7 2411 return ( char * )"Proximity: Not supported";
mverdy 20:626b92b70bf7 2412 }
mverdy 20:626b92b70bf7 2413 #endif
mverdy 20:626b92b70bf7 2414
mverdy 20:626b92b70bf7 2415 char* GetMenuDemoRadioPowerMode( void )
mverdy 20:626b92b70bf7 2416 {
mverdy 20:626b92b70bf7 2417 if( Eeprom.EepromData.DemoSettings.RadioPowerMode == USE_LDO )
mverdy 20:626b92b70bf7 2418 {
mverdy 20:626b92b70bf7 2419 return ( char* )" LDO";
mverdy 20:626b92b70bf7 2420 }
mverdy 20:626b92b70bf7 2421 else
mverdy 20:626b92b70bf7 2422 {
mverdy 20:626b92b70bf7 2423 return ( char* )" DCDC";
mverdy 20:626b92b70bf7 2424 }
mverdy 20:626b92b70bf7 2425 }
mverdy 20:626b92b70bf7 2426
mverdy 20:626b92b70bf7 2427 char* GetFrequencyError( void )
mverdy 20:626b92b70bf7 2428 {
mverdy 20:626b92b70bf7 2429 sprintf( StringText2, "%6d", ( int32_t )Eeprom.EepromData.DemoSettings.RngFei );
mverdy 20:626b92b70bf7 2430 return StringText2;
mverdy 20:626b92b70bf7 2431 }
mverdy 20:626b92b70bf7 2432
mverdy 20:626b92b70bf7 2433 char* GetRngChannelsOk( void )
mverdy 20:626b92b70bf7 2434 {
mverdy 20:626b92b70bf7 2435 if( Eeprom.EepromData.DemoSettings.Entity == SLAVE )
mverdy 20:626b92b70bf7 2436 {
mverdy 20:626b92b70bf7 2437 Eeprom.EepromData.DemoSettings.CntPacketRxOK /= 2;
mverdy 20:626b92b70bf7 2438 }
mverdy 20:626b92b70bf7 2439 sprintf( StringText2, "%03d/%03d", Eeprom.EepromData.DemoSettings.CntPacketRxOK, Eeprom.EepromData.DemoSettings.RngRequestCount );
mverdy 20:626b92b70bf7 2440 return StringText2;
mverdy 20:626b92b70bf7 2441 }
mverdy 20:626b92b70bf7 2442
mverdy 20:626b92b70bf7 2443 char* GetRangingRequestCount( void )
mverdy 20:626b92b70bf7 2444 {
mverdy 20:626b92b70bf7 2445 sprintf( StringText2, "%d", Eeprom.EepromData.DemoSettings.RngRequestCount );
mverdy 20:626b92b70bf7 2446 return StringText2;
mverdy 20:626b92b70bf7 2447 }
mverdy 20:626b92b70bf7 2448
mverdy 20:626b92b70bf7 2449 char* GetRangingAddress( void )
mverdy 20:626b92b70bf7 2450 {
mverdy 20:626b92b70bf7 2451 sprintf( StringText2, "0x%08x", Eeprom.EepromData.DemoSettings.RngAddress );
mverdy 20:626b92b70bf7 2452 return StringText2;
mverdy 20:626b92b70bf7 2453 }
mverdy 20:626b92b70bf7 2454
mverdy 20:626b92b70bf7 2455 char* GetRangingAntenna( void )
mverdy 20:626b92b70bf7 2456 {
mverdy 20:626b92b70bf7 2457 switch( Eeprom.EepromData.DemoSettings.RngAntenna )
mverdy 20:626b92b70bf7 2458 {
mverdy 20:626b92b70bf7 2459 case DEMO_RNG_ANT_1: return ( char* )"ANT1";
mverdy 20:626b92b70bf7 2460 case DEMO_RNG_ANT_0: return ( char* )"ANT0";
mverdy 20:626b92b70bf7 2461 case DEMO_RNG_ANT_BOTH: return ( char* )"BOTH";
mverdy 20:626b92b70bf7 2462 default: return ( char* )"X";
mverdy 20:626b92b70bf7 2463 }
mverdy 20:626b92b70bf7 2464 }
mverdy 20:626b92b70bf7 2465
mverdy 20:626b92b70bf7 2466 char* GetRangingUnit( void )
mverdy 20:626b92b70bf7 2467 {
mverdy 20:626b92b70bf7 2468 switch( Eeprom.EepromData.DemoSettings.RngUnit )
mverdy 20:626b92b70bf7 2469 {
mverdy 20:626b92b70bf7 2470 case DEMO_RNG_UNIT_SEL_M: return ( char* )"Meter";
mverdy 20:626b92b70bf7 2471 case DEMO_RNG_UNIT_SEL_YD: return ( char* )"Yard";
mverdy 20:626b92b70bf7 2472 case DEMO_RNG_UNIT_SEL_MI: return ( char* )"Mile";
mverdy 20:626b92b70bf7 2473 default: return ( char* )"X";
mverdy 20:626b92b70bf7 2474 }
mverdy 20:626b92b70bf7 2475 }
mverdy 20:626b92b70bf7 2476
mverdy 20:626b92b70bf7 2477 void CheckScreen( void )
mverdy 20:626b92b70bf7 2478 {
mverdy 20:626b92b70bf7 2479 CheckScreenFlag = true;
mverdy 20:626b92b70bf7 2480 }
mverdy 20:626b92b70bf7 2481
mverdy 20:626b92b70bf7 2482 void CheckRefresh( void )
mverdy 20:626b92b70bf7 2483 {
mverdy 20:626b92b70bf7 2484 PageRefresh = true;
mverdy 20:626b92b70bf7 2485 }
mverdy 20:626b92b70bf7 2486
mverdy 20:626b92b70bf7 2487 void DebouncedScreen (void )
mverdy 20:626b92b70bf7 2488 {
mverdy 20:626b92b70bf7 2489 ScreenBeenDebounced = false;
mverdy 20:626b92b70bf7 2490 DebouncedScreenTouch.detach( );
mverdy 20:626b92b70bf7 2491 }
mverdy 20:626b92b70bf7 2492
mverdy 20:626b92b70bf7 2493 /*!
mverdy 20:626b92b70bf7 2494 * \brief Draw button
mverdy 20:626b92b70bf7 2495 *
mverdy 20:626b92b70bf7 2496 * \param [in] buttonId Id of the button to draw
mverdy 20:626b92b70bf7 2497 * \param [in] *text1 Text to draw as label
mverdy 20:626b92b70bf7 2498 * \param [in] *text2 Text to draw as value
mverdy 20:626b92b70bf7 2499 */
mverdy 20:626b92b70bf7 2500 void DrawActiveButton( uint8_t buttonId, uint8_t* text1, uint8_t* text2 )
mverdy 20:626b92b70bf7 2501 {
mverdy 20:626b92b70bf7 2502 GraphObjectDraw( &( MenuObjects[buttonId] ), NULL, NULL, true );
mverdy 20:626b92b70bf7 2503 if( text2 == NULL )
mverdy 20:626b92b70bf7 2504 {
mverdy 20:626b92b70bf7 2505 if( text1 != NULL )
mverdy 20:626b92b70bf7 2506 {
mverdy 20:626b92b70bf7 2507 GraphObjectDraw( &( MenuObjects[buttonId + 1] ), text1, NULL, false );
mverdy 20:626b92b70bf7 2508 }
mverdy 20:626b92b70bf7 2509 }
mverdy 20:626b92b70bf7 2510 else
mverdy 20:626b92b70bf7 2511 {
mverdy 20:626b92b70bf7 2512 if( text1 != NULL )
mverdy 20:626b92b70bf7 2513 {
mverdy 20:626b92b70bf7 2514 GraphObjectDraw( &( MenuObjects[buttonId + 2] ), text1, NULL, false );
mverdy 20:626b92b70bf7 2515 }
mverdy 20:626b92b70bf7 2516 GraphObjectDraw( &( MenuObjects[buttonId + 3] ), text2, NULL, false );
mverdy 20:626b92b70bf7 2517 }
mverdy 20:626b92b70bf7 2518 }
mverdy 20:626b92b70bf7 2519
mverdy 20:626b92b70bf7 2520 void ButtonChangeText( uint8_t buttonId, uint8_t* text1, uint8_t* text2 )
mverdy 20:626b92b70bf7 2521 {
mverdy 20:626b92b70bf7 2522 if( text2 == NULL )
mverdy 20:626b92b70bf7 2523 {
mverdy 20:626b92b70bf7 2524 if( text1 != NULL )
mverdy 20:626b92b70bf7 2525 {
mverdy 20:626b92b70bf7 2526 GraphObjectDraw( &( MenuObjects[buttonId + 1] ), text1, NULL, false );
mverdy 20:626b92b70bf7 2527 }
mverdy 20:626b92b70bf7 2528 }
mverdy 20:626b92b70bf7 2529 else
mverdy 20:626b92b70bf7 2530 {
mverdy 20:626b92b70bf7 2531 if( text1 != NULL )
mverdy 20:626b92b70bf7 2532 {
mverdy 20:626b92b70bf7 2533 GraphObjectDraw( &( MenuObjects[buttonId + 2] ), text1, NULL, false );
mverdy 20:626b92b70bf7 2534 }
mverdy 20:626b92b70bf7 2535 GraphObjectDraw( &( MenuObjects[buttonId + 3] ), text2, NULL, false );
mverdy 20:626b92b70bf7 2536 }
mverdy 20:626b92b70bf7 2537 }
mverdy 20:626b92b70bf7 2538
mverdy 20:626b92b70bf7 2539 void RemoveButton( uint8_t buttonId )
mverdy 20:626b92b70bf7 2540 {
mverdy 20:626b92b70bf7 2541 GraphObjectClear( &( MenuObjects[buttonId] ), true );
mverdy 20:626b92b70bf7 2542 }
mverdy 20:626b92b70bf7 2543
mverdy 20:626b92b70bf7 2544 void DrawText( uint8_t lineId, uint8_t* text0, uint8_t* text1, uint8_t* text2 )
mverdy 20:626b92b70bf7 2545 {
mverdy 20:626b92b70bf7 2546 if( text0 != NULL )
mverdy 20:626b92b70bf7 2547 {
mverdy 20:626b92b70bf7 2548 GraphObjectDraw( &( MenuObjects[lineId] ), text0, NULL, false );
mverdy 20:626b92b70bf7 2549 }
mverdy 20:626b92b70bf7 2550 if( text1 != NULL )
mverdy 20:626b92b70bf7 2551 {
mverdy 20:626b92b70bf7 2552 GraphObjectDraw( &( MenuObjects[lineId + 1] ), text1, NULL, false );
mverdy 20:626b92b70bf7 2553 }
mverdy 20:626b92b70bf7 2554 if( text2 != NULL )
mverdy 20:626b92b70bf7 2555 {
mverdy 20:626b92b70bf7 2556 GraphObjectDraw( &( MenuObjects[lineId + 2] ), text2, NULL, false );
mverdy 20:626b92b70bf7 2557 }
mverdy 20:626b92b70bf7 2558 }
mverdy 20:626b92b70bf7 2559