add bip_get_interface and Device_Time_Of_Restart, fix Network_Port_Changes_Discard (#1038)
* added bip_get_interface * basic/object/device get/set time of restart * clear changes pending * clang-format
This commit is contained in:
@@ -460,7 +460,7 @@ static void *get_addr_ptr(struct sockaddr *sockaddr_ptr)
|
|||||||
/**
|
/**
|
||||||
* @brief Get the default interface name using routing info
|
* @brief Get the default interface name using routing info
|
||||||
* @return interface name, or NULL if not found or none
|
* @return interface name, or NULL if not found or none
|
||||||
*/
|
*/
|
||||||
static char *ifname_default(void)
|
static char *ifname_default(void)
|
||||||
{
|
{
|
||||||
if (BIP_Interface_Name[0] != 0) {
|
if (BIP_Interface_Name[0] != 0) {
|
||||||
@@ -606,7 +606,8 @@ void bip_set_interface(const char *ifname)
|
|||||||
}
|
}
|
||||||
BIP_Broadcast_Addr.s_addr = htonl(broadcast_address);
|
BIP_Broadcast_Addr.s_addr = htonl(broadcast_address);
|
||||||
#else
|
#else
|
||||||
rv = bip_get_local_address_ioctl(ifname, &broadcast_address, SIOCGIFBRDADDR);
|
rv =
|
||||||
|
bip_get_local_address_ioctl(ifname, &broadcast_address, SIOCGIFBRDADDR);
|
||||||
if (rv < 0) {
|
if (rv < 0) {
|
||||||
BIP_Broadcast_Addr.s_addr = ~0;
|
BIP_Broadcast_Addr.s_addr = ~0;
|
||||||
} else {
|
} else {
|
||||||
@@ -723,7 +724,8 @@ bool bip_init(char *ifname)
|
|||||||
|
|
||||||
broadcast_sin_config.sin_family = AF_INET;
|
broadcast_sin_config.sin_family = AF_INET;
|
||||||
broadcast_sin_config.sin_port = BIP_Port;
|
broadcast_sin_config.sin_port = BIP_Port;
|
||||||
memset(&(broadcast_sin_config.sin_zero), '\0',
|
memset(
|
||||||
|
&(broadcast_sin_config.sin_zero), '\0',
|
||||||
sizeof(broadcast_sin_config.sin_zero));
|
sizeof(broadcast_sin_config.sin_zero));
|
||||||
if (BIP_Broadcast_Binding_Address_Override) {
|
if (BIP_Broadcast_Binding_Address_Override) {
|
||||||
broadcast_sin_config.sin_addr.s_addr =
|
broadcast_sin_config.sin_addr.s_addr =
|
||||||
|
|||||||
@@ -817,6 +817,11 @@ void bip_set_interface(const char *ifname)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const char *bip_get_interface(void)
|
||||||
|
{
|
||||||
|
return BIP_Interface_Name;
|
||||||
|
}
|
||||||
|
|
||||||
static int createSocket(const struct sockaddr_in *sin)
|
static int createSocket(const struct sockaddr_in *sin)
|
||||||
{
|
{
|
||||||
int status = 0; /* return from socket lib calls */
|
int status = 0; /* return from socket lib calls */
|
||||||
|
|||||||
@@ -1060,6 +1060,23 @@ bool Device_Serial_Number_Set(const char *str, size_t length)
|
|||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Device_Time_Of_Restart(BACNET_TIMESTAMP *time_of_restart)
|
||||||
|
{
|
||||||
|
bacapp_timestamp_copy(time_of_restart, &Time_Of_Device_Restart);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Device_Set_Time_Of_Restart(const BACNET_TIMESTAMP *time_of_restart)
|
||||||
|
{
|
||||||
|
bool status = false;
|
||||||
|
|
||||||
|
if (time_of_restart) {
|
||||||
|
bacapp_timestamp_copy(&Time_Of_Device_Restart, time_of_restart);
|
||||||
|
status = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return status;
|
||||||
|
}
|
||||||
|
|
||||||
uint8_t Device_Protocol_Version(void)
|
uint8_t Device_Protocol_Version(void)
|
||||||
{
|
{
|
||||||
return BACNET_PROTOCOL_VERSION;
|
return BACNET_PROTOCOL_VERSION;
|
||||||
|
|||||||
@@ -1211,6 +1211,7 @@ void Network_Port_Changes_Pending_Discard(uint32_t object_instance)
|
|||||||
if (index < BACNET_NETWORK_PORTS_MAX) {
|
if (index < BACNET_NETWORK_PORTS_MAX) {
|
||||||
if (Object_List[index].Discard_Changes) {
|
if (Object_List[index].Discard_Changes) {
|
||||||
Object_List[index].Discard_Changes(object_instance);
|
Object_List[index].Discard_Changes(object_instance);
|
||||||
|
Object_List[index].Changes_Pending = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -4662,7 +4663,8 @@ void Network_Port_Changes_Discard(void)
|
|||||||
|
|
||||||
for (i = 0; i < BACNET_NETWORK_PORTS_MAX; i++) {
|
for (i = 0; i < BACNET_NETWORK_PORTS_MAX; i++) {
|
||||||
if (Object_List[i].Changes_Pending) {
|
if (Object_List[i].Changes_Pending) {
|
||||||
Network_Port_Changes_Pending_Discard(i);
|
Network_Port_Changes_Pending_Discard(
|
||||||
|
Object_List[i].Instance_Number);
|
||||||
Object_List[i].Changes_Pending = false;
|
Object_List[i].Changes_Pending = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -35,6 +35,9 @@ bool bip_init(char *ifname);
|
|||||||
BACNET_STACK_EXPORT
|
BACNET_STACK_EXPORT
|
||||||
void bip_set_interface(const char *ifname);
|
void bip_set_interface(const char *ifname);
|
||||||
|
|
||||||
|
BACNET_STACK_EXPORT
|
||||||
|
const char *bip_get_interface(void);
|
||||||
|
|
||||||
BACNET_STACK_EXPORT
|
BACNET_STACK_EXPORT
|
||||||
void bip_cleanup(void);
|
void bip_cleanup(void);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user