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