|
|
@ -1,4 +1,4 @@ |
|
|
|
#include "ui_scheduler.hpp"
|
|
|
|
#include "front_end_controler.hpp"
|
|
|
|
|
|
|
|
#include <stdarg.h>
|
|
|
|
#include <stdio.h>
|
|
|
@ -31,7 +31,7 @@ static const char* zhex2str(uint8_t* data, size_t len) { |
|
|
|
return buf; |
|
|
|
} |
|
|
|
|
|
|
|
void UIScheduler::initialize() { //
|
|
|
|
void FrontEndControler::initialize() { //
|
|
|
|
ackQueue.initialize(5, sizeof(tjc_rx_packet_t)); |
|
|
|
eventQueue.initialize(5, sizeof(tjc_rx_packet_t)); |
|
|
|
usartRxThread.init("usartRxThread", 1024); |
|
|
@ -41,7 +41,7 @@ void UIScheduler::initialize() { // |
|
|
|
m_cmdlock.init(); |
|
|
|
} |
|
|
|
#define UART_RX_OVERTIME 5
|
|
|
|
void UIScheduler::startSchedule() { |
|
|
|
void FrontEndControler::startSchedule() { |
|
|
|
usartRxThread.start([this]() { |
|
|
|
static uint8_t rxbuf[128]; |
|
|
|
tjcUart->USR_UartITRxing = 1; |
|
|
@ -113,7 +113,7 @@ void UIScheduler::startSchedule() { |
|
|
|
// GVAR_triBId
|
|
|
|
// GVAR_triPageId
|
|
|
|
|
|
|
|
void UIScheduler::processScreenRxPacket(uint8_t* data, size_t len) { |
|
|
|
void FrontEndControler::processScreenRxPacket(uint8_t* data, size_t len) { |
|
|
|
// 判断包是否合法
|
|
|
|
#if DEBUG
|
|
|
|
ZLOGI(TAG, "[rx-thread] : rx :%s(%d)", zhex2str(data, len), len); |
|
|
@ -150,7 +150,7 @@ void UIScheduler::processScreenRxPacket(uint8_t* data, size_t len) { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
void UIScheduler::regOnUsrEventCb(on_usr_event_cb_t cb) { |
|
|
|
void FrontEndControler::regOnUsrEventCb(on_usr_event_cb_t cb) { |
|
|
|
m_cb[m_ncb] = cb; |
|
|
|
m_ncb++; |
|
|
|
} |
|
|
@ -166,7 +166,7 @@ static const char* zcpystr(char* cpyto, const char* strbegin, int32_t maxlen) { |
|
|
|
} |
|
|
|
return NULL; |
|
|
|
} |
|
|
|
void UIScheduler::processUsrButtonEvent(uint8_t* data, size_t len) { |
|
|
|
void FrontEndControler::processUsrButtonEvent(uint8_t* data, size_t len) { |
|
|
|
/**
|
|
|
|
* @brief |
|
|
|
* 指令格式: |
|
|
@ -188,7 +188,7 @@ void UIScheduler::processUsrButtonEvent(uint8_t* data, size_t len) { |
|
|
|
|
|
|
|
callUsrEventCb(&event_cache); |
|
|
|
} |
|
|
|
void UIScheduler::processUsrDoubleStateButtonEvent(uint8_t* data, size_t len) { |
|
|
|
void FrontEndControler::processUsrDoubleStateButtonEvent(uint8_t* data, size_t len) { |
|
|
|
/**
|
|
|
|
* @brief |
|
|
|
* 指令格式: |
|
|
@ -212,13 +212,13 @@ void UIScheduler::processUsrDoubleStateButtonEvent(uint8_t* data, size_t len) { |
|
|
|
|
|
|
|
callUsrEventCb(&event_cache); |
|
|
|
} |
|
|
|
void UIScheduler::callUsrEventCb(tjc::tjc_usr_event_t* event) { |
|
|
|
void FrontEndControler::callUsrEventCb(tjc::tjc_usr_event_t* event) { |
|
|
|
for (int32_t i = 0; i < m_ncb; i++) { |
|
|
|
m_cb[i](event); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
void UIScheduler::processUsrKeyboardConfirmEvent(uint8_t* data, size_t len) { |
|
|
|
void FrontEndControler::processUsrKeyboardConfirmEvent(uint8_t* data, size_t len) { |
|
|
|
/**
|
|
|
|
* @brief |
|
|
|
* |
|
|
@ -241,7 +241,7 @@ void UIScheduler::processUsrKeyboardConfirmEvent(uint8_t* data, size_t len) { |
|
|
|
callUsrEventCb(&event_cache); |
|
|
|
} |
|
|
|
|
|
|
|
void UIScheduler::processLoginRequestEvent(uint8_t* data, size_t len) { |
|
|
|
void FrontEndControler::processLoginRequestEvent(uint8_t* data, size_t len) { |
|
|
|
/*
|
|
|
|
* printh AE |
|
|
|
* prints dp,1 |
|
|
@ -265,7 +265,7 @@ void UIScheduler::processLoginRequestEvent(uint8_t* data, size_t len) { |
|
|
|
callUsrEventCb(&event_cache); |
|
|
|
} |
|
|
|
|
|
|
|
bool UIScheduler::readTxt(uint8_t pid, uint8_t cId, char* txt, int32_t txtbuflen) { |
|
|
|
bool FrontEndControler::readTxt(uint8_t pid, uint8_t cId, char* txt, int32_t txtbuflen) { |
|
|
|
zlock_guard lg(m_cmdlock); |
|
|
|
|
|
|
|
startReceiveAck(); |
|
|
@ -289,7 +289,7 @@ bool UIScheduler::readTxt(uint8_t pid, uint8_t cId, char* txt, int32_t txtbuflen |
|
|
|
memcpy(txt, &ackcache.data[1], cpysize); |
|
|
|
return true; |
|
|
|
} |
|
|
|
bool UIScheduler::readInt(uint8_t pid, uint8_t cId, int32_t* val) { |
|
|
|
bool FrontEndControler::readInt(uint8_t pid, uint8_t cId, int32_t* val) { |
|
|
|
zlock_guard lg(m_cmdlock); |
|
|
|
|
|
|
|
startReceiveAck(); |
|
|
@ -311,7 +311,7 @@ bool UIScheduler::readInt(uint8_t pid, uint8_t cId, int32_t* val) { |
|
|
|
return true; |
|
|
|
} |
|
|
|
|
|
|
|
bool UIScheduler::setVal(uint8_t pid, uint8_t bid, const char* txt, ...) { |
|
|
|
bool FrontEndControler::setVal(uint8_t pid, uint8_t bid, const char* txt, ...) { |
|
|
|
zlock_guard lg(m_cmdlock); |
|
|
|
|
|
|
|
va_list args; |
|
|
@ -323,18 +323,18 @@ bool UIScheduler::setVal(uint8_t pid, uint8_t bid, const char* txt, ...) { |
|
|
|
sendcmd("p[%d].b[%d].txt=\"%s\"", pid, bid, buf); |
|
|
|
return true; |
|
|
|
} |
|
|
|
bool UIScheduler::setVal(uint8_t pid, uint8_t cid, int32_t val) { |
|
|
|
bool FrontEndControler::setVal(uint8_t pid, uint8_t cid, int32_t val) { |
|
|
|
zlock_guard lg(m_cmdlock); |
|
|
|
sendcmd("p[%d].b[%d].val=%d", pid, cid, val); |
|
|
|
return true; |
|
|
|
} |
|
|
|
bool UIScheduler::vis(uint16_t buuid, int32_t val) { |
|
|
|
bool FrontEndControler::vis(uint16_t buuid, int32_t val) { |
|
|
|
zlock_guard lg(m_cmdlock); |
|
|
|
sendcmd("vis %d,%d", buuid & 0xff, val); |
|
|
|
return true; |
|
|
|
} |
|
|
|
|
|
|
|
void UIScheduler::alert(const char* info, ...) { |
|
|
|
void FrontEndControler::alert(const char* info, ...) { |
|
|
|
zlock_guard lg(m_cmdlock); |
|
|
|
|
|
|
|
va_list args; |
|
|
@ -346,9 +346,9 @@ void UIScheduler::alert(const char* info, ...) { |
|
|
|
sendcmd("p[%d].b[%d].txt=\"%s\"", pg_alert, ob_alert_info, buf); |
|
|
|
sendcmd("page alert"); |
|
|
|
} |
|
|
|
void UIScheduler::chpage(uint8_t page) { sendcmd("page %d", page); } |
|
|
|
void FrontEndControler::chpage(uint8_t page) { sendcmd("page %d", page); } |
|
|
|
|
|
|
|
void UIScheduler::sendcmd(const char* format, ...) { |
|
|
|
void FrontEndControler::sendcmd(const char* format, ...) { |
|
|
|
static char buf[128]; |
|
|
|
va_list args; |
|
|
|
va_start(args, format); |
|
|
@ -374,23 +374,23 @@ void UIScheduler::sendcmd(const char* format, ...) { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
void UIScheduler::startReceiveAck() { |
|
|
|
void FrontEndControler::startReceiveAck() { |
|
|
|
ackQueue.clear(); |
|
|
|
m_isWaitingForAck = true; |
|
|
|
} |
|
|
|
|
|
|
|
void UIScheduler::virtualClick(uint8_t pid, uint8_t bid, uint8_t event) { |
|
|
|
void FrontEndControler::virtualClick(uint8_t pid, uint8_t bid, uint8_t event) { |
|
|
|
zlock_guard lg(m_cmdlock); |
|
|
|
sendcmd("click b[%d],%d", bid, event); |
|
|
|
} |
|
|
|
|
|
|
|
void UIScheduler::setTouchEnableState(uint8_t bid, uint8_t enable) { |
|
|
|
void FrontEndControler::setTouchEnableState(uint8_t bid, uint8_t enable) { |
|
|
|
// tsw obj,state
|
|
|
|
zlock_guard lg(m_cmdlock); |
|
|
|
sendcmd("tsw b[%d],%d", bid, enable); |
|
|
|
} |
|
|
|
|
|
|
|
void UIScheduler::setEnumComponentState(uint8_t pid, uint8_t bid, int32_t state) { |
|
|
|
void FrontEndControler::setEnumComponentState(uint8_t pid, uint8_t bid, int32_t state) { |
|
|
|
// 枚举类型使用动画组件
|
|
|
|
sendcmd("p[%d].b[%d].tim=%d", pid, bid, state * 50); |
|
|
|
} |