Updated output of whois demo. Began implementing the datalink-all concept.

This commit is contained in:
skarg
2008-01-01 23:17:28 +00:00
parent af6490c6cd
commit 8b99c8c85b
5 changed files with 73 additions and 43 deletions
+7
View File
@@ -110,6 +110,13 @@ int main(
/* allow the device ID to be set */ /* allow the device ID to be set */
if (argc > 1) if (argc > 1)
Device_Set_Object_Instance_Number(strtol(argv[1], NULL, 0)); Device_Set_Object_Instance_Number(strtol(argv[1], NULL, 0));
#if defined(BACDL_ALL)
pEnv = getenv("BACNET_DATALINK");
if (pEnv) {
datalink_set(pEnv));
} else {
datalink_set("bip");
#endif
#if defined(BACDL_BIP) #if defined(BACDL_BIP)
pEnv = getenv("BACNET_IP_PORT"); pEnv = getenv("BACNET_IP_PORT");
if (pEnv) { if (pEnv) {
+23 -7
View File
@@ -109,16 +109,32 @@ static void print_address_cache(
uint32_t device_id = 0; uint32_t device_id = 0;
unsigned max_apdu = 0; unsigned max_apdu = 0;
fprintf(stderr, "Device\tMAC\tMaxAPDU\tNet\n"); printf("%-7s %-14s %-4s %-5s %-14s\n",
"Device","MAC","APDU","SNET","SADR");
printf("------- -------------- ---- ----- --------------\n");
for (i = 0; i < MAX_ADDRESS_CACHE; i++) { for (i = 0; i < MAX_ADDRESS_CACHE; i++) {
if (address_get_by_index(i, &device_id, &max_apdu, &address)) { if (address_get_by_index(i, &device_id, &max_apdu, &address)) {
fprintf(stderr, "%u\t", device_id); printf("%7u ", device_id);
for (j = 0; j < address.mac_len; j++) { for (j = 0; j < 7; j++) {
fprintf(stderr, "%02X", address.mac[j]); if (j < address.mac_len) {
printf("%02X", address.mac[j]);
} else {
printf(" ");
}
} }
fprintf(stderr, "\t"); printf(" %4hu ", max_apdu);
fprintf(stderr, "%hu\t", max_apdu); printf("%5hu ", address.net);
fprintf(stderr, "%hu\n", address.net); if (address.net) {
for (j = 0; j < 7; j++) {
if (j < address.len) {
printf("%02X", address.adr[j]);
} else {
printf(" ");
}
printf(" ");
}
}
printf("\n");
} }
} }
} }
+2 -2
View File
@@ -6,12 +6,12 @@
/* declare a single physical layer using your compiler define. /* declare a single physical layer using your compiler define.
see datalink.h for possible defines. */ see datalink.h for possible defines. */
#if !(defined(BACDL_ETHERNET) || defined(BACDL_ARCNET) || defined(BACDL_MSTP) || defined(BACDL_BIP) || defined(BACDL_TEST)) #if !(defined(BACDL_ETHERNET) || defined(BACDL_ARCNET) || defined(BACDL_MSTP) || defined(BACDL_BIP) || defined(BACDL_TEST) || defined(BACDL_ALL))
#define BACDL_BIP #define BACDL_BIP
#endif #endif
/* optional debug info for BACnet/IP datalink layers */ /* optional debug info for BACnet/IP datalink layers */
#if defined(BACDL_BIP) #if (defined(BACDL_BIP) || defined(BACDL_ALL))
#if !defined(USE_INADDR) #if !defined(USE_INADDR)
#define USE_INADDR 1 #define USE_INADDR 1
#endif #endif
+6 -2
View File
@@ -87,7 +87,10 @@
#else #else
#include "npdu.h" #include "npdu.h"
extern int datalink_send_pdu( #define MAX_HEADER (8)
#define MAX_MPDU (MAX_HEADER+MAX_PDU)
int datalink_send_pdu(
BACNET_ADDRESS * dest, BACNET_ADDRESS * dest,
BACNET_NPDU_DATA * npdu_data, BACNET_NPDU_DATA * npdu_data,
uint8_t * pdu, uint8_t * pdu,
@@ -105,7 +108,8 @@ extern void datalink_get_my_address(
BACNET_ADDRESS * my_address); BACNET_ADDRESS * my_address);
extern void datalink_set_interface( extern void datalink_set_interface(
char *ifname); char *ifname);
extern void datalink_set(
char *datalink_string);
#endif #endif
#endif #endif
+35 -32
View File
@@ -32,7 +32,9 @@
------------------------------------------- -------------------------------------------
####COPYRIGHTEND####*/ ####COPYRIGHTEND####*/
#include "datalink.h" #include "datalink.h"
#include <string.h>
#if defined(BACDL_ALL)
/* Function pointers - point to your datalink */ /* Function pointers - point to your datalink */
bool(*datalink_init) (char *ifname); bool(*datalink_init) (char *ifname);
@@ -58,37 +60,38 @@ void (
*datalink_get_my_address) ( *datalink_get_my_address) (
BACNET_ADDRESS * my_address); BACNET_ADDRESS * my_address);
void datalink_configure( void datalink_set(
void) char *datalink_string)
{ {
#if defined(BACDL_ETHERNET) if (strcasecmp("bip",datalink_string) == 0) {
datalink_init = ethernet_init; datalink_init = bip_init;
datalink_send_pdu = ethernet_send_pdu; datalink_send_pdu = bip_send_pdu;
datalink_receive = ethernet_receive; datalink_receive = bip_receive;
datalink_cleanup = ethernet_cleanup; datalink_cleanup = bip_cleanup;
datalink_get_broadcast_address = ethernet_get_broadcast_address; datalink_get_broadcast_address = bip_get_broadcast_address;
datalink_get_my_address = ethernet_get_my_address; datalink_get_my_address = bip_get_my_address;
#elif defined(BACDL_ARCNET) } else if (strcasecmp("ethernet",datalink_string) == 0) {
datalink_init = arcnet_init; datalink_init = ethernet_init;
datalink_send_pdu = arcnet_send_pdu; datalink_send_pdu = ethernet_send_pdu;
datalink_receive = arcnet_receive; datalink_receive = ethernet_receive;
datalink_cleanup = arcnet_cleanup; datalink_cleanup = ethernet_cleanup;
datalink_get_broadcast_address = arcnet_get_broadcast_address; datalink_get_broadcast_address = ethernet_get_broadcast_address;
datalink_get_my_address = arcnet_get_my_address; datalink_get_my_address = ethernet_get_my_address;
#elif defined(BACDL_MSTP) } else if (strcasecmp("arcnet",datalink_string) == 0) {
datalink_init = dlmstp_init; datalink_init = arcnet_init;
datalink_send_pdu = dlmstp_send_pdu; datalink_send_pdu = arcnet_send_pdu;
datalink_receive = dlmstp_receive; datalink_receive = arcnet_receive;
datalink_cleanup = dlmstp_cleanup; datalink_cleanup = arcnet_cleanup;
datalink_get_broadcast_address = dlmstp_get_broadcast_address; datalink_get_broadcast_address = arcnet_get_broadcast_address;
datalink_get_my_address = dlmstp_get_my_address; datalink_get_my_address = arcnet_get_my_address;
#elif defined(BACDL_BIP) } else if (strcasecmp("mstp",datalink_string) == 0) {
datalink_init = bip_init; datalink_init = dlmstp_init;
datalink_send_pdu = bip_send_pdu; datalink_send_pdu = dlmstp_send_pdu;
datalink_receive = bip_receive; datalink_receive = dlmstp_receive;
datalink_cleanup = bip_cleanup; datalink_cleanup = dlmstp_cleanup;
datalink_get_broadcast_address = bip_get_broadcast_address; datalink_get_broadcast_address = dlmstp_get_broadcast_address;
datalink_get_my_address = bip_get_my_address; datalink_get_my_address = dlmstp_get_my_address;
}
}
#endif #endif
}
}