#include "myDisplayUnit.h" #include "myLcd.h" int8_t uiPageIdAddress = ~(0); int8_t uiPageCount = 1; int8_t rx_tx_count; int8_t rx_tp_count; int8_t setting_count; int8_t tx_tp_count; uiPageUnit_ts uiPageParams[10]; enterCallback enterCb; void myDisplay_ui_firstUi_setDeviceName(char *name) { myLCD_str8x16(IM_NOMALE, 80, 1, name); } void myDisplay_ui_firstUi_setFreq(uint32_t freq) { myLCD_str8x16(IM_NOMALE, 95, 2, "Freq.%dMHz", freq); } void myDisplay_ui_firstUi_setRfPower(int power) { myLCD_str8x16(IM_NOMALE, 95, 3, "Pwr.%ddBm", power); } void myDisplay_ui_firstUi(int agr0, void *agr1_ptr) { if (uiPageIdAddress != UI_PAGE_ID_FIRST_UI) { myLCD_16x16(IM_INVERSE, 10, 11, "深圳市沃进科技有限公司"); myLCD_displayImage(IM_NOMALE, 1, 1, IMG_SRC_VOLLGO); myLCD_str8x16(IM_NOMALE, 80, 1, "VG------------"); myLCD_str8x16(IM_NOMALE, 95, 2, "Freq.***"); myLCD_str8x16(IM_NOMALE, 95, 3, "Pwr.**"); } else { myLCD_str8x16(agr0 == 0 ? IM_INVERSE : IM_NOMALE, HORIZONTAL_RIGHT, 5, "ENTER"); } uiPageIdAddress = UI_PAGE_ID_FIRST_UI; } void myDisplay_ui_selectMode(int agr0, void *agr1_ptr) { int i; myLCD_clearFull(); for ( i = 0; i <= MAX_PAGE_COUNT; i++) { myLCD_displayBlock(1, i); } uiPageIdAddress = UI_PAGE_ID_ITEM_MODE; myLCD_str8x16(agr0 == 0 ? IM_INVERSE : IM_NOMALE, 10, 1, "Enter RF Transmiter"); myLCD_str8x16(agr0 == 1 ? IM_INVERSE : IM_NOMALE, 10, 2, "Enter RF Receiver"); myLCD_str8x16(agr0 == 2 ? IM_INVERSE : IM_NOMALE, 10, 3, "Enter RF Continuous"); myLCD_str8x16(agr0 == 3 ? IM_INVERSE : IM_NOMALE, 10, 4, "Enter RF Setting"); } void myDisplay_ui_rf_tx(uint8_t mode) { int i; myLCD_clearFull(); for ( i = 0; i <= MAX_PAGE_COUNT; i++) { myLCD_displayBlock(1, i); } myLCD_str8x16(mode == 0 ? IM_INVERSE : IM_NOMALE, 10, 1, "Packet TX"); myLCD_str8x16(mode == 1 ? IM_INVERSE : IM_NOMALE, 10, 2, "Continuous TX"); } void myDisplay_ui_rf_tx_packet(int agr0, void *agr1_ptr) { int i; if (uiPageIdAddress != UI_PAGE_ID_TX_PACKET) { myLCD_clearFull(); for ( i = 0; i <= MAX_PAGE_COUNT; i++) { myLCD_displayBlock(1, i); } myLCD_str8x16(IM_NOMALE, HORIZONTAL_CENTER, 1, "Packet TX"); } uiPageIdAddress = UI_PAGE_ID_TX_PACKET; if (uiPageIdAddress == UI_PAGE_ID_TX_PACKET) { myLCD_str8x16(agr0 == 0 ? IM_INVERSE : IM_NOMALE, HORIZONTAL_RIGHT, 6, "START"); } } void myDisplay_ui_rf_tx_packet_buffer(uint8_t *buffer) { if (uiPageIdAddress == UI_PAGE_ID_TX_PACKET) { myLCD_str8x16(IM_NOMALE, HORIZONTAL_LEFT, 2, (char *)buffer); } } uint32_t buffer_freq; void myDisplay_ui_rf_setting_freq(uint32_t freq) { buffer_freq = freq; } char *buffer_type; void myDisplay_ui_rf_setting_type(char *type) { buffer_type = type; } void myDisplay_ui_rf_setting(int agr0, void *agr1_ptr) { int i; if (uiPageIdAddress != UI_PAGE_ID_SETTING) { myLCD_clearFull(); for ( i = 0; i <= MAX_PAGE_COUNT; i++) { myLCD_displayBlock(1, i); } myLCD_str8x16(IM_NOMALE, HORIZONTAL_CENTER, 1, "Setting"); myLCD_str8x16(IM_NOMALE, 10, 2, "Freq:------MHz"); myLCD_str8x16(agr0 == 0 ? IM_INVERSE : IM_NOMALE, 10 + 8 * strlen("Freq:"), 2, "%6.2f", (float)buffer_freq / 1000000); myLCD_str8x16(IM_NOMALE, 10, 3, "Type:"); myLCD_str8x16(agr0 == 1 ? IM_INVERSE : IM_NOMALE, 10 + 8 * strlen("Type:"), 3, "%s", buffer_type); myLCD_str8x16(IM_NOMALE, 10, 4, "TxPower:--dBm"); myLCD_str8x16(agr0 == 2 ? IM_INVERSE : IM_NOMALE, 10 + 8 * strlen("TxPower:"), 4, "%02d", ((int *)agr1_ptr)[2]); } if (uiPageIdAddress == UI_PAGE_ID_SETTING) { myLCD_str8x16(agr0 == 0 ? IM_INVERSE : IM_NOMALE, 10 + 8 * strlen("Freq:"), 2, "%6.2f", (float)buffer_freq / 1000000); myLCD_str8x16(agr0 == 1 ? IM_INVERSE : IM_NOMALE, 10 + 8 * strlen("Type:"), 3, "%s", buffer_type); myLCD_str8x16(agr0 == 2 ? IM_INVERSE : IM_NOMALE, 10 + 8 * strlen("TxPower:"), 4, "%02d", ((int *)agr1_ptr)[2]); } uiPageIdAddress = UI_PAGE_ID_SETTING; } void myDisplay_ui_rf_rx(uint8_t mode) { int i; myLCD_clearFull(); for ( i = 0; i <= MAX_PAGE_COUNT; i++) { myLCD_displayBlock(1, i); } myLCD_str8x16(mode == 0 ? IM_INVERSE : IM_NOMALE, 10, 1, "Packet RX"); myLCD_str8x16(mode == 1 ? IM_INVERSE : IM_NOMALE, 10, 2, "Continuous RX"); } void myDisplay_ui_rf_continuos(int agr0, void *agr1_ptr) { int i; if (uiPageIdAddress != UI_PAGE_ID_RF_CONTINUOUS) { myLCD_clearFull(); for ( i = 0; i <= MAX_PAGE_COUNT; i++) { myLCD_displayBlock(1, i); } myLCD_str8x16(IM_NOMALE, HORIZONTAL_CENTER, 1, "Continuous"); myLCD_str8x16(agr0 == 0 ? IM_INVERSE : IM_NOMALE, HORIZONTAL_CENTER, 2, "TX"); myLCD_str8x16(agr0 == 1 ? IM_INVERSE : IM_NOMALE, HORIZONTAL_CENTER, 3, "RX"); } if (uiPageIdAddress == UI_PAGE_ID_RF_CONTINUOUS) { myLCD_str8x16(agr0 == 0 ? IM_INVERSE : IM_NOMALE, HORIZONTAL_CENTER, 2, "TX"); myLCD_str8x16(agr0 == 1 ? IM_INVERSE : IM_NOMALE, HORIZONTAL_CENTER, 3, "RX"); } uiPageIdAddress = UI_PAGE_ID_RF_CONTINUOUS; } void myDisplay_ui_rf_continuos_txCurrent(float Current) { if (uiPageIdAddress == UI_PAGE_ID_RF_CONTINUOUS) { myLCD_str8x16(IM_NOMALE, 10, 4, "Current=%6.2fmA", Current); } } void myDisplay_ui_rf_continuos_rxErrorRate(float rate) { if (uiPageIdAddress == UI_PAGE_ID_RF_CONTINUOUS) { myLCD_str8x16(IM_NOMALE, 10, 5, "rate=%6.2f%%", rate); } } void myDisplay_ui_rf_continuos_rxContinuousFreq(uint32_t freq) { if (uiPageIdAddress == UI_PAGE_ID_RF_CONTINUOUS) { myLCD_str8x16(IM_NOMALE, 10, 6, "freq=%6d", freq); } } void myDisplay_ui_rf_continuos_rxPacketCount(uint8_t status, uint16_t count) { if (uiPageIdAddress == UI_PAGE_ID_RF_CONTINUOUS) { myLCD_str8x16(IM_NOMALE, 10, 5, "count=%d sta=%d", count, status); } } void myDisplay_ui_rf_continuos_rxPacket(uint8_t *buf, uint16_t len) { int i = 0; if (uiPageIdAddress == UI_PAGE_ID_RF_CONTINUOUS) { myLCD_str8x16(IM_NOMALE, 10, 6, " "); if (len) { myLCD_str8x16(IM_NOMALE, 10, 6, "packet="); for ( i = 0; i < len; i++) { myLCD_str8x16(IM_NOMALE, 10, 6 + strlen("packet=") + i, "%x", *buf); buf ++; } } else { myLCD_str8x16(IM_NOMALE, 10, 6, "packet=%s", buf); } } } void myDisplay_ui_rf_continuos_rxPacketGetCount(uint32_t count) { if (uiPageIdAddress == UI_PAGE_ID_RF_CONTINUOUS) { myLCD_str8x16(IM_NOMALE, 10, 6, "rx count=%d", count); } } void myDisplay_ui_rf_rx_packet(int agr0, void *agr1_ptr) { int i; if (uiPageIdAddress != UI_PAGE_ID_RX_PACKET) { myLCD_clearFull(); for ( i = 0; i <= MAX_PAGE_COUNT; i++) { myLCD_displayBlock(1, i); } myLCD_str8x16(IM_NOMALE, HORIZONTAL_CENTER, 1, "Packet RX"); } uiPageIdAddress = UI_PAGE_ID_RX_PACKET; if (uiPageIdAddress == UI_PAGE_ID_RX_PACKET) { myLCD_str8x16(agr0 == 0 ? IM_INVERSE : IM_NOMALE, HORIZONTAL_RIGHT, 6, "START"); } } void myDisplay_ui_rf_rxPacket_rxCurrent(float current) { if (uiPageIdAddress == UI_PAGE_ID_RX_PACKET) { myLCD_str8x16(IM_NOMALE, 10, 4, "current=%-6.2fmA", current); } } void myDisplay_ui_rf_rxPacket_rssi(int8_t rssi, int8_t snr) { if (uiPageIdAddress == UI_PAGE_ID_RX_PACKET) { myLCD_str8x16(IM_NOMALE, 10, 3, "rssi=%-4ddBm snr=%-4d", rssi, snr); } } void myDisplay_ui_rf_rxPacket_rate(float rate, int count, int frame) { if (uiPageIdAddress == UI_PAGE_ID_RX_PACKET) { myLCD_str8x16(IM_NOMALE, 10, 3, "rssi=%3.0f%%,cnt=%3d %1d", rate, count, frame & 0x0f); } } void myDisplay_ui_rf_rxPacket_buffer(uint8_t *buf, uint16_t len) { int i = 0; if (uiPageIdAddress == UI_PAGE_ID_RX_PACKET) { myLCD_str8x16(IM_NOMALE, 10, 5, " "); if (len) { myLCD_str8x16(IM_NOMALE, 10, 5, "packet="); for ( i = 0; i < len; i++) { myLCD_str8x16(IM_NOMALE, 10, 5 + strlen("packet=") + i, "%x", *buf); buf ++; } } else { myLCD_str8x16(IM_NOMALE, 10, 5, "packet=%s", buf); } } } /** * 光标控制 * direct: 方向控制 * =1,向上移动 * =0,向下移动 * **/ void myDisplay_change(uint8_t direct) { if (uiPageParams[uiPageCount - 1].cursorCount) { //设置加减控制 if (uiPageParams[uiPageCount - 1].writeStaTab[uiPageParams[uiPageCount - 1].cursorCounting]) { if (direct) { uiPageParams[uiPageCount - 1].itemValueTab[uiPageParams[uiPageCount - 1].cursorCounting] ++; if (uiPageParams[uiPageCount - 1].itemValueTab[uiPageParams[uiPageCount - 1].cursorCounting] >= uiPageParams[uiPageCount - 1].itemMaxValueTab[uiPageParams[uiPageCount - 1].cursorCounting]) { uiPageParams[uiPageCount - 1].itemValueTab[uiPageParams[uiPageCount - 1].cursorCounting] = 0; } } else { uiPageParams[uiPageCount - 1].itemValueTab[uiPageParams[uiPageCount - 1].cursorCounting] --; if (uiPageParams[uiPageCount - 1].itemValueTab[uiPageParams[uiPageCount - 1].cursorCounting] < 0) { uiPageParams[uiPageCount - 1].itemValueTab[uiPageParams[uiPageCount - 1].cursorCounting] = uiPageParams[uiPageCount - 1].itemMaxValueTab[uiPageParams[uiPageCount - 1].cursorCounting] - 1; } } if (enterCb) { enterCb(uiPageCount, uiPageParams[uiPageCount - 1].cursorCounting, uiPageParams[uiPageCount - 1].writeStaTab[uiPageParams[uiPageCount - 1].cursorCounting], uiPageParams[uiPageCount - 1].itemValueTab[uiPageParams[uiPageCount - 1].cursorCounting] ); } } else { //光标移动控制 if (direct) { uiPageParams[uiPageCount - 1].cursorCounting --; if (uiPageParams[uiPageCount - 1].cursorCounting < 0) { uiPageParams[uiPageCount - 1].cursorCounting = uiPageParams[uiPageCount - 1].cursorCount - 1; } } else { uiPageParams[uiPageCount - 1].cursorCounting ++; if (uiPageParams[uiPageCount - 1].cursorCounting >= uiPageParams[uiPageCount - 1].cursorCount) { uiPageParams[uiPageCount - 1].cursorCounting = 0; } } } uiPageParams[uiPageCount - 1].uiDriver(uiPageParams[uiPageCount - 1].cursorCounting, uiPageParams[uiPageCount - 1].itemValueTab); } } /*** * 按下确定键 * 进入下一个界面或者进入设置状态 */ void myDisplay_enter(uint8_t direct) { if (direct == ENTER_NEXT_PAGE) { //进入设置状态 if (uiPageParams[uiPageCount - 1].itemTypeTab[uiPageParams[uiPageCount - 1].cursorCounting] == TYPE_WRITE_TEXT) { //切换设置状态 uiPageParams[uiPageCount - 1].writeStaTab[uiPageParams[uiPageCount - 1].cursorCounting] = !uiPageParams[uiPageCount - 1].writeStaTab[uiPageParams[uiPageCount - 1].cursorCounting]; uiPageParams[uiPageCount - 1].uiDriver(uiPageParams[uiPageCount - 1].cursorCounting, uiPageParams[uiPageCount - 1].itemValueTab); if (enterCb) { enterCb(uiPageParams[uiPageCount - 1].id, uiPageParams[uiPageCount - 1].cursorCounting, uiPageParams[uiPageCount - 1].writeStaTab[uiPageParams[uiPageCount - 1].cursorCounting], uiPageParams[uiPageCount - 1].itemValueTab[uiPageParams[uiPageCount - 1].cursorCounting] ); } } //切换到下一个界面 if (uiPageParams[uiPageCount - 1].itemTypeTab[uiPageParams[uiPageCount - 1].cursorCounting] == TYPE_NEXT_LINK) { uiPageCount = uiPageParams[uiPageCount - 1].nextPageIdTab[uiPageParams[uiPageCount - 1].cursorCounting]; uiPageParams[uiPageCount - 1].uiDriver(uiPageParams[uiPageCount - 1].cursorCounting, uiPageParams[uiPageCount - 1].itemValueTab); } } //切换到上一个界面 if (direct == ENTER_LAST_PAGE) { if (uiPageParams[uiPageCount - 1].lastPageIdTab[0]) { memset(uiPageParams[uiPageCount - 1].writeStaTab, 0, sizeof(uiPageParams[uiPageCount - 1].writeStaTab)); if (enterCb) { enterCb(uiPageParams[uiPageCount - 1].id, uiPageParams[uiPageCount - 1].cursorCounting, uiPageParams[uiPageCount - 1].writeStaTab[uiPageParams[uiPageCount - 1].cursorCounting], uiPageParams[uiPageCount - 1].itemValueTab[uiPageParams[uiPageCount - 1].cursorCounting] ); } uiPageCount = uiPageParams[uiPageCount - 1].lastPageIdTab[0]; uiPageParams[uiPageCount - 1].uiDriver(uiPageParams[uiPageCount - 1].cursorCounting, uiPageParams[uiPageCount - 1].itemValueTab); } } } int8_t myDisplay_getPageId(void) { return uiPageIdAddress; } void uiTimerFlash_callBack(void) { if (uiPageParams[uiPageCount - 1].writeStaTab[uiPageParams[uiPageCount - 1].cursorCounting]) { uiPageParams[uiPageCount - 1].writeStatusTab[uiPageParams[uiPageCount - 1].cursorCounting] = !uiPageParams[uiPageCount - 1].writeStatusTab[uiPageParams[uiPageCount - 1].cursorCounting]; if (uiPageParams[uiPageCount - 1].writeStatusTab[uiPageParams[uiPageCount - 1].cursorCounting]) { uiPageParams[uiPageCount - 1].uiDriver(uiPageParams[uiPageCount - 1].cursorCounting, uiPageParams[uiPageCount - 1].itemValueTab); } else { uiPageParams[uiPageCount - 1].uiDriver((~0), uiPageParams[uiPageCount - 1].itemValueTab); } } } void myDisplay_init(enterCallback cb) { uiPageParams[0].id = 1; uiPageParams[0].uiDriver = myDisplay_ui_firstUi; uiPageParams[0].lastPageIdTab[0] = 0; uiPageParams[0].nextPageIdTab[0] = 2; uiPageParams[0].itemTypeTab[0] = TYPE_NEXT_LINK; uiPageParams[0].writeStaTab[0] = 1; uiPageParams[0].cursorCounting = 0; uiPageParams[0].cursorCount = 2; uiPageParams[1].id = 2; uiPageParams[1].uiDriver = myDisplay_ui_selectMode; uiPageParams[1].lastPageIdTab[0] = 0; uiPageParams[1].nextPageIdTab[0] = 3; uiPageParams[1].itemTypeTab[0] = TYPE_NEXT_LINK; uiPageParams[1].nextPageIdTab[1] = 4; uiPageParams[1].itemTypeTab[1] = TYPE_NEXT_LINK; uiPageParams[1].nextPageIdTab[2] = 5; uiPageParams[1].itemTypeTab[2] = TYPE_NEXT_LINK; uiPageParams[1].nextPageIdTab[3] = 6; uiPageParams[1].itemTypeTab[3] = TYPE_NEXT_LINK; uiPageParams[1].cursorCounting = 0; uiPageParams[1].cursorCount = 4; uiPageParams[2].id = 3; uiPageParams[2].uiDriver = myDisplay_ui_rf_tx_packet; uiPageParams[2].lastPageIdTab[0] = 2; uiPageParams[2].nextPageIdTab[0] = 0; uiPageParams[2].itemTypeTab[0] = TYPE_WRITE_TEXT; uiPageParams[2].writeStaTab[0] = 0; uiPageParams[2].cursorCounting = 0; uiPageParams[2].cursorCount = 0; uiPageParams[3].id = 4; uiPageParams[3].uiDriver = myDisplay_ui_rf_rx_packet; uiPageParams[3].lastPageIdTab[0] = 2; uiPageParams[3].nextPageIdTab[0] = 0; uiPageParams[3].itemTypeTab[0] = TYPE_WRITE_TEXT; uiPageParams[3].writeStaTab[0] = 0; uiPageParams[3].cursorCounting = 0; uiPageParams[3].cursorCount = 0; uiPageParams[4].id = 5; uiPageParams[4].uiDriver = myDisplay_ui_rf_continuos; uiPageParams[4].lastPageIdTab[0] = 2; uiPageParams[4].itemTypeTab[0] = TYPE_WRITE_TEXT; uiPageParams[4].writeStaTab[0] = 0; uiPageParams[4].itemTypeTab[1] = TYPE_WRITE_TEXT; uiPageParams[4].writeStaTab[1] = 0; uiPageParams[4].cursorCounting = 0; uiPageParams[4].cursorCount = 2; uiPageParams[5].id = 6; uiPageParams[5].uiDriver = myDisplay_ui_rf_setting; uiPageParams[5].lastPageIdTab[0] = 2; uiPageParams[5].nextPageIdTab[0] = 3; uiPageParams[5].itemTypeTab[0] = TYPE_WRITE_TEXT; uiPageParams[5].writeStaTab[0] = 0; uiPageParams[5].itemMaxValueTab[0] = 32; uiPageParams[5].nextPageIdTab[1] = 4; uiPageParams[5].itemTypeTab[1] = TYPE_WRITE_TEXT; uiPageParams[5].writeStaTab[1] = 0; uiPageParams[5].itemMaxValueTab[1] = 4; uiPageParams[5].nextPageIdTab[2] = 5; uiPageParams[5].itemTypeTab[2] = TYPE_WRITE_TEXT; uiPageParams[5].writeStaTab[2] = 0; uiPageParams[5].itemMaxValueTab[2] = 21; uiPageParams[5].cursorCounting = 0; uiPageParams[5].cursorCount = 3; enterCb = cb; uiPageParams[uiPageCount - 1].uiDriver(0, 0); } void myDisplay_setSettingParams(int agr0, int agr1, int agr2) { uiPageParams[5].itemValueTab[0] = agr0; uiPageParams[5].itemValueTab[1] = agr1; uiPageParams[5].itemValueTab[2] = agr2; }