AirProtocol.hpp 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. #pragma once
  2. #include <Cmnpp/IProtocol.h>
  3. #include <Cmnpp/Proto/Point.h>
  4. #include "DataHelper.hpp"
  5. #include "Cmnpp/Proto/HandleRef.h"
  6. class AirProtocol : public Cmnpp::IProtocol
  7. {
  8. public:
  9. void parameters_get(struct cmnproto_params* _param) override;
  10. cmnec_t initialize_cb(cmnproto_handle _handle) override;
  11. cmnec_t terminate_cb() override;
  12. cmnec_t link_new_cb(cmnlink_ref _link) override;
  13. cmnec_t link_del_cb(cmnlink_ref _link) override;
  14. cmnec_t line_change_cb() override;
  15. cmnec_t process_cb() override;
  16. // 发送遥测请求
  17. void pack_yc_data() ;
  18. // 解析遥测数据
  19. void unpack_yc_data(uint8_t* buf) ;
  20. // 发送开关请求
  21. void pack_yx_data() ;
  22. // 解析开关请求
  23. void unpack_yx_data( uint8_t* buf) ;
  24. // 发送遥控请求
  25. void pack_yk_data(uint8_t ctrl_code) ;
  26. // 解析遥控请求
  27. void unpack_yk_data(const uint8_t* buf) ;
  28. // 发送告警请求
  29. void pack_alarm_data();
  30. // 解析告警请求
  31. void unpack_alarm_data(uint8_t* buf);
  32. // 发送厂家信息请求
  33. void pack_product_data();
  34. // 解析厂家信息请求
  35. void unpack_product_data(uint8_t* buf);
  36. // 发送遥测请求
  37. void pack_yc1_data();
  38. // 解析遥测数据
  39. void unpack_yc1_data(uint8_t* buf);
  40. // 发送遥测请求
  41. void pack_query_data();
  42. // 解析遥测数据
  43. void unpack_query_data(uint8_t* buf);
  44. // // 发送参数设置请求
  45. // void pack_set_data();
  46. // // 发送参数查询请求
  47. // void pack_get_data();
  48. // // 发送协议版本号请求
  49. // void pack_proto_version_data();
  50. // // 发送空调地址请求
  51. // void pack_addr_data();
  52. // 操作
  53. cmnec_t operate_cb(cmnproto_operate_ref_const _oper) override;
  54. // 接收报文
  55. cmnec_t parse_cb() override;
  56. // 读取报文
  57. comm_integer_t read_cb(cmnlink_ref _link) override;
  58. protected:
  59. Cmnpp::Proto::HandleRef handle_;
  60. Cmnpp::Proto::LineRef line_;
  61. Cmnpp::Link currentLink_;
  62. Cmnpp::Proto::FrameMsg frameMsg_;
  63. Cmnpp::Proto::Eqpt eqpt_;
  64. memepp::variable_buffer buf_;
  65. uint8_t buffer[255];
  66. Cmnpp::Template::Block currBlock_;
  67. // 查询命令
  68. std::vector<uint8_t> queryCmd_;
  69. uint8_t current_cmd_index_ = -1;
  70. memepp::string ver_;
  71. // 基础的数据打包函数
  72. // 参数:
  73. // - buf: 存储字节的数组
  74. // - data: 数据内容
  75. // - data_len: 数据长度
  76. // - cid1: 控制标识码
  77. // - cid2: 控制标识码
  78. // 返回值:buf长度
  79. int pack_data(uint8_t data[], int data_len, uint8_t cid1, uint8_t cid2);
  80. // 解析数据
  81. void parse_value(Cmnpp::Template::BlockItem item, uint8_t* buf, int addr, ret_value &r_value);
  82. // 更新变化
  83. void update_changes(Cmnpp::Proto::ValueChange vchange);
  84. };