1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- #pragma once
- #include "IODeviceWithSCF.tlh"
- #include "IODeviceWithSCF.tli"
- #include "DIOS.Dev.SYNBOX.Mould.hpp"
- #include "DeviceFullUCB.hpp"
- #ifdef DIOSDEVSYNFULLUCB_EXPORTS
- #define _DIOSDEVSYNBOX_API __declspec(dllexport)
- #else
- #define _DIOSDEVDYNBOX_API __declspec(dllimport)
- #endif
- namespace DIOS::Dev::Detail::SYNBOX
- {
- class _DIOSDEVSYNBOX_API SyncBoxDevice :public IODeviceWithSCF <IODeviceDetail>
- {
- using super = IODeviceWithSCF <IODeviceDetail>;
- public:
- SyncBoxDevice(std::shared_ptr <IOEventCenter> center, nsSCF::SCF SCF, string configfile);
- ~SyncBoxDevice();
- virtual std::string GetGUID() const override;
- RET_STATUS HWSend(const char* strCommand, int nCMDLengh, int nTimeOut = TIMEOUTVALUE);
- //V3新方法
- virtual void SubscribeSelf(dios_mqtt_connection* conn) override;
- protected:
- void Register();
- void OnCallBack();
- public:
- static SyncBoxDevice *m_SingleExample;
- std::unique_ptr<nsDetail::MSGUnit> m_MSGUnit;
- std::unique_ptr<DeviceFullUCB> m_DeviceFullUCB;
- };
- }
- //-----------------------------------------------------------------------------
- // SyncBoxDriver
- //-----------------------------------------------------------------------------
- namespace DIOS::Dev::Detail::SYNBOX
- {
- class _DIOSDEVSYNBOX_API SyncBoxDriver : public IODriverWithSCF <DriverMould>
- {
- using super = IODriverWithSCF <DriverMould>;
- public:
- SyncBoxDriver();
- virtual ~SyncBoxDriver();
- public:
- virtual bool DriverEntry(std::string CfgFileName) override;
- virtual void Prepare() override;
- virtual bool DATA_ACTION Connect() override;
- virtual void Disconnect() override;
- virtual bool isConnected() const override;
- virtual void Dequeue(const char* Packet, DWORD Length) override;
- virtual void FireNotify(int code, std::string key, std::string content) override;
- virtual auto CreateDevice(int index)->std::unique_ptr <IODevice> override;
- virtual bool GetDeviceConfig(std::string& Cfg) override;
- virtual bool SetDeviceConfig(std::string Cfg) override;
- virtual std::string DriverProbe() override;
- virtual std::string GetResource() override;
- virtual std::string DeviceProbe() override;
- static PACKET_RET callbackPackageProcess(const char* RecData, DWORD nLength, DWORD& PacketLength);
- bool ReConnection(nsSCF::SCF& DevSCF);
- private:
- bool m_bConnected; //改为连接标志
- SyncBoxDevice* m_pDYNDevice{ nullptr };
- ResDataObject m_DeviceConfig;
- ResDataObject m_ConfigAll; //存储当前的配置,用于修改配置时写回文件
- ResDataObject m_Configurations; //存储当前配置中“CONFIGURATION”节点的内容
- std::unique_ptr <ResDataObject> m_pAttribute;
- std::unique_ptr <ResDataObject> m_pDescription;
- void HandshakeTest();
- bool SaveConfigFile(bool bSendNotify);
- bool GetDeviceConfigValue(ResDataObject config, const char* pInnerKey, int nPathID, string& strValue);
- bool SetDeviceConfigValue(ResDataObject& config, const char* pInnerKey, int nPathID, const char* szValue);
- };
- }
|