Added demo for BACnet simple server in the demo/server directory.

Added demo for BACnet ReadProperty service.
Added demo for BACnet WriteProperty service.
This commit is contained in:
skarg
2006-01-23 13:04:29 +00:00
parent c30464177e
commit 427eb31e8d
30 changed files with 1420 additions and 68 deletions
+1 -1
View File
@@ -54,7 +54,7 @@ bool Send_Write_Property_Request(
BACNET_OBJECT_TYPE object_type,
uint32_t object_instance,
BACNET_PROPERTY_ID object_property,
BACNET_APPLICATION_DATA_VALUE object_value,
BACNET_APPLICATION_DATA_VALUE *object_value,
uint8_t priority,
int32_t array_index);
+28 -2
View File
@@ -32,7 +32,7 @@
#include "iam.h"
#include "address.h"
void handler_i_am(
void handler_i_am_add(
uint8_t *service_request,
uint16_t service_len,
BACNET_ADDRESS *src)
@@ -43,7 +43,6 @@ void handler_i_am(
int segmentation = 0;
uint16_t vendor_id = 0;
(void)src;
(void)service_len;
len = iam_decode_service_request(
service_request,
@@ -64,3 +63,30 @@ void handler_i_am(
return;
}
void handler_i_am_bind(
uint8_t *service_request,
uint16_t service_len,
BACNET_ADDRESS *src)
{
int len = 0;
uint32_t device_id = 0;
unsigned max_apdu = 0;
int segmentation = 0;
uint16_t vendor_id = 0;
(void)service_len;
len = iam_decode_service_request(
service_request,
&device_id,
&max_apdu,
&segmentation,
&vendor_id);
// only add address if requested to bind
address_add_binding(device_id,
max_apdu,
src);
return;
}
+10
View File
@@ -50,6 +50,16 @@ void handler_who_is(
uint16_t service_len,
BACNET_ADDRESS *src);
void handler_i_am_add(
uint8_t *service_request,
uint16_t service_len,
BACNET_ADDRESS *src);
void handler_i_am_bind(
uint8_t *service_request,
uint16_t service_len,
BACNET_ADDRESS *src);
void handler_read_property(
uint8_t *service_request,
uint16_t service_len,
+4 -6
View File
@@ -41,8 +41,8 @@
#include "handlers.h"
#include "txbuf.h"
/* returns false if device is not bound or no tsm available */
bool Send_Read_Property_Request(
/* returns invoke id of 0 if device is not bound or no tsm available */
uint8_t Send_Read_Property_Request(
uint32_t device_id, /* destination device */
BACNET_OBJECT_TYPE object_type,
uint32_t object_instance,
@@ -99,9 +99,7 @@ bool Send_Read_Property_Request(
&dest, // destination address
&Handler_Transmit_Buffer[0],
pdu_len); // number of bytes of data
if (bytes_sent > 0)
fprintf(stderr,"Sent ReadProperty Request!\n");
else
if (bytes_sent <= 0)
fprintf(stderr,"Failed to Send ReadProperty Request (%s)!\n",
strerror(errno));
}
@@ -110,5 +108,5 @@ bool Send_Read_Property_Request(
"(exceeds destination maximum APDU)!\n");
}
return status;
return invoke_id;
}
+1 -3
View File
@@ -71,8 +71,6 @@ void Send_WhoIs(
&dest, // destination address
&Handler_Transmit_Buffer[0],
pdu_len); // number of bytes of data
if (bytes_sent > 0)
fprintf(stderr,"Sent Who-Is Request!\n");
else
if (bytes_sent <= 0)
fprintf(stderr,"Failed to Send Who-Is Request (%s)!\n", strerror(errno));
}
+6 -8
View File
@@ -41,13 +41,13 @@
#include "handlers.h"
#include "txbuf.h"
/* FIXME: probably should return the invoke ID for confirmed request */
bool Send_Write_Property_Request(
/* returns the invoke ID for confirmed request, or zero on failure */
uint8_t Send_Write_Property_Request(
uint32_t device_id, // destination device
BACNET_OBJECT_TYPE object_type,
uint32_t object_instance,
BACNET_PROPERTY_ID object_property,
BACNET_APPLICATION_DATA_VALUE object_value,
BACNET_APPLICATION_DATA_VALUE *object_value,
uint8_t priority,
int32_t array_index)
{
@@ -81,7 +81,7 @@ bool Send_Write_Property_Request(
data.object_instance = object_instance;
data.object_property = object_property;
data.array_index = array_index;
data.value = object_value;
bacapp_copy(&data.value,object_value);
data.priority = priority;
pdu_len += wp_encode_apdu(
&Handler_Transmit_Buffer[pdu_len],
@@ -103,9 +103,7 @@ bool Send_Write_Property_Request(
&dest, // destination address
&Handler_Transmit_Buffer[0],
pdu_len); // number of bytes of data
if (bytes_sent > 0)
fprintf(stderr,"Sent ReadProperty Request!\n");
else
if (bytes_sent <= 0)
fprintf(stderr,"Failed to Send WriteProperty Request (%s)!\n",
strerror(errno));
}
@@ -114,6 +112,6 @@ bool Send_Write_Property_Request(
"(exceeds destination maximum APDU)!\n");
}
return status;
return invoke_id;
}