为什么对外只需要一个journal.save_log(&logData)就可以?
第一步:
打包数据 再调用该函数
journal.save_log(&logData);
openlogDataType logData;
typedef struct
{
openLogTypeEnum type;-----------------OPENLOG_FORM_CARD
uint32_t length;---------------openResult
uint8_t data[256];------------(uint8_t *)tag 这里是万能的 不同开门方式不同
}openlogDataType;
第一步:继续看如何保存:
void journal_save_log( openlogDataType *saveLog )
{
journalTaskQueueType message;//队列
memset(&message , 0x00 , sizeof(journalTaskQueueType));
message.cmd = LOG_ADD;
message.sn = 0;
memcpy(&message.openlog , saveLog , sizeof(openlogDataType));
xQueueSend( xLogQueue, ( void* )&message, NULL ); //通过队列 把整个saveLog发出去 套壳子!!!!
}
第三部:处理消息队列
case LOG_ADD:
log(DEBUG,"接到增加LOG命令, get sn =%d ,device sn = %d\n" , pst.sn , journalSn);
journal_add_log(&pst);
第四部:继续看如何加入:
void journal_add_log(journalTaskQueueType *pkt)
case OPENLOG_FORM_CARD:
{
journal_add_into_card(&pkt->openlog);//卸载壳子!!!!前面memcpy(&message.openlog 现在回来了
}break;
openLog.hdr.openTime = rtc.read_stamp();
[读代码]openlogDataType其实是无处不在的TLV格式
猜你喜欢
转载自blog.csdn.net/weixin_42381351/article/details/89947664
今日推荐
周排行