mirror of
https://github.com/peterantypas/maiana.git
synced 2025-05-28 05:10:40 -07:00
Improvements
This commit is contained in:
parent
9a8c13a9d9
commit
6243cdae95
@ -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=""../include""/>
|
||||
<listOptionValue builtIn="false" value=""../system/include""/>
|
||||
<listOptionValue builtIn="false" value=""../system/include/cmsis""/>
|
||||
<listOptionValue builtIn="false" value=""../system/include/stm32f3-stdperiph""/>
|
||||
</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=""../ldscripts""/>
|
||||
</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>
|
||||
|
@ -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 ' '
|
||||
|
||||
|
@ -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");
|
||||
}
|
||||
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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);
|
||||
|
Loading…
x
Reference in New Issue
Block a user