add bvlc_delete_from_bbmd to unregister as a foreign device and become normal (not foreign) (#1041)
This commit is contained in:
@@ -1269,6 +1269,30 @@ int bvlc_register_with_bbmd(
|
||||
return bip_send_mpdu(bbmd_addr, &BVLC_Buffer[0], BVLC_Buffer_Len);
|
||||
}
|
||||
|
||||
/** Become a normal (non-foreign) device and delete self from a BBMD if
|
||||
* registered
|
||||
* @return Positive number (of bytes sent) on success,
|
||||
* 0 if no delete request is sent, or
|
||||
* -1 if delete fails.
|
||||
*/
|
||||
int bvlc_delete_from_bbmd(void)
|
||||
{
|
||||
int status;
|
||||
BACNET_IP_ADDRESS addr;
|
||||
BACNET_IP_ADDRESS bbmd_addr;
|
||||
bip_get_addr(&addr);
|
||||
bvlc_address_copy(&bbmd_addr, &Remote_BBMD);
|
||||
memset(&Remote_BBMD, 0, sizeof(Remote_BBMD));
|
||||
Remote_BBMD_TTL_Seconds = 0;
|
||||
status = 0;
|
||||
if (bbmd_addr.port) {
|
||||
BVLC_Buffer_Len = bvlc_encode_delete_foreign_device(
|
||||
&BVLC_Buffer[0], sizeof(BVLC_Buffer), &addr);
|
||||
status = bip_send_mpdu(&Remote_BBMD, &BVLC_Buffer[0], BVLC_Buffer_Len);
|
||||
}
|
||||
return status;
|
||||
}
|
||||
|
||||
/** Get the remote BBMD address that was used to Register as a foreign device
|
||||
* @param bbmd_addr - IPv4 address of BBMD with which to register
|
||||
* @return Positive number (of bytes sent) on success,
|
||||
|
||||
@@ -94,6 +94,8 @@ BACNET_STACK_EXPORT
|
||||
int bvlc_register_with_bbmd(
|
||||
const BACNET_IP_ADDRESS *address, uint16_t time_to_live_seconds);
|
||||
BACNET_STACK_EXPORT
|
||||
int bvlc_delete_from_bbmd(void);
|
||||
BACNET_STACK_EXPORT
|
||||
void bvlc_remote_bbmd_address(BACNET_IP_ADDRESS *address);
|
||||
BACNET_STACK_EXPORT
|
||||
uint16_t bvlc_remote_bbmd_lifetime(void);
|
||||
|
||||
Reference in New Issue
Block a user