GasTransTable.h 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. //
  2. // Created by ljx on 2021/12/27.
  3. //
  4. #ifndef SMARTPANEL_COSS_GASTRANSTABLE_H
  5. #define SMARTPANEL_COSS_GASTRANSTABLE_H
  6. #include <qlibc/QData.hpp>
  7. #include <qlibc/QPObjectHolder.h>
  8. #include "../DevTree/DevTree.h"
  9. using CommandHandler = std::function<void(const qlibc::QData& msgSrc, qlibc::QData& msgDest)>;
  10. class GasTransTable{
  11. protected:
  12. qlibc::QPObjectHolder<CommandHandler> controlTables;
  13. DevTree& mDevTree_;
  14. public:
  15. explicit GasTransTable(DevTree& mDevTree):mDevTree_(mDevTree){
  16. initControlTables();
  17. }
  18. void transControlToGas(const qlibc::QData &req, qlibc::QData &req2Gas){
  19. std::string device_id = req.getString("device_id");
  20. std::string command = req.getString("command");
  21. Json::Value v = mDevTree_.getDevAllInfo(device_id);
  22. qlibc::QData v_data(v);
  23. std::string device_address = v_data.getString("device_address");
  24. std::stringstream ss;
  25. QHLog("control message all info is %s ", v_data.toJSONString(true).c_str());
  26. if(v_data.getString("device_class") == "GroupDevice"){
  27. int addr = atoi(device_address.c_str());
  28. ss << std::hex << addr;
  29. device_address = ss.str();
  30. }
  31. req2Gas.putString("gw_sn", v_data.getString("sn"));
  32. req2Gas.putString("device_address", device_address);
  33. req2Gas.putString("command", command);
  34. req2Gas.putString("uri", "/lightGW/controlDevice");
  35. req2Gas.putString("cmd_source", "cpad");
  36. auto handler = controlTables.findObject(command);
  37. if(handler != nullptr)
  38. handler->operator () (req, req2Gas);
  39. }
  40. private:
  41. void initControlTables(){
  42. controlTables.appendNew("turnOn", new CommandHandler([](const qlibc::QData &req, qlibc::QData &req2Gas) {
  43. qlibc::QData qd_param;
  44. req2Gas.putObjFmtData("param", qd_param);
  45. }));
  46. controlTables.appendNew("turnOff", new CommandHandler([](const qlibc::QData &req, qlibc::QData &req2Gas) {
  47. qlibc::QData qd_param;
  48. req2Gas.putObjFmtData("param", qd_param);
  49. }));
  50. controlTables.appendNew("setBrightness", new CommandHandler([](const qlibc::QData &req, qlibc::QData &req2Gas) {
  51. req2Gas.putObjFmtString("param.set_value", req.getObjFmtString("param.set_value"));
  52. }));
  53. controlTables.appendNew("adjustBrightness", new CommandHandler([](const qlibc::QData &req, qlibc::QData &req2Gas) {
  54. qlibc::QData qd_param;
  55. qd_param.putString("flag", req.getObjFmtString("param.flag"));
  56. qd_param.putString("adjust_value", req.getObjFmtString("param.adjust_value"));
  57. req2Gas.putData("param", qd_param);
  58. }));
  59. controlTables.appendNew("adjustColorTemperature", new CommandHandler([](const qlibc::QData &req, qlibc::QData &req2Gas) {
  60. qlibc::QData qd_param;
  61. qd_param.putString("flag", req.getObjFmtString("param.flag"));
  62. qd_param.putString("adjust_value", req.getObjFmtString("param.adjust_value"));
  63. req2Gas.putData("param", qd_param);
  64. }));
  65. controlTables.appendNew("setColorTemperature", new CommandHandler([](const qlibc::QData &req, qlibc::QData &req2Gas) {
  66. req2Gas.putObjFmtString("param.set_value", req.getObjFmtString("param.set_value"));
  67. }));
  68. controlTables.appendNew("setSaturation", new CommandHandler([](const qlibc::QData &req, qlibc::QData &req2Gas) {
  69. req2Gas.putObjFmtString("param.set_value", req.getObjFmtString("param.set_value"));
  70. }));
  71. controlTables.appendNew("setLighterMode", new CommandHandler([](const qlibc::QData &req, qlibc::QData &req2Gas) {
  72. req2Gas.putObjFmtString("param.set_value", req.getObjFmtString("param.set_value"));
  73. }));
  74. controlTables.appendNew("setColorMode", new CommandHandler([this](const qlibc::QData &req, qlibc::QData &req2Gas) {
  75. qlibc::QData qd_param;
  76. Json::Value v = mDevTree_.getDevAllInfo(req.getString("device_id"));
  77. qlibc::QData v_data(v);
  78. // qd_param.putString("lightness", v_data.getString("brightness_value"));
  79. qd_param.putString("lightness", req.getObjFmtString("param.lightness"));
  80. qd_param.putString("hue", req.getObjFmtString("param.hue"));
  81. req2Gas.putData("param", qd_param);
  82. }));
  83. controlTables.appendNew("setFlowMode", new CommandHandler([](const qlibc::QData &req, qlibc::QData &req2Gas) {
  84. req2Gas.putObjFmtString("param.flow_speed", req.getObjFmtString("param.flow_speed"));
  85. }));
  86. controlTables.appendNew("setCurtain", new CommandHandler([](const qlibc::QData &req, qlibc::QData &req2Gas) {
  87. req2Gas.putObjFmtString("param.set_value", req.getObjFmtString("param.set_value"));
  88. }));
  89. }
  90. };
  91. #endif //SMARTPANEL_COSS_GASTRANSTABLE_H