Added more object properties to the property list module - it now more than EPICS demo used from existing demo objects.

This commit is contained in:
skarg
2012-04-16 14:52:27 +00:00
parent 6018f2ce04
commit a7a67a76fd
4 changed files with 328 additions and 35 deletions
+2 -1
View File
@@ -8,7 +8,8 @@ TARGET = bacepics
TARGET_BIN = ${TARGET}$(TARGET_EXT)
SRCS = main.c
SRCS = main.c \
../object/device-client.c
OBJS = ${SRCS:.c=.o}
+1 -1
View File
@@ -766,7 +766,7 @@ static uint8_t Read_Properties(
* In practice, this should only happen for simple devices that don't
* implement RPM or have really limited MAX_APDU size.
*/
Property_List_Special(pMyObject->type, &PropertyListStruct);
property_list_special(pMyObject->type, &PropertyListStruct);
pPropList = PropertyListStruct.Required.pList;
if (pPropList != NULL) {
Property_List_Length = PropertyListStruct.Required.count;
+3 -1
View File
@@ -47,7 +47,9 @@
extern "C" {
#endif /* __cplusplus */
void Property_List_Special(
unsigned property_list_count(
const int *pList);
void property_list_special(
BACNET_OBJECT_TYPE object_type,
struct special_property_list_t *pPropertyList);
+322 -32
View File
@@ -426,6 +426,35 @@ static const int Command_Properties_Optional[] = {
-1
};
static const int CharacterString_Value_Properties_Required[] = {
PROP_OBJECT_IDENTIFIER,
PROP_OBJECT_NAME,
PROP_OBJECT_TYPE,
PROP_PRESENT_VALUE,
PROP_STATUS_FLAGS,
-1
};
static const int CharacterString_Value_Properties_Optional[] = {
PROP_DESCRIPTION,
PROP_EVENT_STATE,
PROP_RELIABILITY,
PROP_OUT_OF_SERVICE,
PROP_PRIORITY_ARRAY,
PROP_RELINQUISH_DEFAULT,
PROP_TIME_DELAY,
PROP_NOTIFICATION_CLASS,
PROP_ALARM_VALUES,
PROP_FAULT_VALUES,
PROP_EVENT_ENABLE,
PROP_ACKED_TRANSITIONS,
PROP_NOTIFY_TYPE,
PROP_EVENT_TIME_STAMPS,
PROP_EVENT_MESSAGE_TEXTS,
PROP_PROFILE_NAME,
-1
};
static const int Load_Control_Properties_Required[] = {
PROP_OBJECT_IDENTIFIER,
PROP_OBJECT_NAME,
@@ -447,13 +476,211 @@ static const int Load_Control_Properties_Required[] = {
static const int Load_Control_Properties_Optional[] = {
PROP_DESCRIPTION,
PROP_STATE_DESCRIPTION,
PROP_RELIABILITY,
PROP_FULL_DUTY_BASELINE,
PROP_NOTIFICATION_CLASS,
PROP_TIME_DELAY,
PROP_EVENT_ENABLE,
PROP_ACKED_TRANSITIONS,
PROP_NOTIFY_TYPE,
PROP_EVENT_TIME_STAMPS,
PROP_EVENT_MESSAGE_TEXTS,
PROP_PROFILE_NAME,
-1
};
static const int Life_Safety_Point_Properties_Required[] = {
PROP_OBJECT_IDENTIFIER,
PROP_OBJECT_NAME,
PROP_OBJECT_TYPE,
PROP_PRESENT_VALUE,
PROP_TRACKING_VALUE,
PROP_STATUS_FLAGS,
PROP_EVENT_STATE,
PROP_OUT_OF_SERVICE,
PROP_RELIABILITY,
PROP_MODE,
PROP_ACCEPTED_MODES,
PROP_SILENCED,
PROP_OPERATION_EXPECTED,
-1
};
static const int Life_Safety_Point_Properties_Optional[] = {
PROP_DESCRIPTION,
PROP_DEVICE_TYPE,
PROP_NOTIFICATION_CLASS,
PROP_LIFE_SAFETY_ALARM_VALUES,
PROP_ALARM_VALUES,
PROP_FAULT_VALUES,
PROP_EVENT_ENABLE,
PROP_ACKED_TRANSITIONS,
PROP_NOTIFY_TYPE,
PROP_EVENT_TIME_STAMPS,
PROP_EVENT_MESSAGE_TEXTS,
PROP_MAINTENANCE_REQUIRED,
PROP_SETTING,
PROP_DIRECT_READING,
PROP_UNITS,
PROP_MEMBER_OF,
PROP_PROFILE_NAME,
-1
};
static const int Multistate_Input_Properties_Required[] = {
PROP_OBJECT_IDENTIFIER,
PROP_OBJECT_NAME,
PROP_OBJECT_TYPE,
PROP_PRESENT_VALUE,
PROP_STATUS_FLAGS,
PROP_EVENT_STATE,
PROP_OUT_OF_SERVICE,
PROP_NUMBER_OF_STATES,
-1
};
static const int Multistate_Input_Properties_Optional[] = {
PROP_DESCRIPTION,
PROP_DEVICE_TYPE,
PROP_RELIABILITY,
PROP_STATE_TEXT,
PROP_TIME_DELAY,
PROP_NOTIFICATION_CLASS,
PROP_ALARM_VALUES,
PROP_FAULT_VALUES,
PROP_EVENT_ENABLE,
PROP_ACKED_TRANSITIONS,
PROP_NOTIFY_TYPE,
PROP_EVENT_TIME_STAMPS,
PROP_EVENT_MESSAGE_TEXTS,
PROP_PROFILE_NAME,
-1
};
static const int Multistate_Output_Properties_Required[] = {
PROP_OBJECT_IDENTIFIER,
PROP_OBJECT_NAME,
PROP_OBJECT_TYPE,
PROP_PRESENT_VALUE,
PROP_STATUS_FLAGS,
PROP_EVENT_STATE,
PROP_OUT_OF_SERVICE,
PROP_NUMBER_OF_STATES,
PROP_PRIORITY_ARRAY,
PROP_RELINQUISH_DEFAULT,
-1
};
static const int Multistate_Output_Properties_Optional[] = {
PROP_DESCRIPTION,
PROP_DEVICE_TYPE,
PROP_RELIABILITY,
PROP_STATE_TEXT,
PROP_TIME_DELAY,
PROP_NOTIFICATION_CLASS,
PROP_FEEDBACK_VALUE,
PROP_EVENT_ENABLE,
PROP_ACKED_TRANSITIONS,
PROP_NOTIFY_TYPE,
PROP_EVENT_TIME_STAMPS,
PROP_EVENT_MESSAGE_TEXTS,
PROP_PROFILE_NAME,
-1
};
static const int Multistate_Value_Properties_Required[] = {
PROP_OBJECT_IDENTIFIER,
PROP_OBJECT_NAME,
PROP_OBJECT_TYPE,
PROP_PRESENT_VALUE,
PROP_STATUS_FLAGS,
PROP_EVENT_STATE,
PROP_OUT_OF_SERVICE,
PROP_NUMBER_OF_STATES,
-1
};
static const int Multistate_Value_Properties_Optional[] = {
PROP_DESCRIPTION,
PROP_RELIABILITY,
PROP_STATE_TEXT,
PROP_PRIORITY_ARRAY,
PROP_RELINQUISH_DEFAULT,
PROP_TIME_DELAY,
PROP_NOTIFICATION_CLASS,
PROP_ALARM_VALUES,
PROP_FAULT_VALUES,
PROP_EVENT_ENABLE,
PROP_ACKED_TRANSITIONS,
PROP_NOTIFY_TYPE,
PROP_EVENT_TIME_STAMPS,
PROP_EVENT_MESSAGE_TEXTS,
PROP_PROFILE_NAME,
-1
};
static const int Notification_Class_Properties_Required[] = {
PROP_OBJECT_IDENTIFIER,
PROP_OBJECT_NAME,
PROP_OBJECT_TYPE,
PROP_NOTIFICATION_CLASS,
PROP_PRIORITY,
PROP_ACK_REQUIRED,
PROP_RECIPIENT_LIST,
-1
};
static const int Notification_Class_Properties_Optional[] = {
PROP_DESCRIPTION,
PROP_PROFILE_NAME,
-1
};
static const int Trend_Log_Properties_Required[] = {
PROP_OBJECT_IDENTIFIER,
PROP_OBJECT_NAME,
PROP_OBJECT_TYPE,
PROP_ENABLE,
PROP_STOP_WHEN_FULL,
PROP_BUFFER_SIZE,
PROP_LOG_BUFFER,
PROP_RECORD_COUNT,
PROP_TOTAL_RECORD_COUNT,
PROP_EVENT_STATE,
PROP_LOGGING_TYPE,
PROP_STATUS_FLAGS,
-1
};
static const int Trend_Log_Properties_Optional[] = {
PROP_DESCRIPTION,
PROP_START_TIME,
PROP_STOP_TIME,
PROP_LOG_DEVICE_OBJECT_PROPERTY,
PROP_LOG_INTERVAL,
PROP_COV_RESUBSCRIPTION_INTERVAL,
PROP_CLIENT_COV_INCREMENT,
PROP_NOTIFICATION_THRESHOLD,
PROP_RECORDS_SINCE_NOTIFICATION,
PROP_LAST_NOTIFY_RECORD,
PROP_NOTIFICATION_CLASS,
PROP_EVENT_ENABLE,
PROP_ACKED_TRANSITIONS,
PROP_NOTIFY_TYPE,
PROP_EVENT_TIME_STAMPS,
PROP_EVENT_MESSAGE_TEXTS,
PROP_PROFILE_NAME,
PROP_ALIGN_INTERVALS,
PROP_INTERVAL_OFFSET,
PROP_TRIGGER,
PROP_RELIABILITY,
-1
};
/* Function that returns the number of properties in a list
*/
static unsigned property_list_count(
unsigned property_list_count(
const int *pList)
{
unsigned property_count = 0;
@@ -471,7 +698,7 @@ static unsigned property_list_count(
/* Function that returns the list of Required or Optional properties
* of known standard objects.
*/
void Property_List_Special(
void property_list_special(
BACNET_OBJECT_TYPE object_type,
struct special_property_list_t *pPropertyList)
{
@@ -481,68 +708,131 @@ void Property_List_Special(
pPropertyList->Proprietary.pList = NULL;
switch (object_type) {
case OBJECT_DEVICE:
pPropertyList->Required.pList = Device_Properties_Required;
pPropertyList->Optional.pList = Device_Properties_Optional;
pPropertyList->Required.pList =
Device_Properties_Required;
pPropertyList->Optional.pList =
Device_Properties_Optional;
break;
break;
case OBJECT_ACCUMULATOR:
pPropertyList->Required.pList = Accumulator_Properties_Required;
pPropertyList->Optional.pList = Accumulator_Properties_Optional;
pPropertyList->Required.pList =
Accumulator_Properties_Required;
pPropertyList->Optional.pList =
Accumulator_Properties_Optional;
break;
case OBJECT_ANALOG_INPUT:
pPropertyList->Required.pList = Analog_Input_Properties_Required;
pPropertyList->Optional.pList = Analog_Input_Properties_Optional;
pPropertyList->Required.pList =
Analog_Input_Properties_Required;
pPropertyList->Optional.pList =
Analog_Input_Properties_Optional;
break;
case OBJECT_ANALOG_OUTPUT:
pPropertyList->Required.pList = Analog_Output_Properties_Required;
pPropertyList->Optional.pList = Analog_Output_Properties_Optional;
pPropertyList->Required.pList =
Analog_Output_Properties_Required;
pPropertyList->Optional.pList =
Analog_Output_Properties_Optional;
break;
case OBJECT_ANALOG_VALUE:
pPropertyList->Required.pList = Analog_Value_Properties_Required;
pPropertyList->Optional.pList = Analog_Value_Properties_Optional;
pPropertyList->Required.pList =
Analog_Value_Properties_Required;
pPropertyList->Optional.pList =
Analog_Value_Properties_Optional;
break;
case OBJECT_AVERAGING:
pPropertyList->Required.pList = Averaging_Properties_Required;
pPropertyList->Optional.pList = Averaging_Properties_Optional;
pPropertyList->Required.pList =
Averaging_Properties_Required;
pPropertyList->Optional.pList =
Averaging_Properties_Optional;
break;
case OBJECT_BINARY_INPUT:
pPropertyList->Required.pList = Binary_Input_Properties_Required;
pPropertyList->Optional.pList = Binary_Input_Properties_Optional;
pPropertyList->Required.pList =
Binary_Input_Properties_Required;
pPropertyList->Optional.pList =
Binary_Input_Properties_Optional;
break;
case OBJECT_BINARY_OUTPUT:
pPropertyList->Required.pList = Binary_Output_Properties_Required;
pPropertyList->Optional.pList = Binary_Output_Properties_Optional;
pPropertyList->Required.pList =
Binary_Output_Properties_Required;
pPropertyList->Optional.pList =
Binary_Output_Properties_Optional;
break;
case OBJECT_BINARY_VALUE:
pPropertyList->Required.pList = Binary_Value_Properties_Required;
pPropertyList->Optional.pList = Binary_Value_Properties_Optional;
pPropertyList->Required.pList =
Binary_Value_Properties_Required;
pPropertyList->Optional.pList =
Binary_Value_Properties_Optional;
break;
case OBJECT_CALENDAR:
pPropertyList->Required.pList = Calendar_Properties_Required;
pPropertyList->Optional.pList = Calendar_Properties_Optional;
pPropertyList->Required.pList =
Calendar_Properties_Required;
pPropertyList->Optional.pList =
Calendar_Properties_Optional;
break;
case OBJECT_COMMAND:
pPropertyList->Required.pList = Command_Properties_Required;
pPropertyList->Optional.pList = Command_Properties_Optional;
pPropertyList->Required.pList =
Command_Properties_Required;
pPropertyList->Optional.pList =
Command_Properties_Optional;
break;
case OBJECT_CHARACTERSTRING_VALUE:
pPropertyList->Required.pList =
CharacterString_Value_Properties_Required;
pPropertyList->Optional.pList =
CharacterString_Value_Properties_Optional;
break;
case OBJECT_LOAD_CONTROL:
pPropertyList->Required.pList =
Load_Control_Properties_Required;
pPropertyList->Optional.pList =
Load_Control_Properties_Optional;
break;
case OBJECT_LIFE_SAFETY_POINT:
pPropertyList->Required.pList =
Life_Safety_Point_Properties_Required;
pPropertyList->Optional.pList =
Life_Safety_Point_Properties_Optional;
break;
case OBJECT_MULTI_STATE_INPUT:
pPropertyList->Required.pList =
Multistate_Input_Properties_Required;
pPropertyList->Optional.pList =
Multistate_Input_Properties_Optional;
break;
case OBJECT_MULTI_STATE_OUTPUT:
pPropertyList->Required.pList =
Multistate_Output_Properties_Required;
pPropertyList->Optional.pList =
Multistate_Output_Properties_Optional;
break;
case OBJECT_MULTI_STATE_VALUE:
pPropertyList->Required.pList =
Multistate_Value_Properties_Required;
pPropertyList->Optional.pList =
Multistate_Value_Properties_Optional;
break;
case OBJECT_NOTIFICATION_CLASS:
pPropertyList->Required.pList =
Notification_Class_Properties_Required;
pPropertyList->Optional.pList =
Notification_Class_Properties_Optional;
break;
case OBJECT_TRENDLOG:
pPropertyList->Required.pList =
Trend_Log_Properties_Required;
pPropertyList->Optional.pList =
Trend_Log_Properties_Optional;
break;
case OBJECT_EVENT_ENROLLMENT:
case OBJECT_FILE:
case OBJECT_GROUP:
case OBJECT_LOOP:
case OBJECT_MULTI_STATE_INPUT:
case OBJECT_MULTI_STATE_OUTPUT:
case OBJECT_NOTIFICATION_CLASS:
case OBJECT_PROGRAM:
case OBJECT_SCHEDULE:
case OBJECT_MULTI_STATE_VALUE:
case OBJECT_TRENDLOG:
case OBJECT_LIFE_SAFETY_POINT:
case OBJECT_LIFE_SAFETY_ZONE:
case OBJECT_PULSE_CONVERTER:
case OBJECT_EVENT_LOG:
case OBJECT_GLOBAL_GROUP:
case OBJECT_TREND_LOG_MULTIPLE:
case OBJECT_LOAD_CONTROL:
case OBJECT_STRUCTURED_VIEW:
case OBJECT_ACCESS_DOOR:
case OBJECT_LIGHTING_OUTPUT:
@@ -554,7 +844,6 @@ void Property_List_Special(
case OBJECT_CREDENTIAL_DATA_INPUT:
case OBJECT_NETWORK_SECURITY:
case OBJECT_BITSTRING_VALUE:
case OBJECT_CHARACTERSTRING_VALUE:
case OBJECT_DATE_PATTERN_VALUE:
case OBJECT_DATE_VALUE:
case OBJECT_DATETIME_PATTERN_VALUE:
@@ -570,6 +859,7 @@ void Property_List_Special(
pPropertyList->Proprietary.pList = NULL;
break;
default:
/* proprietary objects */
pPropertyList->Required.pList = Default_Properties_Required;
pPropertyList->Optional.pList = NULL;
pPropertyList->Proprietary.pList = NULL;