Major Update:
- JSONparseCore:
- Add initialisations values for class params
- Add method AddBase() to dynamically change DataTree
- Added Error messages
- DeviceCore:
- Implement ValueTree (JSON tree)
- Node are added as devices & params are created/added
- Nodes (and path) are referenced on devices & params
- Node values are updated as device params are updated
- Added Persistence File (not yet complete)
- Updated InitDevices() & InitDeviceParams()
- Split into smaller methods: CopyTemplateParam() & InitDeviceParam()
- Load Device definition or Parameter maps from files
- Allow loading of nested parameter map files
- Load Parameter as JSON tree, generate names/path dynamically
This commit is contained in:
18
DeviceCore.h
18
DeviceCore.h
@@ -42,6 +42,8 @@ struct SDevice {
|
||||
char * Name = NULL;
|
||||
int ID = 0;
|
||||
char * Address = NULL;
|
||||
char * DataPath = NULL;
|
||||
CDataMember * DataNode = NULL;
|
||||
|
||||
// Device Type
|
||||
char * Type = NULL;
|
||||
@@ -65,6 +67,10 @@ struct SDeviceParam {
|
||||
EDeviceDataType DataType = dtNone;
|
||||
TDevice * Device = Device;
|
||||
|
||||
// Data Path
|
||||
char * DataPath = NULL;
|
||||
CDataMember * DataNode = NULL;
|
||||
|
||||
// Last value (received from device)
|
||||
void * Value = NULL;
|
||||
int Len = 0;
|
||||
@@ -117,6 +123,7 @@ protected:
|
||||
// Configuration
|
||||
CDataMember * Config = NULL;
|
||||
CDataMember * ConfigTypes = NULL;
|
||||
CDataMember * ValueTree = NULL;
|
||||
CJSONparse * JSONparse = NULL;
|
||||
bool DeviceInit = false;
|
||||
|
||||
@@ -306,25 +313,30 @@ public:
|
||||
// Configuration
|
||||
virtual bool Init( CDataMember * FunctionConfig );
|
||||
virtual bool InitDevices( CDataMember * FunctionConfig );
|
||||
virtual bool InitDeviceParams( TDevice * Device, CDataMember * DeviceConfig );
|
||||
virtual bool InitDeviceParams( TDevice * Device, CDataMember * DeviceConfig, CDataMember * ParentNode );
|
||||
virtual bool CopyTemplateParam( TDevice * Device, TDeviceParam * Template, CDataMember * ParentNode );
|
||||
virtual bool InitDeviceParam( TDevice * Device, CDataMember * ParamConfig,
|
||||
const char * ParentName, const char * ParentPath, CDataMember * ParentNode );
|
||||
virtual bool InitParamGroups( TDevice * Device, CDataMember * DeviceConfig );
|
||||
|
||||
// Polling parameters
|
||||
bool SetPollParam( int pPollInterval );
|
||||
bool SetReplyParam( int pReplyTimeout, int pMaxRetries );
|
||||
|
||||
bool SetDataPath( TDeviceParam * Param, const char * DataPath, CDataMember * DataNode );
|
||||
bool SetParamAccess( TDeviceParam * Param, bool Read, bool Write );
|
||||
bool SetParamEvent( TDeviceParam * Param, const char * ChannelName, long pEventInterval );
|
||||
|
||||
// Manage Devices Types
|
||||
TDevice * AddDeviceType( const char * DeviceTypeName );
|
||||
TDevice * AddDeviceType( const char * DeviceTypeName, const char * DataPath );
|
||||
inline bool DestroyDeviceType( const char * DeviceTypeName ) {
|
||||
TDevice ** DeviceType = GetDeviceTypePtr(DeviceTypeName);
|
||||
return (DeviceType)? DestroyDevice( DeviceType ) : false;
|
||||
}
|
||||
|
||||
// Manage Devices
|
||||
TDevice * AddDevice( const char * DeviceName, const char * Type = NULL, const int ID = 0, const char * Address = NULL );
|
||||
TDevice * AddDevice( const char * DeviceName, const char * Type = NULL,
|
||||
const int ID = 0, const char * Address = NULL, const char * DataPath = NULL );
|
||||
inline bool DestroyDevice( const char * DeviceName ) {
|
||||
TDevice ** Device = GetDevicePtrByName(DeviceName);
|
||||
return (Device)? DestroyDevice( Device ) : false;
|
||||
|
||||
Reference in New Issue
Block a user