Added WriteProperty service and Analog Value object without priority array to pic18f6720 port demo.

This commit is contained in:
skarg
2007-03-30 20:51:57 +00:00
parent 378b5f710d
commit 42ade5a5a0
6 changed files with 93 additions and 214 deletions
+44 -38
View File
@@ -79,6 +79,9 @@ file_059=no
file_060=no file_060=no
file_061=no file_061=no
file_062=no file_062=no
file_063=no
file_064=no
file_065=no
[FILE_INFO] [FILE_INFO]
file_000=C:\code\bacnet-stack\abort.c file_000=C:\code\bacnet-stack\abort.c
file_001=C:\code\bacnet-stack\apdu.c file_001=C:\code\bacnet-stack\apdu.c
@@ -105,44 +108,47 @@ file_021=C:\code\bacnet-stack\datetime.c
file_022=C:\code\bacnet-stack\demo\handler\txbuf.c file_022=C:\code\bacnet-stack\demo\handler\txbuf.c
file_023=C:\code\bacnet-stack\demo\handler\h_whois.c file_023=C:\code\bacnet-stack\demo\handler\h_whois.c
file_024=mstp.c file_024=mstp.c
file_025=C:\code\bacnet-stack\demo\handler\h_rp_tiny.c file_025=bv.c
file_026=bv.c file_026=ai.c
file_027=ai.c file_027=bi.c
file_028=bi.c file_028=av.c
file_029=C:\code\bacnet-stack\wp.h file_029=h_rp.c
file_030=C:\code\bacnet-stack\abort.h file_030=h_wp.c
file_031=C:\code\bacnet-stack\apdu.h file_031=C:\code\bacnet-stack\wp.c
file_032=C:\code\bacnet-stack\bacapp.h file_032=C:\code\bacnet-stack\wp.h
file_033=C:\code\bacnet-stack\bacdcode.h file_033=C:\code\bacnet-stack\abort.h
file_034=C:\code\bacnet-stack\bacdef.h file_034=C:\code\bacnet-stack\apdu.h
file_035=C:\code\bacnet-stack\bacenum.h file_035=C:\code\bacnet-stack\bacapp.h
file_036=C:\code\bacnet-stack\bacerror.h file_036=C:\code\bacnet-stack\bacdcode.h
file_037=C:\code\bacnet-stack\bacstr.h file_037=C:\code\bacnet-stack\bacdef.h
file_038=C:\code\bacnet-stack\config.h file_038=C:\code\bacnet-stack\bacenum.h
file_039=C:\code\bacnet-stack\crc.h file_039=C:\code\bacnet-stack\bacerror.h
file_040=C:\code\bacnet-stack\dcc.h file_040=C:\code\bacnet-stack\bacstr.h
file_041=C:\code\bacnet-stack\dlmstp.h file_041=C:\code\bacnet-stack\config.h
file_042=C:\code\bacnet-stack\iam.h file_042=C:\code\bacnet-stack\crc.h
file_043=C:\code\bacnet-stack\npdu.h file_043=C:\code\bacnet-stack\dcc.h
file_044=C:\code\bacnet-stack\rd.h file_044=C:\code\bacnet-stack\dlmstp.h
file_045=C:\code\bacnet-stack\reject.h file_045=C:\code\bacnet-stack\iam.h
file_046=C:\code\bacnet-stack\rp.h file_046=C:\code\bacnet-stack\npdu.h
file_047=C:\code\bacnet-stack\whois.h file_047=C:\code\bacnet-stack\rd.h
file_048=C:\code\bacnet-stack\demo\handler\client.h file_048=C:\code\bacnet-stack\reject.h
file_049=C:\code\bacnet-stack\demo\handler\handlers.h file_049=C:\code\bacnet-stack\rp.h
file_050=C:\code\bacnet-stack\demo\object\ai.h file_050=C:\code\bacnet-stack\whois.h
file_051=C:\code\bacnet-stack\demo\object\ao.h file_051=C:\code\bacnet-stack\demo\handler\client.h
file_052=C:\code\bacnet-stack\demo\object\device.h file_052=C:\code\bacnet-stack\demo\handler\handlers.h
file_053=stdbool.h file_053=C:\code\bacnet-stack\demo\object\ai.h
file_054=stdint.h file_054=C:\code\bacnet-stack\demo\object\ao.h
file_055=hardware.h file_055=C:\code\bacnet-stack\demo\object\device.h
file_056=rs485.h file_056=stdbool.h
file_057=C:\code\bacnet-stack\datetime.h file_057=stdint.h
file_058=C:\code\bacnet-stack\demo\handler\txbuf.h file_058=hardware.h
file_059=mstp.h file_059=rs485.h
file_060=C:\code\bacnet-stack\datalink.h file_060=C:\code\bacnet-stack\datetime.h
file_061=C:\mcc18\h\p18f6720.h file_061=C:\code\bacnet-stack\demo\handler\txbuf.h
file_062=18F6720.lkr file_062=mstp.h
file_063=C:\code\bacnet-stack\datalink.h
file_064=C:\mcc18\h\p18f6720.h
file_065=18F6720.lkr
[SUITE_INFO] [SUITE_INFO]
suite_guid={5B7D72DD-9861-47BD-9F60-2BE967BF8416} suite_guid={5B7D72DD-9861-47BD-9F60-2BE967BF8416}
suite_state= suite_state=
Binary file not shown.
+24 -26
View File
@@ -44,29 +44,24 @@
/* When all the priorities are level null, the present value returns */ /* When all the priorities are level null, the present value returns */
/* the Relinquish Default value */ /* the Relinquish Default value */
#define ANALOG_RELINQUISH_DEFAULT 0 #define ANALOG_RELINQUISH_DEFAULT 0
/* Here is our Priority Array. They are supposed to be Real, but */ /* Here is our Present_Value. They are supposed to be Real, but */
/* we don't have that kind of memory, so we will use a single byte */ /* we don't have that kind of memory, so we will use a single byte */
/* and load a Real for returning the value when asked. */ /* and load a Real for returning the value when asked. */
static uint8_t Analog_Value_Level[MAX_ANALOG_VALUES][BACNET_MAX_PRIORITY]; static uint8_t Present_Value[MAX_ANALOG_VALUES];
/* Writable out-of-service allows others to play with our Present Value */
/* without changing the physical output */
static bool Analog_Value_Out_Of_Service[MAX_ANALOG_VALUES];
/* we need to have our arrays initialized before answering any calls */ /* we need to have our arrays initialized before answering any calls */
static bool Analog_Value_Initialized = false; static bool Analog_Value_Initialized = false;
void Analog_Value_Init(void) void Analog_Value_Init(void)
{ {
unsigned i, j; unsigned i;
if (!Analog_Value_Initialized) { if (!Analog_Value_Initialized) {
Analog_Value_Initialized = true; Analog_Value_Initialized = true;
/* initialize all the analog output priority arrays to NULL */ /* initialize all the analog output priority arrays to NULL */
for (i = 0; i < MAX_ANALOG_VALUES; i++) { for (i = 0; i < MAX_ANALOG_VALUES; i++) {
for (j = 0; j < BACNET_MAX_PRIORITY; j++) { Present_Value[i] = ANALOG_LEVEL_NULL;
Analog_Value_Level[i][j] = ANALOG_LEVEL_NULL;
}
} }
} }
@@ -125,12 +120,7 @@ static float Analog_Value_Present_Value(uint32_t object_instance)
Analog_Value_Init(); Analog_Value_Init();
index = Analog_Value_Instance_To_Index(object_instance); index = Analog_Value_Instance_To_Index(object_instance);
if (index < MAX_ANALOG_VALUES) { if (index < MAX_ANALOG_VALUES) {
for (i = 0; i < BACNET_MAX_PRIORITY; i++) { value = Present_Value[index];
if (Analog_Value_Level[index][i] != ANALOG_LEVEL_NULL) {
value = Analog_Value_Level[index][i];
break;
}
}
} }
return value; return value;
@@ -142,7 +132,7 @@ char *Analog_Value_Name(uint32_t object_instance)
static char text_string[32] = ""; /* okay for single thread */ static char text_string[32] = ""; /* okay for single thread */
if (object_instance < MAX_ANALOG_VALUES) { if (object_instance < MAX_ANALOG_VALUES) {
sprintf(text_string, "ANALOG VALUE %u", object_instance); sprintf(text_string, "AV-%lu", object_instance);
return text_string; return text_string;
} }
@@ -196,13 +186,16 @@ int Analog_Value_Encode_Property_APDU(uint8_t * apdu,
apdu_len = encode_tagged_enumerated(&apdu[0], EVENT_STATE_NORMAL); apdu_len = encode_tagged_enumerated(&apdu[0], EVENT_STATE_NORMAL);
break; break;
case PROP_OUT_OF_SERVICE: case PROP_OUT_OF_SERVICE:
#if 0
object_index = Analog_Value_Instance_To_Index(object_instance); object_index = Analog_Value_Instance_To_Index(object_instance);
state = Analog_Value_Out_Of_Service[object_index]; state = Analog_Value_Out_Of_Service[object_index];
apdu_len = encode_tagged_boolean(&apdu[0], state); #endif
apdu_len = encode_tagged_boolean(&apdu[0], false);
break; break;
case PROP_UNITS: case PROP_UNITS:
apdu_len = encode_tagged_enumerated(&apdu[0], UNITS_PERCENT); apdu_len = encode_tagged_enumerated(&apdu[0], UNITS_PERCENT);
break; break;
#if 0
case PROP_PRIORITY_ARRAY: case PROP_PRIORITY_ARRAY:
/* Array element zero is the number of elements in the array */ /* Array element zero is the number of elements in the array */
if (array_index == 0) if (array_index == 0)
@@ -214,11 +207,11 @@ int Analog_Value_Encode_Property_APDU(uint8_t * apdu,
object_index = Analog_Value_Instance_To_Index(object_instance); object_index = Analog_Value_Instance_To_Index(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 (Analog_Value_Level[object_index][i] == if (Present_Value[object_index][i] ==
ANALOG_LEVEL_NULL) ANALOG_LEVEL_NULL)
len = encode_tagged_null(&apdu[apdu_len]); len = encode_tagged_null(&apdu[apdu_len]);
else { else {
real_value = Analog_Value_Level[object_index][i]; real_value = Present_Value[object_index][i];
len = encode_tagged_real(&apdu[apdu_len], real_value); len = encode_tagged_real(&apdu[apdu_len], real_value);
} }
/* add it if we have room */ /* add it if we have room */
@@ -234,12 +227,12 @@ int Analog_Value_Encode_Property_APDU(uint8_t * apdu,
} else { } else {
object_index = Analog_Value_Instance_To_Index(object_instance); object_index = Analog_Value_Instance_To_Index(object_instance);
if (array_index <= BACNET_MAX_PRIORITY) { if (array_index <= BACNET_MAX_PRIORITY) {
if (Analog_Value_Level[object_index][array_index - 1] == if (Present_Value[object_index][array_index - 1] ==
ANALOG_LEVEL_NULL) ANALOG_LEVEL_NULL)
apdu_len = encode_tagged_null(&apdu[0]); apdu_len = encode_tagged_null(&apdu[0]);
else { else {
real_value = real_value =
Analog_Value_Level[object_index][array_index - 1]; Present_Value[object_index][array_index - 1];
apdu_len = encode_tagged_real(&apdu[0], real_value); apdu_len = encode_tagged_real(&apdu[0], real_value);
} }
} else { } else {
@@ -254,6 +247,7 @@ int Analog_Value_Encode_Property_APDU(uint8_t * apdu,
real_value = ANALOG_RELINQUISH_DEFAULT; real_value = ANALOG_RELINQUISH_DEFAULT;
apdu_len = encode_tagged_real(&apdu[0], real_value); apdu_len = encode_tagged_real(&apdu[0], real_value);
break; break;
#endif
default: default:
*error_class = ERROR_CLASS_PROPERTY; *error_class = ERROR_CLASS_PROPERTY;
*error_code = ERROR_CODE_UNKNOWN_PROPERTY; *error_code = ERROR_CODE_UNKNOWN_PROPERTY;
@@ -301,7 +295,7 @@ bool Analog_Value_Write_Property(BACNET_WRITE_PROPERTY_DATA * wp_data,
Analog_Value_Instance_To_Index(wp_data-> Analog_Value_Instance_To_Index(wp_data->
object_instance); object_instance);
priority--; priority--;
Analog_Value_Level[object_index][priority] = 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
are the highest priority. are the highest priority.
However, if Out of Service is TRUE, then don't set the However, if Out of Service is TRUE, then don't set the
@@ -318,14 +312,15 @@ bool Analog_Value_Write_Property(BACNET_WRITE_PROPERTY_DATA * wp_data,
*error_class = ERROR_CLASS_PROPERTY; *error_class = ERROR_CLASS_PROPERTY;
*error_code = ERROR_CODE_VALUE_OUT_OF_RANGE; *error_code = ERROR_CODE_VALUE_OUT_OF_RANGE;
} }
} else if (value.tag == BACNET_APPLICATION_TAG_NULL) { #if 0
} else if (value.tag == BACNET_APPLICATION_TAG_NULL) {
level = ANALOG_LEVEL_NULL; level = ANALOG_LEVEL_NULL;
object_index = object_index =
Analog_Value_Instance_To_Index(wp_data->object_instance); Analog_Value_Instance_To_Index(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--;
Analog_Value_Level[object_index][priority] = level; Present_Value[object_index][priority] = level;
/* Note: you could set the physical output here to the next /* Note: you could set the physical output here to the next
highest priority, or to the relinquish default if no highest priority, or to the relinquish default if no
priorities are set. priorities are set.
@@ -337,11 +332,13 @@ bool Analog_Value_Write_Property(BACNET_WRITE_PROPERTY_DATA * wp_data,
*error_class = ERROR_CLASS_PROPERTY; *error_class = ERROR_CLASS_PROPERTY;
*error_code = ERROR_CODE_VALUE_OUT_OF_RANGE; *error_code = ERROR_CODE_VALUE_OUT_OF_RANGE;
} }
} else { #endif
} else {
*error_class = ERROR_CLASS_PROPERTY; *error_class = ERROR_CLASS_PROPERTY;
*error_code = ERROR_CODE_INVALID_DATA_TYPE; *error_code = ERROR_CODE_INVALID_DATA_TYPE;
} }
break; break;
#if 0
case PROP_OUT_OF_SERVICE: case PROP_OUT_OF_SERVICE:
if (value.tag == BACNET_APPLICATION_TAG_BOOLEAN) { if (value.tag == BACNET_APPLICATION_TAG_BOOLEAN) {
object_index = object_index =
@@ -353,6 +350,7 @@ bool Analog_Value_Write_Property(BACNET_WRITE_PROPERTY_DATA * wp_data,
*error_code = ERROR_CODE_INVALID_DATA_TYPE; *error_code = ERROR_CODE_INVALID_DATA_TYPE;
} }
break; break;
#endif
default: default:
*error_class = ERROR_CLASS_PROPERTY; *error_class = ERROR_CLASS_PROPERTY;
*error_code = ERROR_CODE_WRITE_ACCESS_DENIED; *error_code = ERROR_CODE_WRITE_ACCESS_DENIED;
+21 -5
View File
@@ -36,6 +36,7 @@
#include "dlmstp.h" #include "dlmstp.h"
#include "rs485.h" #include "rs485.h"
#include "ai.h" #include "ai.h"
#include "av.h"
#include "bi.h" #include "bi.h"
#include "bv.h" #include "bv.h"
#include "wp.h" #include "wp.h"
@@ -182,13 +183,16 @@ bool Device_Object_List_Identifier(unsigned array_index,
*instance = Object_Instance_Number; *instance = Object_Instance_Number;
status = true; status = true;
} }
/* normalize the index since
we know it is not the previous objects */
/* array index starts at 1 */
object_index = array_index - 1;
/* 1 for the device object */
object_count = 1;
/* FIXME: add objects as needed */ /* FIXME: add objects as needed */
/* binary input objects */ /* binary value objects */
if (!status) { if (!status) {
/* normalize the index since object_index -= object_count;
we know it is not the previous objects */
/* array index starts at 1, and 1 for the device object */
object_index = array_index - 2;
object_count = Binary_Value_Count(); object_count = Binary_Value_Count();
/* is it a valid index for this object? */ /* is it a valid index for this object? */
if (object_index < object_count) { if (object_index < object_count) {
@@ -198,6 +202,17 @@ bool Device_Object_List_Identifier(unsigned array_index,
} }
} }
/* analog input objects */ /* analog input objects */
if (!status) {
/* array index starts at 1, and 1 for the device object */
object_index -= object_count;
object_count = Analog_Value_Count();
if (object_index < object_count) {
*object_type = OBJECT_ANALOG_VALUE;
*instance = Analog_Value_Index_To_Instance(object_index);
status = true;
}
}
/* analog input objects */
if (!status) { if (!status) {
/* array index starts at 1, and 1 for the device object */ /* array index starts at 1, and 1 for the device object */
object_index -= object_count; object_index -= object_count;
@@ -329,6 +344,7 @@ int Device_Encode_Property_APDU(uint8_t * apdu,
} }
/* FIXME: indicate the objects that YOU support */ /* FIXME: indicate the objects that YOU support */
bitstring_set_bit(&bit_string, OBJECT_DEVICE, true); bitstring_set_bit(&bit_string, OBJECT_DEVICE, true);
bitstring_set_bit(&bit_string, OBJECT_ANALOG_VALUE, true);
bitstring_set_bit(&bit_string, OBJECT_BINARY_VALUE, true); bitstring_set_bit(&bit_string, OBJECT_BINARY_VALUE, true);
bitstring_set_bit(&bit_string, OBJECT_ANALOG_INPUT, true); bitstring_set_bit(&bit_string, OBJECT_ANALOG_INPUT, true);
bitstring_set_bit(&bit_string, OBJECT_BINARY_INPUT, true); bitstring_set_bit(&bit_string, OBJECT_BINARY_INPUT, true);
+3 -144
View File
@@ -38,23 +38,17 @@
/* demo objects */ /* demo objects */
#include "device.h" #include "device.h"
#include "ai.h" #include "ai.h"
#include "ao.h"
#include "av.h" #include "av.h"
#include "bi.h" #include "bi.h"
#include "bo.h"
#include "bv.h" #include "bv.h"
#include "lc.h"
#include "lsp.h" /* too big to reside on stack frame for PIC */
#include "mso.h" static BACNET_WRITE_PROPERTY_DATA wp_data;
#if BACFILE
#include "bacfile.h"
#endif
void handler_write_property(uint8_t * service_request, void handler_write_property(uint8_t * service_request,
uint16_t service_len, uint16_t service_len,
BACNET_ADDRESS * src, BACNET_CONFIRMED_SERVICE_DATA * service_data) BACNET_ADDRESS * src, BACNET_CONFIRMED_SERVICE_DATA * service_data)
{ {
BACNET_WRITE_PROPERTY_DATA wp_data;
int len = 0; int len = 0;
int pdu_len = 0; int pdu_len = 0;
BACNET_NPDU_DATA npdu_data; BACNET_NPDU_DATA npdu_data;
@@ -131,28 +125,6 @@ void handler_write_property(uint8_t * service_request,
fprintf(stderr, "Sending Write Access Error!\n"); fprintf(stderr, "Sending Write Access Error!\n");
#endif #endif
break; break;
case OBJECT_BINARY_OUTPUT:
if (Binary_Output_Write_Property(&wp_data, &error_class,
&error_code)) {
len =
encode_simple_ack(&Handler_Transmit_Buffer[pdu_len],
service_data->invoke_id,
SERVICE_CONFIRMED_WRITE_PROPERTY);
#if PRINT_ENABLED
fprintf(stderr,
"Sending Write Property Simple Ack for BO!\n");
#endif
} else {
len =
bacerror_encode_apdu(&Handler_Transmit_Buffer[pdu_len],
service_data->invoke_id,
SERVICE_CONFIRMED_WRITE_PROPERTY, error_class,
error_code);
#if PRINT_ENABLED
fprintf(stderr, "Sending Write Access Error for BO!\n");
#endif
}
break;
case OBJECT_BINARY_VALUE: case OBJECT_BINARY_VALUE:
if (Binary_Value_Write_Property(&wp_data, &error_class, if (Binary_Value_Write_Property(&wp_data, &error_class,
&error_code)) { &error_code)) {
@@ -172,28 +144,6 @@ void handler_write_property(uint8_t * service_request,
error_code); error_code);
#if PRINT_ENABLED #if PRINT_ENABLED
fprintf(stderr, "Sending Write Access Error for BV!\n"); fprintf(stderr, "Sending Write Access Error for BV!\n");
#endif
}
break;
case OBJECT_ANALOG_OUTPUT:
if (Analog_Output_Write_Property(&wp_data, &error_class,
&error_code)) {
len =
encode_simple_ack(&Handler_Transmit_Buffer[pdu_len],
service_data->invoke_id,
SERVICE_CONFIRMED_WRITE_PROPERTY);
#if PRINT_ENABLED
fprintf(stderr,
"Sending Write Property Simple Ack for AO!\n");
#endif
} else {
len =
bacerror_encode_apdu(&Handler_Transmit_Buffer[pdu_len],
service_data->invoke_id,
SERVICE_CONFIRMED_WRITE_PROPERTY, error_class,
error_code);
#if PRINT_ENABLED
fprintf(stderr, "Sending Write Access Error for AO!\n");
#endif #endif
} }
break; break;
@@ -219,97 +169,6 @@ void handler_write_property(uint8_t * service_request,
#endif #endif
} }
break; break;
case OBJECT_LIFE_SAFETY_POINT:
if (Life_Safety_Point_Write_Property(&wp_data, &error_class,
&error_code)) {
len =
encode_simple_ack(&Handler_Transmit_Buffer[pdu_len],
service_data->invoke_id,
SERVICE_CONFIRMED_WRITE_PROPERTY);
#if PRINT_ENABLED
fprintf(stderr,
"Sending Write Property Simple Ack for LSP!\n");
#endif
} else {
len =
bacerror_encode_apdu(&Handler_Transmit_Buffer[pdu_len],
service_data->invoke_id,
SERVICE_CONFIRMED_WRITE_PROPERTY, error_class,
error_code);
#if PRINT_ENABLED
fprintf(stderr, "Sending Write Access Error for LSP!\n");
#endif
}
break;
case OBJECT_LOAD_CONTROL:
if (Load_Control_Write_Property(&wp_data, &error_class,
&error_code)) {
len =
encode_simple_ack(&Handler_Transmit_Buffer[pdu_len],
service_data->invoke_id,
SERVICE_CONFIRMED_WRITE_PROPERTY);
#if PRINT_ENABLED
fprintf(stderr,
"Sending Write Property Simple Ack for Load Control!\n");
#endif
} else {
len =
bacerror_encode_apdu(&Handler_Transmit_Buffer[pdu_len],
service_data->invoke_id,
SERVICE_CONFIRMED_WRITE_PROPERTY, error_class,
error_code);
#if PRINT_ENABLED
fprintf(stderr,
"Sending Write Access Error for Load Control!\n");
#endif
}
break;
case OBJECT_MULTI_STATE_OUTPUT:
if (Multistate_Output_Write_Property(&wp_data, &error_class,
&error_code)) {
len =
encode_simple_ack(&Handler_Transmit_Buffer[pdu_len],
service_data->invoke_id,
SERVICE_CONFIRMED_WRITE_PROPERTY);
#if PRINT_ENABLED
fprintf(stderr,
"Sending Write Property Simple Ack for MSO!\n");
#endif
} else {
len =
bacerror_encode_apdu(&Handler_Transmit_Buffer[pdu_len],
service_data->invoke_id,
SERVICE_CONFIRMED_WRITE_PROPERTY, error_class,
error_code);
#if PRINT_ENABLED
fprintf(stderr, "Sending Write Access Error for MSO!\n");
#endif
}
break;
#if BACFILE
case OBJECT_FILE:
if (bacfile_write_property(&wp_data, &error_class,
&error_code)) {
len =
encode_simple_ack(&Handler_Transmit_Buffer[pdu_len],
service_data->invoke_id,
SERVICE_CONFIRMED_WRITE_PROPERTY);
#if PRINT_ENABLED
fprintf(stderr,
"Sending Write Property Simple Ack for File!\n");
#endif
} else {
len =
bacerror_encode_apdu(&Handler_Transmit_Buffer[pdu_len],
service_data->invoke_id,
SERVICE_CONFIRMED_WRITE_PROPERTY, error_class,
error_code);
#if PRINT_ENABLED
fprintf(stderr, "Sending Write Access Error for File!\n");
#endif
}
break;
#endif /* BACFILE */
default: default:
len = len =
bacerror_encode_apdu(&Handler_Transmit_Buffer[pdu_len], bacerror_encode_apdu(&Handler_Transmit_Buffer[pdu_len],
+1 -1
View File
@@ -103,9 +103,9 @@ static void BACnet_Service_Handlers_Init(void)
handler_read_property); handler_read_property);
apdu_set_confirmed_handler(SERVICE_CONFIRMED_REINITIALIZE_DEVICE, apdu_set_confirmed_handler(SERVICE_CONFIRMED_REINITIALIZE_DEVICE,
handler_reinitialize_device); handler_reinitialize_device);
#if 0
apdu_set_confirmed_handler(SERVICE_CONFIRMED_WRITE_PROPERTY, apdu_set_confirmed_handler(SERVICE_CONFIRMED_WRITE_PROPERTY,
handler_write_property); handler_write_property);
#if 0
apdu_set_unconfirmed_handler apdu_set_unconfirmed_handler
(SERVICE_UNCONFIRMED_UTC_TIME_SYNCHRONIZATION, (SERVICE_UNCONFIRMED_UTC_TIME_SYNCHRONIZATION,
handler_timesync_utc); handler_timesync_utc);