DIOS.Dev.SyncBox.FullUCB.h 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. #pragma once
  2. #include "IODeviceWithSCF.tlh"
  3. #include "IODeviceWithSCF.tli"
  4. #include "DIOS.Dev.SYNBOX.Mould.hpp"
  5. #include "DeviceFullUCB.hpp"
  6. #ifdef DIOSDEVSYNFULLUCB_EXPORTS
  7. #define _DIOSDEVSYNBOX_API __declspec(dllexport)
  8. #else
  9. #define _DIOSDEVDYNBOX_API __declspec(dllimport)
  10. #endif
  11. namespace DIOS::Dev::Detail::SYNBOX
  12. {
  13. class _DIOSDEVSYNBOX_API SyncBoxDevice :public IODeviceWithSCF <IODeviceDetail>
  14. {
  15. using super = IODeviceWithSCF <IODeviceDetail>;
  16. public:
  17. SyncBoxDevice(std::shared_ptr <IOEventCenter> center, nsSCF::SCF SCF, string configfile);
  18. ~SyncBoxDevice();
  19. virtual std::string GetGUID() const override;
  20. RET_STATUS HWSend(const char* strCommand, int nCMDLengh, int nTimeOut = TIMEOUTVALUE);
  21. //V3新方法
  22. virtual void SubscribeSelf(dios_mqtt_connection* conn) override;
  23. protected:
  24. void Register();
  25. void OnCallBack();
  26. public:
  27. static SyncBoxDevice *m_SingleExample;
  28. std::unique_ptr<nsDetail::MSGUnit> m_MSGUnit;
  29. std::unique_ptr<DeviceFullUCB> m_DeviceFullUCB;
  30. };
  31. }
  32. //-----------------------------------------------------------------------------
  33. // SyncBoxDriver
  34. //-----------------------------------------------------------------------------
  35. namespace DIOS::Dev::Detail::SYNBOX
  36. {
  37. class _DIOSDEVSYNBOX_API SyncBoxDriver : public IODriverWithSCF <DriverMould>
  38. {
  39. using super = IODriverWithSCF <DriverMould>;
  40. public:
  41. SyncBoxDriver();
  42. virtual ~SyncBoxDriver();
  43. public:
  44. virtual bool DriverEntry(std::string CfgFileName) override;
  45. virtual void Prepare() override;
  46. virtual bool DATA_ACTION Connect() override;
  47. virtual void Disconnect() override;
  48. virtual bool isConnected() const override;
  49. virtual void Dequeue(const char* Packet, DWORD Length) override;
  50. virtual void FireNotify(int code, std::string key, std::string content) override;
  51. virtual auto CreateDevice(int index)->std::unique_ptr <IODevice> override;
  52. virtual bool GetDeviceConfig(std::string& Cfg) override;
  53. virtual bool SetDeviceConfig(std::string Cfg) override;
  54. virtual std::string DriverProbe() override;
  55. virtual std::string GetResource() override;
  56. virtual std::string DeviceProbe() override;
  57. static PACKET_RET callbackPackageProcess(const char* RecData, DWORD nLength, DWORD& PacketLength);
  58. bool ReConnection(nsSCF::SCF& DevSCF);
  59. private:
  60. bool m_bConnected; //改为连接标志
  61. SyncBoxDevice* m_pDYNDevice{ nullptr };
  62. ResDataObject m_DeviceConfig;
  63. ResDataObject m_ConfigAll; //存储当前的配置,用于修改配置时写回文件
  64. ResDataObject m_Configurations; //存储当前配置中“CONFIGURATION”节点的内容
  65. std::unique_ptr <ResDataObject> m_pAttribute;
  66. std::unique_ptr <ResDataObject> m_pDescription;
  67. void HandshakeTest();
  68. bool SaveConfigFile(bool bSendNotify);
  69. bool GetDeviceConfigValue(ResDataObject config, const char* pInnerKey, int nPathID, string& strValue);
  70. bool SetDeviceConfigValue(ResDataObject& config, const char* pInnerKey, int nPathID, const char* szValue);
  71. };
  72. }