Added the option to specify a target destination for apps/server-discover. (#958)

This commit is contained in:
Ryan Mulder
2025-04-09 11:52:10 -04:00
committed by GitHub
parent 1313cdd12e
commit 3621b3f424
3 changed files with 70 additions and 19 deletions
+27 -13
View File
@@ -31,8 +31,8 @@ static struct mstimer WhoIs_Timer;
static struct mstimer Read_Write_Timer;
/* list of devices */
static OS_Keylist Device_List = NULL;
/* discovery destination network */
static uint16_t Target_DNET = 0;
/* discovery destination */
static BACNET_ADDRESS Target_DEST = { 0 };
/* re-discovery time */
static unsigned long Discovery_Milliseconds;
/* states of discovery */
@@ -1074,16 +1074,12 @@ bool bacnet_discover_device_iterate(
/**
* @brief Non-blocking task for running BACnet client tasks
* @param dest - BACnet address of the destination discovery
*/
void bacnet_discover_task(void)
{
BACNET_ADDRESS dest = { 0 };
if (mstimer_expired(&WhoIs_Timer)) {
mstimer_restart(&WhoIs_Timer);
dest.net = Target_DNET;
Send_WhoIs_To_Network(&dest, -1, -1);
Send_WhoIs_To_Network(&Target_DEST, -1, -1);
}
if (mstimer_expired(&Read_Write_Timer)) {
mstimer_restart(&Read_Write_Timer);
@@ -1095,21 +1091,39 @@ void bacnet_discover_task(void)
}
/**
* @brief Set the BACnet time between discovery in seconds
* @param seconds - number of seconds between discovery intervals
* @brief Set the BACnet network number for directed requests
* @param dnet - BACnet network number
*/
void bacnet_discover_dnet_set(uint16_t dnet)
{
Target_DNET = dnet;
Target_DEST.net = dnet;
}
/**
* @brief Get the BACnet time between discovery in seconds
* @return number of seconds between discovery intervals
* @brief Get the BACnet network number
* @return BACnet network number
*/
uint16_t bacnet_discover_dnet(void)
{
return Target_DNET;
return Target_DEST.net;
}
/**
* @brief Set the BACnet address of target for directed requests
* @param dest - BACnet address
*/
void bacnet_discover_dest_set(const BACNET_ADDRESS *dest)
{
bacnet_address_copy(&Target_DEST, dest);
}
/**
* @brief Get the the BACnet address of target
* @return BACnet address
*/
const BACNET_ADDRESS *bacnet_discover_dest(void)
{
return &Target_DEST;
}
/**
+2
View File
@@ -87,6 +87,8 @@ bool bacnet_discover_device_iterate(
void bacnet_discover_task(void);
void bacnet_discover_dnet_set(uint16_t dnet);
uint16_t bacnet_discover_dnet(void);
void bacnet_discover_dest_set(const BACNET_ADDRESS *dest);
const BACNET_ADDRESS *bacnet_discover_dest(void);
void bacnet_discover_vendor_id_set(uint16_t vendor_id);
uint16_t bacnet_discover_vendor_id(void);
void bacnet_discover_seconds_set(unsigned int seconds);