ModuleDevice.h 3.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. #pragma once
  2. #include "LogicDevice.h"
  3. #define CONTAINERDPC_API
  4. #define CONTAINERDPC_C_API extern "C"
  5. class CONTAINERDPC_API ModuleDevice :
  6. public LogicDevice
  7. {
  8. friend class ModuleConfig;
  9. protected:
  10. string m_strModuleFileName;
  11. string m_strModuleFilePath;
  12. string m_strConfigFilePath;
  13. ResDataObject m_resHardwareInfo; //硬件信息
  14. ResDataObject m_resModuleConfig; //模型配置文件 是从磁盘上读取的初始内容,包含该设备模型的配置项
  15. ResDataObject m_resProperties; //当前对象的属性值,通过set/get/add/del 操作的属性可以直接访问
  16. ResDataObject m_resGets;
  17. ResDataObject m_resSets;
  18. ResDataObject m_resAdds;
  19. ResDataObject m_resDels;
  20. ResDataObject m_resActions;
  21. ResDataObject m_resUpdates;
  22. ResDataObject m_resWebConfig; //web配置项
  23. bool m_bSendIndependently; //使用独立连接发送消息
  24. ccos_mqtt_connection* m_pSendConn;
  25. string m_strSendClientID;
  26. RET_STATUS SendNotify(ResDataObject* pCmd);
  27. RET_STATUS NotifyProperty(const char* property);
  28. RET_STATUS GetUpdatableItems(string level, ResDataObject& resItems);
  29. RET_STATUS SaveToConfigFile();
  30. bool CheckSubDevice();
  31. virtual RET_STATUS UpdateItem(const char* pszProperty, const char* pszValueUpdate, ResDataObject& resRespons);
  32. virtual RET_STATUS OnUpdate(const char* pszProperty, const char* pszValueUpdate, ResDataObject& resRespons);
  33. virtual RET_STATUS OnDel(const char* pszPropery, ResDataObject& resDelValue, ResDataObject& resResponse);
  34. virtual RET_STATUS OnAdd(const char* pszPropery, ResDataObject& reAddValue, ResDataObject& resResponse);
  35. virtual RET_STATUS SetItem(const char* pszPropery, ResDataObject& resSetValue, ResDataObject& resResponse);
  36. virtual RET_STATUS GetItem(const char* pszPropery, ResDataObject& resResponse);
  37. virtual RET_STATUS OnAction(const char* pszActionName, const char* pszParams, ResDataObject& resResponse);
  38. virtual RET_STATUS OnMessage(const char* pszTopic, const char* pszMessageValue, ResDataObject& resResponse);
  39. RET_STATUS SystemLog(SYSLOGLEVEL Level, const char* pCode, const char* fmt, ...);
  40. RET_STATUS IoSystemLog(int Level, const char* pCode, const char* pContext, size_t ContextSize, const char* pAppId = "");
  41. public:
  42. ModuleDevice();
  43. virtual ~ModuleDevice();
  44. void SetHardwareInfo(ResDataObject& resHardwareInfo) { m_resHardwareInfo = resHardwareInfo; }
  45. RET_STATUS Request(ResDataObject PARAM_IN* pRequest, ResDataObject PARAM_OUT* pResponse) override;
  46. RET_STATUS CmdToLogicDev(ResDataObject PARAM_IN* pCmd) override;
  47. bool GetDeviceType(GUID& DevType) override;
  48. void SubscribeSelf() override;
  49. void OnSetClientID() override;
  50. void SplitCcosDevicePath(string DevicePath, vector<string>& resTopicParams) {
  51. // 使用 stringstream 和 getline 按照 "/" 切割路径
  52. std::stringstream ss(DevicePath);
  53. std::string token;
  54. // 清空之前的数据
  55. resTopicParams.clear();
  56. // 按照"/"切割路径并存入resTopicParams
  57. while (std::getline(ss, token, '/')) {
  58. resTopicParams.push_back(token);
  59. }
  60. }
  61. RET_STATUS SYSTEM_CALL GetDeviceResource(ResDataObject PARAM_OUT* pDeviceResource) override;
  62. RET_STATUS DevGet(const char* pszDevUri, const char* pszProperty, ResDataObject& resRespons) override;
  63. RET_STATUS DevSet(const char* pszDevUri, const char* pszProperty, const char* pszValueSet, ResDataObject& resRespons) override;
  64. RET_STATUS DevUpdate(const char* pszDevUri, const char* pszProperty, const char* pszValueUpdate, ResDataObject& resRespons) override;
  65. RET_STATUS DevAdd(const char* pszDevUri, const char* pszProperty, const char* pszValueAdd, ResDataObject& resRespons) override;
  66. RET_STATUS DevDel(const char* pszDevUri, const char* pszProperty, const char* pszValueDel, ResDataObject& resRespons) override;
  67. RET_STATUS DevAction(const char* pszDevUri, const char* pszActionName, const char* pszParams, ResDataObject& resRespons) override;
  68. RET_STATUS DevMessage(const char* pszDevUri, const char* pszTopic, const char* pszMessageValue, ResDataObject& resRespons) override;
  69. };