myDisplayUnit.c 31 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880
  1. #include "myDisplayUnit.h"
  2. #include "myLcd.h"
  3. #include <stdlib.h>
  4. #include <stdio.h>
  5. #include <stdbool.h>
  6. #include <stdarg.h>
  7. #include <string.h>
  8. int8_t uiPageIdAddress = ~(0);
  9. int8_t uiPageCount = 1;
  10. int8_t rx_tx_count;
  11. int8_t rx_tp_count;
  12. int8_t setting_count;
  13. int8_t tx_tp_count;
  14. uiPageUnit_ts uiPageParams[UI_PAGE_ID_MAX];
  15. enterCallback enterCb;
  16. uint32_t buffer_rfBr;
  17. uint32_t rfBr;
  18. uint32_t buffer_channelStep;
  19. uint32_t buffer_freq;
  20. int8_t buffer_rfPower;
  21. char *buffer_type;
  22. void myDisplay_ui_firstUi_setDeviceName(char *name)
  23. {
  24. myLCD_str8x16(IM_NOMALE, 80, 1, name);
  25. }
  26. void myDisplay_ui_firstUi_setFreq(uint32_t freq)
  27. {
  28. myLCD_str8x16(IM_NOMALE, 80, 2, "Freq.%6.2fMHz", (float)freq/1000000);
  29. }
  30. void myDisplay_ui_firstUi_setRfPower(int power)
  31. {
  32. myLCD_str8x16(IM_NOMALE, 95, 3, "Pwr.%ddBm", power);
  33. }
  34. void myDisplay_ui_firstUi_setRfBr(uint32_t br)
  35. {
  36. myLCD_str8x16(IM_NOMALE, 95, 4, "Br.%.3fkb", (float)br/1000);
  37. }
  38. void myDisplay_ui_firstUi_setRfparams(uint8_t sf, char *bw, uint8_t cr)
  39. {
  40. myLCD_str8x16(IM_NOMALE, 95, 4, "s%u %s c%u", sf, bw, cr);
  41. }
  42. void myDisplay_ui_firstUi(bool flashFlag, int agr0, void *agr1_ptr, void *agr2_ptr)
  43. {
  44. if (uiPageIdAddress != UI_PAGE_ID_FIRST_UI)
  45. {
  46. myLCD_16x16(IM_INVERSE, 10, 11, "深圳市沃进科技有限公司");
  47. myLCD_displayImage(IM_NOMALE, 1, 1, IMG_SRC_VOLLGO);
  48. myLCD_str8x16(IM_NOMALE, 80, 1, "VG------------");
  49. myLCD_str8x16(IM_NOMALE, 95, 2, "Freq.***");
  50. myLCD_str8x16(IM_NOMALE, 95, 3, "Pwr.**");
  51. }
  52. else
  53. {
  54. myLCD_str8x16(agr0 == 0&& flashFlag ? IM_INVERSE : IM_NOMALE,
  55. HORIZONTAL_RIGHT, 5, "ENTER");
  56. }
  57. uiPageIdAddress = UI_PAGE_ID_FIRST_UI;
  58. }
  59. void myDisplay_ui_selectMode(bool flashFlag, int agr0, void *agr1_ptr, void *agr2_ptr)
  60. {
  61. int i;
  62. myLCD_clearFull();
  63. for ( i = 0; i <= MAX_PAGE_COUNT; i++)
  64. {
  65. myLCD_displayBlock(1, i);
  66. }
  67. uiPageIdAddress = UI_PAGE_ID_ITEM_MODE;
  68. myLCD_str8x16(agr0 == 0&& flashFlag ? IM_INVERSE : IM_NOMALE,
  69. 10, 1, "Enter RF Transmiter");
  70. myLCD_str8x16(agr0 == 1&& flashFlag ? IM_INVERSE : IM_NOMALE,
  71. 10, 2, "Enter RF Receiver");
  72. myLCD_str8x16(agr0 == 2&& flashFlag ? IM_INVERSE : IM_NOMALE,
  73. 10, 3, "Enter RF Continuous");
  74. myLCD_str8x16(agr0 == 3&& flashFlag ? IM_INVERSE : IM_NOMALE,
  75. 10, 4, "Enter RF Setting");
  76. myLCD_str8x16(agr0 == 4&& flashFlag ? IM_INVERSE : IM_NOMALE,
  77. 10, 5, "Enter Device Infor");
  78. }
  79. void myDisplay_ui_rf_tx(uint8_t mode)
  80. {
  81. int i;
  82. myLCD_clearFull();
  83. for ( i = 0; i <= MAX_PAGE_COUNT; i++)
  84. {
  85. myLCD_displayBlock(1, i);
  86. }
  87. myLCD_str8x16(mode == 0 ? IM_INVERSE : IM_NOMALE,
  88. 10, 1, "Packet TX");
  89. myLCD_str8x16(mode == 1 ? IM_INVERSE : IM_NOMALE,
  90. 10, 2, "Continuous TX");
  91. }
  92. void myDisplay_ui_rf_tx_packet(bool flashFlag, int agr0, void *agr1_ptr, void *agr2_ptr)
  93. {
  94. int i;
  95. if (uiPageIdAddress != UI_PAGE_ID_TX_PACKET)
  96. {
  97. myLCD_clearFull();
  98. for ( i = 0; i <= MAX_PAGE_COUNT; i++)
  99. {
  100. myLCD_displayBlock(1, i);
  101. }
  102. myLCD_str8x16(IM_NOMALE, HORIZONTAL_CENTER, 1, "Packet TX");
  103. myLCD_str8x16(IM_NOMALE, 5, 2, "Packet:");
  104. }
  105. uiPageIdAddress = UI_PAGE_ID_TX_PACKET;
  106. if (uiPageIdAddress == UI_PAGE_ID_TX_PACKET)
  107. {
  108. myLCD_str8x16(agr0 == 0&& flashFlag ? IM_INVERSE : IM_NOMALE,
  109. HORIZONTAL_RIGHT, 4, "START");
  110. myLCD_str8x16(agr0 == 1&& flashFlag ? IM_INVERSE : IM_NOMALE,
  111. HORIZONTAL_RIGHT, 5, "TXWA");
  112. myLCD_str8x16(agr0 == 2&& flashFlag ? IM_INVERSE : IM_NOMALE,
  113. HORIZONTAL_RIGHT, 6, "TXCC");
  114. }
  115. }
  116. void myDisplay_ui_rf_tx_packet_buffer(uint8_t *buffer)
  117. {
  118. if (uiPageIdAddress == UI_PAGE_ID_TX_PACKET)
  119. {
  120. myLCD_str8x16(IM_NOMALE, 10, 3, (char *)buffer);
  121. }
  122. }
  123. void myDisplay_ui_rf_tx_packet_counts(uint32_t count)
  124. {
  125. if (uiPageIdAddress == UI_PAGE_ID_TX_PACKET)
  126. {
  127. myLCD_str8x16(IM_NOMALE, HORIZONTAL_RIGHT, 2, "%5d",count);
  128. }
  129. }
  130. void myDisplay_ui_rf_tx_packet_rate(float rate)
  131. {
  132. if (uiPageIdAddress == UI_PAGE_ID_TX_PACKET)
  133. {
  134. myLCD_str8x16(IM_NOMALE, HORIZONTAL_CENTER, 2, "%5.1f%%",(float)rate);
  135. }
  136. }
  137. void myDisplay_ui_rf_tx_packet_consumeTime(uint32_t time)
  138. {
  139. if (uiPageIdAddress == UI_PAGE_ID_TX_PACKET)
  140. {
  141. if (time == ~(uint32_t)0)
  142. {
  143. myLCD_str8x16(IM_NOMALE, HORIZONTAL_RIGHT, 1, " OUT");
  144. }
  145. else
  146. {
  147. myLCD_str8x16(IM_NOMALE, HORIZONTAL_RIGHT, 1, "%5dms", time);
  148. }
  149. }
  150. }
  151. void myDisplay_ui_rf_tx_packet_ackRssi(int16_t rssi)
  152. {
  153. if (uiPageIdAddress == UI_PAGE_ID_TX_PACKET)
  154. {
  155. if (rssi > -150 && (rssi < 10))
  156. {
  157. myLCD_str8x16(IM_NOMALE, HORIZONTAL_RIGHT, 3, "%04ddBm", rssi%10000);
  158. }
  159. }
  160. }
  161. void myDisplay_ui_rf_setting_freq(uint32_t freq)
  162. {
  163. buffer_freq = freq;
  164. }
  165. void myDisplay_ui_rf_setting_rfPower(int8_t rfPower)
  166. {
  167. buffer_rfPower = rfPower;
  168. }
  169. void myDisplay_ui_rf_setting_channelStep(uint32_t channelStep)
  170. {
  171. buffer_channelStep = channelStep;
  172. }
  173. void myDisplay_ui_rf_setting_type(char *type)
  174. {
  175. buffer_type = type;
  176. }
  177. void myDisplay_ui_rf_setting_rfBr(uint32_t br)
  178. {
  179. rfBr = br;
  180. }
  181. char settingDisplayBuffer[SET_ITEM_INDEX_MAX_COUNT][20] =
  182. {
  183. "Type:%s",
  184. "Chl:%s",
  185. "Step:%s",
  186. "TxPower:%s",
  187. "RfBr:%s",
  188. "PkLen:%s",
  189. };
  190. // char settingDisplayBuffer[SET_ITEM_INDEX_MAX_COUNT][20] =
  191. // {
  192. // "Type:%s",
  193. // "Chl:%02d->%6.2fMHz",
  194. // "Step:%4.2fMHz",
  195. // "TxPower:%04ddBm",
  196. // "RfBr:%7.3fkbps",
  197. // "SF:%d",
  198. // "BW:%d",
  199. // "CR:%d",
  200. // "PkLen:%3d",
  201. // };
  202. char settingCuDisplayBuffer[5][20] = {0};
  203. void myDisplay_setting_loadParams(int index, const char *fmt, ...)
  204. {
  205. va_list va;
  206. va_start(va, fmt);
  207. vsnprintf(uiPageParams[UI_PAGE_ID_SETTING].itemStringTab[index], (int)sizeof(uiPageParams[UI_PAGE_ID_SETTING].itemStringTab[index]), fmt, va);
  208. va_end(va);
  209. }
  210. void myDisplay_ui_rf_setting(bool flashFlag, int agr0, void *agr1_ptr, void *agr2_ptr)
  211. {
  212. int i;
  213. int index = agr0;
  214. static int oldIndex = 255;
  215. if (uiPageIdAddress != UI_PAGE_ID_SETTING)
  216. {
  217. myLCD_clearFull();
  218. for ( i = 0; i <= MAX_PAGE_COUNT; i++)
  219. {
  220. myLCD_displayBlock(1, i);
  221. }
  222. myLCD_str8x16(IM_NOMALE, HORIZONTAL_CENTER, 1, "Setting");
  223. myLCD_str8x16(IM_NOMALE, 10, 2, settingDisplayBuffer[0]);
  224. myLCD_str8x16(IM_NOMALE, 10, 3, settingDisplayBuffer[1]);
  225. myLCD_str8x16(IM_NOMALE, 10, 4, settingDisplayBuffer[2]);
  226. myLCD_str8x16(IM_NOMALE, 10, 5, settingDisplayBuffer[3]);
  227. myLCD_str8x16(IM_NOMALE, 10, 6, settingDisplayBuffer[4]);
  228. }
  229. uiPageIdAddress = UI_PAGE_ID_SETTING;
  230. if (uiPageIdAddress == UI_PAGE_ID_SETTING)
  231. {
  232. int indexCount = 0;
  233. //max rows is 5
  234. if (index >= 5)
  235. {
  236. indexCount = index - 4;
  237. index = 4;
  238. }
  239. for (int i = 0; i < 5; i++)
  240. {
  241. for (int j = 0; j < SET_ITEM_INDEX_MAX_COUNT; j++)
  242. {
  243. if (indexCount == j)
  244. snprintf(settingCuDisplayBuffer[i], 20, settingDisplayBuffer[indexCount], uiPageParams[UI_PAGE_ID_SETTING].itemStringTab[j]);
  245. }
  246. indexCount ++;
  247. }
  248. if (oldIndex != agr0)
  249. {
  250. myLCD_str8x16(IM_NOMALE, 10, 2, " ");
  251. myLCD_str8x16(IM_NOMALE, 10, 3, " ");
  252. myLCD_str8x16(IM_NOMALE, 10, 4, " ");
  253. myLCD_str8x16(IM_NOMALE, 10, 5, " ");
  254. myLCD_str8x16(IM_NOMALE, 10, 6, " ");
  255. myLCD_str8x16(index == 0&& flashFlag ? IM_INVERSE : IM_NOMALE, 10, 2, settingCuDisplayBuffer[0]);
  256. myLCD_str8x16(index == 1&& flashFlag ? IM_INVERSE : IM_NOMALE, 10, 3, settingCuDisplayBuffer[1]);
  257. myLCD_str8x16(index == 2&& flashFlag ? IM_INVERSE : IM_NOMALE, 10, 4, settingCuDisplayBuffer[2]);
  258. myLCD_str8x16(index == 3&& flashFlag ? IM_INVERSE : IM_NOMALE, 10, 5, settingCuDisplayBuffer[3]);
  259. myLCD_str8x16(index == 4&& flashFlag ? IM_INVERSE : IM_NOMALE, 10, 6, settingCuDisplayBuffer[4]);
  260. }
  261. else
  262. {
  263. switch (index)
  264. {
  265. case 0:
  266. myLCD_str8x16(index == 0&& flashFlag ? IM_INVERSE : IM_NOMALE, 10, 2, settingCuDisplayBuffer[0]);
  267. break;
  268. case 1:
  269. myLCD_str8x16(index == 1&& flashFlag ? IM_INVERSE : IM_NOMALE, 10, 3, settingCuDisplayBuffer[1]);
  270. break;
  271. case 2:
  272. myLCD_str8x16(index == 2&& flashFlag ? IM_INVERSE : IM_NOMALE, 10, 4, settingCuDisplayBuffer[2]);
  273. break;
  274. case 3:
  275. myLCD_str8x16(index == 3&& flashFlag ? IM_INVERSE : IM_NOMALE, 10, 5, settingCuDisplayBuffer[3]);
  276. break;
  277. case 4:
  278. myLCD_str8x16(index == 4&& flashFlag ? IM_INVERSE : IM_NOMALE, 10, 6, settingCuDisplayBuffer[4]);
  279. break;
  280. default:
  281. break;
  282. }
  283. }
  284. oldIndex = agr0;
  285. }
  286. }
  287. uint8_t ver_buffer;
  288. char *mod_buffer;
  289. void myDisplay_ui_device_infor(bool flashFlag, int agr0, void *agr1_ptr, void *agr2_ptr)
  290. {
  291. int i;
  292. if (uiPageIdAddress != UI_PAGE_ID_DEVICE_INFOR)
  293. {
  294. myLCD_clearFull();
  295. for ( i = 0; i <= MAX_PAGE_COUNT; i++)
  296. {
  297. myLCD_displayBlock(1, i);
  298. }
  299. myLCD_str8x16(IM_NOMALE, HORIZONTAL_CENTER, 1, "Infor");
  300. myLCD_str8x16(IM_NOMALE, 10, 2, "TP: %s", mod_buffer);
  301. myLCD_str8x16(IM_NOMALE,
  302. 10, 3, "VER: V%02x", ver_buffer);
  303. myLCD_str8x16(IM_NOMALE, 10, 4, "MD: VOLLGO");
  304. }
  305. uiPageIdAddress = UI_PAGE_ID_DEVICE_INFOR;
  306. }
  307. void myDisplay_ui_deviceInfor_setVer(uint8_t ver)
  308. {
  309. ver_buffer = ver;
  310. }
  311. void myDisplay_ui_deviceInfor_setModule(char *moduleName)
  312. {
  313. mod_buffer = moduleName;
  314. }
  315. void myDisplay_ui_rf_rx(uint8_t mode)
  316. {
  317. int i;
  318. myLCD_clearFull();
  319. for ( i = 0; i <= MAX_PAGE_COUNT; i++)
  320. {
  321. myLCD_displayBlock(1, i);
  322. }
  323. myLCD_str8x16(mode == 0 ? IM_INVERSE : IM_NOMALE,
  324. 10, 1, "Packet RX");
  325. myLCD_str8x16(mode == 1 ? IM_INVERSE : IM_NOMALE,
  326. 10, 2, "Continuous RX");
  327. }
  328. void myDisplay_ui_rf_continuos(bool flashFlag, int agr0, void *agr1_ptr, void *agr2_ptr)
  329. {
  330. int i;
  331. if (uiPageIdAddress != UI_PAGE_ID_RF_CONTINUOUS)
  332. {
  333. myLCD_clearFull();
  334. for ( i = 0; i <= MAX_PAGE_COUNT; i++)
  335. {
  336. myLCD_displayBlock(1, i);
  337. }
  338. myLCD_str8x16(IM_NOMALE, HORIZONTAL_CENTER, 1, "Continuous");
  339. myDisplay_ui_rf_continuos_rfFreq();
  340. myDisplay_ui_rf_continuos_rfBr();
  341. myDisplay_ui_rf_continuos_rfPwr();
  342. }
  343. uiPageIdAddress = UI_PAGE_ID_RF_CONTINUOUS;
  344. if (uiPageIdAddress == UI_PAGE_ID_RF_CONTINUOUS)
  345. {
  346. myLCD_str8x16(agr0 == CNT_ITEM_INDEX_TX&& flashFlag ? IM_INVERSE : IM_NOMALE,
  347. HORIZONTAL_CENTER, 2, "TX");
  348. myLCD_str8x16(agr0 == CNT_ITEM_INDEX_RX&& flashFlag ? IM_INVERSE : IM_NOMALE,
  349. HORIZONTAL_CENTER, 3, "RX");
  350. myLCD_str8x16(agr0 == CNT_ITEM_INDEX_TX_MD&& flashFlag ? IM_INVERSE : IM_NOMALE,
  351. 110+3, 2, "TX_MD");
  352. }
  353. }
  354. void myDisplay_ui_rf_continuos_txCurrent(float Current)
  355. {
  356. if (uiPageIdAddress == UI_PAGE_ID_RF_CONTINUOUS)
  357. {
  358. myLCD_str8x16(IM_NOMALE,
  359. 10, 4, "C=%6.2fmA", Current);
  360. }
  361. }
  362. void myDisplay_ui_rf_continuos_rxLen(float rate, uint16_t len)
  363. {
  364. if (uiPageIdAddress == UI_PAGE_ID_RF_CONTINUOUS)
  365. {
  366. myLCD_str8x16(IM_NOMALE,
  367. HORIZONTAL_RIGHT, 4, "%5.1f%% %4d", rate, len);
  368. }
  369. }
  370. void myDisplay_ui_rf_continuos_rfFreq(void)
  371. {
  372. // if (uiPageIdAddress == UI_PAGE_ID_RF_CONTINUOUS)
  373. {
  374. myLCD_str8x16(IM_NOMALE,
  375. 5, 2,
  376. "%6.2fMHz", (float)buffer_freq / 1000000);
  377. }
  378. }
  379. void myDisplay_ui_rf_continuos_rfBr(void)
  380. {
  381. // if (uiPageIdAddress == UI_PAGE_ID_RF_CONTINUOUS)
  382. {
  383. myLCD_str8x16(IM_NOMALE,
  384. HORIZONTAL_RIGHT, 3,
  385. "%7.3fkbps", (float)rfBr / 1000);
  386. }
  387. }
  388. void myDisplay_ui_rf_continuos_rfPwr(void)
  389. {
  390. // if (uiPageIdAddress == UI_PAGE_ID_RF_CONTINUOUS)
  391. {
  392. myLCD_str8x16(IM_NOMALE,
  393. 5, 3,
  394. "%ddBm", buffer_rfPower);
  395. }
  396. }
  397. void myDisplay_ui_rf_continuos_rxErrorRate(float rate)
  398. {
  399. if (uiPageIdAddress == UI_PAGE_ID_RF_CONTINUOUS)
  400. {
  401. myLCD_str8x16(IM_NOMALE,
  402. 10, 5, "rate=%6.2f%%", rate);
  403. }
  404. }
  405. void myDisplay_ui_rf_continuos_rxRssi(int16_t rssi)
  406. {
  407. if (uiPageIdAddress == UI_PAGE_ID_RF_CONTINUOUS)
  408. {
  409. myLCD_str8x16(IM_NOMALE,
  410. HORIZONTAL_RIGHT, 2, "%4d", rssi);
  411. }
  412. }
  413. void myDisplay_ui_rf_continuos_rxContinuousFreq(uint32_t freq)
  414. {
  415. if (uiPageIdAddress == UI_PAGE_ID_RF_CONTINUOUS)
  416. {
  417. myLCD_str8x16(IM_NOMALE,
  418. 10, 6, "freq=%6d", freq);
  419. }
  420. }
  421. void myDisplay_ui_rf_continuos_rxPacketCount(uint8_t status, uint16_t count)
  422. {
  423. if (uiPageIdAddress == UI_PAGE_ID_RF_CONTINUOUS)
  424. {
  425. myLCD_str8x16(IM_NOMALE,
  426. 10, 5, "count=%d sta=%d", count, status);
  427. }
  428. }
  429. void myDisplay_ui_rf_continuos_rxPacket(uint8_t *buf, uint16_t len)
  430. {
  431. int i = 0;
  432. if (uiPageIdAddress == UI_PAGE_ID_RF_CONTINUOUS)
  433. {
  434. myLCD_str8x16(IM_NOMALE,
  435. 10, 6, " ");
  436. if (len)
  437. {
  438. myLCD_str8x16(IM_NOMALE,
  439. 10, 6, "packet=");
  440. for ( i = 0; i < len; i++)
  441. {
  442. myLCD_str8x16(IM_NOMALE,
  443. 10, 6 + strlen("packet=") + i,
  444. "%x", *buf);
  445. buf ++;
  446. }
  447. }
  448. else
  449. {
  450. myLCD_str8x16(IM_NOMALE,
  451. 10, 6, "packet=%s", buf);
  452. }
  453. }
  454. }
  455. void myDisplay_ui_rf_continuos_rxPacketGetCount(uint32_t count)
  456. {
  457. if (uiPageIdAddress == UI_PAGE_ID_RF_CONTINUOUS)
  458. {
  459. myLCD_str8x16(IM_NOMALE,
  460. 10, 6, "rx count=%d", count);
  461. }
  462. }
  463. void myDisplay_ui_rf_rx_packet(bool flashFlag, int agr0, void *agr1_ptr, void *agr2_ptr)
  464. {
  465. int i;
  466. if (uiPageIdAddress != UI_PAGE_ID_RX_PACKET)
  467. {
  468. myLCD_clearFull();
  469. for ( i = 0; i <= MAX_PAGE_COUNT; i++)
  470. {
  471. myLCD_displayBlock(1, i);
  472. }
  473. myLCD_str8x16(IM_NOMALE, HORIZONTAL_CENTER, 1, "Packet RX");
  474. myLCD_str8x16(IM_NOMALE,
  475. 5, 3, "Packet:");
  476. }
  477. uiPageIdAddress = UI_PAGE_ID_RX_PACKET;
  478. if (uiPageIdAddress == UI_PAGE_ID_RX_PACKET)
  479. {
  480. myLCD_str8x16(agr0 == 0&& flashFlag ? IM_INVERSE : IM_NOMALE,
  481. HORIZONTAL_RIGHT, 5, "START");
  482. myLCD_str8x16(agr0 == 1&& flashFlag ? IM_INVERSE : IM_NOMALE,
  483. HORIZONTAL_RIGHT, 6, "RXAA");
  484. }
  485. }
  486. void myDisplay_ui_rf_rxPacket_rxCurrent(float current)
  487. {
  488. if (uiPageIdAddress == UI_PAGE_ID_RX_PACKET)
  489. {
  490. myLCD_str8x16(IM_NOMALE,
  491. 5, 2, "%-6.2fmA", current);
  492. }
  493. }
  494. void myDisplay_ui_rf_rxPacket_rssi(int16_t rssi)
  495. {
  496. if (uiPageIdAddress == UI_PAGE_ID_RX_PACKET)
  497. {
  498. {
  499. myLCD_str8x16(IM_NOMALE,
  500. HORIZONTAL_RIGHT, 2, "%04ddBm", rssi%10000);
  501. }
  502. }
  503. }
  504. void myDisplay_ui_rf_rxPacket_count(uint32_t count)
  505. {
  506. if (uiPageIdAddress == UI_PAGE_ID_RX_PACKET)
  507. {
  508. myLCD_str8x16(IM_NOMALE,
  509. HORIZONTAL_CENTER, 3, "%06d", count);
  510. }
  511. }
  512. void myDisplay_ui_rf_rxPacket_rate(float rate)
  513. {
  514. if (uiPageIdAddress == UI_PAGE_ID_RX_PACKET)
  515. {
  516. myLCD_str8x16(IM_NOMALE,
  517. HORIZONTAL_RIGHT, 3, "%05.1f%%", rate);
  518. }
  519. }
  520. void myDisplay_ui_rf_rxPacket_buffer(uint8_t *buf, uint16_t len)
  521. {
  522. int i = 0;
  523. if (uiPageIdAddress == UI_PAGE_ID_RX_PACKET)
  524. {
  525. myLCD_str8x16(IM_NOMALE,
  526. 10, 5, " ");
  527. if (len)
  528. {
  529. myLCD_str8x16(IM_NOMALE,
  530. 10, 5, "packet=");
  531. for ( i = 0; i < len; i++)
  532. {
  533. myLCD_str8x16(IM_NOMALE,
  534. 10, 5 + strlen("packet=") + i,
  535. "%x", *buf);
  536. buf ++;
  537. }
  538. }
  539. else
  540. {
  541. myLCD_str8x16(IM_NOMALE,
  542. 10, 5, "packet=%-15s", buf);
  543. }
  544. }
  545. }
  546. uint8_t displayBuffer[3][20];
  547. void loadDisplayBuffer(uint8_t *buf, uint16_t len)
  548. {
  549. memcpy((char *)displayBuffer[0], (char *)displayBuffer[1], 20);
  550. memcpy((char *)displayBuffer[1], (char *)displayBuffer[2], 20);
  551. memset(displayBuffer[2], 0, 20);
  552. memcpy((char *)displayBuffer[2], (char *)buf, 20);
  553. }
  554. void myDisplay_ui_rf_rxPacket_scroll_buffer(uint8_t *buf, uint16_t len)
  555. {
  556. int i = 0;
  557. if (uiPageIdAddress == UI_PAGE_ID_RX_PACKET)
  558. {
  559. if (len)
  560. {
  561. for ( i = 0; i < len; i++)
  562. {
  563. myLCD_str8x16(IM_NOMALE,
  564. 10 + i, 5,
  565. "%x", *buf);
  566. buf ++;
  567. }
  568. loadDisplayBuffer(buf, len);
  569. }
  570. else
  571. {
  572. }
  573. loadDisplayBuffer(buf, len);
  574. myLCD_str8x16(IM_NOMALE, 18, 4,
  575. "%-15s", displayBuffer[0]);
  576. myLCD_str8x16(IM_NOMALE, 18, 5,
  577. "%-15s", displayBuffer[1]);
  578. myLCD_str8x16(IM_NOMALE, 18, 6,
  579. "%-15s", displayBuffer[2]);
  580. }
  581. }
  582. void loadDisplayBufferContinue(uint8_t *buf, uint16_t len)
  583. {
  584. memcpy((char *)displayBuffer[0], (char *)displayBuffer[1], 20);
  585. memset(displayBuffer[1], 0, 20);
  586. memcpy((char *)displayBuffer[1], (char *)buf, 20);
  587. }
  588. void myDisplay_ui_rf_rxContinue_scroll_buffer(uint8_t *buf, uint16_t len)
  589. {
  590. int i = 0;
  591. if (uiPageIdAddress == UI_PAGE_ID_RF_CONTINUOUS)
  592. {
  593. loadDisplayBufferContinue(buf, len);
  594. myLCD_str8x16(IM_NOMALE, 18, 5,
  595. "%-15s", displayBuffer[0]);
  596. myLCD_str8x16(IM_NOMALE, 18, 6,
  597. "%-15s", displayBuffer[1]);
  598. }
  599. }
  600. /**
  601. * 光标控制
  602. * direct: 方向控制
  603. * =1,向上移动
  604. * =0,向下移动
  605. * **/
  606. void myDisplay_change(uint8_t direct)
  607. {
  608. uiPageUnit_ts *page = &uiPageParams[uiPageCount - 1];
  609. if (page->cursorCount)
  610. {
  611. //设置加减控制
  612. if (page->writeStaTab[page->cursorCounting])
  613. {
  614. if (direct)
  615. {
  616. page->itemValueTab[page->cursorCounting] += page->itemStepValueTab[page->cursorCounting];
  617. if (page->itemValueTab[page->cursorCounting] >=
  618. page->itemMaxValueTab[page->cursorCounting])
  619. {
  620. page->itemValueTab[page->cursorCounting] = page->itemMinValueTab[page->cursorCounting];
  621. }
  622. }
  623. else
  624. {
  625. page->itemValueTab[page->cursorCounting] -= page->itemStepValueTab[page->cursorCounting];
  626. if (page->itemValueTab[page->cursorCounting] < page->itemMinValueTab[page->cursorCounting])
  627. {
  628. page->itemValueTab[page->cursorCounting] =
  629. page->itemMaxValueTab[page->cursorCounting] - 1;
  630. }
  631. }
  632. if (enterCb)
  633. {
  634. enterCb(uiPageCount,
  635. page->cursorCounting,
  636. page->writeStaTab[page->cursorCounting],
  637. page->itemValueTab[page->cursorCounting],
  638. page->itemStringTab[page->cursorCounting]
  639. );
  640. }
  641. }
  642. else
  643. {
  644. //光标移动控制
  645. if (direct)
  646. {
  647. page->cursorCounting --;
  648. if (page->cursorCounting < 0)
  649. {
  650. page->cursorCounting = page->cursorCount - 1;
  651. }
  652. }
  653. else
  654. {
  655. page->cursorCounting ++;
  656. if (page->cursorCounting >= page->cursorCount)
  657. {
  658. page->cursorCounting = 0;
  659. }
  660. }
  661. }
  662. page->uiDriver(true, page->cursorCounting,
  663. page->itemValueTab, page->itemStringTab[page->cursorCounting]);
  664. }
  665. }
  666. /***
  667. * 按下确定键
  668. * 进入下一个界面或者进入设置状态
  669. */
  670. void myDisplay_enter(uint8_t direct)
  671. {
  672. if (direct == ENTER_NEXT_PAGE)
  673. {
  674. //进入设置状态
  675. if (uiPageParams[uiPageCount - 1].itemTypeTab[uiPageParams[uiPageCount - 1].cursorCounting] == TYPE_WRITE_TEXT)
  676. {
  677. //切换设置状态
  678. uiPageParams[uiPageCount - 1].writeStaTab[uiPageParams[uiPageCount - 1].cursorCounting] =
  679. !uiPageParams[uiPageCount - 1].writeStaTab[uiPageParams[uiPageCount - 1].cursorCounting];
  680. uiPageParams[uiPageCount - 1].uiDriver(true, uiPageParams[uiPageCount - 1].cursorCounting,
  681. uiPageParams[uiPageCount - 1].itemValueTab, uiPageParams[uiPageCount - 1].itemStringTab[uiPageParams[uiPageCount - 1].cursorCounting]);
  682. if (enterCb)
  683. {
  684. enterCb(uiPageParams[uiPageCount - 1].id,
  685. uiPageParams[uiPageCount - 1].cursorCounting,
  686. uiPageParams[uiPageCount - 1].writeStaTab[uiPageParams[uiPageCount - 1].cursorCounting],
  687. uiPageParams[uiPageCount - 1].itemValueTab[uiPageParams[uiPageCount - 1].cursorCounting],
  688. uiPageParams[uiPageCount - 1].itemStringTab[uiPageParams[uiPageCount - 1].cursorCounting]
  689. );
  690. }
  691. }
  692. //切换到下一个界面
  693. if (uiPageParams[uiPageCount - 1].itemTypeTab[uiPageParams[uiPageCount - 1].cursorCounting] == TYPE_NEXT_LINK)
  694. {
  695. uiPageCount = uiPageParams[uiPageCount - 1].nextPageIdTab[uiPageParams[uiPageCount - 1].cursorCounting];
  696. uiPageParams[uiPageCount - 1].uiDriver(true, uiPageParams[uiPageCount - 1].cursorCounting,
  697. uiPageParams[uiPageCount - 1].itemValueTab, uiPageParams[uiPageCount - 1].itemStringTab[uiPageParams[uiPageCount - 1].cursorCounting]);
  698. }
  699. }
  700. //切换到上一个界面
  701. if (direct == ENTER_LAST_PAGE)
  702. {
  703. if (uiPageParams[uiPageCount - 1].lastPageIdTab[0])
  704. {
  705. memset(uiPageParams[uiPageCount - 1].writeStaTab, 0, sizeof(uiPageParams[uiPageCount - 1].writeStaTab));
  706. if (enterCb)
  707. {
  708. enterCb(uiPageParams[uiPageCount - 1].id,
  709. uiPageParams[uiPageCount - 1].cursorCounting,
  710. uiPageParams[uiPageCount - 1].writeStaTab[uiPageParams[uiPageCount - 1].cursorCounting],
  711. uiPageParams[uiPageCount - 1].itemValueTab[uiPageParams[uiPageCount - 1].cursorCounting],
  712. uiPageParams[uiPageCount - 1].itemStringTab[uiPageParams[uiPageCount - 1].cursorCounting]
  713. );
  714. }
  715. uiPageCount = uiPageParams[uiPageCount - 1].lastPageIdTab[0];
  716. uiPageParams[uiPageCount - 1].uiDriver(true, uiPageParams[uiPageCount - 1].cursorCounting,
  717. uiPageParams[uiPageCount - 1].itemValueTab, uiPageParams[uiPageCount - 1].itemStringTab[uiPageParams[uiPageCount - 1].cursorCounting]);
  718. }
  719. }
  720. }
  721. int8_t myDisplay_getPageId(void)
  722. {
  723. return uiPageIdAddress;
  724. }
  725. void uiTimerFlash_callBack(void)
  726. {
  727. if (uiPageParams[uiPageCount - 1].writeStaTab[uiPageParams[uiPageCount - 1].cursorCounting])
  728. {
  729. uiPageParams[uiPageCount - 1].writeStatusTab[uiPageParams[uiPageCount - 1].cursorCounting] =
  730. !uiPageParams[uiPageCount - 1].writeStatusTab[uiPageParams[uiPageCount - 1].cursorCounting];
  731. if (uiPageParams[uiPageCount - 1].writeStatusTab[uiPageParams[uiPageCount - 1].cursorCounting])
  732. {
  733. uiPageParams[uiPageCount - 1].uiDriver(true, uiPageParams[uiPageCount - 1].cursorCounting,
  734. uiPageParams[uiPageCount - 1].itemValueTab, uiPageParams[uiPageCount - 1].itemStringTab[uiPageParams[uiPageCount - 1].cursorCounting]);
  735. }
  736. else
  737. {
  738. uiPageParams[uiPageCount - 1].uiDriver(false, uiPageParams[uiPageCount - 1].cursorCounting, uiPageParams[uiPageCount - 1].itemValueTab, uiPageParams[uiPageCount - 1].itemStringTab[uiPageParams[uiPageCount - 1].cursorCounting]);
  739. }
  740. }
  741. }
  742. void myDisplay_init(enterCallback cb)
  743. {
  744. myLCD_init();
  745. uiPageParams[UI_PAGE_ID_FIRST_UI].id = UI_PAGE_ID_FIRST_UI + 1;
  746. uiPageParams[UI_PAGE_ID_FIRST_UI].uiDriver = myDisplay_ui_firstUi;
  747. uiPageParams[UI_PAGE_ID_FIRST_UI].lastPageIdTab[0] = 0;
  748. uiPageParams[UI_PAGE_ID_FIRST_UI].nextPageIdTab[0] = 2;
  749. uiPageParams[UI_PAGE_ID_FIRST_UI].itemTypeTab[0] = TYPE_NEXT_LINK;
  750. uiPageParams[UI_PAGE_ID_FIRST_UI].writeStaTab[0] = 1;
  751. uiPageParams[UI_PAGE_ID_FIRST_UI].cursorCounting = 0;
  752. uiPageParams[UI_PAGE_ID_FIRST_UI].cursorCount = 2;
  753. uiPageParams[UI_PAGE_ID_ITEM_MODE].id = UI_PAGE_ID_ITEM_MODE + 1;
  754. uiPageParams[UI_PAGE_ID_ITEM_MODE].uiDriver = myDisplay_ui_selectMode;
  755. uiPageParams[UI_PAGE_ID_ITEM_MODE].lastPageIdTab[0] = 0;
  756. uiPageParams[UI_PAGE_ID_ITEM_MODE].nextPageIdTab[0] = UI_PAGE_ID_TX_PACKET + 1;
  757. uiPageParams[UI_PAGE_ID_ITEM_MODE].itemTypeTab[0] = TYPE_NEXT_LINK;
  758. uiPageParams[UI_PAGE_ID_ITEM_MODE].nextPageIdTab[1] = UI_PAGE_ID_RX_PACKET + 1;
  759. uiPageParams[UI_PAGE_ID_ITEM_MODE].itemTypeTab[1] = TYPE_NEXT_LINK;
  760. uiPageParams[UI_PAGE_ID_ITEM_MODE].nextPageIdTab[2] = UI_PAGE_ID_RF_CONTINUOUS + 1;
  761. uiPageParams[UI_PAGE_ID_ITEM_MODE].itemTypeTab[2] = TYPE_NEXT_LINK;
  762. uiPageParams[UI_PAGE_ID_ITEM_MODE].nextPageIdTab[3] = UI_PAGE_ID_SETTING + 1;
  763. uiPageParams[UI_PAGE_ID_ITEM_MODE].itemTypeTab[3] = TYPE_NEXT_LINK;
  764. uiPageParams[UI_PAGE_ID_ITEM_MODE].nextPageIdTab[4] = UI_PAGE_ID_DEVICE_INFOR + 1;
  765. uiPageParams[UI_PAGE_ID_ITEM_MODE].itemTypeTab[4] = TYPE_NEXT_LINK;
  766. uiPageParams[UI_PAGE_ID_ITEM_MODE].cursorCounting = 0;
  767. uiPageParams[UI_PAGE_ID_ITEM_MODE].cursorCount = 5;
  768. uiPageParams[UI_PAGE_ID_TX_PACKET].id = UI_PAGE_ID_TX_PACKET + 1;
  769. uiPageParams[UI_PAGE_ID_TX_PACKET].uiDriver = myDisplay_ui_rf_tx_packet;
  770. uiPageParams[UI_PAGE_ID_TX_PACKET].lastPageIdTab[0] = UI_PAGE_ID_ITEM_MODE + 1;
  771. uiPageParams[UI_PAGE_ID_TX_PACKET].nextPageIdTab[0] = 0;
  772. uiPageParams[UI_PAGE_ID_TX_PACKET].itemTypeTab[0] = TYPE_WRITE_TEXT;
  773. uiPageParams[UI_PAGE_ID_TX_PACKET].writeStaTab[0] = 0;
  774. uiPageParams[UI_PAGE_ID_TX_PACKET].itemTypeTab[1] = TYPE_WRITE_TEXT;
  775. uiPageParams[UI_PAGE_ID_TX_PACKET].writeStaTab[1] = 0;
  776. uiPageParams[UI_PAGE_ID_TX_PACKET].itemTypeTab[2] = TYPE_WRITE_TEXT;
  777. uiPageParams[UI_PAGE_ID_TX_PACKET].writeStaTab[2] = 0;
  778. uiPageParams[UI_PAGE_ID_TX_PACKET].cursorCounting = 0;
  779. uiPageParams[UI_PAGE_ID_TX_PACKET].cursorCount = 3;
  780. uiPageParams[UI_PAGE_ID_DEVICE_INFOR].id = UI_PAGE_ID_DEVICE_INFOR + 1;
  781. uiPageParams[UI_PAGE_ID_DEVICE_INFOR].uiDriver = myDisplay_ui_device_infor;
  782. uiPageParams[UI_PAGE_ID_DEVICE_INFOR].lastPageIdTab[0] = UI_PAGE_ID_ITEM_MODE + 1;
  783. uiPageParams[UI_PAGE_ID_DEVICE_INFOR].nextPageIdTab[0] = 0;
  784. uiPageParams[UI_PAGE_ID_DEVICE_INFOR].cursorCount = 0;
  785. uiPageParams[UI_PAGE_ID_RX_PACKET].id = UI_PAGE_ID_RX_PACKET + 1;
  786. uiPageParams[UI_PAGE_ID_RX_PACKET].uiDriver = myDisplay_ui_rf_rx_packet;
  787. uiPageParams[UI_PAGE_ID_RX_PACKET].lastPageIdTab[0] = UI_PAGE_ID_ITEM_MODE + 1;
  788. uiPageParams[UI_PAGE_ID_RX_PACKET].nextPageIdTab[0] = 0;
  789. uiPageParams[UI_PAGE_ID_RX_PACKET].itemTypeTab[0] = TYPE_WRITE_TEXT;
  790. uiPageParams[UI_PAGE_ID_RX_PACKET].writeStaTab[0] = 0;
  791. uiPageParams[UI_PAGE_ID_RX_PACKET].itemTypeTab[1] = TYPE_WRITE_TEXT;
  792. uiPageParams[UI_PAGE_ID_RX_PACKET].writeStaTab[1] = 0;
  793. uiPageParams[UI_PAGE_ID_RX_PACKET].cursorCounting = 0;
  794. uiPageParams[UI_PAGE_ID_RX_PACKET].cursorCount = 2;
  795. uiPageParams[UI_PAGE_ID_RF_CONTINUOUS].id = UI_PAGE_ID_RF_CONTINUOUS + 1;
  796. uiPageParams[UI_PAGE_ID_RF_CONTINUOUS].uiDriver = myDisplay_ui_rf_continuos;
  797. uiPageParams[UI_PAGE_ID_RF_CONTINUOUS].lastPageIdTab[CNT_ITEM_INDEX_TX] = UI_PAGE_ID_ITEM_MODE + 1;
  798. uiPageParams[UI_PAGE_ID_RF_CONTINUOUS].itemTypeTab[CNT_ITEM_INDEX_TX] = TYPE_WRITE_TEXT;
  799. uiPageParams[UI_PAGE_ID_RF_CONTINUOUS].writeStaTab[CNT_ITEM_INDEX_TX] = 0;
  800. uiPageParams[UI_PAGE_ID_RF_CONTINUOUS].itemTypeTab[CNT_ITEM_INDEX_RX] = TYPE_WRITE_TEXT;
  801. uiPageParams[UI_PAGE_ID_RF_CONTINUOUS].writeStaTab[CNT_ITEM_INDEX_RX] = 0;
  802. uiPageParams[UI_PAGE_ID_RF_CONTINUOUS].itemTypeTab[CNT_ITEM_INDEX_TX_MD] = TYPE_WRITE_TEXT;
  803. uiPageParams[UI_PAGE_ID_RF_CONTINUOUS].writeStaTab[CNT_ITEM_INDEX_TX_MD] = 0;
  804. uiPageParams[UI_PAGE_ID_RF_CONTINUOUS].cursorCounting = 0;
  805. uiPageParams[UI_PAGE_ID_RF_CONTINUOUS].cursorCount = CNT_ITEM_INDEX_MAX_COUNT;
  806. uiPageParams[UI_PAGE_ID_SETTING].id = UI_PAGE_ID_SETTING + 1;
  807. uiPageParams[UI_PAGE_ID_SETTING].uiDriver = myDisplay_ui_rf_setting;
  808. uiPageParams[UI_PAGE_ID_SETTING].lastPageIdTab[SET_ITEM_INDEX_TYPE] = UI_PAGE_ID_ITEM_MODE + 1;
  809. uiPageParams[UI_PAGE_ID_SETTING].itemTypeTab[SET_ITEM_INDEX_TYPE] = TYPE_WRITE_TEXT;
  810. uiPageParams[UI_PAGE_ID_SETTING].itemMaxValueTab[SET_ITEM_INDEX_TYPE] = 4;
  811. uiPageParams[UI_PAGE_ID_SETTING].itemStepValueTab[SET_ITEM_INDEX_TYPE] = 1;
  812. uiPageParams[UI_PAGE_ID_SETTING].itemTypeTab[SET_ITEM_INDEX_FREQ] = TYPE_WRITE_TEXT;
  813. uiPageParams[UI_PAGE_ID_SETTING].itemMaxValueTab[SET_ITEM_INDEX_FREQ] = 32;
  814. uiPageParams[UI_PAGE_ID_SETTING].itemStepValueTab[SET_ITEM_INDEX_FREQ] = 1;
  815. uiPageParams[UI_PAGE_ID_SETTING].itemTypeTab[SET_ITEM_INDEX_STEP] = TYPE_WRITE_TEXT;
  816. uiPageParams[UI_PAGE_ID_SETTING].itemMaxValueTab[SET_ITEM_INDEX_STEP] = 200;
  817. uiPageParams[UI_PAGE_ID_SETTING].itemStepValueTab[SET_ITEM_INDEX_STEP] = 1;
  818. uiPageParams[UI_PAGE_ID_SETTING].itemTypeTab[SET_ITEM_INDEX_TXPOWER] = TYPE_WRITE_TEXT;
  819. uiPageParams[UI_PAGE_ID_SETTING].itemMinValueTab[SET_ITEM_INDEX_TXPOWER] = -9;
  820. uiPageParams[UI_PAGE_ID_SETTING].itemMaxValueTab[SET_ITEM_INDEX_TXPOWER] = 20+1;
  821. uiPageParams[UI_PAGE_ID_SETTING].itemStepValueTab[SET_ITEM_INDEX_TXPOWER] = 1;
  822. uiPageParams[UI_PAGE_ID_SETTING].itemTypeTab[SET_ITEM_INDEX_RFBAUDRATE] = TYPE_WRITE_TEXT;
  823. uiPageParams[UI_PAGE_ID_SETTING].itemMinValueTab[SET_ITEM_INDEX_RFBAUDRATE] = 1;
  824. uiPageParams[UI_PAGE_ID_SETTING].itemMaxValueTab[SET_ITEM_INDEX_RFBAUDRATE] = 7;
  825. uiPageParams[UI_PAGE_ID_SETTING].itemStepValueTab[SET_ITEM_INDEX_RFBAUDRATE] = 1;
  826. uiPageParams[UI_PAGE_ID_SETTING].itemTypeTab[SET_ITEM_INDEX_PACKET_LEN] = TYPE_WRITE_TEXT;
  827. uiPageParams[UI_PAGE_ID_SETTING].itemMinValueTab[SET_ITEM_INDEX_PACKET_LEN] = 1;
  828. uiPageParams[UI_PAGE_ID_SETTING].itemMaxValueTab[SET_ITEM_INDEX_PACKET_LEN] = 256;
  829. uiPageParams[UI_PAGE_ID_SETTING].itemStepValueTab[SET_ITEM_INDEX_PACKET_LEN] = 5;
  830. uiPageParams[UI_PAGE_ID_SETTING].cursorCounting = SET_ITEM_INDEX_TYPE;//默认设置光标在第一个
  831. uiPageParams[UI_PAGE_ID_SETTING].cursorCount = SET_ITEM_INDEX_MAX_COUNT;
  832. enterCb = cb;
  833. uiPageParams[uiPageCount - 1].uiDriver(true, 0, 0, 0);
  834. }
  835. void myDisplay_setSettingParamsProfile(uint8_t index, int value, int min, int max, int step)
  836. {
  837. uiPageParams[UI_PAGE_ID_SETTING].itemValueTab[index] = value;
  838. uiPageParams[UI_PAGE_ID_SETTING].itemMinValueTab[index] = min;
  839. uiPageParams[UI_PAGE_ID_SETTING].itemMaxValueTab[index] = max + 1;
  840. uiPageParams[UI_PAGE_ID_SETTING].itemStepValueTab[index] = step;
  841. }