New BASE release 4 Fork

Dependencies:   mbed QEI DmTftLibrary

Committer:
lex9296
Date:
Thu Jan 20 13:26:03 2022 +0000
Revision:
22:12c555cade79
Parent:
21:ab8027016a2c
Child:
23:b9d23a2f390e
Base Release x Touch

Who changed what in which revision?

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