|
@ -17,6 +17,13 @@ using namespace std; |
|
|
|
|
|
|
|
|
DwinScreen& DwinScreen::ins() { return g_dwinScreen; } |
|
|
DwinScreen& DwinScreen::ins() { return g_dwinScreen; } |
|
|
|
|
|
|
|
|
|
|
|
static void dumphex(uint8_t* data, size_t len) { |
|
|
|
|
|
printf("(%d)", len); |
|
|
|
|
|
for (size_t i = 0; i < len; i++) { |
|
|
|
|
|
printf("%02X ", data[i]); |
|
|
|
|
|
} |
|
|
|
|
|
printf("\n"); |
|
|
|
|
|
} |
|
|
void DwinScreen::init(UART_HandleTypeDef* huart, map<string, DwinRamManager*>& rammanager) { |
|
|
void DwinScreen::init(UART_HandleTypeDef* huart, map<string, DwinRamManager*>& rammanager) { |
|
|
m_huart = huart; |
|
|
m_huart = huart; |
|
|
// m_dwcfg = dwcfg;
|
|
|
// m_dwcfg = dwcfg;
|
|
@ -35,11 +42,11 @@ void DwinScreen::init(UART_HandleTypeDef* huart, map<string, DwinRamManager*>& r |
|
|
if (txcontext.receipt_ready_flag) { |
|
|
if (txcontext.receipt_ready_flag) { |
|
|
return; |
|
|
return; |
|
|
} |
|
|
} |
|
|
|
|
|
// dumphex(data, len);
|
|
|
memcpy(txcontext.receiptcache, data, len); |
|
|
memcpy(txcontext.receiptcache, data, len); |
|
|
txcontext.receiptlen = len; |
|
|
txcontext.receiptlen = len; |
|
|
txcontext.receipt_ready_flag = true; |
|
|
txcontext.receipt_ready_flag = true; |
|
|
}); |
|
|
}); |
|
|
|
|
|
|
|
|
// m_rammanager.init(dwcfg.freeRawStartAddr, dwcfg.freeRawEndAddr);
|
|
|
// m_rammanager.init(dwcfg.freeRawStartAddr, dwcfg.freeRawEndAddr);
|
|
|
// m_textDisplayerManager.init(dwcfg.textDisplayerStartAddr, dwcfg.textDisplayerEndAddr);
|
|
|
// m_textDisplayerManager.init(dwcfg.textDisplayerStartAddr, dwcfg.textDisplayerEndAddr);
|
|
|
// m_varIconManager.init(dwcfg.varIconStartAddr, dwcfg.varIconEndAddr);
|
|
|
// m_varIconManager.init(dwcfg.varIconStartAddr, dwcfg.varIconEndAddr);
|
|
@ -101,7 +108,6 @@ bool DwinScreen::sendcmdblock(int overtime) { |
|
|
// zos_delay(1);
|
|
|
// zos_delay(1);
|
|
|
// HAL_Delay(1);
|
|
|
// HAL_Delay(1);
|
|
|
osDelay(1); |
|
|
osDelay(1); |
|
|
|
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
return false; |
|
|
return false; |
|
@ -156,7 +162,10 @@ bool DwinScreen::read_varspace(uint16_t regaddr, uint8_t* data, uint8_t len, int |
|
|
ZLOGE(TAG, "read_varspace failed"); |
|
|
ZLOGE(TAG, "read_varspace failed"); |
|
|
return false; |
|
|
return false; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// ZLOGI(TAG, "read_varspace success %d", txcontext.receiptlen);
|
|
|
memcpy(data, &txcontext.receiptcache[7], len); |
|
|
memcpy(data, &txcontext.receiptcache[7], len); |
|
|
|
|
|
|
|
|
return true; |
|
|
return true; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
@ -205,6 +214,15 @@ bool DwinScreen::read_varspace16_muti(uint16_t regaddr, uint16_t* data, size_t n |
|
|
return true; |
|
|
return true; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
bool DwinScreen::read_varspace8_muti(uint16_t regaddr, uint8_t* data, size_t n8, int overtime) { |
|
|
|
|
|
// TODO: CHECK BUFSIZE
|
|
|
|
|
|
memset(m_rd_pre_processcache, 0, sizeof(m_rd_pre_processcache)); |
|
|
|
|
|
bool suc = read_varspace(regaddr, m_rd_pre_processcache, n8, overtime); |
|
|
|
|
|
memcpy(data, m_rd_pre_processcache, n8); |
|
|
|
|
|
if (!suc) return false; |
|
|
|
|
|
return true; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
bool DwinScreen::read_varspace16(uint16_t regaddr, uint16_t& data, int overtime) { |
|
|
bool DwinScreen::read_varspace16(uint16_t regaddr, uint16_t& data, int overtime) { |
|
|
uint8_t data8[2]; |
|
|
uint8_t data8[2]; |
|
|
bool suc = read_varspace(regaddr, data8, 2, overtime); |
|
|
bool suc = read_varspace(regaddr, data8, 2, overtime); |
|
@ -332,25 +350,19 @@ bool DwinScreen::set_rtc(uint16_t year, uint16_t month, uint16_t day, uint16_t h |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
bool DwinScreen::get_rtc(Date* date) { |
|
|
bool DwinScreen::get_rtc(Date* date) { |
|
|
uint16_t data[4] = {0}; |
|
|
|
|
|
bool suc = read_varspace16_muti(0x10, data, 4, 10); |
|
|
|
|
|
// printf("data[0]:%04X data[1]:%04X data[2]:%04X data[3]:%04X\n", data[0], data[1], data[2], data[3]);
|
|
|
|
|
|
// date->year = (data[0] >> 8) + 2000;
|
|
|
|
|
|
// date->month = data[0] & 0xFF;
|
|
|
|
|
|
// date->day = data[1] >> 8;
|
|
|
|
|
|
// date->weekdaynum = data[1] & 0xFF;
|
|
|
|
|
|
// date->hour = data[2] >> 8;
|
|
|
|
|
|
// date->minute = data[2] & 0xFF;
|
|
|
|
|
|
// date->second = data[3] >> 8;
|
|
|
|
|
|
|
|
|
uint8_t data[8] = {0}; |
|
|
|
|
|
bool suc = read_varspace8_muti(0x10, data, 8, 10); |
|
|
|
|
|
// dumphex(data, 8);
|
|
|
|
|
|
if (!suc) return false; |
|
|
|
|
|
|
|
|
date->year = (data[0] & 0xff) + 2000; |
|
|
date->year = (data[0] & 0xff) + 2000; |
|
|
date->month = data[1] >> 8; |
|
|
|
|
|
date->day = data[1] & 0xFF; |
|
|
|
|
|
date->weekdaynum = data[2] >> 8; |
|
|
|
|
|
date->hour = data[2] & 0xFF; |
|
|
|
|
|
date->minute = data[3] >> 8; |
|
|
|
|
|
date->second = data[3] & 0xFF; |
|
|
|
|
|
printf("year:%d month:%d day:%d weekdaynum:%d hour:%d minute:%d second:%d\n", //
|
|
|
|
|
|
date->year, date->month, date->day, date->weekdaynum, date->hour, date->minute, date->second); |
|
|
|
|
|
|
|
|
date->month = data[1]; |
|
|
|
|
|
date->day = data[2]; |
|
|
|
|
|
date->weekdaynum = data[3]; |
|
|
|
|
|
date->hour = data[4]; |
|
|
|
|
|
date->minute = data[5]; |
|
|
|
|
|
date->second = data[6]; |
|
|
|
|
|
// printf("year:%d month:%d day:%d weekdaynum:%d hour:%d minute:%d second:%d\n", //
|
|
|
|
|
|
// date->year, date->month, date->day, date->weekdaynum, date->hour, date->minute, date->second);
|
|
|
return suc; |
|
|
return suc; |
|
|
} |
|
|
} |