Fixed EOL and performed standard indentation.

This commit is contained in:
skarg
2010-09-16 22:00:47 +00:00
parent 092834b2d9
commit 9569f2c536
53 changed files with 523 additions and 530 deletions
+23 -24
View File
@@ -304,9 +304,9 @@ static void Init_Service_Handlers(
bool PrettyPrintPropertyValue( bool PrettyPrintPropertyValue(
FILE * stream, FILE * stream,
BACNET_OBJECT_PROPERTY_VALUE *object_value) BACNET_OBJECT_PROPERTY_VALUE * object_value)
{ {
BACNET_APPLICATION_DATA_VALUE * value = NULL; BACNET_APPLICATION_DATA_VALUE *value = NULL;
bool status = true; /*return value */ bool status = true; /*return value */
size_t len = 0, i = 0, j = 0; size_t len = 0, i = 0, j = 0;
BACNET_PROPERTY_ID property = PROP_ALL; BACNET_PROPERTY_ID property = PROP_ALL;
@@ -383,7 +383,7 @@ void PrintReadPropertyData(
uint32_t object_instance, uint32_t object_instance,
BACNET_PROPERTY_REFERENCE * rpm_property) BACNET_PROPERTY_REFERENCE * rpm_property)
{ {
BACNET_OBJECT_PROPERTY_VALUE object_value; /* for bacapp printing */ BACNET_OBJECT_PROPERTY_VALUE object_value; /* for bacapp printing */
BACNET_APPLICATION_DATA_VALUE *value, *old_value; BACNET_APPLICATION_DATA_VALUE *value, *old_value;
bool print_brace = false; bool print_brace = false;
KEY object_list_element; KEY object_list_element;
@@ -406,9 +406,8 @@ void PrintReadPropertyData(
if ((value != NULL) && (value->next != NULL)) { if ((value != NULL) && (value->next != NULL)) {
/* Then this is an array of values. /* Then this is an array of values.
* But are we showing Values? We (VTS3) want ? instead of {?,?} to show up. */ * But are we showing Values? We (VTS3) want ? instead of {?,?} to show up. */
switch( rpm_property->propertyIdentifier ) switch (rpm_property->propertyIdentifier) {
{ /* Screen the Properties that can be arrays or Sequences */
/* Screen the Properties that can be arrays or Sequences */
case PROP_PRESENT_VALUE: case PROP_PRESENT_VALUE:
case PROP_PRIORITY_ARRAY: case PROP_PRIORITY_ARRAY:
if (!ShowValues) { if (!ShowValues) {
@@ -417,7 +416,8 @@ void PrintReadPropertyData(
* print anything for them. To achieve this, swap * print anything for them. To achieve this, swap
* out the Property for a non-existent Property * out the Property for a non-existent Property
* and catch that below. */ * and catch that below. */
rpm_property->propertyIdentifier = PROP_PROTOCOL_CONFORMANCE_CLASS; rpm_property->propertyIdentifier =
PROP_PROTOCOL_CONFORMANCE_CLASS;
break; break;
} }
/* Else, fall through to normal processing. */ /* Else, fall through to normal processing. */
@@ -473,8 +473,8 @@ void PrintReadPropertyData(
} }
if (rpm_property->propertyIdentifier == PROP_OBJECT_LIST) { if (rpm_property->propertyIdentifier == PROP_OBJECT_LIST) {
if ( value->tag != BACNET_APPLICATION_TAG_OBJECT_ID) { if (value->tag != BACNET_APPLICATION_TAG_OBJECT_ID) {
assert(value->tag == BACNET_APPLICATION_TAG_OBJECT_ID); /* Something not right here */ assert(value->tag == BACNET_APPLICATION_TAG_OBJECT_ID); /* Something not right here */
break; break;
} }
/* Store the object list so we can interrogate /* Store the object list so we can interrogate
@@ -501,7 +501,7 @@ void PrintReadPropertyData(
} else if (rpm_property->propertyIdentifier == } else if (rpm_property->propertyIdentifier ==
PROP_SUBORDINATE_LIST) { PROP_SUBORDINATE_LIST) {
if (value->tag != BACNET_APPLICATION_TAG_OBJECT_ID) { if (value->tag != BACNET_APPLICATION_TAG_OBJECT_ID) {
assert(value->tag == BACNET_APPLICATION_TAG_OBJECT_ID); /* Something not right here */ assert(value->tag == BACNET_APPLICATION_TAG_OBJECT_ID); /* Something not right here */
break; break;
} }
/* TODO: handle Sequence of { Device ObjID, Object ID }, */ /* TODO: handle Sequence of { Device ObjID, Object ID }, */
@@ -531,7 +531,7 @@ void PrintReadPropertyData(
PrettyPrintPropertyValue(stdout, &object_value); PrettyPrintPropertyValue(stdout, &object_value);
break; break;
/* Our special non-existent case; do nothing further here. */ /* Our special non-existent case; do nothing further here. */
case PROP_PROTOCOL_CONFORMANCE_CLASS: case PROP_PROTOCOL_CONFORMANCE_CLASS:
break; break;
@@ -730,10 +730,8 @@ EPICS_STATES ProcessRPMData(
fprintf(stdout, " "); fprintf(stdout, " ");
Print_Property_Identifier(rpm_property->propertyIdentifier); Print_Property_Identifier(rpm_property->propertyIdentifier);
fprintf(stdout, ": "); fprintf(stdout, ": ");
PrintReadPropertyData( PrintReadPropertyData(rpm_data->object_type,
rpm_data->object_type, rpm_data->object_instance, rpm_property);
rpm_data->object_instance,
rpm_property);
} }
old_rpm_property = rpm_property; old_rpm_property = rpm_property;
rpm_property = rpm_property->next; rpm_property = rpm_property->next;
@@ -893,7 +891,7 @@ int main(
int argc, int argc,
char *argv[]) char *argv[])
{ {
BACNET_ADDRESS src; /* address where message came from */ BACNET_ADDRESS src; /* address where message came from */
uint16_t pdu_len = 0; uint16_t pdu_len = 0;
unsigned timeout = 100; /* milliseconds */ unsigned timeout = 100; /* milliseconds */
unsigned max_apdu = 0; unsigned max_apdu = 0;
@@ -909,7 +907,7 @@ int main(
KEY nextKey; KEY nextKey;
CheckCommandLineArgs(argc, argv); /* Won't return if there is an issue. */ CheckCommandLineArgs(argc, argv); /* Won't return if there is an issue. */
memset(&src, 0, sizeof( BACNET_ADDRESS)); memset(&src, 0, sizeof(BACNET_ADDRESS));
/* setup my info */ /* setup my info */
Device_Set_Object_Instance_Number(BACNET_MAX_INSTANCE); Device_Set_Object_Instance_Number(BACNET_MAX_INSTANCE);
@@ -984,7 +982,7 @@ int main(
fprintf(stderr, fprintf(stderr,
"\rError: Unable to bind" "\rError: Unable to bind"
" after waiting %ld seconds.\r\n", " after waiting %ld seconds.\r\n",
(long int)elapsed_seconds); (long int) elapsed_seconds);
break; break;
} }
/* else, loop back and try again */ /* else, loop back and try again */
@@ -1044,7 +1042,7 @@ int main(
elapsed_seconds = 0; elapsed_seconds = 0;
invoke_id = 0; invoke_id = 0;
if (Error_Detected) { if (Error_Detected) {
/* The normal case for Device Object */ /* The normal case for Device Object */
/* Was it because the Device can't do RPM? */ /* Was it because the Device can't do RPM? */
if (Last_Error_Code == if (Last_Error_Code ==
ERROR_CODE_REJECT_UNRECOGNIZED_SERVICE) { ERROR_CODE_REJECT_UNRECOGNIZED_SERVICE) {
@@ -1108,10 +1106,11 @@ int main(
(invoke_id == (invoke_id ==
Read_Property_Multiple_Data.service_data.invoke_id)) { Read_Property_Multiple_Data.service_data.invoke_id)) {
Read_Property_Multiple_Data.new_data = false; Read_Property_Multiple_Data.new_data = false;
PrintReadPropertyData( PrintReadPropertyData(Read_Property_Multiple_Data.
Read_Property_Multiple_Data.rpm_data->object_type, rpm_data->object_type,
Read_Property_Multiple_Data.rpm_data->object_instance, Read_Property_Multiple_Data.rpm_data->object_instance,
Read_Property_Multiple_Data.rpm_data->listOfProperties); Read_Property_Multiple_Data.rpm_data->
listOfProperties);
if (tsm_invoke_id_free(invoke_id)) { if (tsm_invoke_id_free(invoke_id)) {
invoke_id = 0; invoke_id = 0;
} else { } else {
@@ -1194,7 +1193,7 @@ int main(
printf(" { \r\n"); printf(" { \r\n");
/* Test code: /* Test code:
if ( myObject.type == OBJECT_STRUCTURED_VIEW ) if ( myObject.type == OBJECT_STRUCTURED_VIEW )
printf( " -- Structured View %d \n", myObject.instance ); printf( " -- Structured View %d \n", myObject.instance );
*/ */
} else { } else {
/* Closing brace for the last Object */ /* Closing brace for the last Object */
@@ -1224,7 +1223,7 @@ int main(
elapsed_seconds += (current_seconds - last_seconds); elapsed_seconds += (current_seconds - last_seconds);
if (elapsed_seconds > timeout_seconds) { if (elapsed_seconds > timeout_seconds) {
fprintf(stderr, "\rError: APDU Timeout! (%lds)\r\n", fprintf(stderr, "\rError: APDU Timeout! (%lds)\r\n",
(long int)elapsed_seconds); (long int) elapsed_seconds);
break; break;
} }
} }
+8 -6
View File
@@ -346,8 +346,9 @@ static bool cov_send_request(
value_list[1].next = NULL; value_list[1].next = NULL;
switch (cov_subscription->monitoredObjectIdentifier.type) { switch (cov_subscription->monitoredObjectIdentifier.type) {
case OBJECT_BINARY_INPUT: case OBJECT_BINARY_INPUT:
Binary_Input_Encode_Value_List(cov_subscription-> Binary_Input_Encode_Value_List
monitoredObjectIdentifier.instance, &value_list[0]); (cov_subscription->monitoredObjectIdentifier.instance,
&value_list[0]);
break; break;
default: default:
goto COV_FAILED; goto COV_FAILED;
@@ -464,8 +465,8 @@ static bool cov_subscribe(
switch (cov_data->monitoredObjectIdentifier.type) { switch (cov_data->monitoredObjectIdentifier.type) {
case OBJECT_BINARY_INPUT: case OBJECT_BINARY_INPUT:
if (Binary_Input_Valid_Instance(cov_data-> if (Binary_Input_Valid_Instance
monitoredObjectIdentifier.instance)) { (cov_data->monitoredObjectIdentifier.instance)) {
status = status =
cov_list_subscribe(src, cov_data, error_class, error_code); cov_list_subscribe(src, cov_data, error_class, error_code);
} else { } else {
@@ -546,8 +547,9 @@ void handler_cov_subscribe(
} }
cov_data.error_class = ERROR_CLASS_OBJECT; cov_data.error_class = ERROR_CLASS_OBJECT;
cov_data.error_code = ERROR_CODE_UNKNOWN_OBJECT; cov_data.error_code = ERROR_CODE_UNKNOWN_OBJECT;
success = cov_subscribe(src, &cov_data, success =
&cov_data.error_class, &cov_data.error_code); cov_subscribe(src, &cov_data, &cov_data.error_class,
&cov_data.error_code);
if (success) { if (success) {
apdu_len = apdu_len =
encode_simple_ack(&Handler_Transmit_Buffer[npdu_len], encode_simple_ack(&Handler_Transmit_Buffer[npdu_len],
+1 -1
View File
@@ -55,7 +55,7 @@ void npdu_handler(
if (npdu_data.network_layer_message) { if (npdu_data.network_layer_message) {
/*FIXME: network layer message received! Handle it! */ /*FIXME: network layer message received! Handle it! */
#if PRINT_ENABLED #if PRINT_ENABLED
fprintf(stderr,"NPDU: Network Layer Message discarded!\n"); fprintf(stderr, "NPDU: Network Layer Message discarded!\n");
#endif #endif
} else if ((apdu_offset > 0) && (apdu_offset <= pdu_len)) { } else if ((apdu_offset > 0) && (apdu_offset <= pdu_len)) {
if ((dest.net == 0) || (dest.net == BACNET_BROADCAST_NETWORK)) { if ((dest.net == 0) || (dest.net == BACNET_BROADCAST_NETWORK)) {
+1 -1
View File
@@ -88,7 +88,7 @@ void handler_read_property(
npdu_len = npdu_len =
npdu_encode_pdu(&Handler_Transmit_Buffer[0], src, &my_address, npdu_encode_pdu(&Handler_Transmit_Buffer[0], src, &my_address,
&npdu_data); &npdu_data);
if (service_data->segmented_message) { if (service_data->segmented_message) {
/* we don't support segmentation - send an abort */ /* we don't support segmentation - send an abort */
len = BACNET_STATUS_ABORT; len = BACNET_STATUS_ABORT;
#if PRINT_ENABLED #if PRINT_ENABLED
+1 -1
View File
@@ -49,7 +49,7 @@
void rp_ack_print_data( void rp_ack_print_data(
BACNET_READ_PROPERTY_DATA * data) BACNET_READ_PROPERTY_DATA * data)
{ {
BACNET_OBJECT_PROPERTY_VALUE object_value; /* for bacapp printing */ BACNET_OBJECT_PROPERTY_VALUE object_value; /* for bacapp printing */
BACNET_APPLICATION_DATA_VALUE value; /* for decode value data */ BACNET_APPLICATION_DATA_VALUE value; /* for decode value data */
int len = 0; int len = 0;
uint8_t *application_data; uint8_t *application_data;
+5 -6
View File
@@ -227,10 +227,10 @@ void handler_read_property_multiple(
len = len =
rpm_decode_object_id(&service_request[decode_len], rpm_decode_object_id(&service_request[decode_len],
service_len - decode_len, &rpmdata); service_len - decode_len, &rpmdata);
if (len >= 0) { if (len >= 0) {
/* Got one so skip to next stage */ /* Got one so skip to next stage */
decode_len += len; decode_len += len;
} else { } else {
/* bad encoding - skip to error/reject/abort handling */ /* bad encoding - skip to error/reject/abort handling */
#if PRINT_ENABLED #if PRINT_ENABLED
fprintf(stderr, "RPM: Bad Encoding.\n"); fprintf(stderr, "RPM: Bad Encoding.\n");
@@ -260,7 +260,7 @@ void handler_read_property_multiple(
len = len =
rpm_decode_object_property(&service_request[decode_len], rpm_decode_object_property(&service_request[decode_len],
service_len - decode_len, &rpmdata); service_len - decode_len, &rpmdata);
if (len < 0) { if (len < 0) {
/* bad encoding - skip to error/reject/abort handling */ /* bad encoding - skip to error/reject/abort handling */
#if PRINT_ENABLED #if PRINT_ENABLED
fprintf(stderr, "RPM: Bad Encoding.\n"); fprintf(stderr, "RPM: Bad Encoding.\n");
@@ -378,7 +378,7 @@ void handler_read_property_multiple(
break; /* finished with this property list */ break; /* finished with this property list */
} }
} }
if (decode_len >= service_len) { if (decode_len >= service_len) {
/* Reached the end so finish up */ /* Reached the end so finish up */
break; break;
} }
@@ -386,8 +386,7 @@ void handler_read_property_multiple(
if (apdu_len > service_data->max_resp) { if (apdu_len > service_data->max_resp) {
/* too big for the sender - send an abort */ /* too big for the sender - send an abort */
rpmdata.error_code = rpmdata.error_code = ERROR_CODE_ABORT_SEGMENTATION_NOT_SUPPORTED;
ERROR_CODE_ABORT_SEGMENTATION_NOT_SUPPORTED;
error = BACNET_STATUS_ABORT; error = BACNET_STATUS_ABORT;
#if PRINT_ENABLED #if PRINT_ENABLED
fprintf(stderr, "RPM: Message too large. Sending Abort!\n"); fprintf(stderr, "RPM: Message too large. Sending Abort!\n");
+10 -13
View File
@@ -202,7 +202,7 @@ int rpm_ack_decode_service_request(
void rpm_ack_print_data( void rpm_ack_print_data(
BACNET_READ_ACCESS_DATA * rpm_data) BACNET_READ_ACCESS_DATA * rpm_data)
{ {
BACNET_OBJECT_PROPERTY_VALUE object_value; /* for bacapp printing */ BACNET_OBJECT_PROPERTY_VALUE object_value; /* for bacapp printing */
BACNET_PROPERTY_REFERENCE *listOfProperties; BACNET_PROPERTY_REFERENCE *listOfProperties;
BACNET_APPLICATION_DATA_VALUE *value; BACNET_APPLICATION_DATA_VALUE *value;
bool array_value = false; bool array_value = false;
@@ -219,8 +219,8 @@ void rpm_ack_print_data(
#if PRINT_ENABLED #if PRINT_ENABLED
if (listOfProperties->propertyIdentifier < 512) { if (listOfProperties->propertyIdentifier < 512) {
fprintf(stdout, " %s: ", fprintf(stdout, " %s: ",
bactext_property_name bactext_property_name(listOfProperties->
(listOfProperties->propertyIdentifier)); propertyIdentifier));
} else { } else {
fprintf(stdout, " proprietary %u: ", fprintf(stdout, " proprietary %u: ",
(unsigned) listOfProperties->propertyIdentifier); (unsigned) listOfProperties->propertyIdentifier);
@@ -241,17 +241,14 @@ void rpm_ack_print_data(
array_value = false; array_value = false;
} }
#endif #endif
object_value.object_type = object_value.object_type = rpm_data->object_type;
rpm_data->object_type; object_value.object_instance = rpm_data->object_instance;
object_value.object_instance =
rpm_data->object_instance;
while (value) { while (value) {
object_value.object_property = object_value.object_property =
listOfProperties->propertyIdentifier; listOfProperties->propertyIdentifier;
object_value.array_index = object_value.array_index =
listOfProperties->propertyArrayIndex; listOfProperties->propertyArrayIndex;
object_value.value = object_value.value = listOfProperties->value;
listOfProperties->value;
bacapp_print_value(stdout, &object_value); bacapp_print_value(stdout, &object_value);
#if PRINT_ENABLED #if PRINT_ENABLED
if (value->next) { if (value->next) {
@@ -270,10 +267,10 @@ void rpm_ack_print_data(
#if PRINT_ENABLED #if PRINT_ENABLED
/* AccessError */ /* AccessError */
fprintf(stdout, "BACnet Error: %s: %s\r\n", fprintf(stdout, "BACnet Error: %s: %s\r\n",
bactext_error_class_name((int) listOfProperties->error. bactext_error_class_name((int) listOfProperties->
error_class), error.error_class),
bactext_error_code_name((int) listOfProperties->error. bactext_error_code_name((int) listOfProperties->
error_code)); error.error_code));
#endif #endif
} }
listOfProperties = listOfProperties->next; listOfProperties = listOfProperties->next;
+1 -1
View File
@@ -46,7 +46,7 @@
static void PrintReadRangeData( static void PrintReadRangeData(
BACNET_READ_RANGE_DATA * data) BACNET_READ_RANGE_DATA * data)
{ {
BACNET_OBJECT_PROPERTY_VALUE object_value; /* for bacapp printing */ BACNET_OBJECT_PROPERTY_VALUE object_value; /* for bacapp printing */
BACNET_APPLICATION_DATA_VALUE value; /* for decode value data */ BACNET_APPLICATION_DATA_VALUE value; /* for decode value data */
int len = 0; int len = 0;
uint8_t *application_data; uint8_t *application_data;
+2 -2
View File
@@ -104,8 +104,8 @@ void handler_ucov_notification(
fprintf(stderr, "UCOV: "); fprintf(stderr, "UCOV: ");
if (pProperty_value->propertyIdentifier < 512) { if (pProperty_value->propertyIdentifier < 512) {
fprintf(stderr, "%s ", fprintf(stderr, "%s ",
bactext_property_name(pProperty_value-> bactext_property_name
propertyIdentifier)); (pProperty_value->propertyIdentifier));
} else { } else {
fprintf(stderr, "proprietary %u ", fprintf(stderr, "proprietary %u ",
pProperty_value->propertyIdentifier); pProperty_value->propertyIdentifier);
+2 -2
View File
@@ -177,8 +177,8 @@ bool WPValidateString(
(characterstring_length(&pValue->type.Character_String) == (characterstring_length(&pValue->type.Character_String) ==
0)) { 0)) {
*pErrorCode = ERROR_CODE_VALUE_OUT_OF_RANGE; *pErrorCode = ERROR_CODE_VALUE_OUT_OF_RANGE;
} else if (characterstring_length(&pValue->type. } else if (characterstring_length(&pValue->
Character_String) >= iMaxLen) { type.Character_String) >= iMaxLen) {
*pErrorClass = ERROR_CLASS_RESOURCES; *pErrorClass = ERROR_CLASS_RESOURCES;
*pErrorCode = ERROR_CODE_NO_SPACE_TO_WRITE_PROPERTY; *pErrorCode = ERROR_CODE_NO_SPACE_TO_WRITE_PROPERTY;
} else } else
+3 -2
View File
@@ -155,8 +155,9 @@ uint8_t Send_Write_Property_Request(
#if PRINT_ENABLED_DEBUG #if PRINT_ENABLED_DEBUG
fprintf(stderr, "WriteProperty service: " "%s tag=%d\n", fprintf(stderr, "WriteProperty service: " "%s tag=%d\n",
(object_value->context_specific ? "context" : "application"), (object_value->context_specific ? "context" : "application"),
(int) (object_value->context_specific ? object_value-> (int) (object_value->
context_tag : object_value->tag)); context_specific ? object_value->context_tag : object_value->
tag));
#endif #endif
len = bacapp_encode_data(&application_data[apdu_len], object_value); len = bacapp_encode_data(&application_data[apdu_len], object_value);
if ((len + apdu_len) < MAX_APDU) { if ((len + apdu_len) < MAX_APDU) {
+2 -3
View File
@@ -634,8 +634,8 @@ int main(
packet_count++; packet_count++;
} }
if (!(packet_count % 100)) { if (!(packet_count % 100)) {
fprintf(stdout, "\r%hu packets, %hu invalid frames", fprintf(stdout, "\r%hu packets, %hu invalid frames", packet_count,
packet_count, Invalid_Frame_Count); Invalid_Frame_Count);
} }
if (packet_count >= 65535) { if (packet_count >= 65535) {
packet_statistics_save(); packet_statistics_save();
@@ -645,4 +645,3 @@ int main(
} }
} }
} }
+4 -4
View File
@@ -441,11 +441,11 @@ bool Analog_Output_Write_Property(
if (status) { if (status) {
level = AO_LEVEL_NULL; level = AO_LEVEL_NULL;
object_index = object_index =
Analog_Output_Instance_To_Index(wp_data-> Analog_Output_Instance_To_Index
object_instance); (wp_data->object_instance);
status = status =
Analog_Output_Present_Value_Relinquish(wp_data-> Analog_Output_Present_Value_Relinquish
object_instance, wp_data->priority); (wp_data->object_instance, wp_data->priority);
if (!status) { if (!status) {
wp_data->error_class = ERROR_CLASS_PROPERTY; wp_data->error_class = ERROR_CLASS_PROPERTY;
wp_data->error_code = ERROR_CODE_VALUE_OUT_OF_RANGE; wp_data->error_code = ERROR_CODE_VALUE_OUT_OF_RANGE;
+2 -2
View File
@@ -391,8 +391,8 @@ bool Analog_Value_Write_Property(
if (status) { if (status) {
level = ANALOG_LEVEL_NULL; level = ANALOG_LEVEL_NULL;
object_index = object_index =
Analog_Value_Instance_To_Index(wp_data-> Analog_Value_Instance_To_Index
object_instance); (wp_data->object_instance);
priority = wp_data->priority; priority = wp_data->priority;
if (priority && (priority <= BACNET_MAX_PRIORITY)) { if (priority && (priority <= BACNET_MAX_PRIORITY)) {
priority--; priority--;
+4 -4
View File
@@ -370,8 +370,8 @@ bool Binary_Output_Write_Property(
(value.type.Enumerated <= MAX_BINARY_PV)) { (value.type.Enumerated <= MAX_BINARY_PV)) {
level = (BACNET_BINARY_PV) value.type.Enumerated; level = (BACNET_BINARY_PV) value.type.Enumerated;
object_index = object_index =
Binary_Output_Instance_To_Index(wp_data-> Binary_Output_Instance_To_Index
object_instance); (wp_data->object_instance);
priority--; priority--;
Binary_Output_Level[object_index][priority] = level; Binary_Output_Level[object_index][priority] = level;
/* Note: you could set the physical output here if we /* Note: you could set the physical output here if we
@@ -397,8 +397,8 @@ bool Binary_Output_Write_Property(
if (status) { if (status) {
level = BINARY_NULL; level = BINARY_NULL;
object_index = object_index =
Binary_Output_Instance_To_Index(wp_data-> Binary_Output_Instance_To_Index
object_instance); (wp_data->object_instance);
priority = wp_data->priority; priority = wp_data->priority;
if (priority && (priority <= BACNET_MAX_PRIORITY)) { if (priority && (priority <= BACNET_MAX_PRIORITY)) {
priority--; priority--;
+4 -4
View File
@@ -353,8 +353,8 @@ bool Binary_Value_Write_Property(
(value.type.Enumerated <= MAX_BINARY_PV)) { (value.type.Enumerated <= MAX_BINARY_PV)) {
level = (BACNET_BINARY_PV) value.type.Enumerated; level = (BACNET_BINARY_PV) value.type.Enumerated;
object_index = object_index =
Binary_Value_Instance_To_Index(wp_data-> Binary_Value_Instance_To_Index
object_instance); (wp_data->object_instance);
priority--; priority--;
Binary_Value_Level[object_index][priority] = level; Binary_Value_Level[object_index][priority] = level;
/* Note: you could set the physical output here if we /* Note: you could set the physical output here if we
@@ -380,8 +380,8 @@ bool Binary_Value_Write_Property(
if (status) { if (status) {
level = BINARY_NULL; level = BINARY_NULL;
object_index = object_index =
Binary_Value_Instance_To_Index(wp_data-> Binary_Value_Instance_To_Index
object_instance); (wp_data->object_instance);
priority = wp_data->priority; priority = wp_data->priority;
if (priority && (priority <= BACNET_MAX_PRIORITY)) { if (priority && (priority <= BACNET_MAX_PRIORITY)) {
priority--; priority--;
+14 -14
View File
@@ -1241,8 +1241,8 @@ static bool Device_Write_Property_Local(
&wp_data->error_class, &wp_data->error_code); &wp_data->error_class, &wp_data->error_code);
if (status) { if (status) {
if ((value.type.Object_Id.type == OBJECT_DEVICE) && if ((value.type.Object_Id.type == OBJECT_DEVICE) &&
(Device_Set_Object_Instance_Number(value.type.Object_Id. (Device_Set_Object_Instance_Number(value.type.
instance))) { Object_Id.instance))) {
/* FIXME: we could send an I-Am broadcast to let the world know */ /* FIXME: we could send an I-Am broadcast to let the world know */
} else { } else {
status = false; status = false;
@@ -1275,8 +1275,8 @@ static bool Device_Write_Property_Local(
&wp_data->error_class, &wp_data->error_code); &wp_data->error_class, &wp_data->error_code);
if (status) { if (status) {
/* FIXME: bounds check? */ /* FIXME: bounds check? */
Device_Set_Vendor_Identifier((uint16_t) value.type. Device_Set_Vendor_Identifier((uint16_t) value.
Unsigned_Int); type.Unsigned_Int);
} }
break; break;
case PROP_SYSTEM_STATUS: case PROP_SYSTEM_STATUS:
@@ -1303,8 +1303,8 @@ static bool Device_Write_Property_Local(
WPValidateString(&value, MAX_DEV_NAME_LEN, false, WPValidateString(&value, MAX_DEV_NAME_LEN, false,
&wp_data->error_class, &wp_data->error_code); &wp_data->error_class, &wp_data->error_code);
if (status) { if (status) {
Device_Set_Object_Name(characterstring_value(&value.type. Device_Set_Object_Name(characterstring_value(&value.
Character_String), type.Character_String),
characterstring_length(&value.type.Character_String)); characterstring_length(&value.type.Character_String));
} }
break; break;
@@ -1313,8 +1313,8 @@ static bool Device_Write_Property_Local(
WPValidateString(&value, MAX_DEV_LOC_LEN, true, WPValidateString(&value, MAX_DEV_LOC_LEN, true,
&wp_data->error_class, &wp_data->error_code); &wp_data->error_class, &wp_data->error_code);
if (status) { if (status) {
Device_Set_Location(characterstring_value(&value.type. Device_Set_Location(characterstring_value(&value.
Character_String), type.Character_String),
characterstring_length(&value.type.Character_String)); characterstring_length(&value.type.Character_String));
} }
break; break;
@@ -1324,8 +1324,8 @@ static bool Device_Write_Property_Local(
WPValidateString(&value, MAX_DEV_DESC_LEN, true, WPValidateString(&value, MAX_DEV_DESC_LEN, true,
&wp_data->error_class, &wp_data->error_code); &wp_data->error_class, &wp_data->error_code);
if (status) { if (status) {
Device_Set_Description(characterstring_value(&value.type. Device_Set_Description(characterstring_value(&value.
Character_String), type.Character_String),
characterstring_length(&value.type.Character_String)); characterstring_length(&value.type.Character_String));
} }
break; break;
@@ -1334,8 +1334,8 @@ static bool Device_Write_Property_Local(
WPValidateString(&value, MAX_DEV_MOD_LEN, true, WPValidateString(&value, MAX_DEV_MOD_LEN, true,
&wp_data->error_class, &wp_data->error_code); &wp_data->error_class, &wp_data->error_code);
if (status) { if (status) {
Device_Set_Model_Name(characterstring_value(&value.type. Device_Set_Model_Name(characterstring_value(&value.
Character_String), type.Character_String),
characterstring_length(&value.type.Character_String)); characterstring_length(&value.type.Character_String));
} }
break; break;
@@ -1347,8 +1347,8 @@ static bool Device_Write_Property_Local(
&wp_data->error_class, &wp_data->error_code); &wp_data->error_class, &wp_data->error_code);
if (status) { if (status) {
if (value.type.Unsigned_Int <= 255) { if (value.type.Unsigned_Int <= 255) {
dlmstp_set_max_info_frames((uint8_t) value.type. dlmstp_set_max_info_frames((uint8_t) value.
Unsigned_Int); type.Unsigned_Int);
} else { } else {
status = false; status = false;
wp_data->error_class = ERROR_CLASS_PROPERTY; wp_data->error_class = ERROR_CLASS_PROPERTY;
+8 -8
View File
@@ -469,8 +469,8 @@ int Lighting_Output_Read_Property(
object_index = object_index =
Lighting_Output_Instance_To_Index(rpdata->object_instance); Lighting_Output_Instance_To_Index(rpdata->object_instance);
if (rpdata->array_index <= BACNET_MAX_PRIORITY) { if (rpdata->array_index <= BACNET_MAX_PRIORITY) {
if (Lighting_Output_Level[object_index][rpdata-> if (Lighting_Output_Level[object_index][rpdata->array_index
array_index - 1] == LIGHTING_LEVEL_NULL) - 1] == LIGHTING_LEVEL_NULL)
apdu_len = encode_application_null(&apdu[0]); apdu_len = encode_application_null(&apdu[0]);
else { else {
real_value = Lighting_Output_Level[object_index] real_value = Lighting_Output_Level[object_index]
@@ -549,11 +549,11 @@ bool Lighting_Output_Write_Property(
if (status) { if (status) {
level = LIGHTING_LEVEL_NULL; level = LIGHTING_LEVEL_NULL;
object_index = object_index =
Lighting_Output_Instance_To_Index(wp_data-> Lighting_Output_Instance_To_Index
object_instance); (wp_data->object_instance);
status = status =
Lighting_Output_Present_Value_Relinquish(wp_data-> Lighting_Output_Present_Value_Relinquish
object_instance, wp_data->priority); (wp_data->object_instance, wp_data->priority);
if (wp_data->priority == 6) { if (wp_data->priority == 6) {
/* Command priority 6 is reserved for use by Minimum On/Off /* Command priority 6 is reserved for use by Minimum On/Off
algorithm and may not be used for other purposes in any algorithm and may not be used for other purposes in any
@@ -580,8 +580,8 @@ bool Lighting_Output_Write_Property(
&wp_data->error_class, &wp_data->error_code); &wp_data->error_class, &wp_data->error_code);
if (status) { if (status) {
object_index = object_index =
Lighting_Output_Instance_To_Index(wp_data-> Lighting_Output_Instance_To_Index
object_instance); (wp_data->object_instance);
Lighting_Output_Out_Of_Service[object_index] = Lighting_Output_Out_Of_Service[object_index] =
value.type.Boolean; value.type.Boolean;
} }
+4 -4
View File
@@ -318,8 +318,8 @@ bool Life_Safety_Point_Write_Property(
if (status) { if (status) {
if (value.type.Enumerated <= MAX_LIFE_SAFETY_MODE) { if (value.type.Enumerated <= MAX_LIFE_SAFETY_MODE) {
object_index = object_index =
Life_Safety_Point_Instance_To_Index(wp_data-> Life_Safety_Point_Instance_To_Index
object_instance); (wp_data->object_instance);
Life_Safety_Point_Mode[object_index] = Life_Safety_Point_Mode[object_index] =
value.type.Enumerated; value.type.Enumerated;
} else { } else {
@@ -335,8 +335,8 @@ bool Life_Safety_Point_Write_Property(
&wp_data->error_class, &wp_data->error_code); &wp_data->error_class, &wp_data->error_code);
if (status) { if (status) {
object_index = object_index =
Life_Safety_Point_Instance_To_Index(wp_data-> Life_Safety_Point_Instance_To_Index
object_instance); (wp_data->object_instance);
Life_Safety_Point_Out_Of_Service[object_index] = Life_Safety_Point_Out_Of_Service[object_index] =
value.type.Boolean; value.type.Boolean;
} }
+8 -8
View File
@@ -400,8 +400,8 @@ int Multistate_Input_Read_Property(
/* if no index was specified, then try to encode the entire list */ /* if no index was specified, then try to encode the entire list */
/* into one packet. */ /* into one packet. */
object_index = object_index =
Multistate_Input_Instance_To_Index(rpdata-> Multistate_Input_Instance_To_Index
object_instance); (rpdata->object_instance);
for (i = 0; i < MULTISTATE_NUMBER_OF_STATES; i++) { for (i = 0; i < MULTISTATE_NUMBER_OF_STATES; i++) {
characterstring_init_ansi(&char_string, characterstring_init_ansi(&char_string,
Multistate_Input_State_Text(rpdata->object_instance, Multistate_Input_State_Text(rpdata->object_instance,
@@ -422,8 +422,8 @@ int Multistate_Input_Read_Property(
} }
} else { } else {
object_index = object_index =
Multistate_Input_Instance_To_Index(rpdata-> Multistate_Input_Instance_To_Index
object_instance); (rpdata->object_instance);
if (rpdata->array_index <= MULTISTATE_NUMBER_OF_STATES) { if (rpdata->array_index <= MULTISTATE_NUMBER_OF_STATES) {
characterstring_init_ansi(&char_string, characterstring_init_ansi(&char_string,
Multistate_Input_State_Text(rpdata->object_instance, Multistate_Input_State_Text(rpdata->object_instance,
@@ -478,8 +478,8 @@ bool Multistate_Input_Write_Property(
if (status) { if (status) {
if (Out_Of_Service[object_index]) { if (Out_Of_Service[object_index]) {
status = status =
Multistate_Input_Present_Value_Set(wp_data-> Multistate_Input_Present_Value_Set
object_instance, value.type.Unsigned_Int); (wp_data->object_instance, value.type.Unsigned_Int);
if (!status) { if (!status) {
wp_data->error_class = ERROR_CLASS_PROPERTY; wp_data->error_class = ERROR_CLASS_PROPERTY;
wp_data->error_code = ERROR_CODE_VALUE_OUT_OF_RANGE; wp_data->error_code = ERROR_CODE_VALUE_OUT_OF_RANGE;
@@ -497,8 +497,8 @@ bool Multistate_Input_Write_Property(
&wp_data->error_class, &wp_data->error_code); &wp_data->error_class, &wp_data->error_code);
if (status) { if (status) {
object_index = object_index =
Multistate_Input_Instance_To_Index(wp_data-> Multistate_Input_Instance_To_Index
object_instance); (wp_data->object_instance);
Out_Of_Service[object_index] = value.type.Boolean; Out_Of_Service[object_index] = value.type.Boolean;
} }
break; break;
+10 -10
View File
@@ -266,8 +266,8 @@ int Multistate_Output_Read_Property(
/* into one packet. */ /* into one packet. */
else if (rpdata->array_index == BACNET_ARRAY_ALL) { else if (rpdata->array_index == BACNET_ARRAY_ALL) {
object_index = object_index =
Multistate_Output_Instance_To_Index(rpdata-> Multistate_Output_Instance_To_Index
object_instance); (rpdata->object_instance);
for (i = 0; i < BACNET_MAX_PRIORITY; i++) { for (i = 0; i < BACNET_MAX_PRIORITY; i++) {
/* FIXME: check if we have room before adding it to APDU */ /* FIXME: check if we have room before adding it to APDU */
if (Multistate_Output_Level[object_index][i] == if (Multistate_Output_Level[object_index][i] ==
@@ -292,8 +292,8 @@ int Multistate_Output_Read_Property(
} }
} else { } else {
object_index = object_index =
Multistate_Output_Instance_To_Index(rpdata-> Multistate_Output_Instance_To_Index
object_instance); (rpdata->object_instance);
if (rpdata->array_index <= BACNET_MAX_PRIORITY) { if (rpdata->array_index <= BACNET_MAX_PRIORITY) {
if (Multistate_Output_Level[object_index] if (Multistate_Output_Level[object_index]
[rpdata->array_index - 1] == MULTISTATE_NULL) [rpdata->array_index - 1] == MULTISTATE_NULL)
@@ -369,8 +369,8 @@ bool Multistate_Output_Write_Property(
(value.type.Unsigned_Int <= MULTISTATE_NUMBER_OF_STATES)) { (value.type.Unsigned_Int <= MULTISTATE_NUMBER_OF_STATES)) {
level = value.type.Unsigned_Int; level = value.type.Unsigned_Int;
object_index = object_index =
Multistate_Output_Instance_To_Index(wp_data-> Multistate_Output_Instance_To_Index
object_instance); (wp_data->object_instance);
priority--; priority--;
Multistate_Output_Level[object_index][priority] = Multistate_Output_Level[object_index][priority] =
(uint8_t) level; (uint8_t) level;
@@ -397,8 +397,8 @@ bool Multistate_Output_Write_Property(
if (status) { if (status) {
level = MULTISTATE_NULL; level = MULTISTATE_NULL;
object_index = object_index =
Multistate_Output_Instance_To_Index(wp_data-> Multistate_Output_Instance_To_Index
object_instance); (wp_data->object_instance);
priority = wp_data->priority; priority = wp_data->priority;
if (priority && (priority <= BACNET_MAX_PRIORITY)) { if (priority && (priority <= BACNET_MAX_PRIORITY)) {
priority--; priority--;
@@ -424,8 +424,8 @@ bool Multistate_Output_Write_Property(
&wp_data->error_class, &wp_data->error_code); &wp_data->error_class, &wp_data->error_code);
if (status) { if (status) {
object_index = object_index =
Multistate_Output_Instance_To_Index(wp_data-> Multistate_Output_Instance_To_Index
object_instance); (wp_data->object_instance);
Multistate_Output_Out_Of_Service[object_index] = Multistate_Output_Out_Of_Service[object_index] =
value.type.Boolean; value.type.Boolean;
} }
+7 -7
View File
@@ -731,9 +731,9 @@ bool Trend_Log_Write_Property(
if (wp_data->application_data_len != 0) { if (wp_data->application_data_len != 0) {
iOffset += len; iOffset += len;
len = len =
bacapp_decode_context_data(&wp_data-> bacapp_decode_context_data(&wp_data->application_data
application_data[iOffset], wp_data->application_data_len, [iOffset], wp_data->application_data_len, &value,
&value, PROP_LOG_DEVICE_OBJECT_PROPERTY); PROP_LOG_DEVICE_OBJECT_PROPERTY);
if ((len == 0) || ((value.context_tag != 2) && if ((len == 0) || ((value.context_tag != 2) &&
(value.context_tag != 3))) { (value.context_tag != 3))) {
/* Bad decode or wrong tag */ /* Bad decode or wrong tag */
@@ -750,8 +750,8 @@ bool Trend_Log_Write_Property(
if (wp_data->application_data_len != 0) { if (wp_data->application_data_len != 0) {
iOffset += len; iOffset += len;
len = len =
bacapp_decode_context_data(&wp_data-> bacapp_decode_context_data
application_data[iOffset], (&wp_data->application_data[iOffset],
wp_data->application_data_len, &value, wp_data->application_data_len, &value,
PROP_LOG_DEVICE_OBJECT_PROPERTY); PROP_LOG_DEVICE_OBJECT_PROPERTY);
if ((len == 0) || (value.context_tag != 3)) { if ((len == 0) || (value.context_tag != 3)) {
@@ -1093,8 +1093,8 @@ int rr_trend_log_encode(
pRequest->ItemCount = 0; /* Start out with nothing */ pRequest->ItemCount = 0; /* Start out with nothing */
/* Bail out now if nowt - should never happen for a Trend Log but ... */ /* Bail out now if nowt - should never happen for a Trend Log but ... */
if (LogInfo[Trend_Log_Instance_To_Index(pRequest->object_instance)]. if (LogInfo[Trend_Log_Instance_To_Index(pRequest->
ulRecordCount == 0) object_instance)].ulRecordCount == 0)
return (0); return (0);
if ((pRequest->RequestType == RR_BY_POSITION) || if ((pRequest->RequestType == RR_BY_POSITION) ||
+5 -5
View File
@@ -334,7 +334,7 @@ typedef enum {
PROP_MAX_FAILED_ATTEMPTS = 285, PROP_MAX_FAILED_ATTEMPTS = 285,
PROP_MEMBERS = 286, PROP_MEMBERS = 286,
PROP_MUSTER_POINT = 287, PROP_MUSTER_POINT = 287,
PROP_NEGATIVE_ACCESS_RULES = 288, PROP_NEGATIVE_ACCESS_RULES = 288,
PROP_NUMBER_OF_AUTHENTICATION_POLICIES = 289, PROP_NUMBER_OF_AUTHENTICATION_POLICIES = 289,
PROP_OCCUPANCY_COUNT = 290, PROP_OCCUPANCY_COUNT = 290,
PROP_OCCUPANCY_COUNT_ADJUST = 291, PROP_OCCUPANCY_COUNT_ADJUST = 291,
@@ -350,8 +350,8 @@ typedef enum {
PROP_PASSBACK_TIMEOUT = 301, PROP_PASSBACK_TIMEOUT = 301,
PROP_POSITIVE_ACCESS_RULES = 302, PROP_POSITIVE_ACCESS_RULES = 302,
PROP_REASON_FOR_DISABLE = 303, PROP_REASON_FOR_DISABLE = 303,
PROP_SUPPORTED_FORMATS = 304, PROP_SUPPORTED_FORMATS = 304,
PROP_SUPPORTED_FORMAT_CLASSES = 305, PROP_SUPPORTED_FORMAT_CLASSES = 305,
PROP_THREAT_AUTHORITY = 306, PROP_THREAT_AUTHORITY = 306,
PROP_THREAT_LEVEL = 307, PROP_THREAT_LEVEL = 307,
PROP_TRACE_FLAG = 308, PROP_TRACE_FLAG = 308,
@@ -361,7 +361,7 @@ typedef enum {
/* enumerations 312-313 are used in Addendum k to ANSI/ASHRAE 135-2004 */ /* enumerations 312-313 are used in Addendum k to ANSI/ASHRAE 135-2004 */
PROP_CHARACTER_SET = 312, PROP_CHARACTER_SET = 312,
PROP_STRICT_CHARACTER_MODE = 313, PROP_STRICT_CHARACTER_MODE = 313,
/* enumerations 314-316 are used in Addendum ? */ /* enumerations 314-316 are used in Addendum ? */
PROP_BACKUP_AND_RESTORE_STATE = 314, PROP_BACKUP_AND_RESTORE_STATE = 314,
PROP_BACKUP_PREPARATION_TIME = 315, PROP_BACKUP_PREPARATION_TIME = 315,
PROP_RESTORE_PREPARATION_TIME = 316, PROP_RESTORE_PREPARATION_TIME = 316,
@@ -377,7 +377,7 @@ typedef enum {
PROP_BINARY_ACTIVE_VALUE = 324, PROP_BINARY_ACTIVE_VALUE = 324,
PROP_BINARY_INACTIVE_VALUE = 325, PROP_BINARY_INACTIVE_VALUE = 325,
/* enumeration 326 is used in Addendum j to ANSI/ASHRAE 135-2004 */ /* enumeration 326 is used in Addendum j to ANSI/ASHRAE 135-2004 */
PROP_VERIFICATION_TIME = 326, PROP_VERIFICATION_TIME = 326,
/* enumerations 342-344 are defined in Addendum 2008-w */ /* enumerations 342-344 are defined in Addendum 2008-w */
PROP_BIT_MASK = 342, PROP_BIT_MASK = 342,
PROP_BIT_TEXT = 343, PROP_BIT_TEXT = 343,
+1 -3
View File
@@ -139,9 +139,7 @@ extern "C" {
* chosen at runtime from among these choices. * chosen at runtime from among these choices.
* - Clause 10 POINT-TO-POINT (PTP) and Clause 11 EIA/CEA-709.1 ("LonTalk") LAN * - Clause 10 POINT-TO-POINT (PTP) and Clause 11 EIA/CEA-709.1 ("LonTalk") LAN
* are not currently supported by this project. * are not currently supported by this project.
*/ *//** @defgroup DLTemplates DataLink Template Functions
/** @defgroup DLTemplates DataLink Template Functions
* @ingroup DataLink * @ingroup DataLink
* Most of the functions in this group are function templates which are assigned * Most of the functions in this group are function templates which are assigned
* to a specific DataLink network layer implementation either at compile time or * to a specific DataLink network layer implementation either at compile time or
+1 -3
View File
@@ -101,9 +101,7 @@ extern "C" {
* These device management BIBBs prescribe the BACnet capabilities required * These device management BIBBs prescribe the BACnet capabilities required
* to interoperably perform the device management functions enumerated in * to interoperably perform the device management functions enumerated in
* 22.2.1.5 for the BACnet devices defined therein. * 22.2.1.5 for the BACnet devices defined therein.
*/ *//** @defgroup DMDCC Device Management-Device Communication Control (DM-DCC)
/** @defgroup DMDCC Device Management-Device Communication Control (DM-DCC)
* @ingroup RDMS * @ingroup RDMS
* 16.1 DeviceCommunicationControl Service <br> * 16.1 DeviceCommunicationControl Service <br>
* The DeviceCommunicationControl service is used by a client BACnet-user to * The DeviceCommunicationControl service is used by a client BACnet-user to
+2 -6
View File
@@ -237,15 +237,11 @@ extern "C" {
* - The interface between the implemented Objects and the BAC-stack services, * - The interface between the implemented Objects and the BAC-stack services,
* specifically the handlers, which are mediated through function calls to * specifically the handlers, which are mediated through function calls to
* the Device object. * the Device object.
*/ *//** @defgroup ObjHelpers Object Helper Functions
/** @defgroup ObjHelpers Object Helper Functions
* @ingroup ObjFrmwk * @ingroup ObjFrmwk
* This section describes the function templates for the helper functions that * This section describes the function templates for the helper functions that
* provide common object support. * provide common object support.
*/ *//** @defgroup ObjIntf Handler-to-Object Interface Functions
/** @defgroup ObjIntf Handler-to-Object Interface Functions
* @ingroup ObjFrmwk * @ingroup ObjFrmwk
* This section describes the fairly limited set of functions that link the * This section describes the fairly limited set of functions that link the
* BAC-stack handlers to the BACnet Object instances. All of these calls are * BAC-stack handlers to the BACnet Object instances. All of these calls are
+2 -1
View File
@@ -122,7 +122,8 @@ extern "C" {
BACNET_ADDRESS * src, BACNET_ADDRESS * src,
uint8_t mstp_address); uint8_t mstp_address);
bool dlmstp_sole_master(void); bool dlmstp_sole_master(
void);
#ifdef __cplusplus #ifdef __cplusplus
} }
+2 -6
View File
@@ -213,9 +213,7 @@ extern "C" {
* These BIBBs prescribe the BACnet capabilities required to interoperably * These BIBBs prescribe the BACnet capabilities required to interoperably
* perform the alarm and event management functions enumerated in 22.2.1.2 * perform the alarm and event management functions enumerated in 22.2.1.2
* for the BACnet devices defined therein. * for the BACnet devices defined therein.
*/ *//** @defgroup EVNOTFCN Alarm and Event-Notification (AE-N)
/** @defgroup EVNOTFCN Alarm and Event-Notification (AE-N)
* @ingroup ALMEVNT * @ingroup ALMEVNT
* 13.6 ConfirmedCOVNotification Service <br> * 13.6 ConfirmedCOVNotification Service <br>
* The ConfirmedCOVNotification service is used to notify subscribers about * The ConfirmedCOVNotification service is used to notify subscribers about
@@ -232,9 +230,7 @@ extern "C" {
* For unsubscribed notifications, the algorithm for determining when to issue * For unsubscribed notifications, the algorithm for determining when to issue
* this service is a local matter and may be based on a change of value, * this service is a local matter and may be based on a change of value,
* periodic updating, or some other criteria. * periodic updating, or some other criteria.
*/ *//** @defgroup ALMACK Alarm and Event-ACK (AE-ACK)
/** @defgroup ALMACK Alarm and Event-ACK (AE-ACK)
* @ingroup ALMEVNT * @ingroup ALMEVNT
* 13.5 AcknowledgeAlarm Service <br> * 13.5 AcknowledgeAlarm Service <br>
* In some systems a device may need to know that an operator has seen the alarm * In some systems a device may need to know that an operator has seen the alarm
+1 -3
View File
@@ -135,9 +135,7 @@ extern "C" {
* These BIBBs prescribe the BACnet capabilities required to interoperably * These BIBBs prescribe the BACnet capabilities required to interoperably
* perform the data sharing functions enumerated in 22.2.1.1 for the BACnet * perform the data sharing functions enumerated in 22.2.1.1 for the BACnet
* devices defined therein. * devices defined therein.
*/ *//** @defgroup DSRP Data Sharing -Read Property Service (DS-RP)
/** @defgroup DSRP Data Sharing -Read Property Service (DS-RP)
* @ingroup DataShare * @ingroup DataShare
* 15.5 ReadProperty Service <br> * 15.5 ReadProperty Service <br>
* The ReadProperty service is used by a client BACnet-user to request the * The ReadProperty service is used by a client BACnet-user to request the
+2 -2
View File
@@ -355,8 +355,8 @@ bool Analog_Value_Write_Property(
(value.type.Real >= 0.0) && (value.type.Real <= 100.0)) { (value.type.Real >= 0.0) && (value.type.Real <= 100.0)) {
level = (uint8_t) value.type.Real; level = (uint8_t) value.type.Real;
object_index = object_index =
Analog_Value_Instance_To_Index(wp_data-> Analog_Value_Instance_To_Index
object_instance); (wp_data->object_instance);
priority--; priority--;
Present_Value[object_index] = level; Present_Value[object_index] = level;
/* Note: you could set the physical output here if we /* Note: you could set the physical output here if we
+2 -2
View File
@@ -265,8 +265,8 @@ bool Binary_Value_Write_Property(
(value.type.Enumerated <= MAX_BINARY_PV)) { (value.type.Enumerated <= MAX_BINARY_PV)) {
level = value.type.Enumerated; level = value.type.Enumerated;
object_index = object_index =
Binary_Value_Instance_To_Index(wp_data-> Binary_Value_Instance_To_Index
object_instance); (wp_data->object_instance);
priority--; priority--;
/* NOTE: this Binary value has no priority array */ /* NOTE: this Binary value has no priority array */
Present_Value[object_index] = level; Present_Value[object_index] = level;
+2 -2
View File
@@ -824,8 +824,8 @@ bool Device_Write_Property_Local(
case PROP_OBJECT_IDENTIFIER: case PROP_OBJECT_IDENTIFIER:
if (value.tag == BACNET_APPLICATION_TAG_OBJECT_ID) { if (value.tag == BACNET_APPLICATION_TAG_OBJECT_ID) {
if ((value.type.Object_Id.type == OBJECT_DEVICE) && if ((value.type.Object_Id.type == OBJECT_DEVICE) &&
(Device_Set_Object_Instance_Number(value.type.Object_Id. (Device_Set_Object_Instance_Number(value.type.
instance))) { Object_Id.instance))) {
/* we could send an I-Am broadcast to let the world know */ /* we could send an I-Am broadcast to let the world know */
status = true; status = true;
} else { } else {
+27 -31
View File
@@ -200,11 +200,8 @@ bool dlmstp_init(
(void) ifname; (void) ifname;
/* initialize hardware */ /* initialize hardware */
RS485_Initialize(); RS485_Initialize();
Ringbuf_Init( Ringbuf_Init(&PDU_Queue, (uint8_t *) & PDU_Buffer,
&PDU_Queue, sizeof(struct mstp_pdu_packet), MSTP_PDU_PACKET_COUNT);
(uint8_t *)&PDU_Buffer,
sizeof(struct mstp_pdu_packet),
MSTP_PDU_PACKET_COUNT);
return true; return true;
} }
@@ -529,32 +526,34 @@ static void MSTP_Receive_Frame_FSM(
/* wait for the start of the next frame. */ /* wait for the start of the next frame. */
Receive_State = MSTP_RECEIVE_STATE_IDLE; Receive_State = MSTP_RECEIVE_STATE_IDLE;
} else { } else {
if (DataLength == 0) { if (DataLength == 0) {
/* NoData */ /* NoData */
if ((DestinationAddress == This_Station) || if ((DestinationAddress == This_Station) ||
(DestinationAddress == (DestinationAddress ==
MSTP_BROADCAST_ADDRESS)) { MSTP_BROADCAST_ADDRESS)) {
/* ForUs */ /* ForUs */
/* indicate that a frame with /* indicate that a frame with
no data has been received */ no data has been received */
MSTP_Flag.ReceivedValidFrame = true; MSTP_Flag.ReceivedValidFrame = true;
} else { } else {
/* NotForUs */ /* NotForUs */
MSTP_Flag.ReceivedValidFrameNotForUs = true; MSTP_Flag.ReceivedValidFrameNotForUs = true;
} }
/* wait for the start of the next frame. */ /* wait for the start of the next frame. */
Receive_State = MSTP_RECEIVE_STATE_IDLE; Receive_State = MSTP_RECEIVE_STATE_IDLE;
} else { } else {
/* receive the data portion of the frame. */ /* receive the data portion of the frame. */
if ((DestinationAddress == This_Station) || if ((DestinationAddress == This_Station) ||
(DestinationAddress == MSTP_BROADCAST_ADDRESS)) { (DestinationAddress ==
MSTP_BROADCAST_ADDRESS)) {
if (DataLength <= InputBufferSize) { if (DataLength <= InputBufferSize) {
/* Data */ /* Data */
Receive_State = MSTP_RECEIVE_STATE_DATA; Receive_State = MSTP_RECEIVE_STATE_DATA;
} else { } else {
/* FrameTooLong */ /* FrameTooLong */
Receive_State = MSTP_RECEIVE_STATE_SKIP_DATA; Receive_State =
} MSTP_RECEIVE_STATE_SKIP_DATA;
}
} else { } else {
/* NotForUs */ /* NotForUs */
Receive_State = MSTP_RECEIVE_STATE_SKIP_DATA; Receive_State = MSTP_RECEIVE_STATE_SKIP_DATA;
@@ -599,7 +598,7 @@ static void MSTP_Receive_Frame_FSM(
/* DataOctet */ /* DataOctet */
DataCRC = CRC_Calc_Data(DataRegister, DataCRC); DataCRC = CRC_Calc_Data(DataRegister, DataCRC);
if (Index < InputBufferSize) { if (Index < InputBufferSize) {
InputBuffer[Index] = DataRegister; InputBuffer[Index] = DataRegister;
} }
Index++; Index++;
} else if (Index == DataLength) { } else if (Index == DataLength) {
@@ -767,8 +766,7 @@ static bool MSTP_Master_Node_FSM(
transition_now = true; transition_now = true;
} else { } else {
uint8_t frame_type; uint8_t frame_type;
pkt = (struct mstp_pdu_packet *)Ringbuf_Pop_Front( pkt = (struct mstp_pdu_packet *) Ringbuf_Pop_Front(&PDU_Queue);
&PDU_Queue);
if (pkt->data_expecting_reply) { if (pkt->data_expecting_reply) {
frame_type = FRAME_TYPE_BACNET_DATA_EXPECTING_REPLY; frame_type = FRAME_TYPE_BACNET_DATA_EXPECTING_REPLY;
} else { } else {
@@ -1089,12 +1087,11 @@ static bool MSTP_Master_Node_FSM(
/* Note: we could wait for up to Treply_delay */ /* Note: we could wait for up to Treply_delay */
matched = false; matched = false;
if (!Ringbuf_Empty(&PDU_Queue)) { if (!Ringbuf_Empty(&PDU_Queue)) {
pkt = (struct mstp_pdu_packet *)Ringbuf_Get_Front( pkt = (struct mstp_pdu_packet *) Ringbuf_Get_Front(&PDU_Queue);
&PDU_Queue);
matched = matched =
dlmstp_compare_data_expecting_reply(&InputBuffer[0], dlmstp_compare_data_expecting_reply(&InputBuffer[0],
DataLength, SourceAddress, &pkt->buffer[0], DataLength, SourceAddress, &pkt->buffer[0], pkt->length,
pkt->length, pkt->destination_mac); pkt->destination_mac);
} }
if (matched) { if (matched) {
/* Reply */ /* Reply */
@@ -1105,8 +1102,7 @@ static bool MSTP_Master_Node_FSM(
/* then call MSTP_Send_Frame to transmit the reply frame */ /* then call MSTP_Send_Frame to transmit the reply frame */
/* and enter the IDLE state to wait for the next frame. */ /* and enter the IDLE state to wait for the next frame. */
uint8_t frame_type; uint8_t frame_type;
pkt = (struct mstp_pdu_packet *)Ringbuf_Pop_Front( pkt = (struct mstp_pdu_packet *) Ringbuf_Pop_Front(&PDU_Queue);
&PDU_Queue);
if (pkt->data_expecting_reply) { if (pkt->data_expecting_reply) {
frame_type = FRAME_TYPE_BACNET_DATA_EXPECTING_REPLY; frame_type = FRAME_TYPE_BACNET_DATA_EXPECTING_REPLY;
} else { } else {
@@ -1151,7 +1147,7 @@ int dlmstp_send_pdu(
struct mstp_pdu_packet *pkt; struct mstp_pdu_packet *pkt;
uint16_t i = 0; uint16_t i = 0;
pkt = (struct mstp_pdu_packet *)Ringbuf_Alloc(&PDU_Queue); pkt = (struct mstp_pdu_packet *) Ringbuf_Alloc(&PDU_Queue);
if (pkt) { if (pkt) {
pkt->data_expecting_reply = npdu_data->data_expecting_reply; pkt->data_expecting_reply = npdu_data->data_expecting_reply;
for (i = 0; i < pdu_len; i++) { for (i = 0; i < pdu_len; i++) {
+2 -2
View File
@@ -206,8 +206,8 @@ bool Binary_Value_Write_Property(
if ((value.type.Enumerated == BINARY_ACTIVE) || if ((value.type.Enumerated == BINARY_ACTIVE) ||
(value.type.Enumerated == BINARY_INACTIVE)) { (value.type.Enumerated == BINARY_INACTIVE)) {
object_index = object_index =
Binary_Value_Instance_To_Index(wp_data-> Binary_Value_Instance_To_Index
object_instance); (wp_data->object_instance);
/* NOTE: this Binary value has no priority array */ /* NOTE: this Binary value has no priority array */
Present_Value[object_index] = Present_Value[object_index] =
(BACNET_BINARY_PV) value.type.Enumerated; (BACNET_BINARY_PV) value.type.Enumerated;
+2 -2
View File
@@ -375,8 +375,8 @@ bool Device_Write_Property(
case PROP_OBJECT_IDENTIFIER: case PROP_OBJECT_IDENTIFIER:
if (value.tag == BACNET_APPLICATION_TAG_OBJECT_ID) { if (value.tag == BACNET_APPLICATION_TAG_OBJECT_ID) {
if ((value.type.Object_Id.type == OBJECT_DEVICE) && if ((value.type.Object_Id.type == OBJECT_DEVICE) &&
(Device_Set_Object_Instance_Number(value.type.Object_Id. (Device_Set_Object_Instance_Number(value.type.
instance))) { Object_Id.instance))) {
/* we could send an I-Am broadcast to let the world know */ /* we could send an I-Am broadcast to let the world know */
status = true; status = true;
} else { } else {
+2 -2
View File
@@ -206,8 +206,8 @@ bool Binary_Value_Write_Property(
if ((value.type.Enumerated == BINARY_ACTIVE) || if ((value.type.Enumerated == BINARY_ACTIVE) ||
(value.type.Enumerated == BINARY_INACTIVE)) { (value.type.Enumerated == BINARY_INACTIVE)) {
object_index = object_index =
Binary_Value_Instance_To_Index(wp_data-> Binary_Value_Instance_To_Index
object_instance); (wp_data->object_instance);
/* NOTE: this Binary value has no priority array */ /* NOTE: this Binary value has no priority array */
Present_Value[object_index] = Present_Value[object_index] =
(BACNET_BINARY_PV) value.type.Enumerated; (BACNET_BINARY_PV) value.type.Enumerated;
+1 -1
View File
@@ -286,7 +286,7 @@ int Device_Encode_Property_APDU(
/* assume next one is the same size as this one */ /* assume next one is the same size as this one */
/* can we all fit into the APDU? */ /* can we all fit into the APDU? */
if ((apdu_len + len) >= MAX_APDU) { if ((apdu_len + len) >= MAX_APDU) {
*error_code = *error_code =
ERROR_CODE_ABORT_SEGMENTATION_NOT_SUPPORTED; ERROR_CODE_ABORT_SEGMENTATION_NOT_SUPPORTED;
apdu_len = BACNET_STATUS_ABORT; apdu_len = BACNET_STATUS_ABORT;
break; break;
+5 -5
View File
@@ -138,9 +138,9 @@ static BACNET_BINARY_PV Present_Value(
if (index < MAX_BINARY_OUTPUTS) { if (index < MAX_BINARY_OUTPUTS) {
for (i = 0; i < BACNET_MAX_PRIORITY; i++) { for (i = 0; i < BACNET_MAX_PRIORITY; i++) {
current_value = (BACNET_BINARY_PV)Binary_Output_Level[index][i]; current_value = (BACNET_BINARY_PV) Binary_Output_Level[index][i];
if (current_value != BINARY_NULL) { if (current_value != BINARY_NULL) {
value = (BACNET_BINARY_PV)Binary_Output_Level[index][i]; value = (BACNET_BINARY_PV) Binary_Output_Level[index][i];
break; break;
} }
} }
@@ -446,8 +446,8 @@ bool Binary_Output_Write_Property(
priority = wp_data->priority; priority = wp_data->priority;
if (priority && (priority <= BACNET_MAX_PRIORITY)) { if (priority && (priority <= BACNET_MAX_PRIORITY)) {
priority--; priority--;
Binary_Output_Present_Value_Set(wp_data-> Binary_Output_Present_Value_Set
object_instance, level, priority); (wp_data->object_instance, level, priority);
} else if (priority == 6) { } else if (priority == 6) {
status = false; status = false;
/* Command priority 6 is reserved for use by Minimum On/Off /* Command priority 6 is reserved for use by Minimum On/Off
@@ -480,7 +480,7 @@ bool Binary_Output_Write_Property(
if (status) { if (status) {
if (value.type.Enumerated < MAX_POLARITY) { if (value.type.Enumerated < MAX_POLARITY) {
Binary_Output_Polarity_Set(wp_data->object_instance, Binary_Output_Polarity_Set(wp_data->object_instance,
(BACNET_POLARITY)value.type.Enumerated); (BACNET_POLARITY) value.type.Enumerated);
Binary_Output_Level_Sync(wp_data->object_instance); Binary_Output_Level_Sync(wp_data->object_instance);
} else { } else {
status = false; status = false;
+6 -6
View File
@@ -585,7 +585,7 @@ char *Device_Valid_Object_Id(
char *name = NULL; /* return value */ char *name = NULL; /* return value */
struct object_functions *pObject = NULL; struct object_functions *pObject = NULL;
pObject = Device_Objects_Find_Functions((BACNET_OBJECT_TYPE)object_type); pObject = Device_Objects_Find_Functions((BACNET_OBJECT_TYPE) object_type);
if ((pObject) && (pObject->Object_Name)) { if ((pObject) && (pObject->Object_Name)) {
name = pObject->Object_Name(object_instance); name = pObject->Object_Name(object_instance);
} }
@@ -662,7 +662,7 @@ int Device_Read_Property_Local(
for (i = 0; i < MAX_BACNET_SERVICES_SUPPORTED; i++) { for (i = 0; i < MAX_BACNET_SERVICES_SUPPORTED; i++) {
/* automatic lookup based on handlers set */ /* automatic lookup based on handlers set */
bitstring_set_bit(&bit_string, (uint8_t) i, bitstring_set_bit(&bit_string, (uint8_t) i,
apdu_service_supported((BACNET_SERVICES_SUPPORTED)i)); apdu_service_supported((BACNET_SERVICES_SUPPORTED) i));
} }
apdu_len = encode_application_bitstring(&apdu[0], &bit_string); apdu_len = encode_application_bitstring(&apdu[0], &bit_string);
break; break;
@@ -808,8 +808,8 @@ bool Device_Write_Property_Local(
case PROP_OBJECT_IDENTIFIER: case PROP_OBJECT_IDENTIFIER:
if (value.tag == BACNET_APPLICATION_TAG_OBJECT_ID) { if (value.tag == BACNET_APPLICATION_TAG_OBJECT_ID) {
if ((value.type.Object_Id.type == OBJECT_DEVICE) && if ((value.type.Object_Id.type == OBJECT_DEVICE) &&
(Device_Set_Object_Instance_Number(value.type.Object_Id. (Device_Set_Object_Instance_Number(value.type.
instance))) { Object_Id.instance))) {
/* we could send an I-Am broadcast to let the world know */ /* we could send an I-Am broadcast to let the world know */
status = true; status = true;
} else { } else {
@@ -869,8 +869,8 @@ bool Device_Write_Property_Local(
eeprom_bytes_write(NV_EEPROM_DEVICE_NAME_LENGTH, eeprom_bytes_write(NV_EEPROM_DEVICE_NAME_LENGTH,
&small_length, 1); &small_length, 1);
pCharString = pCharString =
characterstring_value(&value.type. characterstring_value(&value.
Character_String); type.Character_String);
eeprom_bytes_write(NV_EEPROM_DEVICE_NAME_0, eeprom_bytes_write(NV_EEPROM_DEVICE_NAME_0,
(uint8_t *) pCharString, length); (uint8_t *) pCharString, length);
status = true; status = true;
+17 -21
View File
@@ -204,11 +204,8 @@ bool dlmstp_init(
if (Nmax_master > 127) { if (Nmax_master > 127) {
Nmax_master = 127; Nmax_master = 127;
} }
Ringbuf_Init( Ringbuf_Init(&PDU_Queue, (uint8_t *) & PDU_Buffer,
&PDU_Queue, sizeof(struct mstp_pdu_packet), MSTP_PDU_PACKET_COUNT);
(uint8_t *)&PDU_Buffer,
sizeof(struct mstp_pdu_packet),
MSTP_PDU_PACKET_COUNT);
return true; return true;
} }
@@ -551,14 +548,16 @@ static void MSTP_Receive_Frame_FSM(
} else { } else {
/* receive the data portion of the frame. */ /* receive the data portion of the frame. */
if ((DestinationAddress == This_Station) || if ((DestinationAddress == This_Station) ||
(DestinationAddress == MSTP_BROADCAST_ADDRESS)) { (DestinationAddress ==
MSTP_BROADCAST_ADDRESS)) {
if (DataLength <= InputBufferSize) { if (DataLength <= InputBufferSize) {
/* Data */ /* Data */
Receive_State = MSTP_RECEIVE_STATE_DATA; Receive_State = MSTP_RECEIVE_STATE_DATA;
} else { } else {
/* FrameTooLong */ /* FrameTooLong */
Receive_State = MSTP_RECEIVE_STATE_SKIP_DATA; Receive_State =
} MSTP_RECEIVE_STATE_SKIP_DATA;
}
} else { } else {
/* NotForUs */ /* NotForUs */
Receive_State = MSTP_RECEIVE_STATE_SKIP_DATA; Receive_State = MSTP_RECEIVE_STATE_SKIP_DATA;
@@ -616,7 +615,7 @@ static void MSTP_Receive_Frame_FSM(
/* STATE DATA CRC - no need for new state */ /* STATE DATA CRC - no need for new state */
/* indicate the complete reception of a valid frame */ /* indicate the complete reception of a valid frame */
if (DataCRC == 0xF0B8) { if (DataCRC == 0xF0B8) {
if (Receive_State == MSTP_RECEIVE_STATE_DATA) { if (Receive_State == MSTP_RECEIVE_STATE_DATA) {
/* ForUs */ /* ForUs */
MSTP_Flag.ReceivedValidFrame = true; MSTP_Flag.ReceivedValidFrame = true;
} else { } else {
@@ -789,8 +788,7 @@ static bool MSTP_Master_Node_FSM(
transition_now = true; transition_now = true;
} else { } else {
uint8_t frame_type; uint8_t frame_type;
pkt = (struct mstp_pdu_packet *)Ringbuf_Pop_Front( pkt = (struct mstp_pdu_packet *) Ringbuf_Pop_Front(&PDU_Queue);
&PDU_Queue);
if (pkt->data_expecting_reply) { if (pkt->data_expecting_reply) {
frame_type = FRAME_TYPE_BACNET_DATA_EXPECTING_REPLY; frame_type = FRAME_TYPE_BACNET_DATA_EXPECTING_REPLY;
} else { } else {
@@ -1115,12 +1113,11 @@ static bool MSTP_Master_Node_FSM(
/* Note: we could wait for up to Treply_delay */ /* Note: we could wait for up to Treply_delay */
matched = false; matched = false;
if (!Ringbuf_Empty(&PDU_Queue)) { if (!Ringbuf_Empty(&PDU_Queue)) {
pkt = (struct mstp_pdu_packet *)Ringbuf_Get_Front( pkt = (struct mstp_pdu_packet *) Ringbuf_Get_Front(&PDU_Queue);
&PDU_Queue);
matched = matched =
dlmstp_compare_data_expecting_reply(&InputBuffer[0], dlmstp_compare_data_expecting_reply(&InputBuffer[0],
DataLength, SourceAddress, &pkt->buffer[0], DataLength, SourceAddress, &pkt->buffer[0], pkt->length,
pkt->length, pkt->destination_mac); pkt->destination_mac);
} }
if (matched) { if (matched) {
/* Reply */ /* Reply */
@@ -1131,8 +1128,7 @@ static bool MSTP_Master_Node_FSM(
/* then call MSTP_Send_Frame to transmit the reply frame */ /* then call MSTP_Send_Frame to transmit the reply frame */
/* and enter the IDLE state to wait for the next frame. */ /* and enter the IDLE state to wait for the next frame. */
uint8_t frame_type; uint8_t frame_type;
pkt = (struct mstp_pdu_packet *)Ringbuf_Pop_Front( pkt = (struct mstp_pdu_packet *) Ringbuf_Pop_Front(&PDU_Queue);
&PDU_Queue);
if (pkt->data_expecting_reply) { if (pkt->data_expecting_reply) {
frame_type = FRAME_TYPE_BACNET_DATA_EXPECTING_REPLY; frame_type = FRAME_TYPE_BACNET_DATA_EXPECTING_REPLY;
} else { } else {
@@ -1177,7 +1173,7 @@ int dlmstp_send_pdu(
struct mstp_pdu_packet *pkt; struct mstp_pdu_packet *pkt;
uint16_t i = 0; uint16_t i = 0;
pkt = (struct mstp_pdu_packet *)Ringbuf_Alloc(&PDU_Queue); pkt = (struct mstp_pdu_packet *) Ringbuf_Alloc(&PDU_Queue);
if (pkt) { if (pkt) {
pkt->data_expecting_reply = npdu_data->data_expecting_reply; pkt->data_expecting_reply = npdu_data->data_expecting_reply;
for (i = 0; i < pdu_len; i++) { for (i = 0; i < pdu_len; i++) {
@@ -1384,4 +1380,4 @@ char *dlmstp_master_state_text(
return "unknown"; return "unknown";
} }
#endif #endif
@@ -52,4 +52,7 @@
#define SEEPROM_PAGE_SIZE 16 #define SEEPROM_PAGE_SIZE 16
#define SEEPROM_WORD_ADDRESS_16BIT 0 #define SEEPROM_WORD_ADDRESS_16BIT 0
#define SEEPROM_I2C_ADDRESS 0xA0
#define SEEPROM_I2C_CLOCK 400000L
#endif #endif
+2 -1
View File
@@ -32,6 +32,7 @@ void stack_init(
{ {
} }
unsigned stack_size( unsigned stack_size(
void) void)
{ {
@@ -104,4 +105,4 @@ unsigned stack_unused(
} }
return count; return count;
} }
#endif #endif
+104 -99
View File
@@ -1,99 +1,104 @@
/************************************************************************** /**************************************************************************
* *
* Copyright (C) 2009 Steve Karg <skarg@users.sourceforge.net> * Copyright (C) 2009 Steve Karg <skarg@users.sourceforge.net>
* *
* Permission is hereby granted, free of charge, to any person obtaining * Permission is hereby granted, free of charge, to any person obtaining
* a copy of this software and associated documentation files (the * a copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including * "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish, * without limitation the rights to use, copy, modify, merge, publish,
* distribute, sublicense, and/or sell copies of the Software, and to * distribute, sublicense, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject to * permit persons to whom the Software is furnished to do so, subject to
* the following conditions: * the following conditions:
* *
* The above copyright notice and this permission notice shall be included * The above copyright notice and this permission notice shall be included
* in all copies or substantial portions of the Software. * in all copies or substantial portions of the Software.
* *
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*********************************************************************/ *********************************************************************/
#include "hardware.h" #include "hardware.h"
#include "watchdog.h" #include "watchdog.h"
#if defined(__ICCAVR__) #if defined(__ICCAVR__)
#include <intrinsics.h> #include <intrinsics.h>
static inline void wdt_enable(int value) static inline void wdt_enable(
{ int value)
__disable_interrupt(); {
__watchdog_reset(); __disable_interrupt();
/* Start timed equence */ __watchdog_reset();
WDTCSR |= (1<<WDCE) | (1<<WDE); /* Start timed equence */
/* Set new prescaler(time-out) value = 64K cycles (~0.5 s) */ WDTCSR |= (1 << WDCE) | (1 << WDE);
WDTCSR = (1<<WDE) | (value); /* Set new prescaler(time-out) value = 64K cycles (~0.5 s) */
/* we aren't ready to enable interrupts here WDTCSR = (1 << WDE) | (value);
__enable_interrupt(); */ /* we aren't ready to enable interrupts here
} __enable_interrupt(); */
}
static inline void wdt_disable(void)
{ static inline void wdt_disable(
__disable_interrupt(); void)
__watchdog_reset(); {
/* Clear WDRF in MCUSR */ __disable_interrupt();
MCUSR &= ~(1<<WDRF); __watchdog_reset();
/* Write logical one to WDCE and WDE */ /* Clear WDRF in MCUSR */
/* Keep old prescaler setting to prevent unintentional time-out */ MCUSR &= ~(1 << WDRF);
WDTCSR |= (1<<WDCE) | (1<<WDE); /* Write logical one to WDCE and WDE */
/* Turn off WDT */ /* Keep old prescaler setting to prevent unintentional time-out */
WDTCSR = 0x00; WDTCSR |= (1 << WDCE) | (1 << WDE);
__enable_interrupt(); /* Turn off WDT */
} WDTCSR = 0x00;
__enable_interrupt();
static inline wdt_reset(void) }
{
__watchdog_reset(); static inline wdt_reset(
} void)
#endif {
__watchdog_reset();
/************************************************************************* }
* Description: Reset the watchdog timer #endif
* Returns: none
* Notes: none /*************************************************************************
**************************************************************************/ * Description: Reset the watchdog timer
void watchdog_reset(void) * Returns: none
{ * Notes: none
wdt_reset(); **************************************************************************/
} void watchdog_reset(
void)
/************************************************************************* {
* Description: Initialize the watchdog timer wdt_reset();
* Returns: none }
* Notes: none
**************************************************************************/ /*************************************************************************
void watchdog_init(unsigned milliseconds) * Description: Initialize the watchdog timer
{ * Returns: none
unsigned value = WDTO_15MS; * Notes: none
if (milliseconds) { **************************************************************************/
if (milliseconds <= 15) { void watchdog_init(
value = WDTO_15MS; unsigned milliseconds)
} else if (milliseconds <= 30) { {
value = WDTO_30MS; unsigned value = WDTO_15MS;
} else if (milliseconds <= 60) { if (milliseconds) {
value = WDTO_60MS; if (milliseconds <= 15) {
} else if (milliseconds <= 120) { value = WDTO_15MS;
value = WDTO_120MS; } else if (milliseconds <= 30) {
} else if (milliseconds <= 500) { value = WDTO_30MS;
value = WDTO_500MS; } else if (milliseconds <= 60) {
} else if (milliseconds <= 1000) { value = WDTO_60MS;
value = WDTO_1S; } else if (milliseconds <= 120) {
} else { value = WDTO_120MS;
value = WDTO_2S; } else if (milliseconds <= 500) {
} value = WDTO_500MS;
wdt_enable(value); } else if (milliseconds <= 1000) {
} else { value = WDTO_1S;
wdt_disable(); } else {
} value = WDTO_2S;
} }
wdt_enable(value);
} else {
wdt_disable();
}
}
+39 -38
View File
@@ -1,38 +1,39 @@
/************************************************************************** /**************************************************************************
* *
* Copyright (C) 2009 Steve Karg <skarg@users.sourceforge.net> * Copyright (C) 2009 Steve Karg <skarg@users.sourceforge.net>
* *
* Permission is hereby granted, free of charge, to any person obtaining * Permission is hereby granted, free of charge, to any person obtaining
* a copy of this software and associated documentation files (the * a copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including * "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish, * without limitation the rights to use, copy, modify, merge, publish,
* distribute, sublicense, and/or sell copies of the Software, and to * distribute, sublicense, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject to * permit persons to whom the Software is furnished to do so, subject to
* the following conditions: * the following conditions:
* *
* The above copyright notice and this permission notice shall be included * The above copyright notice and this permission notice shall be included
* in all copies or substantial portions of the Software. * in all copies or substantial portions of the Software.
* *
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*********************************************************************/ *********************************************************************/
#ifndef WATCHDOG_H #ifndef WATCHDOG_H
#define WATCHDOG_H #define WATCHDOG_H
#ifdef __cplusplus #ifdef __cplusplus
extern "C" { extern "C" {
#endif /* __cplusplus */ #endif /* __cplusplus */
void watchdog_reset(void); void watchdog_reset(
void watchdog_init(unsigned milliseconds); void);
void watchdog_init(
#ifdef __cplusplus unsigned milliseconds);
}
#endif /* __cplusplus */ #ifdef __cplusplus
}
#endif #endif /* __cplusplus */
#endif
+2 -2
View File
@@ -320,8 +320,8 @@ bool Analog_Value_Write_Property(
(value.type.Real >= 0.0) && (value.type.Real <= 100.0)) { (value.type.Real >= 0.0) && (value.type.Real <= 100.0)) {
level = (uint8_t) value.type.Real; level = (uint8_t) value.type.Real;
object_index = object_index =
Analog_Value_Instance_To_Index(wp_data-> Analog_Value_Instance_To_Index
object_instance); (wp_data->object_instance);
priority--; priority--;
Present_Value[object_index] = level; Present_Value[object_index] = level;
/* Note: you could set the physical output here if we /* Note: you could set the physical output here if we
+2 -2
View File
@@ -232,8 +232,8 @@ bool Binary_Value_Write_Property(
(value.type.Enumerated <= MAX_BINARY_PV)) { (value.type.Enumerated <= MAX_BINARY_PV)) {
level = value.type.Enumerated; level = value.type.Enumerated;
object_index = object_index =
Binary_Value_Instance_To_Index(wp_data-> Binary_Value_Instance_To_Index
object_instance); (wp_data->object_instance);
priority--; priority--;
/* NOTE: this Binary value has no priority array */ /* NOTE: this Binary value has no priority array */
Present_Value[object_index] = level; Present_Value[object_index] = level;
+3 -3
View File
@@ -378,7 +378,7 @@ int Device_Encode_Property_APDU(
/* assume next one is the same size as this one */ /* assume next one is the same size as this one */
/* can we all fit into the APDU? */ /* can we all fit into the APDU? */
if ((apdu_len + len) >= MAX_APDU) { if ((apdu_len + len) >= MAX_APDU) {
*error_code = *error_code =
ERROR_CODE_ABORT_SEGMENTATION_NOT_SUPPORTED; ERROR_CODE_ABORT_SEGMENTATION_NOT_SUPPORTED;
apdu_len = BACNET_STATUS_ABORT; apdu_len = BACNET_STATUS_ABORT;
break; break;
@@ -505,8 +505,8 @@ bool Device_Write_Property(
case PROP_OBJECT_IDENTIFIER: case PROP_OBJECT_IDENTIFIER:
if (value.tag == BACNET_APPLICATION_TAG_OBJECT_ID) { if (value.tag == BACNET_APPLICATION_TAG_OBJECT_ID) {
if ((value.type.Object_Id.type == OBJECT_DEVICE) && if ((value.type.Object_Id.type == OBJECT_DEVICE) &&
(Device_Set_Object_Instance_Number(value.type.Object_Id. (Device_Set_Object_Instance_Number(value.type.
instance))) { Object_Id.instance))) {
/* we could send an I-Am broadcast to let the world know */ /* we could send an I-Am broadcast to let the world know */
status = true; status = true;
} else { } else {
+4 -2
View File
@@ -149,7 +149,8 @@ static struct Address_Cache_Entry *address_remove_oldest(
pMatch = Address_Cache; pMatch = Address_Cache;
while (pMatch <= &Address_Cache[MAX_ADDRESS_CACHE - 1]) { while (pMatch <= &Address_Cache[MAX_ADDRESS_CACHE - 1]) {
if ((pMatch->Flags & (BAC_ADDR_IN_USE | BAC_ADDR_BIND_REQ | if ((pMatch->
Flags & (BAC_ADDR_IN_USE | BAC_ADDR_BIND_REQ |
BAC_ADDR_STATIC)) == BAC_ADDR_IN_USE) { BAC_ADDR_STATIC)) == BAC_ADDR_IN_USE) {
if (pMatch->TimeToLive <= ulTime) { /* Shorter lived entry found */ if (pMatch->TimeToLive <= ulTime) { /* Shorter lived entry found */
ulTime = pMatch->TimeToLive; ulTime = pMatch->TimeToLive;
@@ -168,7 +169,8 @@ static struct Address_Cache_Entry *address_remove_oldest(
/* Second pass - try in use and un bound as last resort */ /* Second pass - try in use and un bound as last resort */
pMatch = Address_Cache; pMatch = Address_Cache;
while (pMatch <= &Address_Cache[MAX_ADDRESS_CACHE - 1]) { while (pMatch <= &Address_Cache[MAX_ADDRESS_CACHE - 1]) {
if ((pMatch->Flags & (BAC_ADDR_IN_USE | BAC_ADDR_BIND_REQ | if ((pMatch->
Flags & (BAC_ADDR_IN_USE | BAC_ADDR_BIND_REQ |
BAC_ADDR_STATIC)) == BAC_ADDR_STATIC)) ==
((uint8_t) (BAC_ADDR_IN_USE | BAC_ADDR_BIND_REQ))) { ((uint8_t) (BAC_ADDR_IN_USE | BAC_ADDR_BIND_REQ))) {
if (pMatch->TimeToLive <= ulTime) { /* Shorter lived entry found */ if (pMatch->TimeToLive <= ulTime) { /* Shorter lived entry found */
+13 -13
View File
@@ -820,7 +820,7 @@ int bacapp_data_len(
#ifdef BACAPP_PRINT_ENABLED #ifdef BACAPP_PRINT_ENABLED
bool bacapp_print_value( bool bacapp_print_value(
FILE * stream, FILE * stream,
BACNET_OBJECT_PROPERTY_VALUE *object_value) BACNET_OBJECT_PROPERTY_VALUE * object_value)
{ {
bool status = true; /*return value */ bool status = true; /*return value */
size_t len = 0, i = 0; size_t len = 0, i = 0;
@@ -896,8 +896,8 @@ bool bacapp_print_value(
case PROP_OBJECT_TYPE: case PROP_OBJECT_TYPE:
if (value->type.Enumerated < MAX_ASHRAE_OBJECT_TYPE) { if (value->type.Enumerated < MAX_ASHRAE_OBJECT_TYPE) {
fprintf(stream, "%s", fprintf(stream, "%s",
bactext_object_type_name(value-> bactext_object_type_name(value->type.
type.Enumerated)); Enumerated));
} else if (value->type.Enumerated < 128) { } else if (value->type.Enumerated < 128) {
fprintf(stream, "reserved %lu", fprintf(stream, "reserved %lu",
(unsigned long) value->type.Enumerated); (unsigned long) value->type.Enumerated);
@@ -913,8 +913,8 @@ bool bacapp_print_value(
case PROP_UNITS: case PROP_UNITS:
if (value->type.Enumerated < 256) { if (value->type.Enumerated < 256) {
fprintf(stream, "%s", fprintf(stream, "%s",
bactext_engineering_unit_name(value->type. bactext_engineering_unit_name(value->
Enumerated)); type.Enumerated));
} else { } else {
fprintf(stream, "proprietary %lu", fprintf(stream, "proprietary %lu",
(unsigned long) value->type.Enumerated); (unsigned long) value->type.Enumerated);
@@ -922,14 +922,14 @@ bool bacapp_print_value(
break; break;
case PROP_POLARITY: case PROP_POLARITY:
fprintf(stream, "%s", fprintf(stream, "%s",
bactext_binary_polarity_name(value->type. bactext_binary_polarity_name(value->
Enumerated)); type.Enumerated));
break; break;
case PROP_PRESENT_VALUE: case PROP_PRESENT_VALUE:
if (object_type < PROPRIETARY_BACNET_OBJECT_TYPE) { if (object_type < PROPRIETARY_BACNET_OBJECT_TYPE) {
fprintf(stream, "%s", fprintf(stream, "%s",
bactext_binary_present_value_name( bactext_binary_present_value_name(value->type.
value->type.Enumerated)); Enumerated));
} else { } else {
fprintf(stream, "%lu", fprintf(stream, "%lu",
(unsigned long) value->type.Enumerated); (unsigned long) value->type.Enumerated);
@@ -941,8 +941,8 @@ bool bacapp_print_value(
break; break;
case PROP_SYSTEM_STATUS: case PROP_SYSTEM_STATUS:
fprintf(stream, "%s", fprintf(stream, "%s",
bactext_device_status_name(value->type. bactext_device_status_name(value->
Enumerated)); type.Enumerated));
break; break;
case PROP_SEGMENTATION_SUPPORTED: case PROP_SEGMENTATION_SUPPORTED:
fprintf(stream, "%s", fprintf(stream, "%s",
@@ -1313,8 +1313,8 @@ void testBACnetApplicationData_Safe(
break; break;
case BACNET_APPLICATION_TAG_CHARACTER_STRING: case BACNET_APPLICATION_TAG_CHARACTER_STRING:
characterstring_init_ansi(&input_value[i]. characterstring_init_ansi(&input_value[i].type.
type.Character_String, "Hello There!"); Character_String, "Hello There!");
break; break;
case BACNET_APPLICATION_TAG_BIT_STRING: case BACNET_APPLICATION_TAG_BIT_STRING:
+2 -2
View File
@@ -944,8 +944,8 @@ INDTEXT_DATA bacnet_property_names[] = {
{PROP_BINARY_INACTIVE_VALUE, "binary-inactive-value"} {PROP_BINARY_INACTIVE_VALUE, "binary-inactive-value"}
, ,
/* enumeration 326 is used in Addendum j to ANSI/ASHRAE 135-2004 */ /* enumeration 326 is used in Addendum j to ANSI/ASHRAE 135-2004 */
{PROP_VERIFICATION_TIME, "verification-time"} {PROP_VERIFICATION_TIME, "verification-time"}
, ,
{PROP_BIT_MASK, "bit-mask"} {PROP_BIT_MASK, "bit-mask"}
, ,
{PROP_BIT_TEXT, "bit-text"} {PROP_BIT_TEXT, "bit-text"}
+2 -2
View File
@@ -678,8 +678,8 @@ static void bvlc_bdt_forward_npdu(
mask in the BDT entry and logically ORing it with the mask in the BDT entry and logically ORing it with the
BBMD address of the same entry. */ BBMD address of the same entry. */
bip_dest.sin_addr.s_addr = bip_dest.sin_addr.s_addr =
htonl(((~BBMD_Table[i].broadcast_mask.s_addr) | BBMD_Table[i]. htonl(((~BBMD_Table[i].broadcast_mask.
dest_address.s_addr)); s_addr) | BBMD_Table[i].dest_address.s_addr));
bip_dest.sin_port = htons(BBMD_Table[i].dest_port); bip_dest.sin_port = htons(BBMD_Table[i].dest_port);
/* don't send to my broadcast address and same port */ /* don't send to my broadcast address and same port */
if ((bip_dest.sin_addr.s_addr == htonl(bip_get_broadcast_addr())) if ((bip_dest.sin_addr.s_addr == htonl(bip_get_broadcast_addr()))
+139 -134
View File
@@ -192,14 +192,14 @@ int event_notify_encode_service_request(
len = len =
encode_context_bitstring(&apdu[apdu_len], 0, encode_context_bitstring(&apdu[apdu_len], 0,
&data->notificationParams.changeOfBitstring. &data->notificationParams.
referencedBitString); changeOfBitstring.referencedBitString);
apdu_len += len; apdu_len += len;
len = len =
encode_context_bitstring(&apdu[apdu_len], 1, encode_context_bitstring(&apdu[apdu_len], 1,
&data->notificationParams.changeOfBitstring. &data->notificationParams.
statusFlags); changeOfBitstring.statusFlags);
apdu_len += len; apdu_len += len;
len = encode_closing_tag(&apdu[apdu_len], 0); len = encode_closing_tag(&apdu[apdu_len], 0);
@@ -223,8 +223,8 @@ int event_notify_encode_service_request(
len = len =
encode_context_bitstring(&apdu[apdu_len], 1, encode_context_bitstring(&apdu[apdu_len], 1,
&data->notificationParams.changeOfState. &data->notificationParams.
statusFlags); changeOfState.statusFlags);
apdu_len += len; apdu_len += len;
len = encode_closing_tag(&apdu[apdu_len], 1); len = encode_closing_tag(&apdu[apdu_len], 1);
@@ -242,8 +242,8 @@ int event_notify_encode_service_request(
case CHANGE_OF_VALUE_REAL: case CHANGE_OF_VALUE_REAL:
len = len =
encode_context_real(&apdu[apdu_len], 1, encode_context_real(&apdu[apdu_len], 1,
data->notificationParams.changeOfValue. data->notificationParams.
newValue.changeValue); changeOfValue.newValue.changeValue);
apdu_len += len; apdu_len += len;
break; break;
@@ -251,8 +251,8 @@ int event_notify_encode_service_request(
len = len =
encode_context_bitstring(&apdu[apdu_len], encode_context_bitstring(&apdu[apdu_len],
0, 0,
&data->notificationParams.changeOfValue. &data->notificationParams.
newValue.changedBits); changeOfValue.newValue.changedBits);
apdu_len += len; apdu_len += len;
break; break;
@@ -265,8 +265,8 @@ int event_notify_encode_service_request(
len = len =
encode_context_bitstring(&apdu[apdu_len], 1, encode_context_bitstring(&apdu[apdu_len], 1,
&data->notificationParams.changeOfValue. &data->notificationParams.
statusFlags); changeOfValue.statusFlags);
apdu_len += len; apdu_len += len;
len = encode_closing_tag(&apdu[apdu_len], 2); len = encode_closing_tag(&apdu[apdu_len], 2);
@@ -280,20 +280,20 @@ int event_notify_encode_service_request(
len = len =
encode_context_real(&apdu[apdu_len], 0, encode_context_real(&apdu[apdu_len], 0,
data->notificationParams.floatingLimit. data->notificationParams.
referenceValue); floatingLimit.referenceValue);
apdu_len += len; apdu_len += len;
len = len =
encode_context_bitstring(&apdu[apdu_len], 1, encode_context_bitstring(&apdu[apdu_len], 1,
&data->notificationParams.floatingLimit. &data->notificationParams.
statusFlags); floatingLimit.statusFlags);
apdu_len += len; apdu_len += len;
len = len =
encode_context_real(&apdu[apdu_len], 2, encode_context_real(&apdu[apdu_len], 2,
data->notificationParams.floatingLimit. data->notificationParams.
setPointValue); floatingLimit.setPointValue);
apdu_len += len; apdu_len += len;
len = len =
@@ -312,8 +312,8 @@ int event_notify_encode_service_request(
len = len =
encode_context_real(&apdu[apdu_len], 0, encode_context_real(&apdu[apdu_len], 0,
data->notificationParams.outOfRange. data->notificationParams.
exceedingValue); outOfRange.exceedingValue);
apdu_len += len; apdu_len += len;
len = len =
@@ -341,26 +341,26 @@ int event_notify_encode_service_request(
len = len =
encode_context_enumerated(&apdu[apdu_len], 0, encode_context_enumerated(&apdu[apdu_len], 0,
data->notificationParams.changeOfLifeSafety. data->notificationParams.
newState); changeOfLifeSafety.newState);
apdu_len += len; apdu_len += len;
len = len =
encode_context_enumerated(&apdu[apdu_len], 1, encode_context_enumerated(&apdu[apdu_len], 1,
data->notificationParams.changeOfLifeSafety. data->notificationParams.
newMode); changeOfLifeSafety.newMode);
apdu_len += len; apdu_len += len;
len = len =
encode_context_bitstring(&apdu[apdu_len], 2, encode_context_bitstring(&apdu[apdu_len], 2,
&data->notificationParams.changeOfLifeSafety. &data->notificationParams.
statusFlags); changeOfLifeSafety.statusFlags);
apdu_len += len; apdu_len += len;
len = len =
encode_context_enumerated(&apdu[apdu_len], 3, encode_context_enumerated(&apdu[apdu_len], 3,
data->notificationParams.changeOfLifeSafety. data->notificationParams.
operationExpected); changeOfLifeSafety.operationExpected);
apdu_len += len; apdu_len += len;
len = encode_closing_tag(&apdu[apdu_len], 8); len = encode_closing_tag(&apdu[apdu_len], 8);
@@ -374,20 +374,20 @@ int event_notify_encode_service_request(
len = len =
bacapp_encode_context_device_obj_property_ref(&apdu bacapp_encode_context_device_obj_property_ref(&apdu
[apdu_len], 0, [apdu_len], 0,
&data->notificationParams.bufferReady. &data->notificationParams.
bufferProperty); bufferReady.bufferProperty);
apdu_len += len; apdu_len += len;
len = len =
encode_context_unsigned(&apdu[apdu_len], 1, encode_context_unsigned(&apdu[apdu_len], 1,
data->notificationParams.bufferReady. data->notificationParams.
previousNotification); bufferReady.previousNotification);
apdu_len += len; apdu_len += len;
len = len =
encode_context_unsigned(&apdu[apdu_len], 2, encode_context_unsigned(&apdu[apdu_len], 2,
data->notificationParams.bufferReady. data->notificationParams.
currentNotification); bufferReady.currentNotification);
apdu_len += len; apdu_len += len;
len = encode_closing_tag(&apdu[apdu_len], 10); len = encode_closing_tag(&apdu[apdu_len], 10);
@@ -399,20 +399,20 @@ int event_notify_encode_service_request(
len = len =
encode_context_unsigned(&apdu[apdu_len], 0, encode_context_unsigned(&apdu[apdu_len], 0,
data->notificationParams.unsignedRange. data->notificationParams.
exceedingValue); unsignedRange.exceedingValue);
apdu_len += len; apdu_len += len;
len = len =
encode_context_bitstring(&apdu[apdu_len], 1, encode_context_bitstring(&apdu[apdu_len], 1,
&data->notificationParams.unsignedRange. &data->notificationParams.
statusFlags); unsignedRange.statusFlags);
apdu_len += len; apdu_len += len;
len = len =
encode_context_unsigned(&apdu[apdu_len], 2, encode_context_unsigned(&apdu[apdu_len], 2,
data->notificationParams.unsignedRange. data->notificationParams.
exceededLimit); unsignedRange.exceededLimit);
apdu_len += len; apdu_len += len;
len = encode_closing_tag(&apdu[apdu_len], 11); len = encode_closing_tag(&apdu[apdu_len], 11);
@@ -595,16 +595,18 @@ int event_notify_decode_service_request(
case EVENT_CHANGE_OF_BITSTRING: case EVENT_CHANGE_OF_BITSTRING:
if (-1 == (section_length = if (-1 == (section_length =
decode_context_bitstring(&apdu[len], 0, decode_context_bitstring(&apdu[len], 0,
&data->notificationParams. &data->
changeOfBitstring.referencedBitString))) { notificationParams.changeOfBitstring.
referencedBitString))) {
return -1; return -1;
} }
len += section_length; len += section_length;
if (-1 == (section_length = if (-1 == (section_length =
decode_context_bitstring(&apdu[len], 1, decode_context_bitstring(&apdu[len], 1,
&data->notificationParams. &data->
changeOfBitstring.statusFlags))) { notificationParams.changeOfBitstring.
statusFlags))) {
return -1; return -1;
} }
len += section_length; len += section_length;
@@ -615,16 +617,16 @@ int event_notify_decode_service_request(
if (-1 == (section_length = if (-1 == (section_length =
bacapp_decode_context_property_state(&apdu bacapp_decode_context_property_state(&apdu
[len], 0, [len], 0,
&data->notificationParams.changeOfState. &data->notificationParams.
newState))) { changeOfState.newState))) {
return -1; return -1;
} }
len += section_length; len += section_length;
if (-1 == (section_length = if (-1 == (section_length =
decode_context_bitstring(&apdu[len], 1, decode_context_bitstring(&apdu[len], 1,
&data->notificationParams.changeOfState. &data->notificationParams.
statusFlags))) { changeOfState.statusFlags))) {
return -1; return -1;
} }
len += section_length; len += section_length;
@@ -642,8 +644,9 @@ int event_notify_decode_service_request(
if (-1 == (section_length = if (-1 == (section_length =
decode_context_bitstring(&apdu[len], 0, decode_context_bitstring(&apdu[len], 0,
&data->notificationParams. &data->
changeOfValue.newValue.changedBits))) { notificationParams.changeOfValue.
newValue.changedBits))) {
return -1; return -1;
} }
@@ -654,8 +657,9 @@ int event_notify_decode_service_request(
CHANGE_OF_VALUE_REAL)) { CHANGE_OF_VALUE_REAL)) {
if (-1 == (section_length = if (-1 == (section_length =
decode_context_real(&apdu[len], 1, decode_context_real(&apdu[len], 1,
&data->notificationParams. &data->
changeOfValue.newValue.changeValue))) { notificationParams.changeOfValue.
newValue.changeValue))) {
return -1; return -1;
} }
@@ -673,8 +677,8 @@ int event_notify_decode_service_request(
if (-1 == (section_length = if (-1 == (section_length =
decode_context_bitstring(&apdu[len], 1, decode_context_bitstring(&apdu[len], 1,
&data->notificationParams.changeOfValue. &data->notificationParams.
statusFlags))) { changeOfValue.statusFlags))) {
return -1; return -1;
} }
len += section_length; len += section_length;
@@ -683,31 +687,31 @@ int event_notify_decode_service_request(
case EVENT_FLOATING_LIMIT: case EVENT_FLOATING_LIMIT:
if (-1 == (section_length = if (-1 == (section_length =
decode_context_real(&apdu[len], 0, decode_context_real(&apdu[len], 0,
&data->notificationParams.floatingLimit. &data->notificationParams.
referenceValue))) { floatingLimit.referenceValue))) {
return -1; return -1;
} }
len += section_length; len += section_length;
if (-1 == (section_length = if (-1 == (section_length =
decode_context_bitstring(&apdu[len], 1, decode_context_bitstring(&apdu[len], 1,
&data->notificationParams.floatingLimit. &data->notificationParams.
statusFlags))) { floatingLimit.statusFlags))) {
return -1; return -1;
} }
len += section_length; len += section_length;
if (-1 == (section_length = if (-1 == (section_length =
decode_context_real(&apdu[len], 2, decode_context_real(&apdu[len], 2,
&data->notificationParams.floatingLimit. &data->notificationParams.
setPointValue))) { floatingLimit.setPointValue))) {
return -1; return -1;
} }
len += section_length; len += section_length;
if (-1 == (section_length = if (-1 == (section_length =
decode_context_real(&apdu[len], 3, decode_context_real(&apdu[len], 3,
&data->notificationParams.floatingLimit. &data->notificationParams.
errorLimit))) { floatingLimit.errorLimit))) {
return -1; return -1;
} }
len += section_length; len += section_length;
@@ -716,31 +720,31 @@ int event_notify_decode_service_request(
case EVENT_OUT_OF_RANGE: case EVENT_OUT_OF_RANGE:
if (-1 == (section_length = if (-1 == (section_length =
decode_context_real(&apdu[len], 0, decode_context_real(&apdu[len], 0,
&data->notificationParams.outOfRange. &data->notificationParams.
exceedingValue))) { outOfRange.exceedingValue))) {
return -1; return -1;
} }
len += section_length; len += section_length;
if (-1 == (section_length = if (-1 == (section_length =
decode_context_bitstring(&apdu[len], 1, decode_context_bitstring(&apdu[len], 1,
&data->notificationParams.outOfRange. &data->notificationParams.
statusFlags))) { outOfRange.statusFlags))) {
return -1; return -1;
} }
len += section_length; len += section_length;
if (-1 == (section_length = if (-1 == (section_length =
decode_context_real(&apdu[len], 2, decode_context_real(&apdu[len], 2,
&data->notificationParams.outOfRange. &data->notificationParams.
deadband))) { outOfRange.deadband))) {
return -1; return -1;
} }
len += section_length; len += section_length;
if (-1 == (section_length = if (-1 == (section_length =
decode_context_real(&apdu[len], 3, decode_context_real(&apdu[len], 3,
&data->notificationParams.outOfRange. &data->notificationParams.
exceededLimit))) { outOfRange.exceededLimit))) {
return -1; return -1;
} }
len += section_length; len += section_length;
@@ -768,8 +772,9 @@ int event_notify_decode_service_request(
if (-1 == (section_length = if (-1 == (section_length =
decode_context_bitstring(&apdu[len], 2, decode_context_bitstring(&apdu[len], 2,
&data->notificationParams. &data->
changeOfLifeSafety.statusFlags))) { notificationParams.changeOfLifeSafety.
statusFlags))) {
return -1; return -1;
} }
len += section_length; len += section_length;
@@ -779,8 +784,8 @@ int event_notify_decode_service_request(
&value))) { &value))) {
return -1; return -1;
} }
data->notificationParams.changeOfLifeSafety. data->notificationParams.
operationExpected = changeOfLifeSafety.operationExpected =
(BACNET_LIFE_SAFETY_OPERATION) value; (BACNET_LIFE_SAFETY_OPERATION) value;
len += section_length; len += section_length;
break; break;
@@ -789,24 +794,24 @@ int event_notify_decode_service_request(
if (-1 == (section_length = if (-1 == (section_length =
bacapp_decode_context_device_obj_property_ref bacapp_decode_context_device_obj_property_ref
(&apdu[len], 0, (&apdu[len], 0,
&data->notificationParams.bufferReady. &data->notificationParams.
bufferProperty))) { bufferReady.bufferProperty))) {
return -1; return -1;
} }
len += section_length; len += section_length;
if (-1 == (section_length = if (-1 == (section_length =
decode_context_unsigned(&apdu[len], 1, decode_context_unsigned(&apdu[len], 1,
&data->notificationParams.bufferReady. &data->notificationParams.
previousNotification))) { bufferReady.previousNotification))) {
return -1; return -1;
} }
len += section_length; len += section_length;
if (-1 == (section_length = if (-1 == (section_length =
decode_context_unsigned(&apdu[len], 2, decode_context_unsigned(&apdu[len], 2,
&data->notificationParams.bufferReady. &data->notificationParams.
currentNotification))) { bufferReady.currentNotification))) {
return -1; return -1;
} }
len += section_length; len += section_length;
@@ -815,24 +820,24 @@ int event_notify_decode_service_request(
case EVENT_UNSIGNED_RANGE: case EVENT_UNSIGNED_RANGE:
if (-1 == (section_length = if (-1 == (section_length =
decode_context_unsigned(&apdu[len], 0, decode_context_unsigned(&apdu[len], 0,
&data->notificationParams.unsignedRange. &data->notificationParams.
exceedingValue))) { unsignedRange.exceedingValue))) {
return -1; return -1;
} }
len += section_length; len += section_length;
if (-1 == (section_length = if (-1 == (section_length =
decode_context_bitstring(&apdu[len], 1, decode_context_bitstring(&apdu[len], 1,
&data->notificationParams.unsignedRange. &data->notificationParams.
statusFlags))) { unsignedRange.statusFlags))) {
return -1; return -1;
} }
len += section_length; len += section_length;
if (-1 == (section_length = if (-1 == (section_length =
decode_context_unsigned(&apdu[len], 2, decode_context_unsigned(&apdu[len], 2,
&data->notificationParams.unsignedRange. &data->notificationParams.
exceededLimit))) { unsignedRange.exceededLimit))) {
return -1; return -1;
} }
len += section_length; len += section_length;
@@ -1091,16 +1096,16 @@ void testEventEventState(
data.eventType = EVENT_CHANGE_OF_BITSTRING; data.eventType = EVENT_CHANGE_OF_BITSTRING;
bitstring_init(&data.notificationParams.changeOfBitstring. bitstring_init(&data.notificationParams.
referencedBitString); changeOfBitstring.referencedBitString);
bitstring_set_bit(&data.notificationParams.changeOfBitstring. bitstring_set_bit(&data.notificationParams.
referencedBitString, 0, true); changeOfBitstring.referencedBitString, 0, true);
bitstring_set_bit(&data.notificationParams.changeOfBitstring. bitstring_set_bit(&data.notificationParams.
referencedBitString, 1, false); changeOfBitstring.referencedBitString, 1, false);
bitstring_set_bit(&data.notificationParams.changeOfBitstring. bitstring_set_bit(&data.notificationParams.
referencedBitString, 2, true); changeOfBitstring.referencedBitString, 2, true);
bitstring_set_bit(&data.notificationParams.changeOfBitstring. bitstring_set_bit(&data.notificationParams.
referencedBitString, 2, false); changeOfBitstring.referencedBitString, 2, false);
bitstring_init(&data.notificationParams.changeOfBitstring.statusFlags); bitstring_init(&data.notificationParams.changeOfBitstring.statusFlags);
@@ -1186,16 +1191,16 @@ void testEventEventState(
data.notificationParams.changeOfValue.tag = CHANGE_OF_VALUE_BITS; data.notificationParams.changeOfValue.tag = CHANGE_OF_VALUE_BITS;
bitstring_init(&data.notificationParams.changeOfValue.newValue. bitstring_init(&data.notificationParams.changeOfValue.
changedBits); newValue.changedBits);
bitstring_set_bit(&data.notificationParams.changeOfValue.newValue. bitstring_set_bit(&data.notificationParams.changeOfValue.
changedBits, 0, true); newValue.changedBits, 0, true);
bitstring_set_bit(&data.notificationParams.changeOfValue.newValue. bitstring_set_bit(&data.notificationParams.changeOfValue.
changedBits, 1, false); newValue.changedBits, 1, false);
bitstring_set_bit(&data.notificationParams.changeOfValue.newValue. bitstring_set_bit(&data.notificationParams.changeOfValue.
changedBits, 2, false); newValue.changedBits, 2, false);
bitstring_set_bit(&data.notificationParams.changeOfValue.newValue. bitstring_set_bit(&data.notificationParams.changeOfValue.
changedBits, 3, false); newValue.changedBits, 3, false);
memset(buffer, 0, MAX_APDU); memset(buffer, 0, MAX_APDU);
inLen = event_notify_encode_service_request(&buffer[0], &data); inLen = event_notify_encode_service_request(&buffer[0], &data);
@@ -1435,12 +1440,12 @@ void testEventEventState(
data.notificationParams.bufferReady.currentNotification = 2345; data.notificationParams.bufferReady.currentNotification = 2345;
data.notificationParams.bufferReady.bufferProperty.deviceIndentifier.type = data.notificationParams.bufferReady.bufferProperty.deviceIndentifier.type =
OBJECT_DEVICE; OBJECT_DEVICE;
data.notificationParams.bufferReady.bufferProperty.deviceIndentifier. data.notificationParams.bufferReady.bufferProperty.
instance = 500; deviceIndentifier.instance = 500;
data.notificationParams.bufferReady.bufferProperty.objectIdentifier.type = data.notificationParams.bufferReady.bufferProperty.objectIdentifier.type =
OBJECT_ANALOG_INPUT; OBJECT_ANALOG_INPUT;
data.notificationParams.bufferReady.bufferProperty.objectIdentifier. data.notificationParams.bufferReady.bufferProperty.
instance = 100; objectIdentifier.instance = 100;
data.notificationParams.bufferReady.bufferProperty.propertyIdentifier = data.notificationParams.bufferReady.bufferProperty.propertyIdentifier =
PROP_PRESENT_VALUE; PROP_PRESENT_VALUE;
data.notificationParams.bufferReady.bufferProperty.arrayIndex = 0; data.notificationParams.bufferReady.bufferProperty.arrayIndex = 0;
@@ -1465,34 +1470,34 @@ void testEventEventState(
ct_test(pTest, ct_test(pTest,
data.notificationParams.bufferReady.bufferProperty.deviceIndentifier. data.notificationParams.bufferReady.bufferProperty.
type == deviceIndentifier.type ==
data2.notificationParams.bufferReady.bufferProperty.deviceIndentifier. data2.notificationParams.bufferReady.bufferProperty.
type); deviceIndentifier.type);
ct_test(pTest,
data.notificationParams.bufferReady.bufferProperty.deviceIndentifier.
instance ==
data2.notificationParams.bufferReady.bufferProperty.deviceIndentifier.
instance);
ct_test(pTest,
data.notificationParams.bufferReady.bufferProperty.objectIdentifier.
instance ==
data2.notificationParams.bufferReady.bufferProperty.objectIdentifier.
instance);
ct_test(pTest,
data.notificationParams.bufferReady.bufferProperty.objectIdentifier.
type ==
data2.notificationParams.bufferReady.bufferProperty.objectIdentifier.
type);
ct_test(pTest, ct_test(pTest,
data.notificationParams.bufferReady.bufferProperty. data.notificationParams.bufferReady.bufferProperty.
propertyIdentifier == deviceIndentifier.instance ==
data2.notificationParams.bufferReady.bufferProperty. data2.notificationParams.bufferReady.bufferProperty.
propertyIdentifier); deviceIndentifier.instance);
ct_test(pTest,
data.notificationParams.bufferReady.bufferProperty.
objectIdentifier.instance ==
data2.notificationParams.bufferReady.bufferProperty.
objectIdentifier.instance);
ct_test(pTest,
data.notificationParams.bufferReady.bufferProperty.
objectIdentifier.type ==
data2.notificationParams.bufferReady.bufferProperty.
objectIdentifier.type);
ct_test(pTest,
data.notificationParams.bufferReady.
bufferProperty.propertyIdentifier ==
data2.notificationParams.bufferReady.
bufferProperty.propertyIdentifier);
ct_test(pTest, ct_test(pTest,
data.notificationParams.bufferReady.bufferProperty.arrayIndex == data.notificationParams.bufferReady.bufferProperty.arrayIndex ==
+2 -2
View File
@@ -52,12 +52,12 @@
unsigned FIFO_Count( unsigned FIFO_Count(
FIFO_BUFFER const *b) FIFO_BUFFER const *b)
{ {
unsigned head, tail; /* used to avoid volatile decision */ unsigned head, tail; /* used to avoid volatile decision */
if (b) { if (b) {
head = b->head; head = b->head;
tail = b->tail; tail = b->tail;
return head-tail; return head - tail;
} else { } else {
return 0; return 0;
} }