1、新增Dengle定时参数下发功能,支持最多10条配置,断电保存到Flash,COM打开时暂停发送、关闭后恢复
2、新增USB查询产品码(0x66)和查询Dengle配置(0x74)命令 3、修复bleproto组包栈溢出导致设置Dengle后复位的问题,并完善CDC的DTR状态判断
This commit is contained in:
+28
-26
@@ -222,91 +222,93 @@ int bleproto_appdata_encode(uint8_t * txbuf,
|
||||
{
|
||||
int rc;
|
||||
uint16_t txbuf_size = size;
|
||||
/* 原栈上 appdata 约 2KB+,在 USB/定时器回调里极易栈溢出复位,改为静态 */
|
||||
static bleproto_appdata_t s_enc_appdata;
|
||||
bleproto_appdata_t *appdata = &s_enc_appdata;
|
||||
|
||||
bleproto_appdata_t appdata;
|
||||
/* header */
|
||||
{
|
||||
appdata.header = desc->header;
|
||||
appdata->header = desc->header;
|
||||
}
|
||||
/* data */
|
||||
if (appdata.header.msgtype == BLEPROTO_APPDATA_MSGTYPE_REQ) {
|
||||
switch (appdata.header.serviceid) {
|
||||
if (appdata->header.msgtype == BLEPROTO_APPDATA_MSGTYPE_REQ) {
|
||||
switch (appdata->header.serviceid) {
|
||||
case E_BLEPROTO_SERVICE_ID_DEVICEINFO:
|
||||
rc = bleproto_encjson_deviceinfo_req(&desc->datast.deviceinfo_req,
|
||||
appdata.data);
|
||||
appdata->data);
|
||||
break;
|
||||
case E_BLEPROTO_SERVICE_ID_AUTHSETUP:
|
||||
rc = bleproto_encjson_authsetup_req(&desc->datast.authsetup_req,
|
||||
appdata.data);
|
||||
appdata->data);
|
||||
break;
|
||||
case E_BLEPROTO_SERVICE_ID_AUTHDELETE:
|
||||
rc = bleproto_encjson_authdelete_req(&desc->datast.authdelete_req,
|
||||
appdata.data);
|
||||
appdata->data);
|
||||
break;
|
||||
case E_BLEPROTO_SERVICE_ID_RUNCMD:
|
||||
rc = bleproto_encjson_runcmd_req(&desc->datast.runcmd_req,
|
||||
appdata.data);
|
||||
appdata->data);
|
||||
break;
|
||||
case E_BLEPROTO_SERVICE_ID_REPORTCMD:
|
||||
rc = bleproto_encjson_reportcmd_req(&desc->datast.reportcmd_req,
|
||||
appdata.data);
|
||||
appdata->data);
|
||||
break;
|
||||
case E_BLEPROTO_SERVICE_ID_DOACTION:
|
||||
rc = bleproto_encjson_doaction_req(&desc->datast.doaction_req,
|
||||
appdata.data);
|
||||
appdata->data);
|
||||
break;
|
||||
case E_BLEPROTO_SERVICE_ID_OTANOTIFY:
|
||||
rc = bleproto_encjson_otanotify_req(&desc->datast.otanotify_req,
|
||||
appdata.data);
|
||||
appdata->data);
|
||||
break;
|
||||
case E_BLEPROTO_SERVICE_ID_OTADATA:
|
||||
rc = bleproto_encjson_otadata_req(&desc->datast.otadata_req,
|
||||
appdata.data);
|
||||
appdata->data);
|
||||
break;
|
||||
case E_BLEPROTO_SERVICE_ID_REPORTCMD_V2:
|
||||
rc = ble_proto_pack(&desc->datast.runcmd_v2_req, appdata.data, sizeof(appdata.data));
|
||||
rc = ble_proto_pack(&desc->datast.runcmd_v2_req, appdata->data, sizeof(appdata->data));
|
||||
break;
|
||||
default:
|
||||
/* unkown serviceid */
|
||||
return (-1);
|
||||
}
|
||||
} else if (appdata.header.msgtype == BLEPROTO_APPDATA_MSGTYPE_RSP) {
|
||||
switch (appdata.header.serviceid) {
|
||||
} else if (appdata->header.msgtype == BLEPROTO_APPDATA_MSGTYPE_RSP) {
|
||||
switch (appdata->header.serviceid) {
|
||||
case E_BLEPROTO_SERVICE_ID_DEVICEINFO:
|
||||
rc = bleproto_encjson_deviceinfo_rsp(&desc->datast.deviceinfo_rsp,
|
||||
appdata.data);
|
||||
appdata->data);
|
||||
break;
|
||||
case E_BLEPROTO_SERVICE_ID_AUTHSETUP:
|
||||
rc = bleproto_encjson_authsetup_rsp(&desc->datast.authsetup_rsp,
|
||||
appdata.data);
|
||||
appdata->data);
|
||||
break;
|
||||
case E_BLEPROTO_SERVICE_ID_AUTHDELETE:
|
||||
rc = bleproto_encjson_authdelete_rsp(&desc->datast.authdelete_rsp,
|
||||
appdata.data);
|
||||
appdata->data);
|
||||
break;
|
||||
case E_BLEPROTO_SERVICE_ID_RUNCMD:
|
||||
rc = bleproto_encjson_runcmd_rsp(&desc->datast.runcmd_rsp,
|
||||
appdata.data);
|
||||
appdata->data);
|
||||
break;
|
||||
case E_BLEPROTO_SERVICE_ID_REPORTCMD:
|
||||
rc = bleproto_encjson_reportcmd_rsp(&desc->datast.reportcmd_rsp,
|
||||
appdata.data);
|
||||
appdata->data);
|
||||
break;
|
||||
case E_BLEPROTO_SERVICE_ID_DOACTION:
|
||||
rc = bleproto_encjson_doaction_rsp(&desc->datast.doaction_rsp,
|
||||
appdata.data);
|
||||
appdata->data);
|
||||
break;
|
||||
case E_BLEPROTO_SERVICE_ID_OTANOTIFY:
|
||||
rc = bleproto_encjson_otanotify_rsp(&desc->datast.otanotify_rsp,
|
||||
appdata.data);
|
||||
appdata->data);
|
||||
break;
|
||||
case E_BLEPROTO_SERVICE_ID_OTADATA:
|
||||
rc = bleproto_encbin_otadata_rsp(&desc->datast.otadata_rsp,
|
||||
appdata.data);
|
||||
appdata->data);
|
||||
break;
|
||||
case E_BLEPROTO_SERVICE_ID_REPORTCMD_V2:
|
||||
case E_BLEPROTO_SERVICE_ID_RUNCMD_V2:
|
||||
rc = ble_proto_pack(&desc->datast.runcmd_v2_rsp, appdata.data, sizeof(appdata.data));
|
||||
rc = ble_proto_pack(&desc->datast.runcmd_v2_rsp, appdata->data, sizeof(appdata->data));
|
||||
break;
|
||||
default:
|
||||
/* unkown serviceid */
|
||||
@@ -322,10 +324,10 @@ int bleproto_appdata_encode(uint8_t * txbuf,
|
||||
}
|
||||
|
||||
/* datalen */
|
||||
appdata.header.datalen = (uint16_t)rc;
|
||||
appdata->header.datalen = (uint16_t)rc;
|
||||
|
||||
/* appdata_serialize */
|
||||
return bleproto_appdata_serialize(&appdata, packetlen, txbuf, txbuf_size);
|
||||
return bleproto_appdata_serialize(appdata, packetlen, txbuf, txbuf_size);
|
||||
}
|
||||
|
||||
int bleproto_appdata_decode(uint8_t* rxbuf,
|
||||
|
||||
Reference in New Issue
Block a user