#pragma once #include #include #include "Device.Mediator.hpp" #ifdef DIOSLOGICDEVICE_EXPORTS #define _DIOSLogicDevice_API __declspec(dllexport) #else #define _DIOSLogicDevice_API __declspec(dllimport) #endif namespace DIOS { namespace Dev { class Mediator; //----------------------------------------------------------------------------- // LogicDevice // The root / base class for any LogicDevice //----------------------------------------------------------------------------- class _DIOSLogicDevice_API LogicDevice { public: LogicDevice (); virtual ~LogicDevice (); virtual std::string GetGUID () const = 0; }; //----------------------------------------------------------------------------- // LogicDeviceManager // The manager for LogicDevice //----------------------------------------------------------------------------- class _DIOSLogicDevice_API LogicDeviceManager { public: LogicDeviceManager (); virtual ~LogicDeviceManager (); public: virtual unsigned long GetVersion (); virtual std::string GetVersionString (); virtual void Prepare (std::shared_ptr Med); //< DIOS 运行环境将调用如下 API virtual bool DriverEntry (std::string CfgFileName); virtual std::string Driver_Probe () = 0; virtual std::string GetGUID () const = 0; virtual std::string GetDriverResource () = 0; virtual std::string Device_Probe () = 0; virtual bool OnHeartBeat (); //> // Connect () 返回值的定义, 待定 !!! virtual int Connect (); virtual void Disconnect (); virtual bool isConnected () const; virtual DWORD CreateDevice () = 0; virtual void UnloadDevice (DWORD ID); protected: std::shared_ptr m_Mediator; protected: std::unique_ptr m_LogicDevice; std::string m_ConfigFileName; }; } }