MCU-NET交互报文序列号设计巧妙

void mqtt_send_get_qrinfo( void )
{
    printc("\r\n\r\n%s",__FUNCTION__);
    mqtt_return_comm_request(SERVICE_TYPE_COMMON, CMD_TYPE_GET_QR_INFO ,  SEQ_ID_NULL );
}

void mqtt_send_get_passrule( void )
{
    printc("\r\n\r\n%s",__FUNCTION__);
  mqtt_return_comm_request(SERVICE_TYPE_COMMON, CMD_TYPE_GET_PASS_RULE ,  SEQ_ID_NULL );
    
}

 

 

mqtt_return_comm_result 他就是原封不动返回平台过来的 所以用uint16代表id
mqtt_return_comm_request 他是本地发送给平台 它的序列号是本地++的全局变量 所以用int -1来表示
非常穷啊吗吧

 

 

uint16_t do_mqtt_packet(uint8_t *out,uint16_t serverType ,int serId ,uint16_t cmd , uint8_t *data , uint16_t len)
{    printc("\r\n\r\n%s",__FUNCTION__);
    uint16_t cnt = 0;
    uint32_t crc = 0;
    //【0】message type
    out[cnt++]  = MSG_TYPE_SYSTEM;
    //【1】【2】sequence id
    if( serId == SEQ_ID_NULL )
    {
        sequenceId++;
        out[cnt++]  = sequenceId;
        out[cnt++]  = sequenceId>>8;
    }
    else
    {
        out[cnt++]  = serId;
        out[cnt++]  = serId>>8;
    }
    //【3】【4】server type
    out[cnt++]  = serverType;
    out[cnt++]  = serverType>>8;
    
    //【5】【6】cmd
    out[cnt++]  = cmd;
    out[cnt++]  = cmd>>8;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值