stargieg / bacnet-stack Goto Github PK
View Code? Open in Web Editor NEWBACnet Protocol Stack with UCI
BACnet Protocol Stack with UCI
line 47: can't find 'tcpipv6.h'
#ifndef IPPROTO_IPV6
// If the version of winsock does not by default include IPV6 then
// use the tech preview if it is avaliable.
#include <tpipv6.h>
#endif
The "ports\win32\Microsoft Visual Studio 2015\Server" project needs "BACnet Demo Settings.props" which is missing.
I'm trying to use the router demo because it's actually very close to what I need (assuming ms/tp support works under linux; if it doesn't I will try to fix it). But something seems oddly wrong.
The help text says it takes
~/work/bacnet-stack/demo/router$ ./router
I am router
Usage: router <init_method> [init_parameters]
init_method:
-c, --config <filepath>
initialize router with a configuration file (.cfg) located at <filepath>
-D, --device <dev_type> [params]
initialize a <dev_type> device specified with
[params]
but when you try to send in -c init.cfg
it fails. There is no handling of a config file option in main.c and there is a forward declaration for bool read_config(char *filepath)
that doesn't seem to exist anywhere in the project. Yet the docs say all demos have been tested.
What am I missing?
How to integrate BACnet stack with Arduino Uno
I am to say a novice, but withstanding I've learnt a lot whilst developing my project, I have an Atmel 1284P currently running a Modbus RTU slave stack that works very nicely. I want to attempt to use the BACnet
stack over MSTP, Mac address and instance ID, baud etc will all be configured from a small config file on an SD card.
My current application is written using Arduino C (in visual studio), I have tried to create a simple Bacnet net test and tried to compile it, I cannot however get it to compile, I have modified the hardware.h file
#ifndef HARDWARE_H
#define HARDWARE_H
#if !defined(F_CPU)
/* The processor clock frequency */
#define F_CPU 7372800UL
#endif
#if defined(IAR_SYSTEMS_ICC) || defined(IAR_SYSTEMS_ASM)|| (ICCAVR)
#include <iom1284p.h>
#else
#if !defined(AVR_ATmega1284P)
#error Firmware is configured for ATmega1284 only (-mmcu=atmega1284p)
#endif
#endif
#include "iar2gcc.h"
#include "avr035.h"
#define LED_NPDU_INIT() BIT_SET(DDRD, DDD5)
#define LED_NPDU_ON() BIT_CLEAR(PORTD, PD5)
#define LED_NPDU_OFF() BIT_SET(PORTD, PD5)
/* #define LED_NPDU PORTD_Bit5 /
/ #define LED_NPDU_OFF() {LED_NPDU = false;} /
/ #define LED_NPDU_ON() {LED_NPDU = true;} */
#define LED_GREEN_INIT() BIT_SET(DDRD, DDD4)
#define LED_GREEN_ON() BIT_CLEAR(PORTD, PD4)
#define LED_GREEN_OFF() BIT_SET(PORTD, PD4)
#endif
And this is the main application with the includes, I haven't written any code yet I just want to get the Stack to compile first, can anybody help me out here?
#include <ai.h>
#include <av.h>
#include <avr035.h>
#include <bv.h>
#include <device.h>
#include <hardware.h>
#include <iar2gcc.h>
#include <rs485.h>
#include <stack.h>
#include <stdbool.h>
#include <stdint.h>
#include <timer.h>
void setup() {
// put your setup code here, to run once:
}
void loop() {
// put your main code here, to run repeatedly:
}
I just want to use Bacnet over MSTP that's it.
Regards
John
Hi,
I am trying to read some values from a buffer of a trend log using the demo/readrange/bacrr program. However, after the message "Received ReadRange Ack!", I get the result "{ }". I know there are records in the buffer and tried different positions/ranges and time stamps.
I couldn't further on find any solution to this problem in forums. Any idea why I get an empty result and how to possibly solve this?
Regards,
Bob
Thanks for the esp32 port. Following the readme.txt, was able to successfully build the port. The port has AI and DO (BO). I want to add the remaining common data types (AO, BI, AV and BV). Can you help me implement these?
If I fire off what I understand to be a local broadcast - an IAm message with no destination information in the NPCI, for example - the router application interprets the lack of destination information as being destined for network 0, which causes it to then issue a NETWORK_MESSAGE_WHO_IS_ROUTER_TO_NETWORK message attempting to find network 0.
Here is the message I'm sending out:
And what I see is when this message gets passed to npdu_decode
, it correctly checks to see if the control bit (5) is set or not and when it sees it is not, it zeros out our destination information:
/*Bit 5: Destination specifier where: */
/* 0 = DNET, DLEN, DADR, and Hop Count absent */
/* 1 = DNET, DLEN, and Hop Count present */
/* DLEN = 0 denotes broadcast MAC DADR and DADR field is absent */
/* DLEN > 0 specifies length of DADR field */
if (npdu[1] & BIT5) {
len += decode_unsigned16(&npdu[len], &dest_net);
/* DLEN = 0 denotes broadcast MAC DADR and DADR field is absent */
/* DLEN > 0 specifies length of DADR field */
address_len = npdu[len++];
if (dest) {
dest->net = dest_net;
dest->len = address_len;
}
if (address_len) {
if (address_len > MAX_MAC_LEN) {
/* address is too large could be a malformed message */
return -1;
}
for (i = 0; i < address_len; i++) {
mac_octet = npdu[len++];
if (dest)
dest->adr[i] = mac_octet;
}
}
}
/* zero out the destination address */
else if (dest) {
dest->net = 0;
dest->len = 0;
for (i = 0; i < MAX_MAC_LEN; i++) {
dest->adr[i] = 0;
}
}
Now when npdu_decode
returns to process_msg
, it attempts to find the appropriate destination:
srcport = find_snet(msg->origin);
destport = find_dnet(data->dest.net, NULL);
assert(srcport);
if (srcport && destport) {
....
} else {
/* request net search */
return -1;
}
This returns -1 since our destport cannot be found, which causes the NETWORK_MESSAGE_WHO_IS_ROUTER_TO_NETWORK message to be sent.
Am I correct in assuming this is a bug? Would an appropriate fix be to detect that the incoming message is a broadcast message with no destination information, assume that means the message is a local broadcast and discard the message entirely (since local broadcasts by definition should not extend beyond the router?)
Hello, does this software provide bacnet router functionality (for example converting bacnet/ip to bacnet/mstp)?
I ran doxygen BACnet-stack.doxyfile
and BACnet_stack.html
continues to be empty. I set both HAVE_DOT = YES
and CALLER_GRAPH = YES
. Is there another way to load the docs to navigate through? html/main.html
and html/tree.html
do not exist.
Here is the last five byte of a large ReadRange response:
0x50, 0xee, 0xe3, 0xbf, 0xe4
( 0xee, 0xe3, 0xbf, 0xe4 is the COB encoded -32K CRC)
Here is what the mstpcap sends to Wireshark:
( 0xee, 0xe3, 0x00, 0xbf, 0xe4 }
mstpcap appends an "artificial" zero thinking it is the end of the packet (length is length -2 for cob encoded frame)
and then appends the last two bytes for data CRC (it treat the packet as non cob packet)
Followed the instructions for the esp32 port of bacnet-stack. There are a few issues it seems:
As the esp32 port has been unchanged for 2 years it seems, it seems a bit behind. If anyone has been able to compile and run this bacnet-port on esp32 kindly share any steps you may have followed.
Thank you.
Hi, I have been looking for a readrange tool and you seem to provide one with your fork of the bacnet protocol stack.
So I have been trying to compile with "make clean demos" but there's errors. Here are the errors in the order I have encountered them and what I have done to try to fix the issues.
Problem #1
Wrong paths in ./demo/Makefile
Solution: The following paths started with ../../ changed them to ../ as bellow
BACNET_PORT_DIR = ../ports/${BACNET_PORT}
BACNET_INCLUDE = ../include
BACNET_OBJECT = ../demo/object
BACNET_HANDLER = ../demo/handler
Problem #2
Wrong BACNET_LIB_DIR path in ./demo/Makefile
Solution
Not sure if this is ok but since I couldnt find any libbacnet.a in your sources I changed the line to point to the lib folder from bacnet-stack-0.8.2
Problem #3
../demo/handler/s_ptransfer.c:50:9: warning: no previous prototype for ‘Send_Private_Transfer_Request’ [-Wmissing-prototypes]
main.c:35:20: fatal error: bacdef.h: No such file or directory
Solution
Not a clue what to do about this one, there are too many path errors in too many files and too many versions of bacdef.h....
Problem #4
../src/ucix.c:25:24: fatal error: uci_config.h: No such file or directory
Solution
Not a clue here either, what is an UCI? were can I get this file?
And there are a bunch of other path errors if we do a "make clean all"
Also, there is probably a bunch of other errors up ahead cause I havent been able to get past problem #3 yet.
Could you please help?
Hi ,
I wish to embedded readproperty in my application.
I am looking for a function which can print out the present value.
Is there any way to do that. Thanks in advance.
Is the BACnet stack designed for Linux only systems ? I tried to compile the project on FreeBSD 10 amd64 without success:
krmx@fbsd1064:~/bacnet-stack % gmake
gmake -s -C lib all
In file included from ../src/tsm.c:45:
In file included from ../include/datalink.h:61:
In file included from ../include/bip.h:32:
../ports/linux/net.h:85:10: fatal error: 'features.h' file not found
#include <features.h> /* for the glibc version number */
^
1 error generated.
Makefile:219: recipe for target '../src/tsm.o' failed
gmake[1]: *** [../src/tsm.o] Error 1
Makefile:68: recipe for target 'library' failed
gmake: *** [library] Error 2
Is there any hope to see this portable across different UNIX systems or the stack will stay only for Linux based systems ?
Thanks
Hi have been trying to compile but have struck an issue with the current master.
When I compile I get the following on any commit after 1b4cb0e
cc -pthread main.o ../../demo/object/device.o ../../demo/object/nc.o ../../demo/object/access_credential.o ../../demo/object/access_door.o ../../demo/object/access_point.o ../../demo/object/access_rights.o ../../demo/object/access_user.o ../../demo/object/access_zone.o ../../demo/object/credential_data_input.o ../../demo/object/bacfile.o -Wl,-L../../lib,-lbacnet,-lc,-lgcc,-lrt,-lm -o bacserv ../../demo/object/nc.o: In function
Notification_Class_Load_UCI_List':
nc.c:(.text+0x1e): undefined reference to ucix_get_option_int' ../../demo/object/nc.o: In function
Notification_Class_Init':
nc.c:(.text+0xcb): undefined reference to ucix_init' nc.c:(.text+0x122): undefined reference to
ucix_for_each_section_type'
nc.c:(.text+0x13d): undefined reference to ucix_get_option' nc.c:(.text+0x1b6): undefined reference to
ucix_get_option'
nc.c:(.text+0x1da): undefined reference to ucix_get_option_int' nc.c:(.text+0x235): undefined reference to
ucix_string_copy'
nc.c:(.text+0x253): undefined reference to ucix_get_option' nc.c:(.text+0x2d8): undefined reference to
ucix_string_copy'
nc.c:(.text+0x31d): undefined reference to ucix_get_list' nc.c:(.text+0x537): undefined reference to
ucix_cleanup'
../../demo/object/nc.o: In function Notification_Class_Write_Property': nc.c:(.text+0xb7a): undefined reference to
ucix_init'
nc.c:(.text+0xe26): undefined reference to ucix_add_option' nc.c:(.text+0x1430): undefined reference to
ucix_set_list'
nc.c:(.text+0x1441): undefined reference to ucix_commit' nc.c:(.text+0x144d): undefined reference to
ucix_cleanup'
collect2: error: ld returned 1 exit status
Makefile:99: recipe for target 'bacserv' failed
`
When checkout 1b4cb0e compiles complete successfully
Any ideas on how to fix ?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.