myDisplayUnit.c 31 KB

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