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:
@@ -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);
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user