Forgot the header update for BBMD getter and setters.

Revised gateway demo to use the new device_init(NULL) way.
Eliminated triplicate I-Am responses and deprecated the offending routed_ I-Am and I-Have senders (don't see any other usages; scheduled for deletion in 2/2012).
Fixed I-Am sender to not always zero out dest->net, because if a src->net was given in Who-Is, need to have it or else global bcast in the I-Am  response.
This commit is contained in:
tbrennan3
2011-08-25 21:20:14 +00:00
parent 3c3d0b2e4c
commit a2a0434ef9
5 changed files with 16 additions and 33 deletions
+8 -26
View File
@@ -83,27 +83,6 @@
/** @addtogroup GatewayDemo */
/*@{*/
/* All included BACnet objects */
static object_functions_t Object_Table[] = {
{DEVICE_OBJ_FUNCTIONS},
{ANALOG_INPUT_OBJ_FUNCTIONS},
{ANALOG_OUTPUT_OBJ_FUNCTIONS},
{ANALOG_VALUE_OBJ_FUNCTIONS},
{BINARY_INPUT_OBJ_FUNCTIONS},
{BINARY_OUTPUT_OBJ_FUNCTIONS},
{BINARY_VALUE_OBJ_FUNCTIONS},
{LIFE_SAFETY_POINT_OBJ_FUNCTIONS},
{LOAD_CONTROL_OBJ_FUNCTIONS},
{MULTI_STATE_OUTPUT_OBJ_FUNCTIONS},
{MULTI_STATE_INPUT_OBJ_FUNCTIONS},
{TRENDLOG_OBJ_FUNCTIONS},
#if defined(BACFILE)
{FILE_OBJ_FUNCTIONS},
#endif
{MAX_BACNET_OBJECT_TYPE, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL}
};
/** Buffer used for receiving */
static uint8_t Rx_Buf[MAX_MPDU] = { 0 };
@@ -156,16 +135,19 @@ void Devices_Init(
static void Init_Service_Handlers(
uint32_t first_object_instance)
{
Device_Init(&Object_Table[0]);
Device_Init(NULL);
Routing_Device_Init(first_object_instance);
/* we need to handle who-is to support dynamic device binding
* For the gateway, we want the routing handlers, and we will use the
* unicast variety so we can get back through switches to different subnets */
* For the gateway, we will use the unicast variety so we can
* get back through switches to different subnets.
* Don't need the routed versions, since the npdu handler calls
* each device in turn.
*/
apdu_set_unconfirmed_handler(SERVICE_UNCONFIRMED_WHO_IS,
handler_who_is_unicast_for_routing);
handler_who_is_unicast);
apdu_set_unconfirmed_handler(SERVICE_UNCONFIRMED_WHO_HAS,
handler_who_has_for_routing);
handler_who_has);
/* set the handler for all the services we don't implement */
/* It is required to send the proper reject message... */
apdu_set_unrecognized_service_handler_handler
+1 -1
View File
@@ -110,7 +110,7 @@ void handler_who_has(
}
#ifdef BAC_ROUTING
#ifdef DEPRECATED /* was for BAC_ROUTING - delete in 2/2012 if still unused */
/** Handler for Who-Has requests in the virtual routing setup,
* with broadcast I-Have response.
* Will respond if the device Object ID matches, and we have
+2 -1
View File
@@ -95,6 +95,7 @@ void handler_who_is_unicast(
len =
whois_decode_service_request(service_request, service_len, &low_limit,
&high_limit);
/* If no limits, then always respond */
if (len == 0)
Send_I_Am_Unicast(&Handler_Transmit_Buffer[0], src);
else if (len != -1) {
@@ -112,7 +113,7 @@ void handler_who_is_unicast(
}
#ifdef BAC_ROUTING
#ifdef DEPRECATED /* was for BAC_ROUTING - delete in 2/2012 if still unused */
/** Local function to check Who-Is requests against our Device IDs.
* Will check the gateway (root Device) and all virtual routed
* Devices against the range and respond for each that matches.
+1 -1
View File
@@ -133,7 +133,7 @@ int iam_unicast_encode_pdu(
BACNET_ADDRESS my_address;
/* The destination will be the same as the src, so copy it over. */
memcpy(dest, src, sizeof(BACNET_ADDRESS));
dest->net = 0;
/* dest->net = 0; - no, must direct back to src->net to meet BTL tests */
datalink_get_my_address(&my_address);
/* encode the NPDU portion of the packet */
+4 -4
View File
@@ -37,10 +37,10 @@ extern "C" {
uint16_t elapsed_seconds);
/* Simple setters and getter. */
void set_bbmd_address( long address );
void set_bbmd_port( int port );
void set_bbmd_ttl( int ttl_secs );
int get_bbmd_result( void );
void dlenv_bbmd_address_set( long address );
void dlenv_bbmd_port_set( int port );
void dlenv_bbmd_ttl_set( int ttl_secs );
int dlenv_bbmd_result( void );
#ifdef __cplusplus
}