Added optional description property to basic network port object example. (#788)
This commit is contained in:
@@ -93,6 +93,7 @@ struct mstp_port {
|
|||||||
struct object_data {
|
struct object_data {
|
||||||
uint32_t Instance_Number;
|
uint32_t Instance_Number;
|
||||||
const char *Object_Name;
|
const char *Object_Name;
|
||||||
|
const char *Description;
|
||||||
BACNET_RELIABILITY Reliability;
|
BACNET_RELIABILITY Reliability;
|
||||||
bool Out_Of_Service : 1;
|
bool Out_Of_Service : 1;
|
||||||
bool Changes_Pending : 1;
|
bool Changes_Pending : 1;
|
||||||
@@ -115,6 +116,7 @@ static struct object_data Object_List[BACNET_NETWORK_PORTS_MAX];
|
|||||||
|
|
||||||
/* These three arrays are used by the ReadPropertyMultiple handler */
|
/* These three arrays are used by the ReadPropertyMultiple handler */
|
||||||
static const int Network_Port_Properties_Required[] = {
|
static const int Network_Port_Properties_Required[] = {
|
||||||
|
/* unordered list of required properties */
|
||||||
PROP_OBJECT_IDENTIFIER, PROP_OBJECT_NAME,
|
PROP_OBJECT_IDENTIFIER, PROP_OBJECT_NAME,
|
||||||
PROP_OBJECT_TYPE, PROP_STATUS_FLAGS,
|
PROP_OBJECT_TYPE, PROP_STATUS_FLAGS,
|
||||||
PROP_RELIABILITY, PROP_OUT_OF_SERVICE,
|
PROP_RELIABILITY, PROP_OUT_OF_SERVICE,
|
||||||
@@ -124,13 +126,20 @@ static const int Network_Port_Properties_Required[] = {
|
|||||||
PROP_LINK_SPEED, -1
|
PROP_LINK_SPEED, -1
|
||||||
};
|
};
|
||||||
|
|
||||||
static const int Ethernet_Port_Properties_Optional[] = { PROP_MAC_ADDRESS, -1 };
|
static const int Ethernet_Port_Properties_Optional[] = {
|
||||||
|
/* unordered list of optional properties */
|
||||||
|
PROP_DESCRIPTION, PROP_MAC_ADDRESS, -1
|
||||||
|
};
|
||||||
|
|
||||||
static const int MSTP_Port_Properties_Optional[] = { PROP_MAC_ADDRESS,
|
static const int MSTP_Port_Properties_Optional[] = {
|
||||||
PROP_MAX_MASTER,
|
/* unordered list of optional properties */
|
||||||
PROP_MAX_INFO_FRAMES, -1 };
|
PROP_DESCRIPTION, PROP_MAC_ADDRESS, PROP_MAX_MASTER, PROP_MAX_INFO_FRAMES,
|
||||||
|
-1
|
||||||
|
};
|
||||||
|
|
||||||
static const int BIP_Port_Properties_Optional[] = {
|
static const int BIP_Port_Properties_Optional[] = {
|
||||||
|
/* unordered list of optional properties */
|
||||||
|
PROP_DESCRIPTION,
|
||||||
PROP_MAC_ADDRESS,
|
PROP_MAC_ADDRESS,
|
||||||
PROP_BACNET_IP_MODE,
|
PROP_BACNET_IP_MODE,
|
||||||
PROP_IP_ADDRESS,
|
PROP_IP_ADDRESS,
|
||||||
@@ -152,6 +161,8 @@ static const int BIP_Port_Properties_Optional[] = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
static const int BIP6_Port_Properties_Optional[] = {
|
static const int BIP6_Port_Properties_Optional[] = {
|
||||||
|
/* unordered list of optional properties */
|
||||||
|
PROP_DESCRIPTION,
|
||||||
PROP_MAC_ADDRESS,
|
PROP_MAC_ADDRESS,
|
||||||
PROP_BACNET_IPV6_MODE,
|
PROP_BACNET_IPV6_MODE,
|
||||||
PROP_IPV6_ADDRESS,
|
PROP_IPV6_ADDRESS,
|
||||||
@@ -339,6 +350,47 @@ const char *Network_Port_Object_Name_ASCII(uint32_t object_instance)
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief For a given object instance-number, returns the ASCII description
|
||||||
|
* @param object_instance - object-instance number of the object
|
||||||
|
* @return ASCII C string object name, or NULL if not found or not set.
|
||||||
|
*/
|
||||||
|
const char *Network_Port_Description(uint32_t instance)
|
||||||
|
{
|
||||||
|
unsigned index = 0; /* offset from instance lookup */
|
||||||
|
|
||||||
|
index = Network_Port_Instance_To_Index(instance);
|
||||||
|
if (index < BACNET_NETWORK_PORTS_MAX) {
|
||||||
|
return Object_List[index].Description;
|
||||||
|
}
|
||||||
|
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* For a given object instance-number, sets the object-name
|
||||||
|
* Note that the object name must be unique within this device.
|
||||||
|
*
|
||||||
|
* @param object_instance - object-instance number of the object
|
||||||
|
* @param new_name - holds the object-name to be written
|
||||||
|
* Expecting a pointer to a static ANSI C string for zero copy.
|
||||||
|
*
|
||||||
|
* @return true if object-name was set
|
||||||
|
*/
|
||||||
|
bool Network_Port_Description_Set(uint32_t instance, const char *new_name)
|
||||||
|
{
|
||||||
|
unsigned index = 0; /* offset from instance lookup */
|
||||||
|
bool status = false;
|
||||||
|
|
||||||
|
index = Network_Port_Instance_To_Index(instance);
|
||||||
|
if (index < BACNET_NETWORK_PORTS_MAX) {
|
||||||
|
Object_List[index].Description = new_name;
|
||||||
|
status = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return status;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Determines if a given Network Port instance is valid
|
* Determines if a given Network Port instance is valid
|
||||||
*
|
*
|
||||||
@@ -3165,6 +3217,13 @@ int Network_Port_Read_Property(BACNET_READ_PROPERTY_DATA *rpdata)
|
|||||||
apdu_len = encode_application_enumerated(
|
apdu_len = encode_application_enumerated(
|
||||||
&apdu[0], Network_Port_Quality(rpdata->object_instance));
|
&apdu[0], Network_Port_Quality(rpdata->object_instance));
|
||||||
break;
|
break;
|
||||||
|
case PROP_DESCRIPTION:
|
||||||
|
characterstring_init_ansi(
|
||||||
|
&char_string,
|
||||||
|
Network_Port_Description(rpdata->object_instance));
|
||||||
|
apdu_len =
|
||||||
|
encode_application_character_string(&apdu[0], &char_string);
|
||||||
|
break;
|
||||||
case PROP_MAC_ADDRESS:
|
case PROP_MAC_ADDRESS:
|
||||||
Network_Port_MAC_Address(rpdata->object_instance, &octet_string);
|
Network_Port_MAC_Address(rpdata->object_instance, &octet_string);
|
||||||
apdu_len = encode_application_octet_string(&apdu[0], &octet_string);
|
apdu_len = encode_application_octet_string(&apdu[0], &octet_string);
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ BACNET_STACK_EXPORT
|
|||||||
const char *Network_Port_Object_Name_ASCII(uint32_t object_instance);
|
const char *Network_Port_Object_Name_ASCII(uint32_t object_instance);
|
||||||
|
|
||||||
BACNET_STACK_EXPORT
|
BACNET_STACK_EXPORT
|
||||||
char *Network_Port_Description(uint32_t instance);
|
const char *Network_Port_Description(uint32_t instance);
|
||||||
BACNET_STACK_EXPORT
|
BACNET_STACK_EXPORT
|
||||||
bool Network_Port_Description_Set(uint32_t instance, const char *new_name);
|
bool Network_Port_Description_Set(uint32_t instance, const char *new_name);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user