Changed BACnetPropertyStates to support more enumerations. Added apdu size checking on decode. Removed BACnetPropertyStates local enumeration. Increased BACnetPropertyStates codec unit test coverage.

This commit is contained in:
Steve Karg
2024-01-05 16:00:42 -06:00
parent bb081d28da
commit ba4b0ca7c6
6 changed files with 980 additions and 286 deletions
+266 -2
View File
@@ -1036,7 +1036,46 @@ typedef enum {
PROP_STATE_ZONE_OCCUPANCY_STATE = 31,
PROP_STATE_ACCESS_CRED_DISABLE_REASON = 32,
PROP_STATE_ACCESS_CRED_DISABLE = 33,
PROP_STATE_AUTHENTICATION_STATUS = 34
PROP_STATE_AUTHENTICATION_STATUS = 34,
PROP_STATE_BACKUP_STATE = 36,
PROP_STATE_WRITE_STATUS = 37,
PROP_STATE_LIGHTING_IN_PROGRESS = 38,
PROP_STATE_LIGHTING_OPERATION = 39,
PROP_STATE_LIGHTING_TRANSITION = 40,
PROP_STATE_INTEGER_VALUE = 41,
PROP_STATE_BINARY_LIGHTING_VALUE = 42,
PROP_STATE_TIMER_STATE = 43,
PROP_STATE_TIMER_TRANSITION = 44,
PROP_STATE_BACNET_IP_MODE = 45,
PROP_STATE_NETWORK_PORT_COMMAND = 46,
PROP_STATE_NETWORK_TYPE = 47,
PROP_STATE_NETWORK_NUMBER_QUALITY = 48,
PROP_STATE_ESCALATOR_OPERATION_DIRECTION = 49,
PROP_STATE_ESCALATOR_FAULT = 50,
PROP_STATE_ESCALATOR_MODE = 51,
PROP_STATE_LIFT_CAR_DIRECTION = 52,
PROP_STATE_LIFT_CAR_DOOR_COMMAND = 53,
PROP_STATE_LIFT_CAR_DRIVE_STATUS = 54,
PROP_STATE_LIFT_CAR_MODE = 55,
PROP_STATE_LIFT_GROUP_MODE = 56,
PROP_STATE_LIFT_FAULT = 57,
PROP_STATE_PROTOCOL_LEVEL = 58,
PROP_STATE_AUDIT_LEVEL = 59,
PROP_STATE_AUDIT_OPERATION = 60,
PROP_STATE_EXTENDED_VALUE = 63,
PROP_STATE_EXAMPLE_ONE = 256,
PROP_STATE_EXAMPLE_TWO = 257,
/* Tag values greater than 254 are not encoded as ASN context tags.
In these cases, the tag value is multiplied
by 100000 and is added to the enumeration value
and the sum is encoded using context tag 63,
the extended-value choice.*/
/* Tag values 0-63 are reserved for definition by ASHRAE.
Tag values of 64-254 may be used by others to
accommodate vendor specific properties that have discrete
or enumerated values, subject to the constraints
described in Clause 23.*/
} BACNET_PROPERTY_STATES;
typedef enum {
@@ -2059,6 +2098,20 @@ typedef enum BACnetLightingTransition {
BACNET_LIGHTING_TRANSITION_PROPRIETARY_LAST = 255
} BACNET_LIGHTING_TRANSITION;
typedef enum BACnetBinaryLightingPV {
BINARY_LIGHTING_PV_OFF = 0,
BINARY_LIGHTING_PV_ON = 1,
BINARY_LIGHTING_PV_WARN = 2,
BINARY_LIGHTING_PV_WARN_OFF = 3,
BINARY_LIGHTING_PV_WARN_RELINQUISH = 4,
BINARY_LIGHTING_PV_STOP = 5,
/* -- Enumerated values 0-63 are reserved for definition by ASHRAE.
-- Enumerated values 64-255 may be used by others
-- subject to the procedures and constraints described in Clause 23. */
BINARY_LIGHTING_PV_PROPRIETARY_MIN = 64,
BINARY_LIGHTING_PV_PROPRIETARY_MAX = 255
} BACNET_BINARY_LIGHTING_PV;
typedef enum BACnetColorOperation {
BACNET_COLOR_OPERATION_NONE = 0,
BACNET_COLOR_OPERATION_FADE_TO_COLOR = 1,
@@ -2252,7 +2305,7 @@ typedef enum {
} BACNET_ACCESS_PASSBACK_MODE;
/* Access Zone Occupancy State */
typedef enum {
typedef enum BACnetAccessZoneOccupancyState {
ACCESS_ZONE_OCCUPANCY_STATE_NORMAL = 0,
ACCESS_ZONE_OCCUPANCY_STATE_BELOW_LOWER_LIMIT = 1,
ACCESS_ZONE_OCCUPANCY_STATE_AT_LOWER_LIMIT = 2,
@@ -2260,6 +2313,11 @@ typedef enum {
ACCESS_ZONE_OCCUPANCY_STATE_ABOVE_UPPER_LIMIT = 4,
ACCESS_ZONE_OCCUPANCY_STATE_DISABLED = 5,
ACCESS_ZONE_OCCUPANCY_STATE_NOT_SUPPORTED = 6
/* Enumerated values 0-63 are reserved for definition by ASHRAE.
Enumerated values 64-65535 may be used by others subject
to the procedures and constraints described in Clause 23. */
ACCESS_ZONE_OCCUPANCY_STATE_PROPRIETARY_MIN = 64,
ACCESS_ZONE_OCCUPANCY_STATE_PROPRIETARY_MAX = 65535
} BACNET_ACCESS_ZONE_OCCUPANCY_STATE;
/* Access User Type */
@@ -2520,4 +2578,210 @@ typedef enum BACnetIPMode_T {
BACNET_IP_MODE_BBMD = 2
} BACNET_IP_MODE;
typedef enum BACnetBackupState {
BACKUP_STATE_IDLE = 0,
BACKUP_STATE_PREPARING_FOR_BACKUP = 1,
BACKUP_STATE_PREPARING_FOR_RESTORE = 2,
BACKUP_STATE_PERFORMING_A_BACKUP = 3,
BACKUP_STATE_PERFORMING_A_RESTORE = 4,
BACKUP_STATE_BACKUP_FAILURE = 5,
BACKUP_STATE_RESTORE_FAILURE = 6
} BACNET_BACKUP_STATE;
typedef enum BACnetTimerState {
TIMER_STATE_IDLE = 0,
TIMER_STATE_RUNNING = 1,
TIMER_STATE_EXPIRED = 2
} BACNET_TIMER_STATE;
typedef enum BACnetTimerTransition {
TIMER_TRANSITION_NONE = 0,
TIMER_TRANSITION_IDLE_TO_RUNNING = 1,
TIMER_TRANSITION_RUNNING_TO_IDLE = 2,
TIMER_TRANSITION_RUNNING_TO_RUNNING = 3,
TIMER_TRANSITION_RUNNING_TO_EXPIRED = 4,
TIMER_TRANSITION_FORCED_TO_EXPIRED = 5,
TIMER_TRANSITION_EXPIRED_TO_IDLE = 6,
TIMER_TRANSITION_EXPIRED_TO_RUNNING = 7
} BACNET_TIMER_TRANSITION;
typedef enum BACnetEscalatorFault {
ESCALATOR_FAULT_CONTROLLER_FAULT = 0,
ESCALATOR_FAULT_DRIVE_AND_MOTOR_FAULT = 1,
ESCALATOR_FAULT_MECHANICAL_COMPONENT_FAULT = 2,
ESCALATOR_FAULT_OVERSPEED_FAULT = 3,
ESCALATOR_FAULT_POWER_SUPPLY_FAULT = 4,
ESCALATOR_FAULT_SAFETY_DEVICE_FAULT = 5,
ESCALATOR_FAULT_CONTROLLER_SUPPLY_FAULT = 6,
ESCALATOR_FAULT_DRIVE_TEMPERATURE_EXCEEDED = 7,
ESCALATOR_FAULT_COMB_PLATE_FAULT = 8,
/* Enumerated values 0-1023 are reserved for definition by ASHRAE.
Enumerated values 1024-65535 may be used by others subject to
the procedures and constraints described in Clause 23. */
ESCALATOR_FAULT_PROPRIETARY_MIN = 1024,
ESCALATOR_FAULT_PROPRIETARY_MAX = 65535
} BACNET_ESCALATOR_FAULT;
typedef enum BACnetEscalatorMode {
ESCALATOR_MODE_UNKNOWN = 0,
ESCALATOR_MODE_STOP = 1,
ESCALATOR_MODE_UP = 2,
ESCALATOR_MODE_DOWN = 3,
ESCALATOR_MODE_INSPECTION = 4,
ESCALATOR_MODE_OUT_OF_SERVICE = 5,
/* Enumerated values 0-1023 are reserved for definition by ASHRAE.
Enumerated values 1024-65535 may be used by others subject to
the procedures and constraints described in Clause 23. */
ESCALATOR_MODE_PROPRIETARY_MIN = 1024,
ESCALATOR_MODE_PROPRIETARY_MAX = 65535
} BACNET_ESCALATOR_MODE;
typedef enum BACnetEscalatorOperationDirection {
ESCALATOR_OPERATION_DIRECTION_UNKNOWN = 0,
ESCALATOR_OPERATION_DIRECTION_STOPPED = 1,
ESCALATOR_OPERATION_DIRECTION_UP_RATED_SPEED = 2,
ESCALATOR_OPERATION_DIRECTION_UP_REDUCED_SPEED = 3,
ESCALATOR_OPERATION_DIRECTION_DOWN_RATED_SPEED = 4,
ESCALATOR_OPERATION_DIRECTION_DOWN_REDUCED_SPEED = 5,
/* Enumerated values 0-1023 are reserved for definition by ASHRAE.
Enumerated values 1024-65535 may be used by others subject to
the procedures and constraints described in Clause 23. */
ESCALATOR_OPERATION_DIRECTION_PROPRIETARY_MIN = 1024,
ESCALATOR_OPERATION_DIRECTION_PROPRIETARY_MAX = 65535
} BACNET_ESCALATOR_OPERATION_DIRECTION;
typedef enum BACnetLiftCarDirection {
LIFT_CAR_DIRECTION_UNKNOWN = 0,
LIFT_CAR_DIRECTION_NONE = 1,
LIFT_CAR_DIRECTION_STOPPED = 2,
LIFT_CAR_DIRECTION_UP = 3,
LIFT_CAR_DIRECTION_DOWN = 4,
LIFT_CAR_DIRECTION_UP_AND_DOWN = 5,
/* Enumerated values 0-1023 are reserved for definition by ASHRAE.
Enumerated values 1024-65535 may be used by others subject to
the procedures and constraints described in Clause 23. */
LIFT_CAR_DIRECTION_PROPRIETARY_MIN = 1024,
LIFT_CAR_DIRECTION_PROPRIETARY_MAX = 65535
} BACNET_LIFT_CAR_DIRECTION;
typedef enum BACnetLiftCarDoorCommand {
LIFT_CAR_DOOR_COMMAND_NONE = 0,
LIFT_CAR_DOOR_COMMAND_OPEN = 1,
LIFT_CAR_DOOR_COMMAND_CLOSE = 2
} BACNET_LIFT_CAR_DOOR_COMMAND;
typedef enum BACnetLiftCarDriveStatus {
LIFT_CAR_DRIVE_STATUS_UNKNOWN = 0,
LIFT_CAR_DRIVE_STATUS_STATIONARY = 1,
LIFT_CAR_DRIVE_STATUS_BRAKING = 2,
LIFT_CAR_DRIVE_STATUS_ACCELERATE = 3,
LIFT_CAR_DRIVE_STATUS_DECELERATE = 4,
LIFT_CAR_DRIVE_STATUS_RATED_SPEED = 5,
LIFT_CAR_DRIVE_STATUS_SINGLE_FLOOR_JUMP = 6,
LIFT_CAR_DRIVE_STATUS_TWO_FLOOR_JUMP = 7,
LIFT_CAR_DRIVE_STATUS_THREE_FLOOR_JUMP = 8,
LIFT_CAR_DRIVE_STATUS_MULTI_FLOOR_JUMP = 9,
/* Enumerated values 0-1023 are reserved for definition by ASHRAE.
Enumerated values 1024-65535 may be used by others subject to
the procedures and constraints described in Clause 23. */
LIFT_CAR_DRIVE_STATUS_PROPRIETARY_MIN = 1024,
LIFT_CAR_DRIVE_STATUS_PROPRIETARY_MAX = 65535
} BACNET_LIFT_CAR_DRIVE_STATUS;
typedef enum BACnetLiftCarMode {
LIFT_CAR_MODE_UNKNOWN = 0,
LIFT_CAR_MODE_NORMAL = 1, /* in service */
LIFT_CAR_MODE_VIP = 2,
LIFT_CAR_MODE_HOMING = 3,
LIFT_CAR_MODE_PARKING = 4,
LIFT_CAR_MODE_ATTENDANT_CONTROL = 5,
LIFT_CAR_MODE_FIREFIGHTER_CONTROL = 6,
LIFT_CAR_MODE_EMERGENCY_POWER = 7,
LIFT_CAR_MODE_INSPECTION = 8,
LIFT_CAR_MODE_CABINET_RECALL = 9,
LIFT_CAR_MODE_EARTHQUAKE_OPERATION = 10,
LIFT_CAR_MODE_FIRE_OPERATION = 11,
LIFT_CAR_MODE_OUT_OF_SERVICE = 12,
LIFT_CAR_MODE_OCCUPANT_EVACUATION = 13,
/* Enumerated values 0-1023 are reserved for definition by ASHRAE.
Enumerated values 1024-65535 may be used by others subject to
the procedures and constraints described in Clause 23. */
LIFT_CAR_MODE_PROPRIETARY_MIN = 1024,
LIFT_CAR_MODE_PROPRIETARY_MAX = 65535
} BACNET_LIFT_CAR_MODE;
typedef enum BACnetLiftFault {
LIFT_FAULT_CONTROLLER_FAULT = 0,
LIFT_FAULT_DRIVE_AND_MOTOR_FAULT = 1,
LIFT_FAULT_GOVERNOR_AND_SAFETY_GEAR_FAULT = 2,
LIFT_FAULT_LIFT_SHAFT_DEVICE_FAULT = 3,
LIFT_FAULT_POWER_SUPPLY_FAULT = 4,
LIFT_FAULT_SAFETY_INTERLOCK_FAULT = 5,
LIFT_FAULT_DOOR_CLOSING_FAULT = 6,
LIFT_FAULT_DOOR_OPENING_FAULT = 7,
LIFT_FAULT_CAR_STOPPED_OUTSIDE_LANDING_ZONE = 8,
LIFT_FAULT_CALL_BUTTON_STUCK = 9,
LIFT_FAULT_START_FAILURE = 10,
LIFT_FAULT_CONTROLLER_SUPPLY_FAULT = 11,
LIFT_FAULT_SELF_TEST_FAILURE = 12,
LIFT_FAULT_RUNTIME_LIMIT_EXCEEDED = 13,
LIFT_FAULT_POSITION_LOST = 14,
LIFT_FAULT_DRIVE_TEMPERATURE_EXCEEDED = 15,
LIFT_FAULT_LOAD_MEASUREMENT_FAULT = 16,
/* Enumerated values 0-1023 are reserved for definition by ASHRAE.
Enumerated values 1024-65535 may be used by others subject to
the procedures and constraints described in Clause 23. */
LIFT_FAULT_PROPRIETARY_MIN = 1024,
LIFT_FAULT_PROPRIETARY_MAX = 65535
} BACNET_LIFT_FAULT;
typedef enum BACnetLiftGroupMode {
LIFT_GROUP_MODE_UNKNOWN = 0,
LIFT_GROUP_MODE_NORMAL = 1,
LIFT_GROUP_MODE_DOWN_PEAK = 2,
LIFT_GROUP_MODE_TWO_WAY = 3,
LIFT_GROUP_MODE_FOUR_WAY = 4,
LIFT_GROUP_MODE_EMERGENCY_POWER = 5,
LIFT_GROUP_MODE_UP_PEAK = 6
} BACNET_LIFT_GROUP_MODE;
typedef enum BACnetAuditLevel {
AUDIT_LEVEL_NONE = 0,
AUDIT_LEVEL_AUDIT_ALL = 1,
AUDIT_LEVEL_AUDIT_CONFIG = 2,
AUDIT_LEVEL_DEFAULT = 3,
/* Enumerated values 0-127 are reserved for definition by ASHRAE.
Enumerated values 128-255 may be used by others subject to
the procedures and constraints described in Clause 23. */
AUDIT_LEVEL_PROPRIETARY_MIN = 128,
AUDIT_LEVEL_PROPRIETARY_MAX = 255
} BACNET_AUDIT_LEVEL;
typedef enum BACnetAuditOperation {
AUDIT_OPERATION_READ = 0,
AUDIT_OPERATION_WRITE = 1,
AUDIT_OPERATION_CREATE = 2,
AUDIT_OPERATION_DELETE = 3,
AUDIT_OPERATION_LIFE_SAFETY = 4,
AUDIT_OPERATION_ACKNOWLEDGE_ALARM = 5,
AUDIT_OPERATION_DEVICE_DISABLE_COMM = 6,
AUDIT_OPERATION_DEVICE_ENABLE_COMM = 7,
AUDIT_OPERATION_DEVICE_RESET = 8,
AUDIT_OPERATION_DEVICE_BACKUP = 9,
AUDIT_OPERATION_DEVICE_RESTORE = 10,
AUDIT_OPERATION_SUBSCRIPTION = 11,
AUDIT_OPERATION_NOTIFICATION = 12,
AUDIT_OPERATION_AUDITING_FAILURE = 13,
AUDIT_OPERATION_NETWORK_CHANGES = 14,
AUDIT_OPERATION_GENERAL = 15,
/* Enumerated values 0-31 are reserved for definition by ASHRAE.
Enumerated values 32-63 may be used by others subject to
the procedures and constraints described in Clause 23.
The enumerated values match the bit positions in
BACnetAuditOperationFlags. */
AUDIT_OPERATION_PROPRIETARY_MIN = 32,
AUDIT_OPERATION_PROPRIETARY_MAX = 63
} BACNET_AUDIT_OPERATION;
#endif /* end of BACENUM_H */