diff --git a/CHANGELOG.md b/CHANGELOG.md
index a209718a..5bda13a6 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -23,6 +23,8 @@ The git repositories are hosted at the following sites:
### Changed
+* Changed basic object API for units properties to use BACNET_ENGINEERING_UNITS
+ datatype. (#1104)
* Changed all the property list values into int32_t to support the larger
BACnet property enumerations when an int is 8-bit or 16-bit in size. (#1145)
diff --git a/ports/win32/Microsoft Visual Studio/bacnet-stack.props b/ports/win32/Microsoft Visual Studio/bacnet-stack.props
index a014b1e3..fe13ecd7 100644
--- a/ports/win32/Microsoft Visual Studio/bacnet-stack.props
+++ b/ports/win32/Microsoft Visual Studio/bacnet-stack.props
@@ -11,6 +11,7 @@
BACNET_STACK_STATIC_DEFINE;_UNICODE;UNICODE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)
4996
true
+ Level4
diff --git a/ports/win32/Microsoft Visual Studio/clang-format-win.bat b/ports/win32/Microsoft Visual Studio/clang-format-win.bat
new file mode 100644
index 00000000..9652e98a
--- /dev/null
+++ b/ports/win32/Microsoft Visual Studio/clang-format-win.bat
@@ -0,0 +1,15 @@
+@echo off
+
+rem Run clang-format over the source tree to conform to project requirements
+
+rem Open a Tools->Command Line->Developer Command Prompt from within Visual studio
+rem run clang-format-win.bat
+
+echo running clang-format
+
+cd ..\..\..
+
+for /R %%f in (*.c) do clang-format --style=file -i "%%f"
+for /R %%f in (*.h) do clang-format --style=file -i "%%f"
+
+cd "ports\win32\microsoft visual studio"
diff --git a/src/bacnet/basic/object/acc.c b/src/bacnet/basic/object/acc.c
index 1bd326ff..c7e36b69 100644
--- a/src/bacnet/basic/object/acc.c
+++ b/src/bacnet/basic/object/acc.c
@@ -206,9 +206,9 @@ bool Accumulator_Present_Value_Set(
*
* @return units property value
*/
-uint16_t Accumulator_Units(uint32_t object_instance)
+BACNET_ENGINEERING_UNITS Accumulator_Units(uint32_t object_instance)
{
- uint16_t units = UNITS_NO_UNITS;
+ BACNET_ENGINEERING_UNITS units = UNITS_NO_UNITS;
if (object_instance < MAX_ACCUMULATORS) {
units = UNITS_WATT_HOURS;
diff --git a/src/bacnet/basic/object/acc.h b/src/bacnet/basic/object/acc.h
index a25c60f3..8cd58ee0 100644
--- a/src/bacnet/basic/object/acc.h
+++ b/src/bacnet/basic/object/acc.h
@@ -52,9 +52,9 @@ bool Accumulator_Object_Name(
uint32_t object_instance, BACNET_CHARACTER_STRING *object_name);
BACNET_STACK_EXPORT
-bool Accumulator_Units_Set(uint32_t instance, uint16_t units);
+bool Accumulator_Units_Set(uint32_t instance, BACNET_ENGINEERING_UNITS units);
BACNET_STACK_EXPORT
-uint16_t Accumulator_Units(uint32_t instance);
+BACNET_ENGINEERING_UNITS Accumulator_Units(uint32_t instance);
BACNET_STACK_EXPORT
int Accumulator_Read_Property(BACNET_READ_PROPERTY_DATA *rpdata);
diff --git a/src/bacnet/basic/object/ai.c b/src/bacnet/basic/object/ai.c
index 2783e9e3..0b300637 100644
--- a/src/bacnet/basic/object/ai.c
+++ b/src/bacnet/basic/object/ai.c
@@ -599,9 +599,9 @@ void Analog_Input_COV_Increment_Set(uint32_t object_instance, float value)
*
* @return units property value
*/
-uint16_t Analog_Input_Units(uint32_t object_instance)
+BACNET_ENGINEERING_UNITS Analog_Input_Units(uint32_t object_instance)
{
- uint16_t units = UNITS_NO_UNITS;
+ BACNET_ENGINEERING_UNITS units = UNITS_NO_UNITS;
struct analog_input_descr *pObject;
pObject = Analog_Input_Object(object_instance);
@@ -620,7 +620,8 @@ uint16_t Analog_Input_Units(uint32_t object_instance)
*
* @return true if the units property value was set
*/
-bool Analog_Input_Units_Set(uint32_t object_instance, uint16_t units)
+bool Analog_Input_Units_Set(
+ uint32_t object_instance, BACNET_ENGINEERING_UNITS units)
{
bool status = false;
struct analog_input_descr *pObject;
diff --git a/src/bacnet/basic/object/ai.h b/src/bacnet/basic/object/ai.h
index 61786b6e..2f9a2232 100644
--- a/src/bacnet/basic/object/ai.h
+++ b/src/bacnet/basic/object/ai.h
@@ -95,9 +95,9 @@ bool Analog_Input_Reliability_Set(
uint32_t object_instance, BACNET_RELIABILITY value);
BACNET_STACK_EXPORT
-bool Analog_Input_Units_Set(uint32_t instance, uint16_t units);
+bool Analog_Input_Units_Set(uint32_t instance, BACNET_ENGINEERING_UNITS units);
BACNET_STACK_EXPORT
-uint16_t Analog_Input_Units(uint32_t instance);
+BACNET_ENGINEERING_UNITS Analog_Input_Units(uint32_t instance);
BACNET_STACK_EXPORT
int Analog_Input_Read_Property(BACNET_READ_PROPERTY_DATA *rpdata);
diff --git a/src/bacnet/basic/object/ao.c b/src/bacnet/basic/object/ao.c
index b8a4bfe7..d84c698b 100644
--- a/src/bacnet/basic/object/ao.c
+++ b/src/bacnet/basic/object/ao.c
@@ -42,7 +42,7 @@ struct object_data {
float Relinquish_Default;
float Min_Pres_Value;
float Max_Pres_Value;
- uint16_t Units;
+ BACNET_ENGINEERING_UNITS Units;
uint8_t Reliability;
const char *Object_Name;
const char *Description;
@@ -606,9 +606,9 @@ const char *Analog_Output_Name_ASCII(uint32_t object_instance)
*
* @return units property value
*/
-uint16_t Analog_Output_Units(uint32_t object_instance)
+BACNET_ENGINEERING_UNITS Analog_Output_Units(uint32_t object_instance)
{
- uint16_t units = UNITS_NO_UNITS;
+ BACNET_ENGINEERING_UNITS units = UNITS_NO_UNITS;
struct object_data *pObject;
pObject = Keylist_Data(Object_List, object_instance);
@@ -627,7 +627,8 @@ uint16_t Analog_Output_Units(uint32_t object_instance)
*
* @return true if the units property value was set
*/
-bool Analog_Output_Units_Set(uint32_t object_instance, uint16_t units)
+bool Analog_Output_Units_Set(
+ uint32_t object_instance, BACNET_ENGINEERING_UNITS units)
{
bool status = false;
struct object_data *pObject;
diff --git a/src/bacnet/basic/object/ao.h b/src/bacnet/basic/object/ao.h
index 06702168..5bc95640 100644
--- a/src/bacnet/basic/object/ao.h
+++ b/src/bacnet/basic/object/ao.h
@@ -100,9 +100,9 @@ BACNET_STACK_EXPORT
bool Analog_Output_Description_Set(uint32_t instance, const char *new_name);
BACNET_STACK_EXPORT
-bool Analog_Output_Units_Set(uint32_t instance, uint16_t units);
+bool Analog_Output_Units_Set(uint32_t instance, BACNET_ENGINEERING_UNITS units);
BACNET_STACK_EXPORT
-uint16_t Analog_Output_Units(uint32_t instance);
+BACNET_ENGINEERING_UNITS Analog_Output_Units(uint32_t instance);
BACNET_STACK_EXPORT
bool Analog_Output_Out_Of_Service(uint32_t instance);
diff --git a/src/bacnet/basic/object/av.c b/src/bacnet/basic/object/av.c
index 9874b6fe..3b388773 100644
--- a/src/bacnet/basic/object/av.c
+++ b/src/bacnet/basic/object/av.c
@@ -607,9 +607,9 @@ void Analog_Value_COV_Increment_Set(uint32_t object_instance, float value)
*
* @return units property value
*/
-uint16_t Analog_Value_Units(uint32_t object_instance)
+BACNET_ENGINEERING_UNITS Analog_Value_Units(uint32_t object_instance)
{
- uint16_t units = UNITS_NO_UNITS;
+ BACNET_ENGINEERING_UNITS units = UNITS_NO_UNITS;
struct analog_value_descr *pObject;
pObject = Analog_Value_Object(object_instance);
@@ -628,7 +628,8 @@ uint16_t Analog_Value_Units(uint32_t object_instance)
*
* @return true if the units property value was set
*/
-bool Analog_Value_Units_Set(uint32_t object_instance, uint16_t units)
+bool Analog_Value_Units_Set(
+ uint32_t object_instance, BACNET_ENGINEERING_UNITS units)
{
bool status = false;
struct analog_value_descr *pObject;
diff --git a/src/bacnet/basic/object/av.h b/src/bacnet/basic/object/av.h
index d155c191..a0e6eb30 100644
--- a/src/bacnet/basic/object/av.h
+++ b/src/bacnet/basic/object/av.h
@@ -28,7 +28,7 @@
typedef struct analog_value_descr {
unsigned Event_State : 3;
bool Out_Of_Service;
- uint16_t Units;
+ BACNET_ENGINEERING_UNITS Units;
float Present_Value;
float Prior_Value;
float COV_Increment;
@@ -135,9 +135,9 @@ bool Analog_Value_Reliability_Set(
uint32_t object_instance, BACNET_RELIABILITY value);
BACNET_STACK_EXPORT
-uint16_t Analog_Value_Units(uint32_t instance);
+BACNET_ENGINEERING_UNITS Analog_Value_Units(uint32_t instance);
BACNET_STACK_EXPORT
-bool Analog_Value_Units_Set(uint32_t instance, uint16_t unit);
+bool Analog_Value_Units_Set(uint32_t instance, BACNET_ENGINEERING_UNITS unit);
BACNET_STACK_EXPORT
bool Analog_Value_Out_Of_Service(uint32_t instance);
diff --git a/src/bacnet/basic/object/iv.c b/src/bacnet/basic/object/iv.c
index a86477eb..ca252d11 100644
--- a/src/bacnet/basic/object/iv.c
+++ b/src/bacnet/basic/object/iv.c
@@ -42,7 +42,7 @@ struct integer_object {
int32_t Present_Value;
int32_t Prior_Value;
uint32_t COV_Increment;
- uint16_t Units;
+ BACNET_ENGINEERING_UNITS Units;
uint32_t Instance;
const char *Object_Name;
const char *Description;
@@ -379,9 +379,9 @@ const char *Integer_Value_Description_ANSI(uint32_t object_instance)
*
* @return units property value
*/
-uint16_t Integer_Value_Units(uint32_t object_instance)
+BACNET_ENGINEERING_UNITS Integer_Value_Units(uint32_t object_instance)
{
- uint16_t units = UNITS_NO_UNITS;
+ BACNET_ENGINEERING_UNITS units = UNITS_NO_UNITS;
struct integer_object *pObject = Integer_Value_Object(object_instance);
if (pObject) {
@@ -399,7 +399,8 @@ uint16_t Integer_Value_Units(uint32_t object_instance)
*
* @return true if the units property value was set
*/
-bool Integer_Value_Units_Set(uint32_t object_instance, uint16_t units)
+bool Integer_Value_Units_Set(
+ uint32_t object_instance, BACNET_ENGINEERING_UNITS units)
{
bool status = false;
struct integer_object *pObject = Integer_Value_Object(object_instance);
@@ -465,7 +466,7 @@ int Integer_Value_Read_Property(BACNET_READ_PROPERTY_DATA *rpdata)
BACNET_BIT_STRING bit_string;
BACNET_CHARACTER_STRING char_string;
uint8_t *apdu = NULL;
- uint32_t units = 0;
+ BACNET_ENGINEERING_UNITS units;
int32_t integer_value = 0;
bool state = false;
@@ -516,7 +517,7 @@ int Integer_Value_Read_Property(BACNET_READ_PROPERTY_DATA *rpdata)
break;
case PROP_UNITS:
units = Integer_Value_Units(rpdata->object_instance);
- apdu_len = encode_application_enumerated(&apdu[0], units);
+ apdu_len = encode_application_enumerated(&apdu[0], (uint32_t)units);
break;
case PROP_COV_INCREMENT:
apdu_len = encode_application_unsigned(
diff --git a/src/bacnet/basic/object/iv.h b/src/bacnet/basic/object/iv.h
index 44a61020..82d2fba5 100644
--- a/src/bacnet/basic/object/iv.h
+++ b/src/bacnet/basic/object/iv.h
@@ -88,9 +88,9 @@ BACNET_STACK_EXPORT
const char *Integer_Value_Description_ANSI(uint32_t object_instance);
BACNET_STACK_EXPORT
-uint16_t Integer_Value_Units(uint32_t instance);
+BACNET_ENGINEERING_UNITS Integer_Value_Units(uint32_t instance);
BACNET_STACK_EXPORT
-bool Integer_Value_Units_Set(uint32_t instance, uint16_t unit);
+bool Integer_Value_Units_Set(uint32_t instance, BACNET_ENGINEERING_UNITS unit);
BACNET_STACK_EXPORT
bool Integer_Value_Out_Of_Service(uint32_t instance);
diff --git a/src/bacnet/basic/object/loop.c b/src/bacnet/basic/object/loop.c
index 00912572..c2705570 100644
--- a/src/bacnet/basic/object/loop.c
+++ b/src/bacnet/basic/object/loop.c
@@ -49,20 +49,20 @@ struct object_data {
/* variables for object properties */
uint32_t Update_Interval;
float Present_Value;
- uint16_t Output_Units;
+ BACNET_ENGINEERING_UNITS Output_Units;
BACNET_OBJECT_PROPERTY_REFERENCE Manipulated_Property_Reference;
- uint16_t Controlled_Variable_Units;
+ BACNET_ENGINEERING_UNITS Controlled_Variable_Units;
float Controlled_Variable_Value;
BACNET_OBJECT_PROPERTY_REFERENCE Controlled_Variable_Reference;
float Setpoint;
BACNET_OBJECT_PROPERTY_REFERENCE Setpoint_Reference;
BACNET_ACTION Action;
float Proportional_Constant;
- uint16_t Proportional_Constant_Units;
+ BACNET_ENGINEERING_UNITS Proportional_Constant_Units;
float Integral_Constant;
- uint16_t Integral_Constant_Units;
+ BACNET_ENGINEERING_UNITS Integral_Constant_Units;
float Derivative_Constant;
- uint16_t Derivative_Constant_Units;
+ BACNET_ENGINEERING_UNITS Derivative_Constant_Units;
float Bias;
float Maximum_Output;
float Minimum_Output;
@@ -590,9 +590,9 @@ bool Loop_Update_Interval_Set(uint32_t object_instance, uint32_t value)
* @param object_instance - object-instance number of the object
* @return output-units property value
*/
-uint16_t Loop_Output_Units(uint32_t object_instance)
+BACNET_ENGINEERING_UNITS Loop_Output_Units(uint32_t object_instance)
{
- uint16_t units = UNITS_NO_UNITS;
+ BACNET_ENGINEERING_UNITS units = UNITS_NO_UNITS;
struct object_data *pObject;
pObject = Keylist_Data(Object_List, object_instance);
@@ -609,7 +609,8 @@ uint16_t Loop_Output_Units(uint32_t object_instance)
* @param units - units property value
* @return true if the output-units property value was set
*/
-bool Loop_Output_Units_Set(uint32_t object_instance, uint16_t units)
+bool Loop_Output_Units_Set(
+ uint32_t object_instance, BACNET_ENGINEERING_UNITS units)
{
bool status = false;
struct object_data *pObject;
@@ -809,9 +810,10 @@ bool Loop_Controlled_Variable_Value_Set(uint32_t object_instance, float value)
* @param object_instance - object-instance number of the object
* @return output-units property value
*/
-uint16_t Loop_Controlled_Variable_Units(uint32_t object_instance)
+BACNET_ENGINEERING_UNITS
+Loop_Controlled_Variable_Units(uint32_t object_instance)
{
- uint16_t units = UNITS_NO_UNITS;
+ BACNET_ENGINEERING_UNITS units = UNITS_NO_UNITS;
struct object_data *pObject;
pObject = Keylist_Data(Object_List, object_instance);
@@ -830,7 +832,7 @@ uint16_t Loop_Controlled_Variable_Units(uint32_t object_instance)
* @return true if the output-units property value was set
*/
bool Loop_Controlled_Variable_Units_Set(
- uint32_t object_instance, uint16_t units)
+ uint32_t object_instance, BACNET_ENGINEERING_UNITS units)
{
bool status = false;
struct object_data *pObject;
@@ -1013,9 +1015,10 @@ bool Loop_Proportional_Constant_Set(uint32_t object_instance, float value)
* @param object_instance - object-instance number of the object
* @return units property value
*/
-uint16_t Loop_Proportional_Constant_Units(uint32_t object_instance)
+BACNET_ENGINEERING_UNITS
+Loop_Proportional_Constant_Units(uint32_t object_instance)
{
- uint16_t units = UNITS_NO_UNITS;
+ BACNET_ENGINEERING_UNITS units = UNITS_NO_UNITS;
struct object_data *pObject;
pObject = Keylist_Data(Object_List, object_instance);
@@ -1033,7 +1036,7 @@ uint16_t Loop_Proportional_Constant_Units(uint32_t object_instance)
* @return true if the units property value was set
*/
bool Loop_Proportional_Constant_Units_Set(
- uint32_t object_instance, uint16_t units)
+ uint32_t object_instance, BACNET_ENGINEERING_UNITS units)
{
bool status = false;
struct object_data *pObject;
@@ -1092,9 +1095,9 @@ bool Loop_Integral_Constant_Set(uint32_t object_instance, float value)
* @param object_instance - object-instance number of the object
* @return units property value
*/
-uint16_t Loop_Integral_Constant_Units(uint32_t object_instance)
+BACNET_ENGINEERING_UNITS Loop_Integral_Constant_Units(uint32_t object_instance)
{
- uint16_t units = UNITS_NO_UNITS;
+ BACNET_ENGINEERING_UNITS units = UNITS_NO_UNITS;
struct object_data *pObject;
pObject = Keylist_Data(Object_List, object_instance);
@@ -1111,7 +1114,8 @@ uint16_t Loop_Integral_Constant_Units(uint32_t object_instance)
* @param units - units property value
* @return true if the units property value was set
*/
-bool Loop_Integral_Constant_Units_Set(uint32_t object_instance, uint16_t units)
+bool Loop_Integral_Constant_Units_Set(
+ uint32_t object_instance, BACNET_ENGINEERING_UNITS units)
{
bool status = false;
struct object_data *pObject;
@@ -1170,9 +1174,10 @@ bool Loop_Derivative_Constant_Set(uint32_t object_instance, float value)
* @param object_instance - object-instance number of the object
* @return units property value
*/
-uint16_t Loop_Derivative_Constant_Units(uint32_t object_instance)
+BACNET_ENGINEERING_UNITS
+Loop_Derivative_Constant_Units(uint32_t object_instance)
{
- uint16_t units = UNITS_NO_UNITS;
+ BACNET_ENGINEERING_UNITS units = UNITS_NO_UNITS;
struct object_data *pObject;
pObject = Keylist_Data(Object_List, object_instance);
@@ -1190,7 +1195,7 @@ uint16_t Loop_Derivative_Constant_Units(uint32_t object_instance)
* @return true if the units property value was set
*/
bool Loop_Derivative_Constant_Units_Set(
- uint32_t object_instance, uint16_t units)
+ uint32_t object_instance, BACNET_ENGINEERING_UNITS units)
{
bool status = false;
struct object_data *pObject;
diff --git a/src/bacnet/basic/object/loop.h b/src/bacnet/basic/object/loop.h
index 4397e69a..df1a6e22 100644
--- a/src/bacnet/basic/object/loop.h
+++ b/src/bacnet/basic/object/loop.h
@@ -80,9 +80,9 @@ BACNET_STACK_EXPORT
bool Loop_Update_Interval_Set(uint32_t object_instance, uint32_t value);
BACNET_STACK_EXPORT
-uint16_t Loop_Output_Units(uint32_t instance);
+BACNET_ENGINEERING_UNITS Loop_Output_Units(uint32_t instance);
BACNET_STACK_EXPORT
-bool Loop_Output_Units_Set(uint32_t instance, uint16_t units);
+bool Loop_Output_Units_Set(uint32_t instance, BACNET_ENGINEERING_UNITS units);
BACNET_STACK_EXPORT
bool Loop_Manipulated_Variable_Reference(
@@ -104,9 +104,10 @@ BACNET_STACK_EXPORT
bool Loop_Controlled_Variable_Value_Set(uint32_t object_instance, float value);
BACNET_STACK_EXPORT
-uint16_t Loop_Controlled_Variable_Units(uint32_t instance);
+BACNET_ENGINEERING_UNITS Loop_Controlled_Variable_Units(uint32_t instance);
BACNET_STACK_EXPORT
-bool Loop_Controlled_Variable_Units_Set(uint32_t instance, uint16_t units);
+bool Loop_Controlled_Variable_Units_Set(
+ uint32_t instance, BACNET_ENGINEERING_UNITS units);
BACNET_STACK_EXPORT
bool Loop_Setpoint_Reference(
@@ -130,25 +131,28 @@ float Loop_Proportional_Constant(uint32_t object_instance);
BACNET_STACK_EXPORT
bool Loop_Proportional_Constant_Set(uint32_t object_instance, float value);
BACNET_STACK_EXPORT
-uint16_t Loop_Proportional_Constant_Units(uint32_t instance);
+BACNET_ENGINEERING_UNITS Loop_Proportional_Constant_Units(uint32_t instance);
BACNET_STACK_EXPORT
-bool Loop_Proportional_Constant_Units_Set(uint32_t instance, uint16_t units);
+bool Loop_Proportional_Constant_Units_Set(
+ uint32_t instance, BACNET_ENGINEERING_UNITS units);
BACNET_STACK_EXPORT
float Loop_Integral_Constant(uint32_t object_instance);
BACNET_STACK_EXPORT
bool Loop_Integral_Constant_Set(uint32_t object_instance, float value);
BACNET_STACK_EXPORT
-uint16_t Loop_Integral_Constant_Units(uint32_t instance);
+BACNET_ENGINEERING_UNITS Loop_Integral_Constant_Units(uint32_t instance);
BACNET_STACK_EXPORT
-bool Loop_Integral_Constant_Units_Set(uint32_t instance, uint16_t units);
+bool Loop_Integral_Constant_Units_Set(
+ uint32_t instance, BACNET_ENGINEERING_UNITS units);
BACNET_STACK_EXPORT
float Loop_Derivative_Constant(uint32_t object_instance);
BACNET_STACK_EXPORT
bool Loop_Derivative_Constant_Set(uint32_t object_instance, float value);
BACNET_STACK_EXPORT
-uint16_t Loop_Derivative_Constant_Units(uint32_t instance);
+BACNET_ENGINEERING_UNITS Loop_Derivative_Constant_Units(uint32_t instance);
BACNET_STACK_EXPORT
-bool Loop_Derivative_Constant_Units_Set(uint32_t instance, uint16_t units);
+bool Loop_Derivative_Constant_Units_Set(
+ uint32_t instance, BACNET_ENGINEERING_UNITS units);
BACNET_STACK_EXPORT
float Loop_Bias(uint32_t object_instance);
diff --git a/src/bacnet/basic/object/piv.c b/src/bacnet/basic/object/piv.c
index 0520aa5f..53a005b1 100644
--- a/src/bacnet/basic/object/piv.c
+++ b/src/bacnet/basic/object/piv.c
@@ -239,8 +239,8 @@ int PositiveInteger_Value_Read_Property(BACNET_READ_PROPERTY_DATA *rpdata)
break;
case PROP_UNITS:
- apdu_len =
- encode_application_enumerated(&apdu[0], CurrentAV->Units);
+ apdu_len = encode_application_enumerated(
+ &apdu[0], (uint32_t)CurrentAV->Units);
break;
/* BACnet Testing Observed Incident oi00109
Positive Integer Value / Units returned wrong datatype -
diff --git a/src/bacnet/basic/object/piv.h b/src/bacnet/basic/object/piv.h
index 2d827ad3..b6cc9c2b 100644
--- a/src/bacnet/basic/object/piv.h
+++ b/src/bacnet/basic/object/piv.h
@@ -23,7 +23,7 @@ extern "C" {
typedef struct positiveinteger_value_descr {
bool Out_Of_Service : 1;
uint32_t Present_Value;
- uint16_t Units;
+ BACNET_ENGINEERING_UNITS Units;
} POSITIVEINTEGER_VALUE_DESCR;
BACNET_STACK_EXPORT