Fixed AVR ports IDE project builds (#111)

Co-authored-by: Steve Karg <skarg@users.sourceforge.net>
This commit is contained in:
Steve Karg
2020-08-19 10:05:01 -05:00
committed by GitHub
parent c1429ba7be
commit 645c1b7916
22 changed files with 8268 additions and 4649 deletions
+3 -2
View File
@@ -3,8 +3,8 @@
###############################################################################
## General Flags
MCU = atmega168
AVRDUDE_MCU = m168
MCU = atmega328
AVRDUDE_MCU = m328
TARGET = bacnet
## Tools
CC = avr-gcc
@@ -50,6 +50,7 @@ CSRC = main.c \
# common demo files needed
BASICSRC = $(BACNET_BASIC)/tsm/tsm.c \
$(BACNET_BASIC)/npdu/h_npdu.c \
$(BACNET_BASIC)/sys/bigend.c \
$(BACNET_BASIC)/service/s_iam.c \
$(BACNET_BASIC)/service/h_noserv.c
+22
View File
@@ -0,0 +1,22 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Atmel Studio Solution File, Format Version 11.00
VisualStudioVersion = 14.0.23107.0
MinimumVisualStudioVersion = 10.0.40219.1
Project("{54F91283-7BC4-4236-8FF9-10F437C3AD48}") = "bacnet", "bacnet.cproj", "{1CEFD571-4B50-48FD-B75E-0E968EBBD698}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|AVR = Debug|AVR
Release|AVR = Release|AVR
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{1CEFD571-4B50-48FD-B75E-0E968EBBD698}.Debug|AVR.ActiveCfg = Debug|AVR
{1CEFD571-4B50-48FD-B75E-0E968EBBD698}.Debug|AVR.Build.0 = Debug|AVR
{1CEFD571-4B50-48FD-B75E-0E968EBBD698}.Release|AVR.ActiveCfg = Release|AVR
{1CEFD571-4B50-48FD-B75E-0E968EBBD698}.Release|AVR.Build.0 = Release|AVR
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal
+285
View File
@@ -0,0 +1,285 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<SchemaVersion>2.0</SchemaVersion>
<ProjectVersion>7.0</ProjectVersion>
<ToolchainName>com.Atmel.AVRGCC8.C</ToolchainName>
<ProjectGuid>{1cefd571-4b50-48fd-b75e-0e968ebbd698}</ProjectGuid>
<avrdevice>ATmega328</avrdevice>
<avrdeviceseries>mega</avrdeviceseries>
<OutputType>Executable</OutputType>
<Language>C</Language>
<OutputFileName>$(MSBuildProjectName)</OutputFileName>
<OutputFileExtension>.elf</OutputFileExtension>
<OutputDirectory>$(MSBuildProjectDirectory)\$(Configuration)</OutputDirectory>
<AssemblyName>BACnet Atmel ATmega328</AssemblyName>
<Name>BACnet Atmel ATmega328</Name>
<RootNamespace>BACnet Atmel ATmega328</RootNamespace>
<ToolchainFlavour>Native</ToolchainFlavour>
<KeepTimersRunning>true</KeepTimersRunning>
<OverrideVtor>false</OverrideVtor>
<OverrideVtorValue>exception_table</OverrideVtorValue>
<eraseonlaunchrule>0</eraseonlaunchrule>
<ProgFlashFromRam>true</ProgFlashFromRam>
<RamSnippetAddress>0x20000000</RamSnippetAddress>
<CacheFlash>true</CacheFlash>
<UncachedRange />
<BootSegment>2</BootSegment>
<AsfFrameworkConfig>
<framework-data>
<options>
<option id="common.boards" value="Add" config="" content-id="Atmel.ASF" />
</options>
<configurations />
<files>
<file path="src/config/conf_board.h" framework="" version="" source="common/applications/user_application/user_board/config/conf_board.h" changed="False" content-id="Atmel.ASF" />
<file path="src/ASF/common/boards/board.h" framework="" version="" source="common/boards/board.h" changed="False" content-id="Atmel.ASF" />
<file path="src/ASF/common/boards/user_board/init.c" framework="" version="" source="common/boards/user_board/init.c" changed="False" content-id="Atmel.ASF" />
<file path="src/ASF/common/boards/user_board/user_board.h" framework="" version="" source="common/boards/user_board/user_board.h" changed="False" content-id="Atmel.ASF" />
<file path="src/ASF/common/utils/interrupt.h" framework="" version="" source="common/utils/interrupt.h" changed="False" content-id="Atmel.ASF" />
<file path="src/ASF/common/utils/interrupt/interrupt_avr8.h" framework="" version="" source="common/utils/interrupt/interrupt_avr8.h" changed="False" content-id="Atmel.ASF" />
<file path="src/ASF/common/utils/make/Makefile.avr.in" framework="" version="" source="common/utils/make/Makefile.avr.in" changed="False" content-id="Atmel.ASF" />
<file path="src/ASF/common/utils/parts.h" framework="" version="" source="common/utils/parts.h" changed="False" content-id="Atmel.ASF" />
<file path="src/ASF/mega/utils/assembler.h" framework="" version="" source="mega/utils/assembler.h" changed="False" content-id="Atmel.ASF" />
<file path="src/ASF/mega/utils/assembler/gas.h" framework="" version="" source="mega/utils/assembler/gas.h" changed="False" content-id="Atmel.ASF" />
<file path="src/ASF/mega/utils/compiler.h" framework="" version="" source="mega/utils/compiler.h" changed="False" content-id="Atmel.ASF" />
<file path="src/ASF/mega/utils/preprocessor/mrepeat.h" framework="" version="" source="mega/utils/preprocessor/mrepeat.h" changed="False" content-id="Atmel.ASF" />
<file path="src/ASF/mega/utils/preprocessor/preprocessor.h" framework="" version="" source="mega/utils/preprocessor/preprocessor.h" changed="False" content-id="Atmel.ASF" />
<file path="src/ASF/mega/utils/preprocessor/stringz.h" framework="" version="" source="mega/utils/preprocessor/stringz.h" changed="False" content-id="Atmel.ASF" />
<file path="src/ASF/mega/utils/preprocessor/tpaste.h" framework="" version="" source="mega/utils/preprocessor/tpaste.h" changed="False" content-id="Atmel.ASF" />
<file path="src/ASF/mega/utils/progmem.h" framework="" version="" source="mega/utils/progmem.h" changed="False" content-id="Atmel.ASF" />
<file path="src/ASF/mega/utils/status_codes.h" framework="" version="" source="mega/utils/status_codes.h" changed="False" content-id="Atmel.ASF" />
</files>
<documentation help="http://asf.atmel.com/docs/3.39.0/common.applications.user_application.user_board.mega/html/index.html" />
<offline-documentation help="" />
<dependencies>
<content-extension eid="atmel.asf" uuidref="Atmel.ASF" version="3.39.0" />
</dependencies>
<project id="common.applications.user_application.user_board.mega" value="Add" config="" content-id="Atmel.ASF" />
<board id="board.user_board.mega" value="Add" config="" content-id="Atmel.ASF" />
</framework-data>
</AsfFrameworkConfig>
<preserveEEPROM>true</preserveEEPROM>
<ResetRule>0</ResetRule>
<EraseKey />
<avrtool />
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)' == 'Release' ">
<ToolchainSettings>
<AvrGcc>
<avrgcc.common.Device>-mmcu=atmega328 -B "%24(PackRepoDir)\atmel\ATmega_DFP\1.3.300\gcc\dev\atmega328"</avrgcc.common.Device>
<avrgcc.common.outputfiles.hex>True</avrgcc.common.outputfiles.hex>
<avrgcc.common.outputfiles.lss>True</avrgcc.common.outputfiles.lss>
<avrgcc.common.outputfiles.eep>True</avrgcc.common.outputfiles.eep>
<avrgcc.common.outputfiles.srec>True</avrgcc.common.outputfiles.srec>
<avrgcc.common.outputfiles.usersignatures>False</avrgcc.common.outputfiles.usersignatures>
<avrgcc.compiler.symbols.DefSymbols><ListValues>
<Value>BACDL_MSTP</Value>
<Value>MAX_APDU=50</Value>
<Value>MAX_TSM_TRANSACTIONS=0</Value>
<Value>BACAPP_REAL</Value>
<Value>BACAPP_UNSIGNED</Value>
<Value>BACAPP_ENUMERATED</Value>
<Value>BACAPP_CHARACTER_STRING</Value>
<Value>BACAPP_OBJECT_ID</Value>
<Value>WRITE_PROPERTY</Value>
<Value>BOARD=USER_BOARD</Value>
<Value>NDEBUG</Value>
</ListValues></avrgcc.compiler.symbols.DefSymbols>
<avrgcc.compiler.directories.IncludePaths><ListValues>
<Value>..</Value>
<Value>../../../src</Value>
<Value>%24(PackRepoDir)\atmel\ATmega_DFP\1.3.300\include</Value>
<Value>../../../ports/atmega168</Value>
</ListValues></avrgcc.compiler.directories.IncludePaths>
<avrgcc.compiler.optimization.OtherFlags>-fdata-sections</avrgcc.compiler.optimization.OtherFlags>
<avrgcc.compiler.optimization.PackStructureMembers>True</avrgcc.compiler.optimization.PackStructureMembers>
<avrgcc.compiler.optimization.AllocateBytesNeededForEnum>True</avrgcc.compiler.optimization.AllocateBytesNeededForEnum>
<avrgcc.compiler.warnings.AllWarnings>True</avrgcc.compiler.warnings.AllWarnings>
<avrgcc.compiler.miscellaneous.OtherFlags>-std=gnu99 -fno-strict-aliasing -Wstrict-prototypes -Wmissing-prototypes -Werror-implicit-function-declaration -Wpointer-arith -mrelax -Wno-switch</avrgcc.compiler.miscellaneous.OtherFlags>
<avrgcc.linker.libraries.Libraries><ListValues><Value>libm</Value></ListValues></avrgcc.linker.libraries.Libraries>
<avrgcc.linker.miscellaneous.LinkerFlags>-Wl,--relax</avrgcc.linker.miscellaneous.LinkerFlags>
<avrgcc.assembler.general.AssemblerFlags>-mrelax -DBOARD=USER_BOARD</avrgcc.assembler.general.AssemblerFlags>
<avrgcc.assembler.general.IncludePaths><ListValues><Value>%24(PackRepoDir)\atmel\ATmega_DFP\1.3.300\include</Value><Value>../src/ASF/common/boards/user_board</Value><Value>../src/ASF/common/boards</Value><Value>../src/ASF/mega/utils/preprocessor</Value><Value>../src/ASF/mega/utils</Value><Value>../src/ASF/common/utils</Value><Value>../src</Value><Value>../src/config</Value></ListValues></avrgcc.assembler.general.IncludePaths>
<avrgcc.compiler.optimization.level>Optimize for size (-Os)</avrgcc.compiler.optimization.level>
</AvrGcc>
</ToolchainSettings>
<UsesExternalMakeFile>False</UsesExternalMakeFile>
<BuildTarget>all</BuildTarget>
<CleanTarget>clean</CleanTarget>
<ExternalMakeFilePath>Makefile</ExternalMakeFilePath>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
<ToolchainSettings>
<AvrGcc>
<avrgcc.common.Device>-mmcu=atmega328 -B "%24(PackRepoDir)\atmel\ATmega_DFP\1.3.300\gcc\dev\atmega328"</avrgcc.common.Device>
<avrgcc.common.outputfiles.hex>True</avrgcc.common.outputfiles.hex>
<avrgcc.common.outputfiles.lss>True</avrgcc.common.outputfiles.lss>
<avrgcc.common.outputfiles.eep>True</avrgcc.common.outputfiles.eep>
<avrgcc.common.outputfiles.srec>True</avrgcc.common.outputfiles.srec>
<avrgcc.common.outputfiles.usersignatures>False</avrgcc.common.outputfiles.usersignatures>
<avrgcc.compiler.symbols.DefSymbols><ListValues>
<Value>BACDL_MSTP</Value>
<Value>MAX_APDU=50</Value>
<Value>MAX_TSM_TRANSACTIONS=0</Value>
<Value>BACAPP_REAL</Value>
<Value>BACAPP_UNSIGNED</Value>
<Value>BACAPP_ENUMERATED</Value>
<Value>BACAPP_CHARACTER_STRING</Value>
<Value>BACAPP_OBJECT_ID</Value>
<Value>WRITE_PROPERTY</Value>
<Value>BOARD=USER_BOARD</Value>
<Value>DEBUG</Value>
</ListValues></avrgcc.compiler.symbols.DefSymbols>
<avrgcc.compiler.directories.IncludePaths><ListValues><Value>..</Value><Value>../../../src</Value><Value>%24(PackRepoDir)\atmel\ATmega_DFP\1.3.300\include</Value></ListValues></avrgcc.compiler.directories.IncludePaths>
<avrgcc.compiler.optimization.OtherFlags>-fdata-sections</avrgcc.compiler.optimization.OtherFlags>
<avrgcc.compiler.optimization.PackStructureMembers>True</avrgcc.compiler.optimization.PackStructureMembers>
<avrgcc.compiler.optimization.AllocateBytesNeededForEnum>True</avrgcc.compiler.optimization.AllocateBytesNeededForEnum>
<avrgcc.compiler.warnings.AllWarnings>True</avrgcc.compiler.warnings.AllWarnings>
<avrgcc.compiler.miscellaneous.OtherFlags>-std=gnu99 -fno-strict-aliasing -Wstrict-prototypes -Wmissing-prototypes -Werror-implicit-function-declaration -Wpointer-arith -mrelax -Wno-switch</avrgcc.compiler.miscellaneous.OtherFlags>
<avrgcc.linker.libraries.Libraries><ListValues><Value>libm</Value></ListValues></avrgcc.linker.libraries.Libraries>
<avrgcc.linker.miscellaneous.LinkerFlags>-Wl,--relax</avrgcc.linker.miscellaneous.LinkerFlags>
<avrgcc.assembler.general.AssemblerFlags>-mrelax -DBOARD=USER_BOARD</avrgcc.assembler.general.AssemblerFlags>
<avrgcc.assembler.general.IncludePaths><ListValues><Value>%24(PackRepoDir)\atmel\ATmega_DFP\1.3.300\include</Value><Value>../src/ASF/common/boards/user_board</Value><Value>../src/ASF/common/boards</Value><Value>../src/ASF/mega/utils/preprocessor</Value><Value>../src/ASF/mega/utils</Value><Value>../src/ASF/common/utils</Value><Value>../src</Value><Value>../src/config</Value></ListValues></avrgcc.assembler.general.IncludePaths>
<avrgcc.compiler.optimization.level>Optimize (-O1)</avrgcc.compiler.optimization.level>
<avrgcc.compiler.optimization.DebugLevel>Maximum (-g3)</avrgcc.compiler.optimization.DebugLevel>
<avrgcc.assembler.debugging.DebugLevel>Default (-Wa,-g)</avrgcc.assembler.debugging.DebugLevel>
</AvrGcc>
</ToolchainSettings>
<UsesExternalMakeFile>False</UsesExternalMakeFile>
<BuildTarget>all</BuildTarget>
<CleanTarget>clean</CleanTarget>
<ExternalMakeFilePath>Makefile</ExternalMakeFilePath>
</PropertyGroup>
<ItemGroup>
<Compile Include="..\..\src\bacnet\basic\sys\bigend.c">
<SubType>compile</SubType>
<Link>BACnet Handlers\bigend.c</Link>
</Compile>
<Compile Include="..\..\src\bacnet\basic\npdu\h_npdu.c">
<SubType>compile</SubType>
<Link>BACnet Handlers\h_npdu.c</Link>
</Compile>
<Compile Include="..\..\src\bacnet\basic\service\h_noserv.c">
<SubType>compile</SubType>
<Link>BACnet Handlers\h_noserv.c</Link>
</Compile>
<Compile Include="..\..\src\bacnet\basic\service\s_iam.c">
<SubType>compile</SubType>
<Link>BACnet Handlers\s_iam.c</Link>
</Compile>
<Compile Include="..\..\src\bacnet\basic\tsm\tsm.c">
<SubType>compile</SubType>
<Link>BACnet Handlers\tsm.c</Link>
</Compile>
<Compile Include="..\..\src\bacnet\datalink\crc.c">
<SubType>compile</SubType>
<Link>BACnet Handlers\crc.c</Link>
</Compile>
<Compile Include="..\..\ports\atmega168\apdu.c">
<SubType>compile</SubType>
<Link>apdu.c</Link>
</Compile>
<Compile Include="..\..\ports\atmega168\av.c">
<SubType>compile</SubType>
<Link>av.c</Link>
</Compile>
<Compile Include="..\..\ports\atmega168\bv.c">
<SubType>compile</SubType>
<Link>bv.c</Link>
</Compile>
<Compile Include="..\..\ports\atmega168\device.c">
<SubType>compile</SubType>
<Link>device.c</Link>
</Compile>
<Compile Include="..\..\ports\atmega168\dlmstp.c">
<SubType>compile</SubType>
<Link>dlmstp.c</Link>
</Compile>
<Compile Include="..\..\ports\atmega168\h_rp.c">
<SubType>compile</SubType>
<Link>h_rp.c</Link>
</Compile>
<Compile Include="..\..\ports\atmega168\h_whois.c">
<SubType>compile</SubType>
<Link>h_whois.c</Link>
</Compile>
<Compile Include="..\..\ports\atmega168\h_wp.c">
<SubType>compile</SubType>
<Link>h_wp.c</Link>
</Compile>
<Compile Include="..\..\ports\atmega168\main.c">
<SubType>compile</SubType>
<Link>main.c</Link>
</Compile>
<Compile Include="..\..\ports\atmega168\rs485.c">
<SubType>compile</SubType>
<Link>rs485.c</Link>
</Compile>
<Compile Include="..\..\ports\atmega168\stack.c">
<SubType>compile</SubType>
<Link>stack.c</Link>
</Compile>
<Compile Include="..\..\ports\atmega168\timer.c">
<SubType>compile</SubType>
<Link>timer.c</Link>
</Compile>
<Compile Include="..\..\src\bacnet\abort.c">
<SubType>compile</SubType>
<Link>BACnet Core\abort.c</Link>
</Compile>
<Compile Include="..\..\src\bacnet\bacapp.c">
<SubType>compile</SubType>
<Link>BACnet Core\bacapp.c</Link>
</Compile>
<Compile Include="..\..\src\bacnet\bacdcode.c">
<SubType>compile</SubType>
<Link>BACnet Core\bacdcode.c</Link>
</Compile>
<Compile Include="..\..\src\bacnet\bacerror.c">
<SubType>compile</SubType>
<Link>BACnet Core\bacerror.c</Link>
</Compile>
<Compile Include="..\..\src\bacnet\bacint.c">
<SubType>compile</SubType>
<Link>BACnet Core\bacint.c</Link>
</Compile>
<Compile Include="..\..\src\bacnet\bacreal.c">
<SubType>compile</SubType>
<Link>BACnet Core\bacreal.c</Link>
</Compile>
<Compile Include="..\..\src\bacnet\bacstr.c">
<SubType>compile</SubType>
<Link>BACnet Core\bacstr.c</Link>
</Compile>
<Compile Include="..\..\src\bacnet\iam.c">
<SubType>compile</SubType>
<Link>BACnet Core\iam.c</Link>
</Compile>
<Compile Include="..\..\src\bacnet\npdu.c">
<SubType>compile</SubType>
<Link>BACnet Core\npdu.c</Link>
</Compile>
<Compile Include="..\..\src\bacnet\reject.c">
<SubType>compile</SubType>
<Link>BACnet Core\reject.c</Link>
</Compile>
<Compile Include="..\..\src\bacnet\rp.c">
<SubType>compile</SubType>
<Link>BACnet Core\rp.c</Link>
</Compile>
<Compile Include="..\..\src\bacnet\whois.c">
<SubType>compile</SubType>
<Link>BACnet Core\whois.c</Link>
</Compile>
<Compile Include="..\..\src\bacnet\wp.c">
<SubType>compile</SubType>
<Link>BACnet Core\wp.c</Link>
</Compile>
</ItemGroup>
<ItemGroup>
<Folder Include="BACnet Handlers" />
<Folder Include="BACnet Core" />
</ItemGroup>
<Import Project="$(AVRSTUDIO_EXE_PATH)\\Vs\\Compiler.targets" />
</Project>
+2135 -1073
View File
File diff suppressed because it is too large Load Diff
+2 -2
View File
@@ -216,9 +216,9 @@ bool Binary_Value_Write_Property(BACNET_WRITE_PROPERTY_DATA *wp_data)
However, if Out of Service is TRUE, then don't set the
physical output. */
if (Present_Value[0] == BINARY_ACTIVE) {
LED_GREEN_ON();
/* GPIO - turn ON */
} else {
LED_GREEN_OFF();
/* GPIO - turn OFF */
}
status = true;
} else {
+2 -1
View File
@@ -30,6 +30,7 @@
#include "bacnet/config.h"
#include "bacnet/basic/tsm/tsm.h"
#include "bacnet/datalink/datalink.h"
#include "bacnet/basic/services.h"
#include "bacnet/bacdef.h"
#include "bacnet/bacdcode.h"
#include "bacnet/bacerror.h"
@@ -44,7 +45,7 @@
/* Encodes the property APDU and returns the length,
or sets the error, and returns -1 */
int Encode_Property_APDU(uint8_t *apdu, BACNET_READ_PROPERTY_DATA *rpdata)
static int Encode_Property_APDU(uint8_t *apdu, BACNET_READ_PROPERTY_DATA *rpdata)
{
int apdu_len = -1;
+1
View File
@@ -30,6 +30,7 @@
#include "bacnet/config.h"
#include "bacnet/datalink/datalink.h"
#include "bacnet/basic/tsm/tsm.h"
#include "bacnet/basic/services.h"
#include "bacnet/bacdef.h"
#include "bacnet/bacdcode.h"
#include "bacnet/bacerror.h"
+3 -14
View File
@@ -31,24 +31,13 @@
#endif
#if defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ASM__)
#include <iom168.h>
#include <ioavr.h>
#else
#if !defined(__AVR_ATmega168__)
#error Firmware is configured for ATmega168 only (-mmcu=atmega168)
#if !defined(__AVR_ATmega328__)
#error Firmware is configured for ATmega328 only (-mmcu=atmega328)
#endif
#endif
#include "iar2gcc.h"
#include "bacnet/bits.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
+21
View File
@@ -55,6 +55,27 @@ static inline void _delay_us(
__delay_cycles(F_CPU / 1000000UL);
} while (microseconds--);
}
#if (__VER__ > 700)
#define DDA0 DDRA0
#define DDA1 DDRA1
#define DDA2 DDRA2
#define DDA3 DDRA3
#define DDA4 DDRA4
#define DDA5 DDRA5
#define DDA6 DDRA6
#define DDA7 DDRA7
#define DDD0 DDRD0
#define DDD1 DDRD1
#define DDD2 DDRD2
#define DDD3 DDRD3
#define DDD4 DDRD4
#define DDD5 DDRD5
#define DDD6 DDRD6
#define DDD7 DDRD7
#endif
#endif
/* Input/Output Registers */
+1 -11
View File
@@ -30,6 +30,7 @@
#include "rs485.h"
#include "bacnet/datalink/datalink.h"
#include "bacnet/npdu.h"
#include "bacnet/dcc.h"
#include "bacnet/basic/services.h"
#include "bacnet/basic/tsm/tsm.h"
#include "bacnet/iam.h"
@@ -88,14 +89,6 @@ static void init(void)
/* Configure Specialized Hardware */
RS485_Initialize();
/* configure one LED for NPDU indication */
/* default: off, output */
LED_NPDU_OFF();
LED_NPDU_INIT();
/* Configure Software LED */
LED_GREEN_INIT();
LED_GREEN_OFF();
/* Configure Timer0 for millisecond timer */
Timer_Initialize();
@@ -108,7 +101,6 @@ static void task_milliseconds(void)
while (Timer_Milliseconds) {
Timer_Milliseconds--;
/* add other millisecond timer tasks here */
RS485_LED_Timers();
}
}
@@ -166,9 +158,7 @@ int main(void)
/* BACnet handling */
pdu_len = datalink_receive(&src, &PDUBuffer[0], MAX_MPDU, 0);
if (pdu_len) {
LED_NPDU_ON();
npdu_handler(&src, &PDUBuffer[0], pdu_len);
LED_NPDU_OFF();
}
}
}
+8 -69
View File
@@ -31,16 +31,12 @@
#include <stdbool.h>
#include <stdlib.h>
#include <stdio.h>
/*#include "bacnet/datalink/mstp.h" */
/* This file has been customized for use with ATMEGA168 */
#include "hardware.h"
#include "rs485.h"
#include "timer.h"
/* Timers for turning off the TX,RX LED indications */
static uint8_t LED1_Off_Timer;
static uint8_t LED3_Off_Timer;
/* baud rate */
static uint32_t RS485_Baud = 9600;
@@ -70,11 +66,6 @@ void RS485_Initialize(void)
/* Set port bit as Output - initially receiving */
BIT_CLEAR(PORTD, PD2);
BIT_SET(DDRD, DDD2);
/* Configure Transmit and Receive LEDs - initially off */
BIT_SET(PORTD, PD6);
BIT_SET(PORTD, PD7);
BIT_SET(DDRD, DDD6);
BIT_SET(DDRD, DDD7);
return;
}
@@ -165,62 +156,14 @@ void RS485_Turnaround_Delay(void)
BIT_SET(UCSR0A, TXC0);
}
/****************************************************************************
* DESCRIPTION: Timers for delaying the LED indicators going off
* RETURN: none
* ALGORITHM: none
* NOTES: expected to be called once a millisecond
*****************************************************************************/
void RS485_LED_Timers(void)
{
if (LED1_Off_Timer) {
LED1_Off_Timer--;
if (LED1_Off_Timer == 0) {
BIT_SET(PORTD, PD6);
}
}
if (LED3_Off_Timer) {
LED3_Off_Timer--;
if (LED3_Off_Timer == 0) {
BIT_SET(PORTD, PD7);
}
}
}
/****************************************************************************
* DESCRIPTION: Turn on the LED, and set the off timer to turn it off
* RETURN: none
* ALGORITHM: none
* NOTES: none
*****************************************************************************/
static void RS485_LED1_On(void)
{
BIT_CLEAR(PORTD, PD6);
LED1_Off_Timer = 20;
}
/****************************************************************************
* DESCRIPTION: Turn on the LED, and set the off timer to turn it off
* RETURN: none
* ALGORITHM: none
* NOTES: none
*****************************************************************************/
static void RS485_LED3_On(void)
{
BIT_CLEAR(PORTD, PD7);
LED3_Off_Timer = 20;
}
/****************************************************************************
* DESCRIPTION: Send some data and wait until it is sent
* RETURN: none
* ALGORITHM: none
* NOTES: none
*****************************************************************************/
void RS485_Send_Data(uint8_t *buffer, /* data to send */
/**
* @brief Send some data and wait until it is sent
* @param buffer - data to send
* @param nbytes - number of bytes of data
*/
void RS485_Send_Data(uint8_t *buffer,
uint16_t nbytes)
{ /* number of bytes of data */
RS485_LED3_On();
{
while (nbytes) {
while (!BIT_CHECK(UCSR0A, UDRE0)) {
/* do nothing - wait until Tx buffer is empty */
@@ -268,9 +211,6 @@ bool RS485_ReceiveError(void)
} while (BIT_CHECK(UCSR0A, RXC0));
ReceiveError = true;
}
if (ReceiveError) {
RS485_LED1_On();
}
(void)dummy_data;
return ReceiveError;
@@ -290,7 +230,6 @@ bool RS485_DataAvailable(uint8_t *data)
if (BIT_CHECK(UCSR0A, RXC0)) {
*data = UDR0;
DataAvailable = true;
RS485_LED1_On();
}
return DataAvailable;
+1
View File
@@ -24,6 +24,7 @@
*********************************************************************/
#include <stdint.h>
#include "hardware.h"
#include "stack.h"
/* stack checking */
#if defined(__GNUC__)
+1
View File
@@ -24,6 +24,7 @@
*********************************************************************/
#include <stdint.h>
#include "hardware.h"
#include "timer.h"
/* This module is a 1 millisecond timer */
+1
View File
@@ -108,6 +108,7 @@ BASICSRC = $(BACNET_BASIC)/service/h_dcc.c \
$(BACNET_BASIC)/service/h_noserv.c \
$(BACNET_BASIC)/service/s_iam.c \
$(BACNET_BASIC)/service/s_ihave.c \
$(BACNET_BASIC)/sys/bigend.c \
$(BACNET_BASIC)/sys/fifo.c \
$(BACNET_BASIC)/sys/mstimer.c \
$(BACNET_BASIC)/sys/ringbuf.c \
+135 -12
View File
@@ -6,7 +6,7 @@
<ToolchainName>com.Atmel.AVRGCC8.C</ToolchainName>
<ProjectGuid>{1cefd571-4b50-48fd-b75e-0e968ebbd698}</ProjectGuid>
<avrdevice>ATmega644P</avrdevice>
<avrdeviceseries>none</avrdeviceseries>
<avrdeviceseries>mega</avrdeviceseries>
<OutputType>Executable</OutputType>
<Language>C</Language>
<OutputFileName>$(MSBuildProjectName)</OutputFileName>
@@ -27,14 +27,36 @@
<BootSegment>2</BootSegment>
<AsfFrameworkConfig>
<framework-data>
<options />
<options>
<option id="common.boards" value="Add" config="" content-id="Atmel.ASF" />
</options>
<configurations />
<files />
<documentation help="" />
<files>
<file path="src/config/conf_board.h" framework="" version="" source="common/applications/user_application/user_board/config/conf_board.h" changed="False" content-id="Atmel.ASF" />
<file path="src/ASF/common/boards/board.h" framework="" version="" source="common/boards/board.h" changed="False" content-id="Atmel.ASF" />
<file path="src/ASF/common/boards/user_board/init.c" framework="" version="" source="common/boards/user_board/init.c" changed="False" content-id="Atmel.ASF" />
<file path="src/ASF/common/boards/user_board/user_board.h" framework="" version="" source="common/boards/user_board/user_board.h" changed="False" content-id="Atmel.ASF" />
<file path="src/ASF/common/utils/interrupt.h" framework="" version="" source="common/utils/interrupt.h" changed="False" content-id="Atmel.ASF" />
<file path="src/ASF/common/utils/interrupt/interrupt_avr8.h" framework="" version="" source="common/utils/interrupt/interrupt_avr8.h" changed="False" content-id="Atmel.ASF" />
<file path="src/ASF/common/utils/make/Makefile.avr.in" framework="" version="" source="common/utils/make/Makefile.avr.in" changed="False" content-id="Atmel.ASF" />
<file path="src/ASF/common/utils/parts.h" framework="" version="" source="common/utils/parts.h" changed="False" content-id="Atmel.ASF" />
<file path="src/ASF/mega/utils/assembler.h" framework="" version="" source="mega/utils/assembler.h" changed="False" content-id="Atmel.ASF" />
<file path="src/ASF/mega/utils/assembler/gas.h" framework="" version="" source="mega/utils/assembler/gas.h" changed="False" content-id="Atmel.ASF" />
<file path="src/ASF/mega/utils/compiler.h" framework="" version="" source="mega/utils/compiler.h" changed="False" content-id="Atmel.ASF" />
<file path="src/ASF/mega/utils/preprocessor/mrepeat.h" framework="" version="" source="mega/utils/preprocessor/mrepeat.h" changed="False" content-id="Atmel.ASF" />
<file path="src/ASF/mega/utils/preprocessor/preprocessor.h" framework="" version="" source="mega/utils/preprocessor/preprocessor.h" changed="False" content-id="Atmel.ASF" />
<file path="src/ASF/mega/utils/preprocessor/stringz.h" framework="" version="" source="mega/utils/preprocessor/stringz.h" changed="False" content-id="Atmel.ASF" />
<file path="src/ASF/mega/utils/preprocessor/tpaste.h" framework="" version="" source="mega/utils/preprocessor/tpaste.h" changed="False" content-id="Atmel.ASF" />
<file path="src/ASF/mega/utils/progmem.h" framework="" version="" source="mega/utils/progmem.h" changed="False" content-id="Atmel.ASF" />
<file path="src/ASF/mega/utils/status_codes.h" framework="" version="" source="mega/utils/status_codes.h" changed="False" content-id="Atmel.ASF" />
</files>
<documentation help="http://asf.atmel.com/docs/3.39.0/common.applications.user_application.user_board.mega/html/index.html" />
<offline-documentation help="" />
<dependencies>
<content-extension eid="atmel.asf" uuidref="Atmel.ASF" version="3.39.0" />
</dependencies>
<project id="common.applications.user_application.user_board.mega" value="Add" config="" content-id="Atmel.ASF" />
<board id="board.user_board.mega" value="Add" config="" content-id="Atmel.ASF" />
</framework-data>
</AsfFrameworkConfig>
<preserveEEPROM>true</preserveEEPROM>
@@ -50,8 +72,6 @@
<avrgcc.common.outputfiles.eep>True</avrgcc.common.outputfiles.eep>
<avrgcc.common.outputfiles.srec>True</avrgcc.common.outputfiles.srec>
<avrgcc.common.outputfiles.usersignatures>False</avrgcc.common.outputfiles.usersignatures>
<avrgcc.compiler.general.ChangeDefaultCharTypeUnsigned>True</avrgcc.compiler.general.ChangeDefaultCharTypeUnsigned>
<avrgcc.compiler.general.ChangeDefaultBitFieldUnsigned>True</avrgcc.compiler.general.ChangeDefaultBitFieldUnsigned>
<avrgcc.compiler.symbols.DefSymbols>
<ListValues>
<Value>BACDL_MSTP</Value>
@@ -61,6 +81,7 @@
<Value>MAX_CHARACTER_STRING_BYTES=64</Value>
<Value>MAX_OCTET_STRING_BYTES=64</Value>
<Value>NDEBUG</Value>
<Value>BOARD=USER_BOARD</Value>
</ListValues>
</avrgcc.compiler.symbols.DefSymbols>
<avrgcc.compiler.directories.IncludePaths>
@@ -69,22 +90,40 @@
<Value>../../../src</Value>
<Value>%24(PackRepoDir)\atmel\ATmega_DFP\1.3.300\include</Value>
<Value>../../../ports/bdk-atxx4-mstp</Value>
<Value>../src/ASF/common/boards/user_board</Value>
<Value>../src/ASF/common/boards</Value>
<Value>../src/ASF/mega/utils/preprocessor</Value>
<Value>../src/ASF/mega/utils</Value>
<Value>../src/ASF/common/utils</Value>
<Value>../src</Value>
<Value>../src/config</Value>
</ListValues>
</avrgcc.compiler.directories.IncludePaths>
<avrgcc.compiler.optimization.level>Optimize for size (-Os)</avrgcc.compiler.optimization.level>
<avrgcc.compiler.optimization.OtherFlags>-fdata-sections</avrgcc.compiler.optimization.OtherFlags>
<avrgcc.compiler.optimization.PackStructureMembers>True</avrgcc.compiler.optimization.PackStructureMembers>
<avrgcc.compiler.optimization.AllocateBytesNeededForEnum>True</avrgcc.compiler.optimization.AllocateBytesNeededForEnum>
<avrgcc.compiler.warnings.AllWarnings>True</avrgcc.compiler.warnings.AllWarnings>
<avrgcc.compiler.miscellaneous.OtherFlags>-std=gnu99 -fno-strict-aliasing -Wstrict-prototypes -Wmissing-prototypes -Werror-implicit-function-declaration -Wpointer-arith -mrelax</avrgcc.compiler.miscellaneous.OtherFlags>
<avrgcc.linker.libraries.Libraries>
<ListValues>
<Value>libm</Value>
</ListValues>
</avrgcc.linker.libraries.Libraries>
<avrgcc.linker.miscellaneous.LinkerFlags>-Wl,--relax</avrgcc.linker.miscellaneous.LinkerFlags>
<avrgcc.assembler.general.AssemblerFlags>-mrelax -DBOARD=USER_BOARD</avrgcc.assembler.general.AssemblerFlags>
<avrgcc.assembler.general.IncludePaths>
<ListValues>
<Value>%24(PackRepoDir)\atmel\ATmega_DFP\1.3.300\include</Value>
<Value>../src/ASF/common/boards/user_board</Value>
<Value>../src/ASF/common/boards</Value>
<Value>../src/ASF/mega/utils/preprocessor</Value>
<Value>../src/ASF/mega/utils</Value>
<Value>../src/ASF/common/utils</Value>
<Value>../src</Value>
<Value>../src/config</Value>
</ListValues>
</avrgcc.assembler.general.IncludePaths>
<avrgcc.compiler.optimization.level>Optimize for size (-Os)</avrgcc.compiler.optimization.level>
</AvrGcc>
</ToolchainSettings>
<UsesExternalMakeFile>False</UsesExternalMakeFile>
@@ -101,8 +140,6 @@
<avrgcc.common.outputfiles.eep>True</avrgcc.common.outputfiles.eep>
<avrgcc.common.outputfiles.srec>True</avrgcc.common.outputfiles.srec>
<avrgcc.common.outputfiles.usersignatures>False</avrgcc.common.outputfiles.usersignatures>
<avrgcc.compiler.general.ChangeDefaultCharTypeUnsigned>True</avrgcc.compiler.general.ChangeDefaultCharTypeUnsigned>
<avrgcc.compiler.general.ChangeDefaultBitFieldUnsigned>True</avrgcc.compiler.general.ChangeDefaultBitFieldUnsigned>
<avrgcc.compiler.symbols.DefSymbols>
<ListValues>
<Value>BACDL_MSTP</Value>
@@ -112,6 +149,7 @@
<Value>MAX_CHARACTER_STRING_BYTES=64</Value>
<Value>MAX_OCTET_STRING_BYTES=64</Value>
<Value>DEBUG</Value>
<Value>BOARD=USER_BOARD</Value>
</ListValues>
</avrgcc.compiler.symbols.DefSymbols>
<avrgcc.compiler.directories.IncludePaths>
@@ -121,23 +159,41 @@
<Value>%24(PackRepoDir)\atmel\ATmega_DFP\1.3.300\include</Value>
<Value>../../../demo/object</Value>
<Value>../../../include</Value>
<Value>../src/ASF/common/boards/user_board</Value>
<Value>../src/ASF/common/boards</Value>
<Value>../src/ASF/mega/utils/preprocessor</Value>
<Value>../src/ASF/mega/utils</Value>
<Value>../src/ASF/common/utils</Value>
<Value>../src</Value>
<Value>../src/config</Value>
</ListValues>
</avrgcc.compiler.directories.IncludePaths>
<avrgcc.compiler.optimization.level>Optimize (-O1)</avrgcc.compiler.optimization.level>
<avrgcc.compiler.optimization.OtherFlags>-fdata-sections</avrgcc.compiler.optimization.OtherFlags>
<avrgcc.compiler.optimization.PackStructureMembers>True</avrgcc.compiler.optimization.PackStructureMembers>
<avrgcc.compiler.optimization.AllocateBytesNeededForEnum>True</avrgcc.compiler.optimization.AllocateBytesNeededForEnum>
<avrgcc.compiler.optimization.DebugLevel>Maximum (-g3)</avrgcc.compiler.optimization.DebugLevel>
<avrgcc.compiler.warnings.AllWarnings>True</avrgcc.compiler.warnings.AllWarnings>
<avrgcc.compiler.miscellaneous.OtherFlags>-std=gnu99 -fno-strict-aliasing -Wstrict-prototypes -Wmissing-prototypes -Werror-implicit-function-declaration -Wpointer-arith -mrelax</avrgcc.compiler.miscellaneous.OtherFlags>
<avrgcc.linker.libraries.Libraries>
<ListValues>
<Value>libm</Value>
</ListValues>
</avrgcc.linker.libraries.Libraries>
<avrgcc.linker.miscellaneous.LinkerFlags>-Wl,--relax</avrgcc.linker.miscellaneous.LinkerFlags>
<avrgcc.assembler.general.AssemblerFlags>-mrelax -DBOARD=USER_BOARD</avrgcc.assembler.general.AssemblerFlags>
<avrgcc.assembler.general.IncludePaths>
<ListValues>
<Value>%24(PackRepoDir)\atmel\ATmega_DFP\1.3.300\include</Value>
<Value>../src/ASF/common/boards/user_board</Value>
<Value>../src/ASF/common/boards</Value>
<Value>../src/ASF/mega/utils/preprocessor</Value>
<Value>../src/ASF/mega/utils</Value>
<Value>../src/ASF/common/utils</Value>
<Value>../src</Value>
<Value>../src/config</Value>
</ListValues>
</avrgcc.assembler.general.IncludePaths>
<avrgcc.compiler.optimization.level>Optimize (-O1)</avrgcc.compiler.optimization.level>
<avrgcc.compiler.optimization.DebugLevel>Default (-g2)</avrgcc.compiler.optimization.DebugLevel>
<avrgcc.assembler.debugging.DebugLevel>Default (-Wa,-g)</avrgcc.assembler.debugging.DebugLevel>
</AvrGcc>
</ToolchainSettings>
@@ -353,7 +409,7 @@
</Compile>
<Compile Include="..\..\src\bacnet\proplist.c">
<SubType>compile</SubType>
<Link>BACnet Core\npdu.c</Link>
<Link>BACnet Core\proplist.c</Link>
</Compile>
<Compile Include="..\..\src\bacnet\rd.c">
<SubType>compile</SubType>
@@ -391,10 +447,77 @@
<SubType>compile</SubType>
<Link>BACnet Core\wp.c</Link>
</Compile>
<None Include="src\ASF\common\boards\board.h">
<SubType>compile</SubType>
</None>
<None Include="src\asf.h">
<SubType>compile</SubType>
</None>
<Compile Include="src\ASF\common\boards\user_board\init.c">
<SubType>compile</SubType>
</Compile>
<None Include="src\ASF\common\utils\make\Makefile.avr.in">
<SubType>compile</SubType>
</None>
<None Include="src\ASF\mega\utils\preprocessor\tpaste.h">
<SubType>compile</SubType>
</None>
<None Include="src\ASF\mega\utils\progmem.h">
<SubType>compile</SubType>
</None>
<None Include="src\config\conf_board.h">
<SubType>compile</SubType>
</None>
<None Include="src\ASF\mega\utils\preprocessor\preprocessor.h">
<SubType>compile</SubType>
</None>
<None Include="src\ASF\mega\utils\preprocessor\stringz.h">
<SubType>compile</SubType>
</None>
<None Include="src\ASF\common\utils\interrupt.h">
<SubType>compile</SubType>
</None>
<None Include="src\ASF\mega\utils\compiler.h">
<SubType>compile</SubType>
</None>
<None Include="src\ASF\mega\utils\assembler.h">
<SubType>compile</SubType>
</None>
<None Include="src\ASF\common\utils\parts.h">
<SubType>compile</SubType>
</None>
<None Include="src\ASF\common\utils\interrupt\interrupt_avr8.h">
<SubType>compile</SubType>
</None>
<None Include="src\ASF\mega\utils\preprocessor\mrepeat.h">
<SubType>compile</SubType>
</None>
<None Include="src\ASF\mega\utils\assembler\gas.h">
<SubType>compile</SubType>
</None>
<None Include="src\ASF\common\boards\user_board\user_board.h">
<SubType>compile</SubType>
</None>
<None Include="src\ASF\mega\utils\status_codes.h">
<SubType>compile</SubType>
</None>
</ItemGroup>
<ItemGroup>
<Folder Include="BACnet Handlers" />
<Folder Include="BACnet Core" />
<Folder Include="src\" />
<Folder Include="src\ASF\" />
<Folder Include="src\ASF\common\" />
<Folder Include="src\ASF\common\boards\" />
<Folder Include="src\ASF\common\boards\user_board\" />
<Folder Include="src\ASF\common\utils\" />
<Folder Include="src\ASF\common\utils\interrupt\" />
<Folder Include="src\ASF\common\utils\make\" />
<Folder Include="src\ASF\mega\" />
<Folder Include="src\ASF\mega\utils\" />
<Folder Include="src\ASF\mega\utils\assembler\" />
<Folder Include="src\ASF\mega\utils\preprocessor\" />
<Folder Include="src\config\" />
</ItemGroup>
<Import Project="$(AVRSTUDIO_EXE_PATH)\\Vs\\Compiler.targets" />
</Project>
File diff suppressed because it is too large Load Diff
+41
View File
@@ -49,6 +49,44 @@ static inline void _delay_us(
__delay_cycles(F_CPU / 1000000UL);
} while (microseconds--);
}
#if (__VER__ > 700)
#define DDA0 DDRA0
#define DDA1 DDRA1
#define DDA2 DDRA2
#define DDA3 DDRA3
#define DDA4 DDRA4
#define DDA5 DDRA5
#define DDA6 DDRA6
#define DDA7 DDRA7
#define DDB0 DDRB0
#define DDB1 DDRB1
#define DDB2 DDRB2
#define DDB3 DDRB3
#define DDB4 DDRB4
#define DDB5 DDRB5
#define DDB6 DDRB6
#define DDB7 DDRB7
#define DDC0 DDRC0
#define DDC1 DDRC1
#define DDC2 DDRC2
#define DDC3 DDRC3
#define DDC4 DDRC4
#define DDC5 DDRC5
#define DDC6 DDRC6
#define DDC7 DDRC7
#define DDD0 DDRD0
#define DDD1 DDRD1
#define DDD2 DDRD2
#define DDD3 DDRD3
#define DDD4 DDRD4
#define DDD5 DDRD5
#define DDD6 DDRD6
#define DDD7 DDRD7
#endif
#endif
#if defined(__GNUC__)
@@ -311,6 +349,9 @@ unsigned char __uint8_eeprom_load(
/* power macros in GCC-AVR */
#if (defined(__ICCAVR__) && (defined(__ATmega644P__))) || \
(defined(__CROSSWORKS_AVR) && (__TARGET_PROCESSOR == ATmega644P))
#if (defined(__ICCAVR__) && (__VER__ > 700))
#define PRR PRR0
#endif
#define power_adc_enable() (PRR &= (uint8_t)~(1 << PRADC))
#define power_spi_enable() (PRR &= (uint8_t)~(1 << PRSPI))
#define power_usart0_enable() (PRR &= (uint8_t)~(1 << PRUSART0))
+3 -1
View File
@@ -1034,7 +1034,6 @@ int bacapp_snprintf_value(
{
size_t len = 0, i = 0;
char *char_str;
uint8_t *octet_str;
BACNET_APPLICATION_DATA_VALUE *value;
BACNET_PROPERTY_ID property = PROP_ALL;
BACNET_OBJECT_TYPE object_type = MAX_BACNET_OBJECT_TYPE;
@@ -1042,6 +1041,9 @@ int bacapp_snprintf_value(
char *p_str = str;
size_t rem_str_len = str_len;
char temp_str[32];
#if defined(BACAPP_OCTET_STRING)
uint8_t *octet_str;
#endif
#ifdef __STDC_ISO_10646__
/* Wide character (decoded from multi-byte character). */
wchar_t wc;
+56 -56
View File
@@ -110,11 +110,11 @@ int decode_unsigned32(uint8_t *apdu, uint32_t *value)
*/
int encode_unsigned40(uint8_t *buffer, uint64_t value)
{
buffer[0] = (uint8_t)((value & 0x000000ff00000000) >> 32);
buffer[1] = (uint8_t)((value & 0x00000000ff000000) >> 24);
buffer[2] = (uint8_t)((value & 0x0000000000ff0000) >> 16);
buffer[3] = (uint8_t)((value & 0x000000000000ff00) >> 8);
buffer[4] = (uint8_t)(value & 0x00000000000000ff);
buffer[0] = (uint8_t)((value & 0x000000ff00000000ULL) >> 32);
buffer[1] = (uint8_t)((value & 0x00000000ff000000ULL) >> 24);
buffer[2] = (uint8_t)((value & 0x0000000000ff0000ULL) >> 16);
buffer[3] = (uint8_t)((value & 0x000000000000ff00ULL) >> 8);
buffer[4] = (uint8_t)(value & 0x00000000000000ffULL);
return 5;
}
@@ -129,14 +129,14 @@ int decode_unsigned40(uint8_t *buffer, uint64_t *value)
{
if (value) {
*value =
((uint64_t)((((uint64_t)buffer[0]) << 32) & 0x000000ff00000000));
((uint64_t)((((uint64_t)buffer[0]) << 32) & 0x000000ff00000000ULL));
*value |=
((uint64_t)((((uint64_t)buffer[1]) << 24) & 0x00000000ff000000));
((uint64_t)((((uint64_t)buffer[1]) << 24) & 0x00000000ff000000ULL));
*value |=
((uint64_t)((((uint64_t)buffer[2]) << 16) & 0x0000000000ff0000));
((uint64_t)((((uint64_t)buffer[2]) << 16) & 0x0000000000ff0000ULL));
*value |=
((uint64_t)((((uint64_t)buffer[3]) << 8) & 0x000000000000ff00));
*value |= ((uint64_t)(((uint64_t)buffer[4]) & 0x00000000000000ff));
((uint64_t)((((uint64_t)buffer[3]) << 8) & 0x000000000000ff00ULL));
*value |= ((uint64_t)(((uint64_t)buffer[4]) & 0x00000000000000ffULL));
}
return 5;
@@ -150,12 +150,12 @@ int decode_unsigned40(uint8_t *buffer, uint64_t *value)
*/
int encode_unsigned48(uint8_t *buffer, uint64_t value)
{
buffer[0] = (uint8_t)((value & 0x0000ff0000000000) >> 40);
buffer[1] = (uint8_t)((value & 0x000000ff00000000) >> 32);
buffer[2] = (uint8_t)((value & 0x00000000ff000000) >> 24);
buffer[3] = (uint8_t)((value & 0x0000000000ff0000) >> 16);
buffer[4] = (uint8_t)((value & 0x000000000000ff00) >> 8);
buffer[5] = (uint8_t)(value & 0x00000000000000ff);
buffer[0] = (uint8_t)((value & 0x0000ff0000000000ULL) >> 40);
buffer[1] = (uint8_t)((value & 0x000000ff00000000ULL) >> 32);
buffer[2] = (uint8_t)((value & 0x00000000ff000000ULL) >> 24);
buffer[3] = (uint8_t)((value & 0x0000000000ff0000ULL) >> 16);
buffer[4] = (uint8_t)((value & 0x000000000000ff00ULL) >> 8);
buffer[5] = (uint8_t)(value & 0x00000000000000ffULL);
return 6;
}
@@ -170,16 +170,16 @@ int decode_unsigned48(uint8_t *buffer, uint64_t *value)
{
if (value) {
*value =
((uint64_t)((((uint64_t)buffer[0]) << 40) & 0x0000ff0000000000));
((uint64_t)((((uint64_t)buffer[0]) << 40) & 0x0000ff0000000000ULL));
*value |=
((uint64_t)((((uint64_t)buffer[1]) << 32) & 0x000000ff00000000));
((uint64_t)((((uint64_t)buffer[1]) << 32) & 0x000000ff00000000ULL));
*value |=
((uint64_t)((((uint64_t)buffer[2]) << 24) & 0x00000000ff000000));
((uint64_t)((((uint64_t)buffer[2]) << 24) & 0x00000000ff000000ULL));
*value |=
((uint64_t)((((uint64_t)buffer[3]) << 16) & 0x0000000000ff0000));
((uint64_t)((((uint64_t)buffer[3]) << 16) & 0x0000000000ff0000ULL));
*value |=
((uint64_t)((((uint64_t)buffer[4]) << 8) & 0x000000000000ff00));
*value |= ((uint64_t)(((uint64_t)buffer[5]) & 0x00000000000000ff));
((uint64_t)((((uint64_t)buffer[4]) << 8) & 0x000000000000ff00ULL));
*value |= ((uint64_t)(((uint64_t)buffer[5]) & 0x00000000000000ffULL));
}
return 6;
@@ -193,13 +193,13 @@ int decode_unsigned48(uint8_t *buffer, uint64_t *value)
*/
int encode_unsigned56(uint8_t *buffer, uint64_t value)
{
buffer[0] = (uint8_t)((value & 0x00ff000000000000) >> 48);
buffer[1] = (uint8_t)((value & 0x0000ff0000000000) >> 40);
buffer[2] = (uint8_t)((value & 0x000000ff00000000) >> 32);
buffer[3] = (uint8_t)((value & 0x00000000ff000000) >> 24);
buffer[4] = (uint8_t)((value & 0x0000000000ff0000) >> 16);
buffer[5] = (uint8_t)((value & 0x000000000000ff00) >> 8);
buffer[6] = (uint8_t)(value & 0x00000000000000ff);
buffer[0] = (uint8_t)((value & 0x00ff000000000000ULL) >> 48);
buffer[1] = (uint8_t)((value & 0x0000ff0000000000ULL) >> 40);
buffer[2] = (uint8_t)((value & 0x000000ff00000000ULL) >> 32);
buffer[3] = (uint8_t)((value & 0x00000000ff000000ULL) >> 24);
buffer[4] = (uint8_t)((value & 0x0000000000ff0000ULL) >> 16);
buffer[5] = (uint8_t)((value & 0x000000000000ff00ULL) >> 8);
buffer[6] = (uint8_t)(value & 0x00000000000000ffULL);
return 7;
}
@@ -214,18 +214,18 @@ int decode_unsigned56(uint8_t *buffer, uint64_t *value)
{
if (value) {
*value =
((uint64_t)((((uint64_t)buffer[0]) << 48) & 0x00ff000000000000));
((uint64_t)((((uint64_t)buffer[0]) << 48) & 0x00ff000000000000ULL));
*value |=
((uint64_t)((((uint64_t)buffer[1]) << 40) & 0x0000ff0000000000));
((uint64_t)((((uint64_t)buffer[1]) << 40) & 0x0000ff0000000000ULL));
*value |=
((uint64_t)((((uint64_t)buffer[2]) << 32) & 0x000000ff00000000));
((uint64_t)((((uint64_t)buffer[2]) << 32) & 0x000000ff00000000ULL));
*value |=
((uint64_t)((((uint64_t)buffer[3]) << 24) & 0x00000000ff000000));
((uint64_t)((((uint64_t)buffer[3]) << 24) & 0x00000000ff000000ULL));
*value |=
((uint64_t)((((uint64_t)buffer[4]) << 16) & 0x0000000000ff0000));
((uint64_t)((((uint64_t)buffer[4]) << 16) & 0x0000000000ff0000ULL));
*value |=
((uint64_t)((((uint64_t)buffer[5]) << 8) & 0x000000000000ff00));
*value |= ((uint64_t)(((uint64_t)buffer[6]) & 0x00000000000000ff));
((uint64_t)((((uint64_t)buffer[5]) << 8) & 0x000000000000ff00ULL));
*value |= ((uint64_t)(((uint64_t)buffer[6]) & 0x00000000000000ffULL));
}
return 7;
@@ -239,14 +239,14 @@ int decode_unsigned56(uint8_t *buffer, uint64_t *value)
*/
int encode_unsigned64(uint8_t *buffer, uint64_t value)
{
buffer[0] = (uint8_t)((value & 0xff00000000000000) >> 56);
buffer[1] = (uint8_t)((value & 0x00ff000000000000) >> 48);
buffer[2] = (uint8_t)((value & 0x0000ff0000000000) >> 40);
buffer[3] = (uint8_t)((value & 0x000000ff00000000) >> 32);
buffer[4] = (uint8_t)((value & 0x00000000ff000000) >> 24);
buffer[5] = (uint8_t)((value & 0x0000000000ff0000) >> 16);
buffer[6] = (uint8_t)((value & 0x000000000000ff00) >> 8);
buffer[7] = (uint8_t)(value & 0x00000000000000ff);
buffer[0] = (uint8_t)((value & 0xff00000000000000ULL) >> 56);
buffer[1] = (uint8_t)((value & 0x00ff000000000000ULL) >> 48);
buffer[2] = (uint8_t)((value & 0x0000ff0000000000ULL) >> 40);
buffer[3] = (uint8_t)((value & 0x000000ff00000000ULL) >> 32);
buffer[4] = (uint8_t)((value & 0x00000000ff000000ULL) >> 24);
buffer[5] = (uint8_t)((value & 0x0000000000ff0000ULL) >> 16);
buffer[6] = (uint8_t)((value & 0x000000000000ff00ULL) >> 8);
buffer[7] = (uint8_t)(value & 0x00000000000000ffULL);
return 8;
}
@@ -261,20 +261,20 @@ int decode_unsigned64(uint8_t *buffer, uint64_t *value)
{
if (value) {
*value =
((uint64_t)((((uint64_t)buffer[0]) << 56) & 0xff00000000000000));
((uint64_t)((((uint64_t)buffer[0]) << 56) & 0xff00000000000000ULL));
*value |=
((uint64_t)((((uint64_t)buffer[1]) << 48) & 0x00ff000000000000));
((uint64_t)((((uint64_t)buffer[1]) << 48) & 0x00ff000000000000ULL));
*value |=
((uint64_t)((((uint64_t)buffer[2]) << 40) & 0x0000ff0000000000));
((uint64_t)((((uint64_t)buffer[2]) << 40) & 0x0000ff0000000000ULL));
*value |=
((uint64_t)((((uint64_t)buffer[3]) << 32) & 0x000000ff00000000));
((uint64_t)((((uint64_t)buffer[3]) << 32) & 0x000000ff00000000ULL));
*value |=
((uint64_t)((((uint64_t)buffer[4]) << 24) & 0x00000000ff000000));
((uint64_t)((((uint64_t)buffer[4]) << 24) & 0x00000000ff000000ULL));
*value |=
((uint64_t)((((uint64_t)buffer[5]) << 16) & 0x0000000000ff0000));
((uint64_t)((((uint64_t)buffer[5]) << 16) & 0x0000000000ff0000ULL));
*value |=
((uint64_t)((((uint64_t)buffer[6]) << 8) & 0x000000000000ff00));
*value |= ((uint64_t)(((uint64_t)buffer[7]) & 0x00000000000000ff));
((uint64_t)((((uint64_t)buffer[6]) << 8) & 0x000000000000ff00ULL));
*value |= ((uint64_t)(((uint64_t)buffer[7]) & 0x00000000000000ffULL));
}
return 8;
@@ -298,13 +298,13 @@ int bacnet_unsigned_length(BACNET_UNSIGNED_INTEGER value)
len = 3;
} else {
#ifdef UINT64_MAX
if (value <= 0xFFFFFFFF) {
if (value <= 0x00000000FFFFFFFFULL) {
len = 4;
} else if (value <= 0xFFFFFFFFFF) {
} else if (value <= 0x000000FFFFFFFFFFULL) {
len = 5;
} else if (value <= 0xFFFFFFFFFFFF) {
} else if (value <= 0x0000FFFFFFFFFFFFULL) {
len = 6;
} else if (value <= 0xFFFFFFFFFFFFFF) {
} else if (value <= 0x00FFFFFFFFFFFFFFULL) {
len = 7;
} else {
len = 8;
+2
View File
@@ -97,6 +97,8 @@ extern "C" {
bool Analog_Value_Name_Set(
uint32_t object_instance,
char *new_name);
char *Analog_Value_Name(
uint32_t object_instance);
BACNET_STACK_EXPORT
int Analog_Value_Read_Property(
+3
View File
@@ -71,6 +71,9 @@ extern "C" {
bool Binary_Value_Name_Set(
uint32_t object_instance,
char *new_name);
BACNET_STACK_EXPORT
char *Binary_Value_Name(
uint32_t object_instance);
BACNET_STACK_EXPORT
char *Binary_Value_Description(
+4
View File
@@ -41,6 +41,10 @@
#include "bacnet/lighting.h"
#include "bacnet/bacdcode.h"
#ifndef islessgreater
#define islessgreater( x, y) ((x) < (y) || (x) > (y))
#endif
/** @file lighting.c Manipulate BACnet lighting command values */
/**