1
0
mirror of https://github.com/peterantypas/maiana.git synced 2025-05-28 05:10:40 -07:00

Improvements

This commit is contained in:
PETER ANTYPAS 2016-11-04 14:18:56 -07:00
parent 9a8c13a9d9
commit 6243cdae95
5 changed files with 329 additions and 301 deletions

View File

@ -193,44 +193,44 @@
<configuration artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe,org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.release" cleanCommand="${cross_rm} -rf" description="" id="ilg.gnuarmeclipse.managedbuild.cross.config.elf.release.436813973" name="Release" parent="ilg.gnuarmeclipse.managedbuild.cross.config.elf.release">
<folderInfo id="ilg.gnuarmeclipse.managedbuild.cross.config.elf.release.436813973." name="/" resourcePath="">
<toolChain id="ilg.gnuarmeclipse.managedbuild.cross.toolchain.elf.release.973230988" name="Cross ARM GCC" superClass="ilg.gnuarmeclipse.managedbuild.cross.toolchain.elf.release">
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.level.951952712" name="Optimization Level" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.level" value="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.level.size" valueType="enumerated"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.messagelength.78135518" name="Message length (-fmessage-length=0)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.messagelength" value="true" valueType="boolean"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.signedchar.818501478" name="'char' is signed (-fsigned-char)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.signedchar" value="true" valueType="boolean"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.functionsections.353857210" name="Function sections (-ffunction-sections)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.functionsections" value="true" valueType="boolean"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.datasections.1246460418" name="Data sections (-fdata-sections)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.datasections" value="true" valueType="boolean"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.level.684853899" name="Debug level" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.level"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.format.1206140634" name="Debug format" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.format"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.family.633480568" name="ARM family" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.family" value="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.mcpu.cortex-m4" valueType="enumerated"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.allwarn.987809499" name="Enable all common warnings (-Wall)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.allwarn" value="true" valueType="boolean"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.extrawarn.468578467" name="Enable extra warnings (-Wextra)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.extrawarn" value="true" valueType="boolean"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.freestanding.2072335872" name="Assume freestanding environment (-ffreestanding)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.freestanding" value="true" valueType="boolean"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.lto.63408354" name="Link-time optimizer (-flto)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.lto" value="true" valueType="boolean"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.toolchain.name.903872796" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.toolchain.name" value="GNU Tools for ARM Embedded Processors" valueType="string"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.architecture.1610609773" name="Architecture" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.architecture" value="ilg.gnuarmeclipse.managedbuild.cross.option.architecture.arm" valueType="enumerated"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.instructionset.1489530165" name="Instruction set" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.instructionset" value="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.instructionset.thumb" valueType="enumerated"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.prefix.596307462" name="Prefix" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.prefix" value="arm-none-eabi-" valueType="string"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.c.582359256" name="C compiler" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.c" value="gcc" valueType="string"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.cpp.261310959" name="C++ compiler" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.cpp" value="g++" valueType="string"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.ar.1463459636" name="Archiver" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.ar" value="ar" valueType="string"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.objcopy.1043169248" name="Hex/Bin converter" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.objcopy" value="objcopy" valueType="string"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.objdump.1449357577" name="Listing generator" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.objdump" value="objdump" valueType="string"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.size.1782182195" name="Size command" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.size" value="size" valueType="string"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.make.481521067" name="Build command" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.make" value="make" valueType="string"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.rm.807016532" name="Remove command" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.rm" value="rm" valueType="string"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.addtools.createflash.385120787" name="Create flash image" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.addtools.createflash" value="true" valueType="boolean"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.addtools.printsize.151303882" name="Print size" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.addtools.printsize" value="true" valueType="boolean"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.fpu.unit.38748253" name="FPU Type" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.fpu.unit" value="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.fpu.unit.fpv4spd16" valueType="enumerated"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.level.951952712" name="Optimization Level" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.level" useByScannerDiscovery="true" value="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.level.size" valueType="enumerated"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.messagelength.78135518" name="Message length (-fmessage-length=0)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.messagelength" useByScannerDiscovery="true" value="true" valueType="boolean"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.signedchar.818501478" name="'char' is signed (-fsigned-char)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.signedchar" useByScannerDiscovery="true" value="true" valueType="boolean"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.functionsections.353857210" name="Function sections (-ffunction-sections)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.functionsections" useByScannerDiscovery="true" value="true" valueType="boolean"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.datasections.1246460418" name="Data sections (-fdata-sections)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.datasections" useByScannerDiscovery="true" value="true" valueType="boolean"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.level.684853899" name="Debug level" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.level" useByScannerDiscovery="true"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.format.1206140634" name="Debug format" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.format" useByScannerDiscovery="true"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.family.633480568" name="ARM family" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.family" useByScannerDiscovery="false" value="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.mcpu.cortex-m4" valueType="enumerated"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.allwarn.987809499" name="Enable all common warnings (-Wall)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.allwarn" useByScannerDiscovery="true" value="true" valueType="boolean"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.extrawarn.468578467" name="Enable extra warnings (-Wextra)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.extrawarn" useByScannerDiscovery="true" value="true" valueType="boolean"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.freestanding.2072335872" name="Assume freestanding environment (-ffreestanding)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.freestanding" useByScannerDiscovery="true" value="true" valueType="boolean"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.lto.63408354" name="Link-time optimizer (-flto)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.lto" useByScannerDiscovery="true" value="true" valueType="boolean"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.toolchain.name.903872796" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.toolchain.name" useByScannerDiscovery="false" value="GNU Tools for ARM Embedded Processors" valueType="string"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.architecture.1610609773" name="Architecture" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.architecture" useByScannerDiscovery="false" value="ilg.gnuarmeclipse.managedbuild.cross.option.architecture.arm" valueType="enumerated"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.instructionset.1489530165" name="Instruction set" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.instructionset" useByScannerDiscovery="false" value="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.instructionset.thumb" valueType="enumerated"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.prefix.596307462" name="Prefix" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.prefix" useByScannerDiscovery="false" value="arm-none-eabi-" valueType="string"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.c.582359256" name="C compiler" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.c" useByScannerDiscovery="false" value="gcc" valueType="string"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.cpp.261310959" name="C++ compiler" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.cpp" useByScannerDiscovery="false" value="g++" valueType="string"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.ar.1463459636" name="Archiver" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.ar" useByScannerDiscovery="false" value="ar" valueType="string"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.objcopy.1043169248" name="Hex/Bin converter" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.objcopy" useByScannerDiscovery="false" value="objcopy" valueType="string"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.objdump.1449357577" name="Listing generator" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.objdump" useByScannerDiscovery="false" value="objdump" valueType="string"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.size.1782182195" name="Size command" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.size" useByScannerDiscovery="false" value="size" valueType="string"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.make.481521067" name="Build command" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.make" useByScannerDiscovery="false" value="make" valueType="string"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.rm.807016532" name="Remove command" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.rm" useByScannerDiscovery="false" value="rm" valueType="string"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.addtools.createflash.385120787" name="Create flash image" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.addtools.createflash" useByScannerDiscovery="false" value="true" valueType="boolean"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.addtools.printsize.151303882" name="Print size" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.addtools.printsize" useByScannerDiscovery="false" value="true" valueType="boolean"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.fpu.unit.38748253" name="FPU Type" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.fpu.unit" useByScannerDiscovery="false" value="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.fpu.unit.fpv4spd16" valueType="enumerated"/>
<targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="ilg.gnuarmeclipse.managedbuild.cross.targetPlatform.1050738922" isAbstract="false" osList="all" superClass="ilg.gnuarmeclipse.managedbuild.cross.targetPlatform"/>
<builder buildPath="${workspace_loc:/ais_transponder}/Release" id="ilg.gnuarmeclipse.managedbuild.cross.builder.1394997471" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" superClass="ilg.gnuarmeclipse.managedbuild.cross.builder"/>
<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler.1731827839" name="Cross ARM GNU Assembler" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler">
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.usepreprocessor.331795537" name="Use preprocessor" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.usepreprocessor" value="true" valueType="boolean"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.include.paths.2126986068" name="Include paths (-I)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.include.paths" valueType="includePath">
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.usepreprocessor.331795537" name="Use preprocessor" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.usepreprocessor" useByScannerDiscovery="false" value="true" valueType="boolean"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.include.paths.2126986068" name="Include paths (-I)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.include.paths" useByScannerDiscovery="false" valueType="includePath">
<listOptionValue builtIn="false" value="&quot;../include&quot;"/>
<listOptionValue builtIn="false" value="&quot;../system/include&quot;"/>
<listOptionValue builtIn="false" value="&quot;../system/include/cmsis&quot;"/>
<listOptionValue builtIn="false" value="&quot;../system/include/stm32f3-stdperiph&quot;"/>
</option>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.defs.2046099307" name="Defined symbols (-D)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.defs" valueType="definedSymbols">
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.defs.2046099307" name="Defined symbols (-D)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.defs" useByScannerDiscovery="false" valueType="definedSymbols">
<listOptionValue builtIn="false" value="OS_USE_TRACE_SEMIHOSTING_DEBUG"/>
<listOptionValue builtIn="false" value="STM32F30X"/>
<listOptionValue builtIn="false" value="USE_STDPERIPH_DRIVER"/>
@ -286,18 +286,19 @@
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.c.linker.usenewlibnano.666737071" name="Use newlib-nano (--specs=nano.specs)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.linker.usenewlibnano" value="true" valueType="boolean"/>
</tool>
<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.linker.719844009" name="Cross ARM C++ Linker" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.linker">
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.gcsections.1108212996" name="Remove unused sections (-Xlinker --gc-sections)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.gcsections" value="true" valueType="boolean"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.paths.866605229" name="Library search path (-L)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.paths" valueType="libPaths">
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.gcsections.1108212996" name="Remove unused sections (-Xlinker --gc-sections)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.gcsections" useByScannerDiscovery="false" value="true" valueType="boolean"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.paths.866605229" name="Library search path (-L)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.paths" useByScannerDiscovery="false" valueType="libPaths">
<listOptionValue builtIn="false" value="&quot;../ldscripts&quot;"/>
</option>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.scriptfile.1572381400" name="Script files (-T)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.scriptfile" valueType="stringList">
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.scriptfile.1572381400" name="Script files (-T)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.scriptfile" useByScannerDiscovery="false" valueType="stringList">
<listOptionValue builtIn="false" value="mem.ld"/>
<listOptionValue builtIn="false" value="libs.ld"/>
<listOptionValue builtIn="false" value="sections.ld"/>
</option>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.nostart.610815308" name="Do not use standard start files (-nostartfiles)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.nostart" value="true" valueType="boolean"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.usenewlibnano.1413528694" name="Use newlib-nano (--specs=nano.specs)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.usenewlibnano" value="true" valueType="boolean"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.useprintffloat.1279469808" name="Use float with nano printf (-u _printf_float)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.useprintffloat" value="true" valueType="boolean"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.nostart.610815308" name="Do not use standard start files (-nostartfiles)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.nostart" useByScannerDiscovery="false" value="true" valueType="boolean"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.usenewlibnano.1413528694" name="Use newlib-nano (--specs=nano.specs)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.usenewlibnano" useByScannerDiscovery="false" value="true" valueType="boolean"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.useprintffloat.1279469808" name="Use float with nano printf (-u _printf_float)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.useprintffloat" useByScannerDiscovery="false" value="false" valueType="boolean"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.strip.1683420541" name="Omit all symbol information (-s)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.strip" useByScannerDiscovery="false" value="true" valueType="boolean"/>
<inputType id="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.linker.input.1562320749" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.linker.input">
<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
<additionalInput kind="additionalinput" paths="$(LIBS)"/>
@ -305,7 +306,7 @@
</tool>
<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.archiver.1684296539" name="Cross ARM GNU Archiver" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.archiver"/>
<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.createflash.869751248" name="Cross ARM GNU Create Flash Image" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.createflash">
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.createflash.choice.1208795639" name="Output file format (-O)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.createflash.choice" value="ilg.gnuarmeclipse.managedbuild.cross.option.createflash.choice.binary" valueType="enumerated"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.createflash.choice.1208795639" name="Output file format (-O)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.createflash.choice" useByScannerDiscovery="false" value="ilg.gnuarmeclipse.managedbuild.cross.option.createflash.choice.binary" valueType="enumerated"/>
</tool>
<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.createlisting.1047152766" name="Cross ARM GNU Create Listing" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.createlisting">
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.source.908662733" name="Display source (--source|-S)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.source" value="true" valueType="boolean"/>
@ -315,7 +316,7 @@
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.wide.1968225980" name="Wide lines (--wide|-w)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.wide" value="true" valueType="boolean"/>
</tool>
<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.printsize.704315010" name="Cross ARM GNU Print Size" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.printsize">
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.printsize.format.845292324" name="Size format" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.printsize.format"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.printsize.format.845292324" name="Size format" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.printsize.format" useByScannerDiscovery="false"/>
</tool>
</toolChain>
</folderInfo>
@ -368,4 +369,5 @@
<resource resourceType="PROJECT" workspacePath="/ais_transponder"/>
</configuration>
</storageModule>
<storageModule moduleId="org.eclipse.cdt.make.core.buildtargets"/>
</cproject>

View File

@ -61,7 +61,7 @@ all: ais_transponder.elf secondary-outputs
ais_transponder.elf: $(OBJS) $(USER_OBJS)
@echo 'Building target: $@'
@echo 'Invoking: Cross ARM C++ Linker'
arm-none-eabi-g++ -mcpu=cortex-m4 -mthumb -Os -fmessage-length=0 -fsigned-char -ffunction-sections -fdata-sections -ffreestanding -flto -Wall -Wextra -g -T mem.ld -T libs.ld -T sections.ld -nostartfiles -Xlinker --gc-sections -L"../ldscripts" -Wl,-Map,"ais_transponder.map" --specs=nano.specs -u _printf_float -o "ais_transponder.elf" $(OBJS) $(USER_OBJS) $(LIBS)
arm-none-eabi-g++ -mcpu=cortex-m4 -mthumb -Os -fmessage-length=0 -fsigned-char -ffunction-sections -fdata-sections -ffreestanding -flto -Wall -Wextra -g -T mem.ld -T libs.ld -T sections.ld -nostartfiles -Xlinker --gc-sections -s -L"../ldscripts" -Wl,-Map,"ais_transponder.map" --specs=nano.specs -o "ais_transponder.elf" $(OBJS) $(USER_OBJS) $(LIBS)
@echo 'Finished building target: $@'
@echo ' '

View File

@ -12,11 +12,11 @@
#include "globals.h"
#include "stm32f30x.h"
CommandProcessor &CommandProcessor::instance()
CommandProcessor &
CommandProcessor::instance()
{
static CommandProcessor __instance;
return __instance;
static CommandProcessor __instance;
return __instance;
}
CommandProcessor::CommandProcessor()
@ -24,267 +24,291 @@ CommandProcessor::CommandProcessor()
}
void CommandProcessor::init()
void
CommandProcessor::init()
{
EventQueue::instance().addObserver(this, REQUEST_EVENT|RESET_EVENT);
EventQueue::instance ().addObserver (this, REQUEST_EVENT | RESET_EVENT);
}
void CommandProcessor::processEvent(const Event &e)
void
CommandProcessor::processEvent(const Event &e)
{
if ( e.type == RESET_EVENT ) {
NVIC_SystemReset ();
return;
}
switch(e.request.operation) {
case OP_GET:
if ( strcmp(e.request.field, "mmsi") == 0 )
returnMMSI();
else if ( strcmp(e.request.field, "name") == 0 )
returnName();
else if ( strcmp(e.request.field, "callsign") == 0 )
returnCallSign();
else if ( strcmp(e.request.field, "beam") == 0 )
returnBeam();
else if ( strcmp(e.request.field, "length") == 0 )
returnLength();
else if ( strcmp(e.request.field, "mode") == 0 )
returnMode();
else if ( strcmp(e.request.field, "vesseldata") == 0 )
returnVesselData();
else if ( strcmp(e.request.field, "version") == 0 )
returnVersion();
else if ( strcmp(e.request.field, "status") == 0 )
returnStatus();
else
sendError("Unknown field");
break;
case OP_SET:
if ( strcmp(e.request.field, "mmsi") == 0 )
setMMSI(atoi(e.request.value));
else if ( strcmp(e.request.field, "name") == 0 )
setName(e.request.value);
else if ( strcmp(e.request.field, "callsign") == 0 )
setCallSign(e.request.value);
else if ( strcmp(e.request.field, "beam") == 0 )
setBeam(atoi(e.request.value));
else if ( strcmp(e.request.field, "length") == 0 )
setLength(atoi(e.request.value));
else if ( strcmp(e.request.field, "mode") == 0 )
setMode(e.request.value);
else if ( strcmp(e.request.field, "vesseldata") == 0 )
setVesselData(e.request.value);
else
sendError("Unknown field");
break;
}
}
void CommandProcessor::sendError(const char *err)
{
Event *reply = EventPool::instance().newEvent(RESPONSE_EVENT);
reply->response.success = false;
strcpy(reply->response.data, err);
EventQueue::instance().push(reply);
}
void CommandProcessor::sendEmptyReply(bool success)
{
Event *reply = EventPool::instance().newEvent(RESPONSE_EVENT);
reply->response.success = success;
reply->response.data[0] = 0;
EventQueue::instance().push(reply);
}
void CommandProcessor::returnVersion()
{
Event *reply = EventPool::instance().newEvent(RESPONSE_EVENT);
reply->response.success = true;
strcpy(reply->response.data, REVISION);
EventQueue::instance().push(reply);
}
void CommandProcessor::returnMMSI()
{
StationData data;
EEPROM::instance().readStationData(data);
Event *reply = EventPool::instance().newEvent(RESPONSE_EVENT);
reply->response.success = true;
sprintf(reply->response.data, "%lu", data.mmsi);
EventQueue::instance().push(reply);
}
void CommandProcessor::returnCallSign()
{
StationData data;
EEPROM::instance().readStationData(data);
Event *reply = EventPool::instance().newEvent(RESPONSE_EVENT);
reply->response.success = true;
sprintf(reply->response.data, "%s", data.callsign);
EventQueue::instance().push(reply);
}
void CommandProcessor::returnName()
{
StationData data;
EEPROM::instance().readStationData(data);
Event *reply = EventPool::instance().newEvent(RESPONSE_EVENT);
reply->response.success = true;
sprintf(reply->response.data, "%s", data.name);
EventQueue::instance().push(reply);
}
void CommandProcessor::returnBeam()
{
StationData data;
EEPROM::instance().readStationData(data);
Event *reply = EventPool::instance().newEvent(RESPONSE_EVENT);
reply->response.success = true;
sprintf(reply->response.data, "%d", data.beam);
EventQueue::instance().push(reply);
}
void CommandProcessor::returnLength()
{
StationData data;
EEPROM::instance().readStationData(data);
Event *reply = EventPool::instance().newEvent(RESPONSE_EVENT);
reply->response.success = true;
sprintf(reply->response.data, "%d", data.len);
EventQueue::instance().push(reply);
}
void CommandProcessor::returnMode()
{
}
void CommandProcessor::returnVesselData()
{
StationData data;
EEPROM::instance().readStationData(data);
Event *reply = EventPool::instance().newEvent(RESPONSE_EVENT);
reply->response.success = true;
sprintf(reply->response.data, "%lu,%s,%s,%d,%d", data.mmsi, data.name, data.callsign, data.beam, data.len);
EventQueue::instance().push(reply);
}
void CommandProcessor::returnStatus()
{
}
void CommandProcessor::setMMSI(uint32_t mmsi)
{
StationData data;
EEPROM::instance().readStationData(data);
data.mmsi = mmsi;
EEPROM::instance().writeStationData(data);
sendEmptyReply(true);
}
void CommandProcessor::setName(const char* name)
{
StationData data;
EEPROM::instance().readStationData(data);
strcpy(data.name, name);
EEPROM::instance().writeStationData(data);
sendEmptyReply(true);
}
void CommandProcessor::setCallSign(const char *callsign)
{
StationData data;
EEPROM::instance().readStationData(data);
strcpy(data.callsign, callsign);
EEPROM::instance().writeStationData(data);
sendEmptyReply(true);
}
void CommandProcessor::setBeam(uint8_t beam)
{
StationData data;
EEPROM::instance().readStationData(data);
data.beam = beam;
EEPROM::instance().writeStationData(data);
sendEmptyReply(true);
}
void CommandProcessor::setLength(uint8_t len)
{
StationData data;
EEPROM::instance().readStationData(data);
data.len = len;
EEPROM::instance().writeStationData(data);
sendEmptyReply(true);
}
void CommandProcessor::setVesselData(const char *s)
{
StationData data;
EEPROM::instance().readStationData(data);
int items = sscanf(s, "%lu,%s,%s,%cu,%cu", &data.mmsi, data.name, data.callsign, &data.beam, &data.len);
if ( items < 5 )
sendEmptyReply(false);
else {
EEPROM::instance().writeStationData(data);
sendEmptyReply(true);
}
}
void CommandProcessor::setMode(const char *mode)
{
if (strcmp (mode, "dfu") == 0)
{
FLASH_Unlock ();
FLASH_Status status = FLASH_WaitForLastOperation (FLASH_ER_PRG_TIMEOUT);
if ( status != FLASH_COMPLETE ) {
sendError("Unable to unlock flash");
return;
}
FLASH_ErasePage (METADATA_ADDRESS);
status = FLASH_WaitForLastOperation (FLASH_ER_PRG_TIMEOUT);
if ( status != FLASH_COMPLETE ) {
sendError("Unable to erase metadata page");
return;
}
FLASH_Lock ();
FLASH_WaitForLastOperation (FLASH_ER_PRG_TIMEOUT);
if ( status != FLASH_COMPLETE ) {
sendError("Unable to lock flash");
return;
}
//sendEmptyReply (true);
Event *e = EventPool::instance().newEvent(RESET_EVENT);
EventQueue::instance().push(e);
if (e.type == RESET_EVENT) {
NVIC_SystemReset ();
return;
}
switch (e.request.operation) {
case OP_GET:
if (strcmp (e.request.field, "mmsi") == 0)
returnMMSI ();
else if (strcmp (e.request.field, "name") == 0)
returnName ();
else if (strcmp (e.request.field, "callsign") == 0)
returnCallSign ();
else if (strcmp (e.request.field, "beam") == 0)
returnBeam ();
else if (strcmp (e.request.field, "length") == 0)
returnLength ();
else if (strcmp (e.request.field, "mode") == 0)
returnMode ();
else if (strcmp (e.request.field, "vesseldata") == 0)
returnVesselData ();
else if (strcmp (e.request.field, "version") == 0)
returnVersion ();
else if (strcmp (e.request.field, "status") == 0)
returnStatus ();
else
sendError ("Unknown field");
break;
case OP_SET:
if (strcmp (e.request.field, "mmsi") == 0)
setMMSI (atoi (e.request.value));
else if (strcmp (e.request.field, "name") == 0)
setName (e.request.value);
else if (strcmp (e.request.field, "callsign") == 0)
setCallSign (e.request.value);
else if (strcmp (e.request.field, "beam") == 0)
setBeam (atoi (e.request.value));
else if (strcmp (e.request.field, "length") == 0)
setLength (atoi (e.request.value));
else if (strcmp (e.request.field, "mode") == 0)
setMode (e.request.value);
else if (strcmp (e.request.field, "vesseldata") == 0)
setVesselData (e.request.value);
else
sendError ("Unknown field");
break;
}
else if ( strcmp(mode, "rx") == 0 ) {
StationData data;
EEPROM::instance().readStationData(data);
data.flags |= STATION_RX_ONLY;
EEPROM::instance().writeStationData(data);
sendEmptyReply(true);
}
else if ( strcmp(mode, "trx") == 0 ) {
StationData data;
EEPROM::instance().readStationData(data);
data.flags &= ~(STATION_RX_ONLY);
EEPROM::instance().writeStationData(data);
sendEmptyReply(true);
}
else
sendError("Unrecognized mode");
}
void
CommandProcessor::sendError(const char *err)
{
Event *reply = EventPool::instance ().newEvent (RESPONSE_EVENT);
reply->response.success = false;
strcpy (reply->response.data, err);
EventQueue::instance ().push (reply);
}
void
CommandProcessor::sendEmptyReply(bool success)
{
Event *reply = EventPool::instance ().newEvent (RESPONSE_EVENT);
reply->response.success = success;
reply->response.data[0] = 0;
EventQueue::instance ().push (reply);
}
void
CommandProcessor::returnVersion()
{
Event *reply = EventPool::instance ().newEvent (RESPONSE_EVENT);
reply->response.success = true;
strcpy (reply->response.data, REVISION);
EventQueue::instance ().push (reply);
}
void
CommandProcessor::returnMMSI()
{
StationData data;
EEPROM::instance ().readStationData (data);
Event *reply = EventPool::instance ().newEvent (RESPONSE_EVENT);
reply->response.success = true;
sprintf (reply->response.data, "%lu", data.mmsi);
EventQueue::instance ().push (reply);
}
void
CommandProcessor::returnCallSign()
{
StationData data;
EEPROM::instance ().readStationData (data);
Event *reply = EventPool::instance ().newEvent (RESPONSE_EVENT);
reply->response.success = true;
sprintf (reply->response.data, "%s", data.callsign);
EventQueue::instance ().push (reply);
}
void
CommandProcessor::returnName()
{
StationData data;
EEPROM::instance ().readStationData (data);
Event *reply = EventPool::instance ().newEvent (RESPONSE_EVENT);
reply->response.success = true;
sprintf (reply->response.data, "%s", data.name);
EventQueue::instance ().push (reply);
}
void
CommandProcessor::returnBeam()
{
StationData data;
EEPROM::instance ().readStationData (data);
Event *reply = EventPool::instance ().newEvent (RESPONSE_EVENT);
reply->response.success = true;
sprintf (reply->response.data, "%d", data.beam);
EventQueue::instance ().push (reply);
}
void
CommandProcessor::returnLength()
{
StationData data;
EEPROM::instance ().readStationData (data);
Event *reply = EventPool::instance ().newEvent (RESPONSE_EVENT);
reply->response.success = true;
sprintf (reply->response.data, "%d", data.len);
EventQueue::instance ().push (reply);
}
void
CommandProcessor::returnMode()
{
}
void
CommandProcessor::returnVesselData()
{
StationData data;
EEPROM::instance ().readStationData (data);
Event *reply = EventPool::instance ().newEvent (RESPONSE_EVENT);
reply->response.success = true;
sprintf (reply->response.data, "%lu,%s,%s,%d,%d", data.mmsi, data.name,
data.callsign, data.beam, data.len);
EventQueue::instance ().push (reply);
}
void
CommandProcessor::returnStatus()
{
}
void
CommandProcessor::setMMSI(uint32_t mmsi)
{
StationData data;
EEPROM::instance ().readStationData (data);
data.mmsi = mmsi;
EEPROM::instance ().writeStationData (data);
sendEmptyReply (true);
}
void
CommandProcessor::setName(const char* name)
{
StationData data;
EEPROM::instance ().readStationData (data);
strncpy (data.name, name, sizeof data.name);
EEPROM::instance ().writeStationData (data);
sendEmptyReply (true);
}
void
CommandProcessor::setCallSign(const char *callsign)
{
StationData data;
EEPROM::instance ().readStationData (data);
strncpy (data.callsign, callsign, sizeof data.callsign);
EEPROM::instance ().writeStationData (data);
sendEmptyReply (true);
}
void
CommandProcessor::setBeam(uint8_t beam)
{
StationData data;
EEPROM::instance ().readStationData (data);
data.beam = beam;
EEPROM::instance ().writeStationData (data);
sendEmptyReply (true);
}
void
CommandProcessor::setLength(uint8_t len)
{
StationData data;
EEPROM::instance ().readStationData (data);
data.len = len;
EEPROM::instance ().writeStationData (data);
sendEmptyReply (true);
}
void
CommandProcessor::setVesselData(const char *s)
{
StationData data;
EEPROM::instance ().readStationData (data);
/*
* TODO: Add to/from CSV methods in StationData and use tokenization instead of sscanf()
*/
int items = sscanf (s, "%lu,%s,%s,%cu,%cu", &data.mmsi, data.name, data.callsign, &data.beam, &data.len);
if (items < 5)
sendEmptyReply (false);
else {
EEPROM::instance ().writeStationData (data);
sendEmptyReply (true);
}
}
void
CommandProcessor::setMode(const char *mode)
{
if (strcmp (mode, "dfu") == 0) {
FLASH_Unlock ();
FLASH_Status status = FLASH_WaitForLastOperation (FLASH_ER_PRG_TIMEOUT);
if (status != FLASH_COMPLETE) {
sendError ("Unable to unlock flash");
return;
}
FLASH_ErasePage (METADATA_ADDRESS);
status = FLASH_WaitForLastOperation (FLASH_ER_PRG_TIMEOUT);
if (status != FLASH_COMPLETE) {
sendError ("Unable to erase metadata page");
return;
}
FLASH_Lock ();
FLASH_WaitForLastOperation (FLASH_ER_PRG_TIMEOUT);
if (status != FLASH_COMPLETE) {
sendError ("Unable to lock flash");
return;
}
/*
* UART takes a while to send reply, so unless we add considerable delay here, it won't make it before MCU reset
*/
//sendEmptyReply (true);
Event *e = EventPool::instance ().newEvent (RESET_EVENT);
EventQueue::instance ().push (e);
}
else if (strcmp (mode, "rx") == 0) {
StationData data;
EEPROM::instance ().readStationData (data);
data.flags |= STATION_RX_ONLY;
EEPROM::instance ().writeStationData (data);
sendEmptyReply (true);
}
else if (strcmp (mode, "trx") == 0) {
StationData data;
EEPROM::instance ().readStationData (data);
data.flags &= ~(STATION_RX_ONLY);
EEPROM::instance ().writeStationData (data);
sendEmptyReply (true);
}
else
sendError ("Unrecognized mode");
}

View File

@ -57,11 +57,13 @@ void EventQueue::dispatch()
if (mQueue->pop(e)) {
for ( map<EventConsumer*, uint32_t>::iterator c = mConsumers.begin(); c != mConsumers.end(); ++c ) {
// Utils::delay(1000);
if ( c->second & e->type )
c->first->processEvent(*e);
}
EventPool::instance().deleteEvent(e);
// TODO: Make LEDManager an EventConsumer instead
if ( e->type == AIS_PACKET_EVENT )
LEDManager::instance().blink(LEDManager::GREEN_LED);
}

View File

@ -65,7 +65,7 @@ void TXScheduler::processEvent(const Event &e)
if ( stationData.flags & STATION_RX_ONLY )
return;
// Using a moving average to determine transmission rate
// Using a moving average of SOG to determine transmission rate
double alpha = 0.2;
mAvgSpeed = mAvgSpeed * (1.0 - alpha) + e.gpsFix.speed * alpha;
@ -75,14 +75,13 @@ void TXScheduler::processEvent(const Event &e)
printf2("Unable to allocate TX packet for message 18, will try again later\r\n");
break;
}
AISMessage18 msg;
AISMessage18 msg;
msg.latitude = e.gpsFix.lat;
msg.longitude = e.gpsFix.lng;
msg.sog = e.gpsFix.speed;
msg.cog = e.gpsFix.cog;
msg.utc = e.gpsFix.utc;
msg.encode (stationData, *p1);
RadioManager::instance ().scheduleTransmission (p1);
@ -98,6 +97,7 @@ void TXScheduler::processEvent(const Event &e)
printf2("Unable to allocate TX packet for 24A\r\n");
break;
}
AISMessage24A msg2;
msg2.encode(stationData, *p2);
RadioManager::instance().scheduleTransmission(p2);