Important Update:
- Switch from malloc/free -> new/delete for structures - Bug fix: Move Parameter groups to Device (not class) - Update Parameter groups: - Update Read/Write indicators as params are added
This commit is contained in:
27
DeviceCore.h
27
DeviceCore.h
@@ -32,6 +32,8 @@ typedef struct SDeviceParam TDeviceParam;
|
||||
typedef struct SDeviceParamGroup TDeviceParamGroup;
|
||||
typedef struct SDeviceParamItem TDeviceParamItem;
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
// Devices with are polled
|
||||
struct SDevice {
|
||||
// Device definition
|
||||
@@ -43,7 +45,8 @@ struct SDevice {
|
||||
bool Online = false;
|
||||
|
||||
// Device parameters
|
||||
TDeviceParam * FirstParam = NULL;
|
||||
TDeviceParam * FirstParam = NULL;
|
||||
TDeviceParamGroup * FirstParamGroup = NULL;
|
||||
|
||||
// Device peer list
|
||||
TDevice * Next = NULL;
|
||||
@@ -82,6 +85,10 @@ struct SDeviceParamGroup {
|
||||
char * Name = NULL;
|
||||
TDevice * Device = NULL;
|
||||
TDeviceParamItem * FirstParam = NULL;
|
||||
|
||||
bool Read = false;
|
||||
bool Write = false;
|
||||
|
||||
TDeviceParamGroup * NextGroup = NULL;
|
||||
};
|
||||
|
||||
@@ -112,8 +119,6 @@ protected:
|
||||
TDevice * FirstDevice = NULL;
|
||||
TDevice * ActiveDevice = NULL;
|
||||
|
||||
TDeviceParamGroup * FirstParamGroup = NULL;
|
||||
|
||||
// Standard channels
|
||||
TChannel * DeviceChannel = NULL;
|
||||
TChannel * CmdChannel = NULL;
|
||||
@@ -215,13 +220,13 @@ protected:
|
||||
bool DestroyParamItem( TDeviceParamItem ** Item );
|
||||
|
||||
// Find Param Groups
|
||||
inline TDeviceParamGroup * GetParamGroup( const char * GroupName ) {
|
||||
TDeviceParamGroup ** Group = GetParamGroupPtr( GroupName );
|
||||
inline TDeviceParamGroup * GetParamGroup( TDevice * Device, const char * GroupName ) {
|
||||
TDeviceParamGroup ** Group = GetParamGroupPtr( Device, GroupName );
|
||||
return (Group)? *Group : NULL;
|
||||
}
|
||||
inline TDeviceParamGroup ** GetParamGroupPtr( const char * GroupName ) {
|
||||
if (!GroupName || !*GroupName) return NULL;
|
||||
TDeviceParamGroup ** Group = &FirstParamGroup;
|
||||
inline TDeviceParamGroup ** GetParamGroupPtr( TDevice * Device, const char * GroupName ) {
|
||||
if (!Device || !GroupName || !*GroupName) return NULL;
|
||||
TDeviceParamGroup ** Group = &(Device->FirstParamGroup);
|
||||
while (*Group && strcasecmp( (*Group)->Name, GroupName ))
|
||||
Group = &((*Group)->NextGroup);
|
||||
return Group;
|
||||
@@ -302,12 +307,12 @@ public:
|
||||
|
||||
// Manage Param Groups
|
||||
TDeviceParamGroup * AddParamGroup( TDevice * Device, const char * GroupName );
|
||||
inline bool DestroyParamGroup( const char * GroupName ) {
|
||||
TDeviceParamGroup ** Group = GetParamGroupPtr( GroupName );
|
||||
inline bool DestroyParamGroup( TDevice * Device, const char * GroupName ) {
|
||||
TDeviceParamGroup ** Group = GetParamGroupPtr( Device, GroupName );
|
||||
return (Group)? DestroyParamGroup( Group ) : false;
|
||||
};
|
||||
TDeviceParamItem * AddParamItem( TDeviceParamGroup * Group, const char * ParamName );
|
||||
inline bool DestroyParamItem( TDeviceParamGroup * Group, const char * ParamName ) {
|
||||
inline bool DestroyParamItem( TDevice * Device, TDeviceParamGroup * Group, const char * ParamName ) {
|
||||
TDeviceParamItem ** Item = GetParamItemPtr( Group, ParamName );
|
||||
return (Item)? DestroyParamItem( Item ) : false;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user