Feature/makefile add apps library (#218)
* add BACnet stack library at apps/lib * convert apps to use apps/lib for smaller binary * fix -DBACDL_ALL=1 build * fix piface build * datalink MAX_MPDU and MAX_HEADER cleanup * add bip6 to git workflow * fix system library dependency of BACnet library Co-authored-by: Steve Karg <skarg@users.sourceforge.net>
This commit is contained in:
@@ -77,7 +77,7 @@ static bool BVLC_NAT_Handling = false;
|
||||
static BACNET_IP_ADDRESS Remote_BBMD;
|
||||
#if BBMD_ENABLED
|
||||
/* local buffer & length for sending */
|
||||
static uint8_t BVLC_Buffer[MAX_MPDU];
|
||||
static uint8_t BVLC_Buffer[BIP_MPDU_MAX];
|
||||
static uint16_t BVLC_Buffer_Len;
|
||||
/* Broadcast Distribution Table */
|
||||
#ifndef MAX_BBMD_ENTRIES
|
||||
@@ -317,7 +317,7 @@ static uint16_t bbmd_forward_npdu(
|
||||
BACNET_IP_ADDRESS *bip_src, uint8_t *npdu, uint16_t npdu_length)
|
||||
{
|
||||
BACNET_IP_ADDRESS broadcast_address = { 0 };
|
||||
uint8_t mtu[MAX_MPDU] = { 0 };
|
||||
uint8_t mtu[BIP_MPDU_MAX] = { 0 };
|
||||
uint16_t mtu_len = 0;
|
||||
|
||||
mtu_len = (uint16_t)bvlc_encode_forwarded_npdu(
|
||||
@@ -345,7 +345,7 @@ static uint16_t bbmd_bdt_forward_npdu(BACNET_IP_ADDRESS *bip_src,
|
||||
uint16_t npdu_length,
|
||||
bool original)
|
||||
{
|
||||
uint8_t mtu[MAX_MPDU] = { 0 };
|
||||
uint8_t mtu[BIP_MPDU_MAX] = { 0 };
|
||||
uint16_t mtu_len = 0;
|
||||
unsigned i = 0; /* loop counter */
|
||||
BACNET_IP_ADDRESS bip_dest = { 0 };
|
||||
@@ -410,7 +410,7 @@ static uint16_t bbmd_fdt_forward_npdu(BACNET_IP_ADDRESS *bip_src,
|
||||
uint16_t npdu_length,
|
||||
bool original)
|
||||
{
|
||||
uint8_t mtu[MAX_MPDU] = { 0 };
|
||||
uint8_t mtu[BIP_MPDU_MAX] = { 0 };
|
||||
uint16_t mtu_len = 0;
|
||||
unsigned i = 0; /* loop counter */
|
||||
BACNET_IP_ADDRESS bip_dest = { 0 };
|
||||
@@ -566,7 +566,7 @@ int bvlc_send_pdu(BACNET_ADDRESS *dest,
|
||||
unsigned pdu_len)
|
||||
{
|
||||
BACNET_IP_ADDRESS bvlc_dest = { 0 };
|
||||
uint8_t mtu[MAX_MPDU] = { 0 };
|
||||
uint8_t mtu[BIP_MPDU_MAX] = { 0 };
|
||||
uint16_t mtu_len = 0;
|
||||
#if BBMD_ENABLED
|
||||
BACNET_IP_ADDRESS bip_src = { 0 };
|
||||
@@ -633,7 +633,7 @@ int bvlc_send_pdu(BACNET_ADDRESS *dest,
|
||||
*/
|
||||
static int bvlc_send_result(BACNET_IP_ADDRESS *dest_addr, uint16_t result_code)
|
||||
{
|
||||
uint8_t mtu[MAX_MPDU] = { 0 };
|
||||
uint8_t mtu[BIP_MPDU_MAX] = { 0 };
|
||||
uint16_t mtu_len = 0;
|
||||
|
||||
mtu_len = bvlc_encode_result(&mtu[0], sizeof(mtu), result_code);
|
||||
|
||||
@@ -67,7 +67,7 @@ static uint8_t BVLC6_Function_Code = BVLC6_RESULT;
|
||||
static BACNET_IP6_ADDRESS Remote_BBMD;
|
||||
#if defined(BACDL_BIP6) && BBMD6_ENABLED
|
||||
/* local buffer & length for sending */
|
||||
static uint8_t BVLC6_Buffer[MAX_MPDU];
|
||||
static uint8_t BVLC6_Buffer[BIP6_MPDU_MAX];
|
||||
static uint16_t BVLC6_Buffer_Len;
|
||||
/* Broadcast Distribution Table */
|
||||
#ifndef MAX_BBMD6_ENTRIES
|
||||
@@ -281,7 +281,7 @@ int bvlc6_send_pdu(BACNET_ADDRESS *dest,
|
||||
unsigned pdu_len)
|
||||
{
|
||||
BACNET_IP6_ADDRESS bvlc_dest = { { 0 } };
|
||||
uint8_t mtu[MAX_MPDU] = { 0 };
|
||||
uint8_t mtu[BIP6_MPDU_MAX] = { 0 };
|
||||
uint16_t mtu_len = 0;
|
||||
uint32_t vmac_src = 0;
|
||||
uint32_t vmac_dst = 0;
|
||||
@@ -403,7 +403,7 @@ static void bbmd6_send_forward_npdu(BACNET_IP6_ADDRESS *address,
|
||||
uint8_t *npdu,
|
||||
unsigned int npdu_len)
|
||||
{
|
||||
uint8_t mtu[MAX_MPDU] = { 0 };
|
||||
uint8_t mtu[BIP6_MPDU_MAX] = { 0 };
|
||||
uint16_t mtu_len = 0;
|
||||
unsigned i = 0; /* loop counter */
|
||||
|
||||
@@ -443,7 +443,7 @@ static void bbmd6_send_forward_npdu(BACNET_IP6_ADDRESS *address,
|
||||
static int bvlc6_send_result(
|
||||
BACNET_IP6_ADDRESS *dest_addr, uint32_t vmac_src, uint16_t result_code)
|
||||
{
|
||||
uint8_t mtu[MAX_MPDU] = { 0 };
|
||||
uint8_t mtu[BIP6_MPDU_MAX] = { 0 };
|
||||
uint16_t mtu_len = 0;
|
||||
|
||||
mtu_len = bvlc6_encode_result(&mtu[0], sizeof(mtu), vmac_src, result_code);
|
||||
@@ -465,7 +465,7 @@ static int bvlc6_send_result(
|
||||
static int bvlc6_send_address_resolution_ack(
|
||||
BACNET_IP6_ADDRESS *dest_addr, uint32_t vmac_src, uint32_t vmac_dst)
|
||||
{
|
||||
uint8_t mtu[MAX_MPDU] = { 0 };
|
||||
uint8_t mtu[BIP6_MPDU_MAX] = { 0 };
|
||||
uint16_t mtu_len = 0;
|
||||
|
||||
mtu_len = bvlc6_encode_address_resolution_ack(
|
||||
@@ -489,7 +489,7 @@ static int bvlc6_send_address_resolution_ack(
|
||||
static int bvlc6_send_virtual_address_resolution_ack(
|
||||
BACNET_IP6_ADDRESS *dest_addr, uint32_t vmac_src, uint32_t vmac_dst)
|
||||
{
|
||||
uint8_t mtu[MAX_MPDU] = { 0 };
|
||||
uint8_t mtu[BIP6_MPDU_MAX] = { 0 };
|
||||
uint16_t mtu_len = 0;
|
||||
|
||||
mtu_len = bvlc6_encode_virtual_address_resolution_ack(
|
||||
@@ -1036,7 +1036,7 @@ int bvlc6_register_with_bbmd(BACNET_IP6_ADDRESS *bbmd_addr,
|
||||
uint32_t vmac_src,
|
||||
uint16_t time_to_live_seconds)
|
||||
{
|
||||
uint8_t mtu[MAX_MPDU] = { 0 };
|
||||
uint8_t mtu[BIP6_MPDU_MAX] = { 0 };
|
||||
uint16_t mtu_len = 0;
|
||||
|
||||
mtu_len = bvlc6_encode_register_foreign_device(
|
||||
|
||||
@@ -32,8 +32,8 @@
|
||||
#include "bacnet/npdu.h"
|
||||
|
||||
/* specific defines for ARCNET */
|
||||
#define MAX_HEADER (1+1+2+2+1+1+1+1)
|
||||
#define MAX_MPDU (MAX_HEADER+MAX_PDU)
|
||||
#define ARCNET_HEADER_MAX (1+1+2+2+1+1+1+1)
|
||||
#define ARCNET_MPDU_MAX (ARCNET_HEADER_MAX+MAX_PDU)
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
|
||||
@@ -35,8 +35,6 @@
|
||||
/* specific defines for BACnet/IP over Ethernet */
|
||||
#define BIP_HEADER_MAX (1 + 1 + 2)
|
||||
#define BIP_MPDU_MAX (BIP_HEADER_MAX + MAX_PDU)
|
||||
/* for legacy demo applications */
|
||||
#define MAX_MPDU BIP_MPDU_MAX
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
|
||||
@@ -24,8 +24,6 @@
|
||||
/* specific defines for BACnet/IP over Ethernet */
|
||||
#define BIP6_HEADER_MAX (1 + 1 + 2)
|
||||
#define BIP6_MPDU_MAX (BIP6_HEADER_MAX+MAX_PDU)
|
||||
/* for legacy demo applications */
|
||||
#define MAX_MPDU BIP6_MPDU_MAX
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
|
||||
+245
-85
@@ -37,104 +37,264 @@
|
||||
#if defined(BACDL_ALL) || defined FOR_DOXYGEN
|
||||
#include "bacnet/datalink/ethernet.h"
|
||||
#include "bacnet/datalink/bip.h"
|
||||
#include "bacnet/datalink/bip6.h"
|
||||
#include "bacnet/datalink/bvlc.h"
|
||||
#include "bacnet/basic/bbmd/h_bbmd.h"
|
||||
#include "bacnet/datalink/bip6.h"
|
||||
#include "bacnet/datalink/bvlc6.h"
|
||||
#include "bacnet/basic/bbmd6/h_bbmd6.h"
|
||||
#include "bacnet/datalink/arcnet.h"
|
||||
#include "bacnet/datalink/dlmstp.h"
|
||||
#include <string.h>
|
||||
/* Function pointers - point to your datalink */
|
||||
|
||||
/** Function template to Initialize the DataLink services at the given
|
||||
interface.
|
||||
* @ingroup DLTemplates
|
||||
*
|
||||
* @note For Linux, ifname is eth0, ath0, arc0, ttyS0, and others.
|
||||
For Windows, ifname is the COM port or dotted ip address of the
|
||||
interface.
|
||||
|
||||
* @param ifname [in] The named interface to use for the network layer.
|
||||
* @return True if the interface is successfully initialized,
|
||||
* else False if the initialization fails.
|
||||
*/
|
||||
bool (*datalink_init)(char *ifname);
|
||||
|
||||
/** Function template to send a packet via the DataLink.
|
||||
* @ingroup DLTemplates
|
||||
*
|
||||
* @param dest [in] Destination address.
|
||||
* @param npdu_data [in] The NPDU header (Network) information.
|
||||
* @param pdu [in] Buffer of data to be sent - may be null.
|
||||
* @param pdu_len [in] Number of bytes in the pdu buffer.
|
||||
* @return Number of bytes sent on success, negative number on failure.
|
||||
*/
|
||||
int (*datalink_send_pdu)(BACNET_ADDRESS *dest,
|
||||
BACNET_NPDU_DATA *npdu_data,
|
||||
uint8_t *pdu,
|
||||
unsigned pdu_len);
|
||||
|
||||
uint16_t (*datalink_receive)(
|
||||
BACNET_ADDRESS *src, uint8_t *pdu, uint16_t max_pdu, unsigned timeout);
|
||||
|
||||
/** Function template to close the DataLink services and perform any cleanup.
|
||||
* @ingroup DLTemplates
|
||||
*/
|
||||
void (*datalink_cleanup)(void);
|
||||
|
||||
void (*datalink_get_broadcast_address)(BACNET_ADDRESS *dest);
|
||||
|
||||
void (*datalink_get_my_address)(BACNET_ADDRESS *my_address);
|
||||
static enum {
|
||||
DATALINK_NONE = 0,
|
||||
DATALINK_ARCNET,
|
||||
DATALINK_ETHERNET,
|
||||
DATALINK_BIP,
|
||||
DATALINK_BIP6,
|
||||
DATALINK_MSTP
|
||||
} Datalink_Transport;
|
||||
|
||||
void datalink_set(char *datalink_string)
|
||||
{
|
||||
if (strcasecmp("bip", datalink_string) == 0) {
|
||||
datalink_init = bip_init;
|
||||
datalink_send_pdu = bip_send_pdu;
|
||||
datalink_receive = bip_receive;
|
||||
datalink_cleanup = bip_cleanup;
|
||||
datalink_get_broadcast_address = bip_get_broadcast_address;
|
||||
datalink_get_my_address = bip_get_my_address;
|
||||
} else if (strcasecmp("bvlc", datalink_string) == 0) {
|
||||
datalink_init = bip_init;
|
||||
datalink_send_pdu = bvlc_send_pdu;
|
||||
datalink_receive = bvlc_receive;
|
||||
datalink_cleanup = bip_cleanup;
|
||||
datalink_get_broadcast_address = bip_get_broadcast_address;
|
||||
datalink_get_my_address = bip_get_my_address;
|
||||
Datalink_Transport = DATALINK_BIP;
|
||||
} else if (strcasecmp("bip6", datalink_string) == 0) {
|
||||
datalink_init = bip6_init;
|
||||
datalink_send_pdu = bip6_send_pdu;
|
||||
datalink_receive = bip6_receive;
|
||||
datalink_cleanup = bip6_cleanup;
|
||||
datalink_get_broadcast_address = bip6_get_broadcast_address;
|
||||
datalink_get_my_address = bip6_get_my_address;
|
||||
} else if (strcasecmp("bvlc6", datalink_string) == 0) {
|
||||
datalink_init = bip6_init;
|
||||
datalink_send_pdu = bvlc6_send_pdu;
|
||||
datalink_receive = bvlc6_receive;
|
||||
datalink_cleanup = bip6_cleanup;
|
||||
datalink_get_broadcast_address = bip6_get_broadcast_address;
|
||||
datalink_get_my_address = bip6_get_my_address;
|
||||
Datalink_Transport = DATALINK_BIP6;
|
||||
} else if (strcasecmp("ethernet", datalink_string) == 0) {
|
||||
datalink_init = ethernet_init;
|
||||
datalink_send_pdu = ethernet_send_pdu;
|
||||
datalink_receive = ethernet_receive;
|
||||
datalink_cleanup = ethernet_cleanup;
|
||||
datalink_get_broadcast_address = ethernet_get_broadcast_address;
|
||||
datalink_get_my_address = ethernet_get_my_address;
|
||||
Datalink_Transport = DATALINK_ETHERNET;
|
||||
} else if (strcasecmp("arcnet", datalink_string) == 0) {
|
||||
datalink_init = arcnet_init;
|
||||
datalink_send_pdu = arcnet_send_pdu;
|
||||
datalink_receive = arcnet_receive;
|
||||
datalink_cleanup = arcnet_cleanup;
|
||||
datalink_get_broadcast_address = arcnet_get_broadcast_address;
|
||||
datalink_get_my_address = arcnet_get_my_address;
|
||||
Datalink_Transport = DATALINK_ARCNET;
|
||||
} else if (strcasecmp("mstp", datalink_string) == 0) {
|
||||
datalink_init = dlmstp_init;
|
||||
datalink_send_pdu = dlmstp_send_pdu;
|
||||
datalink_receive = dlmstp_receive;
|
||||
datalink_cleanup = dlmstp_cleanup;
|
||||
datalink_get_broadcast_address = dlmstp_get_broadcast_address;
|
||||
datalink_get_my_address = dlmstp_get_my_address;
|
||||
Datalink_Transport = DATALINK_MSTP;
|
||||
} else if (strcasecmp("none", datalink_string) == 0) {
|
||||
Datalink_Transport = DATALINK_NONE;
|
||||
}
|
||||
}
|
||||
|
||||
bool datalink_init(char *ifname)
|
||||
{
|
||||
bool status = false;
|
||||
|
||||
switch (Datalink_Transport) {
|
||||
case DATALINK_NONE:
|
||||
status = true;
|
||||
break;
|
||||
case DATALINK_ARCNET:
|
||||
status = arcnet_init(ifname);
|
||||
break;
|
||||
case DATALINK_ETHERNET:
|
||||
status = ethernet_init(ifname);
|
||||
break;
|
||||
case DATALINK_BIP:
|
||||
status = bip_init(ifname);
|
||||
break;
|
||||
case DATALINK_BIP6:
|
||||
status = bip6_init(ifname);
|
||||
break;
|
||||
case DATALINK_MSTP:
|
||||
status = dlmstp_init(ifname);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
int datalink_send_pdu(BACNET_ADDRESS *dest,
|
||||
BACNET_NPDU_DATA *npdu_data,
|
||||
uint8_t *pdu,
|
||||
unsigned pdu_len)
|
||||
{
|
||||
int bytes = 0;
|
||||
|
||||
switch (Datalink_Transport) {
|
||||
case DATALINK_NONE:
|
||||
bytes = pdu_len;
|
||||
break;
|
||||
case DATALINK_ARCNET:
|
||||
bytes = arcnet_send_pdu(
|
||||
dest, npdu_data, pdu, pdu_len);
|
||||
break;
|
||||
case DATALINK_ETHERNET:
|
||||
bytes = ethernet_send_pdu(
|
||||
dest, npdu_data, pdu, pdu_len);
|
||||
break;
|
||||
case DATALINK_BIP:
|
||||
bytes = bip_send_pdu(
|
||||
dest, npdu_data, pdu, pdu_len);
|
||||
break;
|
||||
case DATALINK_BIP6:
|
||||
bytes = bip6_send_pdu(
|
||||
dest, npdu_data, pdu, pdu_len);
|
||||
break;
|
||||
case DATALINK_MSTP:
|
||||
bytes = dlmstp_send_pdu(
|
||||
dest, npdu_data, pdu, pdu_len);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return bytes;
|
||||
}
|
||||
|
||||
uint16_t datalink_receive(
|
||||
BACNET_ADDRESS *src, uint8_t *pdu, uint16_t max_pdu, unsigned timeout)
|
||||
{
|
||||
uint16_t bytes = 0;
|
||||
|
||||
switch (Datalink_Transport) {
|
||||
case DATALINK_NONE:
|
||||
break;
|
||||
case DATALINK_ARCNET:
|
||||
bytes = arcnet_receive(
|
||||
src, pdu, max_pdu, timeout);
|
||||
break;
|
||||
case DATALINK_ETHERNET:
|
||||
bytes = ethernet_receive(
|
||||
src, pdu, max_pdu, timeout);
|
||||
break;
|
||||
case DATALINK_BIP:
|
||||
bytes = bip_receive(
|
||||
src, pdu, max_pdu, timeout);
|
||||
break;
|
||||
case DATALINK_BIP6:
|
||||
bytes = bip6_receive(
|
||||
src, pdu, max_pdu, timeout);
|
||||
break;
|
||||
case DATALINK_MSTP:
|
||||
bytes = dlmstp_receive(
|
||||
src, pdu, max_pdu, timeout);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return bytes;
|
||||
}
|
||||
|
||||
void datalink_cleanup(void)
|
||||
{
|
||||
switch (Datalink_Transport) {
|
||||
case DATALINK_NONE:
|
||||
break;
|
||||
case DATALINK_ARCNET:
|
||||
arcnet_cleanup();
|
||||
break;
|
||||
case DATALINK_ETHERNET:
|
||||
ethernet_cleanup();
|
||||
break;
|
||||
case DATALINK_BIP:
|
||||
bip_cleanup();
|
||||
break;
|
||||
case DATALINK_BIP6:
|
||||
bip6_cleanup();
|
||||
break;
|
||||
case DATALINK_MSTP:
|
||||
dlmstp_cleanup();
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void datalink_get_broadcast_address(BACNET_ADDRESS *dest)
|
||||
{
|
||||
switch (Datalink_Transport) {
|
||||
case DATALINK_NONE:
|
||||
break;
|
||||
case DATALINK_ARCNET:
|
||||
arcnet_get_broadcast_address(dest);
|
||||
break;
|
||||
case DATALINK_ETHERNET:
|
||||
ethernet_get_broadcast_address(dest);
|
||||
break;
|
||||
case DATALINK_BIP:
|
||||
bip_get_broadcast_address(dest);
|
||||
break;
|
||||
case DATALINK_BIP6:
|
||||
bip6_get_broadcast_address(dest);
|
||||
break;
|
||||
case DATALINK_MSTP:
|
||||
dlmstp_get_broadcast_address(dest);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void datalink_get_my_address(BACNET_ADDRESS *my_address)
|
||||
{
|
||||
switch (Datalink_Transport) {
|
||||
case DATALINK_NONE:
|
||||
break;
|
||||
case DATALINK_ARCNET:
|
||||
arcnet_get_my_address(my_address);
|
||||
break;
|
||||
case DATALINK_ETHERNET:
|
||||
ethernet_get_my_address(my_address);
|
||||
break;
|
||||
case DATALINK_BIP:
|
||||
bip_get_my_address(my_address);
|
||||
break;
|
||||
case DATALINK_BIP6:
|
||||
bip6_get_my_address(my_address);
|
||||
break;
|
||||
case DATALINK_MSTP:
|
||||
dlmstp_get_my_address(my_address);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void datalink_set_interface(char *ifname)
|
||||
{
|
||||
switch (Datalink_Transport) {
|
||||
case DATALINK_NONE:
|
||||
(void)ifname;
|
||||
break;
|
||||
case DATALINK_ARCNET:
|
||||
(void)ifname;
|
||||
break;
|
||||
case DATALINK_ETHERNET:
|
||||
(void)ifname;
|
||||
break;
|
||||
case DATALINK_BIP:
|
||||
(void)ifname;
|
||||
break;
|
||||
case DATALINK_BIP6:
|
||||
(void)ifname;
|
||||
break;
|
||||
case DATALINK_MSTP:
|
||||
(void)ifname;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void datalink_maintenance_timer(uint16_t seconds)
|
||||
{
|
||||
switch (Datalink_Transport) {
|
||||
case DATALINK_NONE:
|
||||
break;
|
||||
case DATALINK_ARCNET:
|
||||
break;
|
||||
case DATALINK_ETHERNET:
|
||||
break;
|
||||
case DATALINK_BIP:
|
||||
bvlc_maintenance_timer(seconds);
|
||||
break;
|
||||
case DATALINK_BIP6:
|
||||
bvlc6_maintenance_timer(seconds);
|
||||
break;
|
||||
case DATALINK_MSTP:
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -30,6 +30,7 @@
|
||||
|
||||
#if defined(BACDL_ETHERNET)
|
||||
#include "bacnet/datalink/ethernet.h"
|
||||
#define MAX_MPDU ETHERNET_MPDU_MAX
|
||||
|
||||
#define datalink_init ethernet_init
|
||||
#define datalink_send_pdu ethernet_send_pdu
|
||||
@@ -41,6 +42,7 @@
|
||||
|
||||
#elif defined(BACDL_ARCNET)
|
||||
#include "bacnet/datalink/arcnet.h"
|
||||
#define MAX_MPDU ARCNET_MPDU_MAX
|
||||
|
||||
#define datalink_init arcnet_init
|
||||
#define datalink_send_pdu arcnet_send_pdu
|
||||
@@ -52,6 +54,7 @@
|
||||
|
||||
#elif defined(BACDL_MSTP)
|
||||
#include "bacnet/datalink/dlmstp.h"
|
||||
#define MAX_MPDU DLMSTP_MPDU_MAX
|
||||
|
||||
#define datalink_init dlmstp_init
|
||||
#define datalink_send_pdu dlmstp_send_pdu
|
||||
@@ -65,6 +68,7 @@
|
||||
#include "bacnet/datalink/bip.h"
|
||||
#include "bacnet/datalink/bvlc.h"
|
||||
#include "bacnet/basic/bbmd/h_bbmd.h"
|
||||
#define MAX_MPDU BIP_MPDU_MAX
|
||||
|
||||
#define datalink_init bip_init
|
||||
#define datalink_send_pdu bip_send_pdu
|
||||
@@ -85,6 +89,8 @@ void routed_get_my_address(
|
||||
#include "bacnet/datalink/bip6.h"
|
||||
#include "bacnet/datalink/bvlc6.h"
|
||||
#include "bacnet/basic/bbmd6/h_bbmd6.h"
|
||||
#define MAX_MPDU BIP6_MPDU_MAX
|
||||
|
||||
#define datalink_init bip6_init
|
||||
#define datalink_send_pdu bip6_send_pdu
|
||||
#define datalink_receive bip6_receive
|
||||
|
||||
@@ -33,15 +33,15 @@
|
||||
|
||||
/* defines specific to MS/TP */
|
||||
/* preamble+type+dest+src+len+crc8+crc16 */
|
||||
#define MAX_HEADER (2+1+1+1+2+1+2)
|
||||
#define MAX_MPDU (MAX_HEADER+MAX_PDU)
|
||||
#define DLMSTP_HEADER_MAX (2+1+1+1+2+1+2)
|
||||
#define DLMSTP_MPDU_MAX (DLMSTP_HEADER_MAX+MAX_PDU)
|
||||
|
||||
typedef struct dlmstp_packet {
|
||||
bool ready; /* true if ready to be sent or received */
|
||||
BACNET_ADDRESS address; /* source address */
|
||||
uint8_t frame_type; /* type of message */
|
||||
uint16_t pdu_len; /* packet length */
|
||||
uint8_t pdu[MAX_MPDU]; /* packet */
|
||||
uint8_t pdu[DLMSTP_MPDU_MAX]; /* packet */
|
||||
} DLMSTP_PACKET;
|
||||
|
||||
#ifdef __cplusplus
|
||||
@@ -135,12 +135,12 @@ extern "C" {
|
||||
bool dlmstp_send_pdu_queue_empty(void);
|
||||
BACNET_STACK_EXPORT
|
||||
bool dlmstp_send_pdu_queue_full(void);
|
||||
|
||||
|
||||
BACNET_STACK_EXPORT
|
||||
uint8_t dlmstp_max_info_frames_limit(void);
|
||||
BACNET_STACK_EXPORT
|
||||
uint8_t dlmstp_max_master_limit(void);
|
||||
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
||||
@@ -32,8 +32,8 @@
|
||||
#include "bacnet/npdu.h"
|
||||
|
||||
/* specific defines for Ethernet */
|
||||
#define MAX_HEADER (6+6+2+1+1+1)
|
||||
#define MAX_MPDU (MAX_HEADER+MAX_PDU)
|
||||
#define ETHERNET_HEADER_MAX (6+6+2+1+1+1)
|
||||
#define ETHERNET_MPDU_MAX (ETHERNET_HEADER_MAX+MAX_PDU)
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
|
||||
Reference in New Issue
Block a user