Updated Visual Studio ports project, cleaning up compile warnings.

This commit is contained in:
skarg
2008-04-10 05:31:08 +00:00
parent f020c09d9b
commit df310edca6
9 changed files with 111 additions and 75 deletions
+8
View File
@@ -48,12 +48,20 @@ extern "C" {
int encode_bacnet_real( int encode_bacnet_real(
float value, float value,
uint8_t * apdu); uint8_t * apdu);
int decode_double(
uint8_t * apdu,
double *real_value);
int encode_bacnet_double(
double value,
uint8_t * apdu);
#ifdef TEST #ifdef TEST
#include "ctest.h" #include "ctest.h"
void testBACreal( void testBACreal(
Test * pTest); Test * pTest);
void testBACdouble(
Test * pTest);
#endif #endif
#ifdef __cplusplus #ifdef __cplusplus
+1
View File
@@ -37,6 +37,7 @@
#include <stdbool.h> #include <stdbool.h>
#include <stdint.h> #include <stdint.h>
#include <stddef.h> #include <stddef.h>
#include <time.h>
#include "bacdef.h" #include "bacdef.h"
#include "npdu.h" #include "npdu.h"
+18 -2
View File
@@ -42,7 +42,7 @@ RSC=rc.exe
# PROP Ignore_Export_Lib 0 # PROP Ignore_Export_Lib 0
# PROP Target_Dir "" # PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\..\.." /I ".." /I "..\..\..\demo\object\\" /I "..\..\..\demo\handler\\" /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "BACAPP_ALL" /D PRINT_ENABLED=1 /D BIG_ENDIAN=0 /D USE_INADDR=0 /D "BACDL_BIP" /FD /c # ADD CPP /nologo /MT /W3 /GX /O2 /I "..\..\.." /I ".." /I "..\..\..\demo\object\\" /I "..\..\..\demo\handler\\" /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "BACAPP_ALL" /D PRINT_ENABLED=1 /D BIG_ENDIAN=0 /D "BACDL_BIP" /D USE_INADDR=1 /FD /c
# SUBTRACT CPP /YX # SUBTRACT CPP /YX
# ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD BASE RSC /l 0x409 /d "NDEBUG"
# ADD RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /d "NDEBUG"
@@ -67,7 +67,7 @@ LINK32=link.exe
# PROP Ignore_Export_Lib 0 # PROP Ignore_Export_Lib 0
# PROP Target_Dir "" # PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "..\..\..\include\\" /I ".." /I "..\..\..\demo\object\\" /I "..\..\..\demo\handler\\" /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "BACAPP_ALL" /D PRINT_ENABLED=1 /D BIG_ENDIAN=0 /D USE_INADDR=0 /D "BACDL_BIP" /FR /FD /GZ /c # ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "..\..\..\include\\" /I ".." /I "..\..\..\demo\object\\" /I "..\..\..\demo\handler\\" /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "BACAPP_ALL" /D PRINT_ENABLED=1 /D BIG_ENDIAN=0 /D "BACDL_BIP" /D USE_INADDR=1 /FR /FD /GZ /c
# SUBTRACT CPP /YX # SUBTRACT CPP /YX
# ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD BASE RSC /l 0x409 /d "_DEBUG"
# ADD RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /d "_DEBUG"
@@ -177,6 +177,14 @@ SOURCE=..\..\..\demo\object\bv.c
# End Source File # End Source File
# Begin Source File # Begin Source File
SOURCE=..\..\..\src\bvlc.c
# End Source File
# Begin Source File
SOURCE=..\..\..\src\cov.c
# End Source File
# Begin Source File
SOURCE=..\..\..\src\crc.c SOURCE=..\..\..\src\crc.c
# End Source File # End Source File
# Begin Source File # Begin Source File
@@ -205,6 +213,10 @@ SOURCE=..\..\..\demo\handler\h_arf_a.c
# End Source File # End Source File
# Begin Source File # Begin Source File
SOURCE=..\..\..\demo\handler\h_cov.c
# End Source File
# Begin Source File
SOURCE=..\..\..\demo\handler\h_iam.c SOURCE=..\..\..\demo\handler\h_iam.c
# End Source File # End Source File
# Begin Source File # Begin Source File
@@ -397,6 +409,10 @@ SOURCE=..\..\..\demo\object\bv.h
# End Source File # End Source File
# Begin Source File # Begin Source File
SOURCE=..\..\..\include\bvlc.h
# End Source File
# Begin Source File
SOURCE=..\..\..\include\bytes.h SOURCE=..\..\..\include\bytes.h
# End Source File # End Source File
# Begin Source File # Begin Source File
Binary file not shown.
Binary file not shown.
+31 -50
View File
@@ -6,9 +6,9 @@
--------------------Configuration: bacnet - Win32 Debug-------------------- --------------------Configuration: bacnet - Win32 Debug--------------------
</h3> </h3>
<h3>Command Lines</h3> <h3>Command Lines</h3>
Creating temporary file "C:\DOCUME~1\cbkargs\LOCALS~1\Temp\RSP35.tmp" with contents Creating temporary file "C:\DOCUME~1\VMWare\LOCALS~1\Temp\RSP34.tmp" with contents
[ [
/nologo /MTd /W3 /Gm /GX /ZI /Od /I "..\..\..\include\\" /I ".." /I "..\..\..\demo\object\\" /I "..\..\..\demo\handler\\" /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "BACAPP_ALL" /D PRINT_ENABLED=1 /D BIG_ENDIAN=0 /D USE_INADDR=0 /D "BACDL_BIP" /FR"Debug/" /Fo"Debug/" /Fd"Debug/" /FD /GZ /c /nologo /MTd /W3 /Gm /GX /ZI /Od /I "..\..\..\include\\" /I ".." /I "..\..\..\demo\object\\" /I "..\..\..\demo\handler\\" /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "BACAPP_ALL" /D PRINT_ENABLED=1 /D BIG_ENDIAN=0 /D "BACDL_BIP" /D USE_INADDR=1 /FR"Debug/" /Fo"Debug/" /Fd"Debug/" /FD /GZ /c
"C:\code\bacnet-stack\src\abort.c" "C:\code\bacnet-stack\src\abort.c"
"C:\code\bacnet-stack\src\address.c" "C:\code\bacnet-stack\src\address.c"
"C:\code\bacnet-stack\demo\object\ai.c" "C:\code\bacnet-stack\demo\object\ai.c"
@@ -16,34 +16,29 @@ Creating temporary file "C:\DOCUME~1\cbkargs\LOCALS~1\Temp\RSP35.tmp" with conte
"C:\code\bacnet-stack\src\apdu.c" "C:\code\bacnet-stack\src\apdu.c"
"C:\code\bacnet-stack\src\arf.c" "C:\code\bacnet-stack\src\arf.c"
"C:\code\bacnet-stack\demo\object\av.c" "C:\code\bacnet-stack\demo\object\av.c"
"C:\code\bacnet-stack\src\bacaddr.c"
"C:\code\bacnet-stack\src\bacapp.c" "C:\code\bacnet-stack\src\bacapp.c"
"C:\code\bacnet-stack\src\bacdcode.c" "C:\code\bacnet-stack\src\bacdcode.c"
"C:\code\bacnet-stack\src\bacerror.c" "C:\code\bacnet-stack\src\bacerror.c"
"C:\code\bacnet-stack\demo\object\bacfile.c" "C:\code\bacnet-stack\demo\object\bacfile.c"
"C:\code\bacnet-stack\src\bacint.c"
"C:\code\bacnet-stack\src\bacreal.c" "C:\code\bacnet-stack\src\bacreal.c"
"C:\code\bacnet-stack\src\bacstr.c"
"C:\code\bacnet-stack\src\bactext.c"
"C:\code\bacnet-stack\demo\object\bi.c" "C:\code\bacnet-stack\demo\object\bi.c"
"C:\code\bacnet-stack\src\bigend.c"
"C:\code\bacnet-stack\ports\win32\bip-init.c" "C:\code\bacnet-stack\ports\win32\bip-init.c"
"C:\code\bacnet-stack\src\bip.c" "C:\code\bacnet-stack\src\bip.c"
"C:\code\bacnet-stack\demo\object\bo.c" "C:\code\bacnet-stack\demo\object\bo.c"
"C:\code\bacnet-stack\demo\object\bv.c" "C:\code\bacnet-stack\demo\object\bv.c"
"C:\code\bacnet-stack\src\crc.c" "C:\code\bacnet-stack\src\bvlc.c"
"C:\code\bacnet-stack\src\datetime.c" "C:\code\bacnet-stack\src\cov.c"
"C:\code\bacnet-stack\src\dcc.c" "C:\code\bacnet-stack\src\dcc.c"
"C:\code\bacnet-stack\demo\object\device.c" "C:\code\bacnet-stack\demo\object\device.c"
"C:\code\bacnet-stack\demo\handler\h_arf.c" "C:\code\bacnet-stack\demo\handler\h_arf.c"
"C:\code\bacnet-stack\demo\handler\h_arf_a.c" "C:\code\bacnet-stack\demo\handler\h_arf_a.c"
"C:\code\bacnet-stack\demo\handler\h_cov.c"
"C:\code\bacnet-stack\demo\handler\h_iam.c" "C:\code\bacnet-stack\demo\handler\h_iam.c"
"C:\code\bacnet-stack\demo\handler\h_rp.c" "C:\code\bacnet-stack\demo\handler\h_rp.c"
"C:\code\bacnet-stack\demo\handler\h_rp_a.c" "C:\code\bacnet-stack\demo\handler\h_rp_a.c"
"C:\code\bacnet-stack\demo\handler\h_whois.c" "C:\code\bacnet-stack\demo\handler\h_whois.c"
"C:\code\bacnet-stack\demo\handler\h_wp.c" "C:\code\bacnet-stack\demo\handler\h_wp.c"
"C:\code\bacnet-stack\src\iam.c" "C:\code\bacnet-stack\src\iam.c"
"C:\code\bacnet-stack\src\indtext.c"
"C:\code\bacnet-stack\demo\object\lc.c" "C:\code\bacnet-stack\demo\object\lc.c"
"C:\code\bacnet-stack\demo\object\lsp.c" "C:\code\bacnet-stack\demo\object\lsp.c"
"C:\code\bacnet-stack\ports\win32\main.c" "C:\code\bacnet-stack\ports\win32\main.c"
@@ -51,22 +46,16 @@ Creating temporary file "C:\DOCUME~1\cbkargs\LOCALS~1\Temp\RSP35.tmp" with conte
"C:\code\bacnet-stack\demo\handler\noserv.c" "C:\code\bacnet-stack\demo\handler\noserv.c"
"C:\code\bacnet-stack\src\npdu.c" "C:\code\bacnet-stack\src\npdu.c"
"C:\code\bacnet-stack\src\reject.c" "C:\code\bacnet-stack\src\reject.c"
"C:\code\bacnet-stack\src\ringbuf.c"
"C:\code\bacnet-stack\src\rp.c" "C:\code\bacnet-stack\src\rp.c"
"C:\code\bacnet-stack\demo\handler\s_rp.c" "C:\code\bacnet-stack\demo\handler\s_rp.c"
"C:\code\bacnet-stack\demo\handler\s_whois.c" "C:\code\bacnet-stack\demo\handler\s_whois.c"
"C:\code\bacnet-stack\demo\handler\s_wp.c" "C:\code\bacnet-stack\demo\handler\s_wp.c"
"C:\code\bacnet-stack\src\tsm.c" "C:\code\bacnet-stack\src\tsm.c"
"C:\code\bacnet-stack\demo\handler\txbuf.c"
"C:\code\bacnet-stack\src\version.c"
"C:\code\bacnet-stack\src\whois.c" "C:\code\bacnet-stack\src\whois.c"
"C:\code\bacnet-stack\src\wp.c" "C:\code\bacnet-stack\src\wp.c"
"C:\code\bacnet-stack\src\mstp.c"
"C:\code\bacnet-stack\ports\win32\dlmstp.c"
"C:\code\bacnet-stack\ports\win32\rs485.c"
] ]
Creating command line "cl.exe @C:\DOCUME~1\cbkargs\LOCALS~1\Temp\RSP35.tmp" Creating command line "cl.exe @C:\DOCUME~1\VMWare\LOCALS~1\Temp\RSP34.tmp"
Creating temporary file "C:\DOCUME~1\cbkargs\LOCALS~1\Temp\RSP36.tmp" with contents Creating temporary file "C:\DOCUME~1\VMWare\LOCALS~1\Temp\RSP35.tmp" with contents
[ [
kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib /nologo /subsystem:console /incremental:yes /pdb:"Debug/bacnet.pdb" /debug /machine:I386 /out:"Debug/bacnet.exe" /pdbtype:sept kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib /nologo /subsystem:console /incremental:yes /pdb:"Debug/bacnet.pdb" /debug /machine:I386 /out:"Debug/bacnet.exe" /pdbtype:sept
".\Debug\abort.obj" ".\Debug\abort.obj"
@@ -91,12 +80,16 @@ kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32
".\Debug\bip.obj" ".\Debug\bip.obj"
".\Debug\bo.obj" ".\Debug\bo.obj"
".\Debug\bv.obj" ".\Debug\bv.obj"
".\Debug\bvlc.obj"
".\Debug\cov.obj"
".\Debug\crc.obj" ".\Debug\crc.obj"
".\Debug\datetime.obj" ".\Debug\datetime.obj"
".\Debug\dcc.obj" ".\Debug\dcc.obj"
".\Debug\device.obj" ".\Debug\device.obj"
".\Debug\dlmstp.obj"
".\Debug\h_arf.obj" ".\Debug\h_arf.obj"
".\Debug\h_arf_a.obj" ".\Debug\h_arf_a.obj"
".\Debug\h_cov.obj"
".\Debug\h_iam.obj" ".\Debug\h_iam.obj"
".\Debug\h_rp.obj" ".\Debug\h_rp.obj"
".\Debug\h_rp_a.obj" ".\Debug\h_rp_a.obj"
@@ -108,11 +101,13 @@ kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32
".\Debug\lsp.obj" ".\Debug\lsp.obj"
".\Debug\main.obj" ".\Debug\main.obj"
".\Debug\mso.obj" ".\Debug\mso.obj"
".\Debug\mstp.obj"
".\Debug\noserv.obj" ".\Debug\noserv.obj"
".\Debug\npdu.obj" ".\Debug\npdu.obj"
".\Debug\reject.obj" ".\Debug\reject.obj"
".\Debug\ringbuf.obj" ".\Debug\ringbuf.obj"
".\Debug\rp.obj" ".\Debug\rp.obj"
".\Debug\rs485.obj"
".\Debug\s_rp.obj" ".\Debug\s_rp.obj"
".\Debug\s_whois.obj" ".\Debug\s_whois.obj"
".\Debug\s_wp.obj" ".\Debug\s_wp.obj"
@@ -121,11 +116,8 @@ kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32
".\Debug\version.obj" ".\Debug\version.obj"
".\Debug\whois.obj" ".\Debug\whois.obj"
".\Debug\wp.obj" ".\Debug\wp.obj"
".\Debug\mstp.obj"
".\Debug\dlmstp.obj"
".\Debug\rs485.obj"
] ]
Creating command line "link.exe @C:\DOCUME~1\cbkargs\LOCALS~1\Temp\RSP36.tmp" Creating command line "link.exe @C:\DOCUME~1\VMWare\LOCALS~1\Temp\RSP35.tmp"
<h3>Output Window</h3> <h3>Output Window</h3>
Compiling... Compiling...
abort.c abort.c
@@ -135,64 +127,50 @@ ao.c
apdu.c apdu.c
arf.c arf.c
av.c av.c
bacaddr.c
bacapp.c bacapp.c
bacdcode.c bacdcode.c
bacerror.c bacerror.c
bacfile.c bacfile.c
bacint.c
bacreal.c bacreal.c
bacstr.c
bactext.c
bi.c bi.c
bigend.c
bip-init.c bip-init.c
bip.c bip.c
Generating Code...
Compiling...
bo.c bo.c
bv.c bv.c
crc.c bvlc.c
datetime.c cov.c
dcc.c dcc.c
Generating Code...
Compiling...
device.c device.c
h_arf.c h_arf.c
h_arf_a.c h_arf_a.c
h_cov.c
h_iam.c h_iam.c
h_rp.c h_rp.c
h_rp_a.c h_rp_a.c
h_whois.c h_whois.c
h_wp.c h_wp.c
iam.c iam.c
indtext.c
lc.c lc.c
lsp.c lsp.c
main.c main.c
mso.c mso.c
noserv.c noserv.c
Generating Code...
Compiling...
npdu.c npdu.c
reject.c reject.c
ringbuf.c
rp.c rp.c
s_rp.c s_rp.c
s_whois.c s_whois.c
Generating Code...
Compiling...
s_wp.c s_wp.c
tsm.c tsm.c
txbuf.c
version.c
whois.c whois.c
wp.c wp.c
mstp.c
dlmstp.c
rs485.c
Generating Code... Generating Code...
c:\code\bacnet-stack\ports\win32\dlmstp.c(448) : warning C4761: integral size mismatch in argument; conversion supplied
c:\code\bacnet-stack\src\mstp.c(656) : warning C4761: integral size mismatch in argument; conversion supplied
c:\code\bacnet-stack\src\mstp.c(944) : warning C4761: integral size mismatch in argument; conversion supplied
Linking... Linking...
Creating temporary file "C:\DOCUME~1\cbkargs\LOCALS~1\Temp\RSP38.tmp" with contents Creating temporary file "C:\DOCUME~1\VMWare\LOCALS~1\Temp\RSP36.tmp" with contents
[ [
/nologo /o"Debug/bacnet.bsc" /nologo /o"Debug/bacnet.bsc"
".\Debug\abort.sbr" ".\Debug\abort.sbr"
@@ -217,12 +195,16 @@ Creating temporary file "C:\DOCUME~1\cbkargs\LOCALS~1\Temp\RSP38.tmp" with conte
".\Debug\bip.sbr" ".\Debug\bip.sbr"
".\Debug\bo.sbr" ".\Debug\bo.sbr"
".\Debug\bv.sbr" ".\Debug\bv.sbr"
".\Debug\bvlc.sbr"
".\Debug\cov.sbr"
".\Debug\crc.sbr" ".\Debug\crc.sbr"
".\Debug\datetime.sbr" ".\Debug\datetime.sbr"
".\Debug\dcc.sbr" ".\Debug\dcc.sbr"
".\Debug\device.sbr" ".\Debug\device.sbr"
".\Debug\dlmstp.sbr"
".\Debug\h_arf.sbr" ".\Debug\h_arf.sbr"
".\Debug\h_arf_a.sbr" ".\Debug\h_arf_a.sbr"
".\Debug\h_cov.sbr"
".\Debug\h_iam.sbr" ".\Debug\h_iam.sbr"
".\Debug\h_rp.sbr" ".\Debug\h_rp.sbr"
".\Debug\h_rp_a.sbr" ".\Debug\h_rp_a.sbr"
@@ -234,11 +216,13 @@ Creating temporary file "C:\DOCUME~1\cbkargs\LOCALS~1\Temp\RSP38.tmp" with conte
".\Debug\lsp.sbr" ".\Debug\lsp.sbr"
".\Debug\main.sbr" ".\Debug\main.sbr"
".\Debug\mso.sbr" ".\Debug\mso.sbr"
".\Debug\mstp.sbr"
".\Debug\noserv.sbr" ".\Debug\noserv.sbr"
".\Debug\npdu.sbr" ".\Debug\npdu.sbr"
".\Debug\reject.sbr" ".\Debug\reject.sbr"
".\Debug\ringbuf.sbr" ".\Debug\ringbuf.sbr"
".\Debug\rp.sbr" ".\Debug\rp.sbr"
".\Debug\rs485.sbr"
".\Debug\s_rp.sbr" ".\Debug\s_rp.sbr"
".\Debug\s_whois.sbr" ".\Debug\s_whois.sbr"
".\Debug\s_wp.sbr" ".\Debug\s_wp.sbr"
@@ -246,18 +230,15 @@ Creating temporary file "C:\DOCUME~1\cbkargs\LOCALS~1\Temp\RSP38.tmp" with conte
".\Debug\txbuf.sbr" ".\Debug\txbuf.sbr"
".\Debug\version.sbr" ".\Debug\version.sbr"
".\Debug\whois.sbr" ".\Debug\whois.sbr"
".\Debug\wp.sbr" ".\Debug\wp.sbr"]
".\Debug\mstp.sbr" Creating command line "bscmake.exe @C:\DOCUME~1\VMWare\LOCALS~1\Temp\RSP36.tmp"
".\Debug\dlmstp.sbr"
".\Debug\rs485.sbr"]
Creating command line "bscmake.exe @C:\DOCUME~1\cbkargs\LOCALS~1\Temp\RSP38.tmp"
Creating browse info file... Creating browse info file...
<h3>Output Window</h3> <h3>Output Window</h3>
<h3>Results</h3> <h3>Results</h3>
bacnet.exe - 0 error(s), 3 warning(s) bacnet.exe - 0 error(s), 0 warning(s)
</pre> </pre>
</body> </body>
</html> </html>
@@ -129,3 +129,18 @@ with MS/TP datalink enabled (BACDL_MSTP instead of BACDL_BIP):
3. Select the "C/C++" tab (3rd Tab) 3. Select the "C/C++" tab (3rd Tab)
4. Select the Category: Code Generation 4. Select the Category: Code Generation
5. Select the Multithreaded from the "Use runtime library" box options 5. Select the Multithreaded from the "Use runtime library" box options
Q. error LNK2019: Verweis auf nicht aufgelöstes externes Symbol
"_GetAdaptersInfo@8" in Funktion "_getIpMaskForIpAddress".
A. There is the Iphlpapi.lib library missing from the VC++ project
(for the GetAdaptersInfo error) that you need to add:
http://msdn2.microsoft.com/en-us/library/aa916102.aspx
Note that Iphlpapi.lib/.h is not included with Visual C++ 6.0;
you would need to download the platform SDK to get it.
1. Select "Project" menu
2. Select "Settings..."
3. Select the "Link" tab (4th Tab)
4. You can see "Object/library modules:" edit box
5. Type Iphlpapi.lib in that edit box
6. Press OK
7. Compile the entire project again...
+3
View File
@@ -30,7 +30,10 @@
#define STRICT 1 #define STRICT 1
#include <windows.h> #include <windows.h>
#if (!defined(USE_INADDR) || (USE_INADDR == 0)) && \
(!defined(USE_CLASSADDR) || (USE_CLASSADDR == 0))
#include <Iphlpapi.h> #include <Iphlpapi.h>
#endif
#include <winsock2.h> #include <winsock2.h>
#define close closesocket #define close closesocket
+35 -23
View File
@@ -180,7 +180,7 @@ int bvlc_encode_bvlc_result(
of the entire BVLL message, including the two octets of the of the entire BVLL message, including the two octets of the
length field itself, most significant octet first. */ length field itself, most significant octet first. */
encode_unsigned16(&pdu[2], 6); encode_unsigned16(&pdu[2], 6);
encode_unsigned16(&pdu[4], result_code); encode_unsigned16(&pdu[4], (uint16_t)result_code);
} }
return 6; return 6;
@@ -191,6 +191,7 @@ int bvlc_encode_write_bdt_init(
unsigned entries) unsigned entries)
{ {
int len = 0; int len = 0;
uint16_t BVLC_length = 0;
if (pdu) { if (pdu) {
pdu[0] = BVLL_TYPE_BACNET_IP; pdu[0] = BVLL_TYPE_BACNET_IP;
@@ -198,7 +199,8 @@ int bvlc_encode_write_bdt_init(
/* The 2-octet BVLC Length field is the length, in octets, /* The 2-octet BVLC Length field is the length, in octets,
of the entire BVLL message, including the two octets of the of the entire BVLL message, including the two octets of the
length field itself, most significant octet first. */ length field itself, most significant octet first. */
encode_unsigned16(&pdu[2], 4 + entries * 10); BVLC_length = 4 + (entries * 10);
encode_unsigned16(&pdu[2], BVLC_length);
len = 4; len = 4;
} }
@@ -228,6 +230,7 @@ int bvlc_encode_read_bdt_ack_init(
unsigned entries) unsigned entries)
{ {
int len = 0; int len = 0;
uint16_t BVLC_length = 0;
if (pdu) { if (pdu) {
pdu[0] = BVLL_TYPE_BACNET_IP; pdu[0] = BVLL_TYPE_BACNET_IP;
@@ -235,7 +238,8 @@ int bvlc_encode_read_bdt_ack_init(
/* The 2-octet BVLC Length field is the length, in octets, /* The 2-octet BVLC Length field is the length, in octets,
of the entire BVLL message, including the two octets of the of the entire BVLL message, including the two octets of the
length field itself, most significant octet first. */ length field itself, most significant octet first. */
encode_unsigned16(&pdu[2], 4 + entries * 10); BVLC_length = 4 + (entries * 10);
encode_unsigned16(&pdu[2], BVLC_length);
len = 4; len = 4;
} }
@@ -294,7 +298,7 @@ int bvlc_encode_forwarded_npdu(
/* The 2-octet BVLC Length field is the length, in octets, /* The 2-octet BVLC Length field is the length, in octets,
of the entire BVLL message, including the two octets of the of the entire BVLL message, including the two octets of the
length field itself, most significant octet first. */ length field itself, most significant octet first. */
encode_unsigned16(&pdu[2], 4 + 6 + npdu_length); encode_unsigned16(&pdu[2], (uint16_t)(4 + 6 + npdu_length));
len = 4; len = 4;
address.s_addr = ntohl(sin->sin_addr.s_addr); address.s_addr = ntohl(sin->sin_addr.s_addr);
port = ntohs(sin->sin_port); port = ntohs(sin->sin_port);
@@ -351,6 +355,7 @@ int bvlc_encode_read_fdt_ack_init(
unsigned entries) unsigned entries)
{ {
int len = 0; int len = 0;
uint16_t BVLC_length = 0;
if (pdu) { if (pdu) {
pdu[0] = BVLL_TYPE_BACNET_IP; pdu[0] = BVLL_TYPE_BACNET_IP;
@@ -358,7 +363,8 @@ int bvlc_encode_read_fdt_ack_init(
/* The 2-octet BVLC Length field is the length, in octets, /* The 2-octet BVLC Length field is the length, in octets,
of the entire BVLL message, including the two octets of the of the entire BVLL message, including the two octets of the
length field itself, most significant octet first. */ length field itself, most significant octet first. */
encode_unsigned16(&pdu[2], 4 + entries * 10); BVLC_length = 4 + (entries * 10);
encode_unsigned16(&pdu[2], BVLC_length);
len = 4; len = 4;
} }
@@ -394,7 +400,7 @@ int bvlc_encode_read_fdt_ack(
pdu_len += len; pdu_len += len;
encode_unsigned16(&pdu[pdu_len], FD_Table[i].time_to_live); encode_unsigned16(&pdu[pdu_len], FD_Table[i].time_to_live);
pdu_len += len; pdu_len += len;
encode_unsigned16(&pdu[pdu_len], FD_Table[i].seconds_remaining); encode_unsigned16(&pdu[pdu_len], (uint16_t)FD_Table[i].seconds_remaining);
pdu_len += len; pdu_len += len;
} }
} }
@@ -432,6 +438,7 @@ int bvlc_encode_distribute_broadcast_to_network(
{ {
int len = 0; /* return value */ int len = 0; /* return value */
unsigned i; /* for loop counter */ unsigned i; /* for loop counter */
uint16_t BVLC_length = 0;
if (pdu) { if (pdu) {
pdu[0] = BVLL_TYPE_BACNET_IP; pdu[0] = BVLL_TYPE_BACNET_IP;
@@ -439,7 +446,8 @@ int bvlc_encode_distribute_broadcast_to_network(
/* The 2-octet BVLC Length field is the length, in octets, /* The 2-octet BVLC Length field is the length, in octets,
of the entire BVLL message, including the two octets of the of the entire BVLL message, including the two octets of the
length field itself, most significant octet first. */ length field itself, most significant octet first. */
len = encode_unsigned16(&pdu[2], 4 + npdu_length) + 2; BVLC_length = 4 + npdu_length;
len = encode_unsigned16(&pdu[2], BVLC_length) + 2;
for (i = 0; i < npdu_length; i++) { for (i = 0; i < npdu_length; i++) {
pdu[len] = npdu[i]; pdu[len] = npdu[i];
len++; len++;
@@ -456,6 +464,7 @@ int bvlc_encode_original_unicast_npdu(
{ {
int len = 0; /* return value */ int len = 0; /* return value */
unsigned i = 0; /* loop counter */ unsigned i = 0; /* loop counter */
uint16_t BVLC_length = 0;
if (pdu) { if (pdu) {
pdu[0] = BVLL_TYPE_BACNET_IP; pdu[0] = BVLL_TYPE_BACNET_IP;
@@ -463,7 +472,8 @@ int bvlc_encode_original_unicast_npdu(
/* The 2-octet BVLC Length field is the length, in octets, /* The 2-octet BVLC Length field is the length, in octets,
of the entire BVLL message, including the two octets of the of the entire BVLL message, including the two octets of the
length field itself, most significant octet first. */ length field itself, most significant octet first. */
len = encode_unsigned16(&pdu[2], 4 + npdu_length) + 2; BVLC_length = 4 + npdu_length;
len = encode_unsigned16(&pdu[2], BVLC_length) + 2;
for (i = 0; i < npdu_length; i++) { for (i = 0; i < npdu_length; i++) {
pdu[len] = npdu[i]; pdu[len] = npdu[i];
len++; len++;
@@ -480,6 +490,7 @@ int bvlc_encode_original_broadcast_npdu(
{ {
int len = 0; /* return value */ int len = 0; /* return value */
unsigned i = 0; /* loop counter */ unsigned i = 0; /* loop counter */
uint16_t BVLC_length = 0;
if (pdu) { if (pdu) {
pdu[0] = BVLL_TYPE_BACNET_IP; pdu[0] = BVLL_TYPE_BACNET_IP;
@@ -487,7 +498,8 @@ int bvlc_encode_original_broadcast_npdu(
/* The 2-octet BVLC Length field is the length, in octets, /* The 2-octet BVLC Length field is the length, in octets,
of the entire BVLL message, including the two octets of the of the entire BVLL message, including the two octets of the
length field itself, most significant octet first. */ length field itself, most significant octet first. */
len = encode_unsigned16(&pdu[2], 4 + npdu_length) + 2; BVLC_length = 4 + npdu_length;
len = encode_unsigned16(&pdu[2], BVLC_length) + 2;
for (i = 0; i < npdu_length; i++) { for (i = 0; i < npdu_length; i++) {
pdu[len] = npdu[i]; pdu[len] = npdu[i];
len++; len++;
@@ -666,7 +678,7 @@ void bvlc_bdt_forward_npdu(
uint16_t npdu_length) uint16_t npdu_length)
{ /* length of the NPDU */ { /* length of the NPDU */
uint8_t mtu[MAX_MPDU] = { 0 }; uint8_t mtu[MAX_MPDU] = { 0 };
int mtu_len = 0; uint16_t mtu_len = 0;
int bytes_sent = 0; int bytes_sent = 0;
unsigned i = 0; /* loop counter */ unsigned i = 0; /* loop counter */
struct sockaddr_in bip_dest; struct sockaddr_in bip_dest;
@@ -706,8 +718,9 @@ void bvlc_broadcast_forward_npdu(
uint16_t npdu_len) uint16_t npdu_len)
{ /* size of the NPDU */ { /* size of the NPDU */
uint8_t mtu[MAX_MPDU] = { 0 }; uint8_t mtu[MAX_MPDU] = { 0 };
int mtu_len = 0; uint16_t mtu_len = 0;
struct sockaddr_in bvlc_dest; struct sockaddr_in bvlc_dest;
uint16_t BVLC_length = 0;
/* FIXME: unused parameter */ /* FIXME: unused parameter */
sin = sin; sin = sin;
@@ -716,10 +729,9 @@ void bvlc_broadcast_forward_npdu(
mtu[1] = BVLC_ORIGINAL_BROADCAST_NPDU; mtu[1] = BVLC_ORIGINAL_BROADCAST_NPDU;
bvlc_dest.sin_addr.s_addr = htonl(bip_get_broadcast_addr()); bvlc_dest.sin_addr.s_addr = htonl(bip_get_broadcast_addr());
bvlc_dest.sin_port = htons(bip_get_port()); bvlc_dest.sin_port = htons(bip_get_port());
BVLC_length = npdu_len + 4 /*inclusive */;
mtu_len = 2; mtu_len = 2;
mtu_len += mtu_len += encode_unsigned16(&mtu[mtu_len], BVLC_length);
encode_unsigned16(&mtu[mtu_len],
(uint16_t) (npdu_len + 4 /*inclusive */ ));
memcpy(&mtu[mtu_len], npdu, npdu_len); memcpy(&mtu[mtu_len], npdu, npdu_len);
mtu_len += npdu_len; mtu_len += npdu_len;
bvlc_send_mpdu(&bvlc_dest, mtu, mtu_len); bvlc_send_mpdu(&bvlc_dest, mtu, mtu_len);
@@ -731,7 +743,7 @@ void bvlc_fdt_forward_npdu(
uint16_t max_npdu) uint16_t max_npdu)
{ /* amount of space available in the NPDU */ { /* amount of space available in the NPDU */
uint8_t mtu[MAX_MPDU] = { 0 }; uint8_t mtu[MAX_MPDU] = { 0 };
int mtu_len = 0; uint16_t mtu_len = 0;
int bytes_sent = 0; int bytes_sent = 0;
unsigned i = 0; /* loop counter */ unsigned i = 0; /* loop counter */
struct sockaddr_in bvlc_dest; struct sockaddr_in bvlc_dest;
@@ -755,7 +767,7 @@ void bvlc_register_with_bbmd(
uint16_t time_to_live_seconds) uint16_t time_to_live_seconds)
{ {
uint8_t mtu[MAX_MPDU] = { 0 }; uint8_t mtu[MAX_MPDU] = { 0 };
int mtu_len = 0; uint16_t mtu_len = 0;
Remote_BBMD.sin_addr.s_addr = bbmd_address; Remote_BBMD.sin_addr.s_addr = bbmd_address;
Remote_BBMD.sin_port = htons(bbmd_port); Remote_BBMD.sin_port = htons(bbmd_port);
@@ -773,7 +785,7 @@ void bvlc_send_result(
BACNET_BVLC_RESULT result_code) BACNET_BVLC_RESULT result_code)
{ {
uint8_t mtu[MAX_MPDU] = { 0 }; uint8_t mtu[MAX_MPDU] = { 0 };
int mtu_len = 0; uint16_t mtu_len = 0;
mtu_len = bvlc_encode_bvlc_result(&mtu[0], result_code); mtu_len = bvlc_encode_bvlc_result(&mtu[0], result_code);
bvlc_send_mpdu(dest, mtu, mtu_len); bvlc_send_mpdu(dest, mtu, mtu_len);
@@ -785,7 +797,7 @@ int bvlc_send_bdt(
struct sockaddr_in *dest) struct sockaddr_in *dest)
{ {
uint8_t mtu[MAX_MPDU] = { 0 }; uint8_t mtu[MAX_MPDU] = { 0 };
int mtu_len = 0; uint16_t mtu_len = 0;
mtu_len = bvlc_encode_read_bdt_ack(&mtu[0], sizeof(mtu)); mtu_len = bvlc_encode_read_bdt_ack(&mtu[0], sizeof(mtu));
if (mtu_len) { if (mtu_len) {
@@ -799,7 +811,7 @@ int bvlc_send_fdt(
struct sockaddr_in *dest) struct sockaddr_in *dest)
{ {
uint8_t mtu[MAX_MPDU] = { 0 }; uint8_t mtu[MAX_MPDU] = { 0 };
int mtu_len = 0; uint16_t mtu_len = 0;
mtu_len = bvlc_encode_read_fdt_ack(&mtu[0], sizeof(mtu)); mtu_len = bvlc_encode_read_fdt_ack(&mtu[0], sizeof(mtu));
if (mtu_len) { if (mtu_len) {
@@ -1110,10 +1122,11 @@ int bvlc_send_pdu(
{ /* number of bytes of data */ { /* number of bytes of data */
struct sockaddr_in bvlc_dest; struct sockaddr_in bvlc_dest;
uint8_t mtu[MAX_MPDU] = { 0 }; uint8_t mtu[MAX_MPDU] = { 0 };
int mtu_len = 0; uint16_t mtu_len = 0;
/* addr and port in host format */ /* addr and port in host format */
struct in_addr address; struct in_addr address;
uint16_t port = 0; uint16_t port = 0;
uint16_t BVLC_length = 0;
/* bip datalink doesn't need to know the npdu data */ /* bip datalink doesn't need to know the npdu data */
(void) npdu_data; (void) npdu_data;
@@ -1139,10 +1152,9 @@ int bvlc_send_pdu(
} }
bvlc_dest.sin_addr.s_addr = htonl(address.s_addr); bvlc_dest.sin_addr.s_addr = htonl(address.s_addr);
bvlc_dest.sin_port = htons(port); bvlc_dest.sin_port = htons(port);
BVLC_length = pdu_len + 4 /*inclusive */;
mtu_len = 2; mtu_len = 2;
mtu_len += mtu_len += encode_unsigned16(&mtu[mtu_len], BVLC_length);
encode_unsigned16(&mtu[mtu_len],
(uint16_t) (pdu_len + 4 /*inclusive */ ));
memcpy(&mtu[mtu_len], pdu, pdu_len); memcpy(&mtu[mtu_len], pdu, pdu_len);
mtu_len += pdu_len; mtu_len += pdu_len;
return bvlc_send_mpdu(&bvlc_dest, mtu, mtu_len); return bvlc_send_mpdu(&bvlc_dest, mtu, mtu_len);