add bvlc_delete_from_bbmd to unregister as a foreign device and become normal (not foreign) (#1041)

This commit is contained in:
Ryan Mulder
2025-07-05 23:00:51 -04:00
committed by GitHub
parent e244ca22fc
commit 310124cc61
2 changed files with 26 additions and 0 deletions
+24
View File
@@ -1269,6 +1269,30 @@ int bvlc_register_with_bbmd(
return bip_send_mpdu(bbmd_addr, &BVLC_Buffer[0], BVLC_Buffer_Len); 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 /** 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 * @param bbmd_addr - IPv4 address of BBMD with which to register
* @return Positive number (of bytes sent) on success, * @return Positive number (of bytes sent) on success,
+2
View File
@@ -94,6 +94,8 @@ BACNET_STACK_EXPORT
int bvlc_register_with_bbmd( int bvlc_register_with_bbmd(
const BACNET_IP_ADDRESS *address, uint16_t time_to_live_seconds); const BACNET_IP_ADDRESS *address, uint16_t time_to_live_seconds);
BACNET_STACK_EXPORT BACNET_STACK_EXPORT
int bvlc_delete_from_bbmd(void);
BACNET_STACK_EXPORT
void bvlc_remote_bbmd_address(BACNET_IP_ADDRESS *address); void bvlc_remote_bbmd_address(BACNET_IP_ADDRESS *address);
BACNET_STACK_EXPORT BACNET_STACK_EXPORT
uint16_t bvlc_remote_bbmd_lifetime(void); uint16_t bvlc_remote_bbmd_lifetime(void);