123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- #pragma once
- #include <Cmnpp/IProtocol.h>
- #include <Cmnpp/Proto/Point.h>
- #include "DataHelper.hpp"
- #include "Cmnpp/Proto/HandleRef.h"
- class AirProtocol : public Cmnpp::IProtocol
- {
- public:
- void parameters_get(struct cmnproto_params* _param) override;
- cmnec_t initialize_cb(cmnproto_handle _handle) override;
- cmnec_t terminate_cb() override;
- cmnec_t link_new_cb(cmnlink_ref _link) override;
- cmnec_t link_del_cb(cmnlink_ref _link) override;
- cmnec_t line_change_cb() override;
- cmnec_t process_cb() override;
- // 发送遥测请求
- void pack_yc_data() ;
- // 解析遥测数据
- void unpack_yc_data(uint8_t* buf) ;
- // 发送开关请求
- void pack_yx_data() ;
- // 解析开关请求
- void unpack_yx_data( uint8_t* buf) ;
- // 发送遥控请求
- void pack_yk_data(uint8_t ctrl_code) ;
- // 解析遥控请求
- void unpack_yk_data(const uint8_t* buf) ;
- // 发送告警请求
- void pack_alarm_data();
- // 解析告警请求
- void unpack_alarm_data(uint8_t* buf);
- // 发送厂家信息请求
- void pack_product_data();
- // 解析厂家信息请求
- void unpack_product_data(uint8_t* buf);
- // 发送遥测请求
- void pack_yc1_data();
- // 解析遥测数据
- void unpack_yc1_data(uint8_t* buf);
- // 发送遥测请求
- void pack_query_data();
- // 解析遥测数据
- void unpack_query_data(uint8_t* buf);
- // // 发送参数设置请求
- // void pack_set_data();
- // // 发送参数查询请求
- // void pack_get_data();
- // // 发送协议版本号请求
- // void pack_proto_version_data();
- // // 发送空调地址请求
- // void pack_addr_data();
- // 操作
- cmnec_t operate_cb(cmnproto_operate_ref_const _oper) override;
- // 接收报文
- cmnec_t parse_cb() override;
- // 读取报文
- comm_integer_t read_cb(cmnlink_ref _link) override;
- protected:
-
- Cmnpp::Proto::HandleRef handle_;
- Cmnpp::Proto::LineRef line_;
- Cmnpp::Link currentLink_;
- Cmnpp::Proto::FrameMsg frameMsg_;
- Cmnpp::Proto::Eqpt eqpt_;
- memepp::variable_buffer buf_;
- uint8_t buffer[255];
- Cmnpp::Template::Block currBlock_;
- // 查询命令
- std::vector<uint8_t> queryCmd_;
- uint8_t current_cmd_index_ = -1;
- memepp::string ver_;
-
- // 基础的数据打包函数
- // 参数:
- // - buf: 存储字节的数组
- // - data: 数据内容
- // - data_len: 数据长度
- // - cid1: 控制标识码
- // - cid2: 控制标识码
- // 返回值:buf长度
- int pack_data(uint8_t data[], int data_len, uint8_t cid1, uint8_t cid2);
- // 解析数据
- void parse_value(Cmnpp::Template::BlockItem item, uint8_t* buf, int addr, ret_value &r_value);
- // 更新变化
- void update_changes(Cmnpp::Proto::ValueChange vchange);
-
- };
|