Imported Arthur Ketels' SOES (hg: ea7f05102d58)

pull/1/head
Mikael Heden 2014-09-12 16:01:33 +02:00
parent b006b7e088
commit fbe99a8ab7
99 changed files with 22904 additions and 2 deletions

25
LICENSE 100644
View File

@ -0,0 +1,25 @@
SOES Simple Open EtherCAT Slave
Copyright (C) 2007-2014 Arthur Ketels
Copyright (C) 2012-2014 rt-labs
SOES is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License version 2 as published by the Free
Software Foundation.
SOES is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
As a special exception, if other files instantiate templates or use macros
or inline functions from this file, or you compile this file and link it
with other works to produce a work based on this file, this file does not
by itself cause the resulting work to be covered by the GNU General Public
License. However the source code for this file must still be made available
in accordance with section (3) of the GNU General Public License.
This exception does not invalidate any other reasons why a work based on
this file might be covered by the GNU General Public License.
The EtherCAT Technology, the trade name and logo "EtherCAT" are the intellectual
property of, and protected by Beckhoff Automation GmbH.

View File

@ -1,4 +1,25 @@
soes
Simple Open Source EtherCAT Slave
====
Simple Open Source EtherCAT Slave
SOES (Simple OpenSource EtherCAT Slave Stack) is an opensource slave
stack that is very easy to use and provides a small footprint. It is a
good alternative to more complex stacks on the market.
Overview
----
SOES is an EtherCAT slave stack written in c. Its purpose is to learn and
to use. All users are invited to study the source to get an understanding
how an EtherCAT slave functions.
Features as of 1.0.0:
- Address offset based HAL for easy ESC read/write access via any
interface
- Mailbox with data link layer
- CoE
- Object dictionary
- SDO read and write for all sizes including segmented transfers
- Easy portable C-code suited for embedded applications
- Fixed PDO mapping
- FoE with bootstrap template
- Support for Little and Big endian targets.
- Polling for interrupts

View File

@ -0,0 +1,647 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?fileVersion 4.0.0?>
<cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
<storageModule moduleId="org.eclipse.cdt.core.settings">
<cconfiguration id="rtlabs.config.armeabi.exe.debug.395733966">
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="rtlabs.config.armeabi.exe.debug.395733966" moduleId="org.eclipse.cdt.core.settings" name="Debug">
<externalSettings/>
<extensions>
<extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
<extension id="org.eclipse.cdt.core.MakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
</extensions>
</storageModule>
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
<configuration artifactName="rtl_slavedemo" buildArtefactType="rtlabs.buildArtefactType.elf" buildProperties="org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.debug,org.eclipse.cdt.build.core.buildArtefactType=rtlabs.buildArtefactType.elf" cleanCommand="rm -rf" description="" id="rtlabs.config.armeabi.exe.debug.395733966" name="Debug" parent="rtlabs.config.armeabi.exe.debug" postbuildStep="rm &quot;${PWD}/ato.bin&quot;;${COMPILERS}/arm-eabi/bin/arm-eabi-objcopy -I elf32-littlearm -O binary -R .eeprom -R .swap &quot;${PWD}/rtl_slavedemo.elf&quot; &quot;${PWD}/ato.bin&quot;" prebuildStep="rm &quot;${PWD}/eeprom.o&quot;;${COMPILERS}/arm-eabi/bin/arm-eabi-objcopy -I binary -O elf32-littlearm -B ARM --rename-section .data=.eeprom &quot;${workspace_loc:/rtl_slavedemo/eeprom.bin}&quot; &quot;${PWD}/eeprom.o&quot;">
<folderInfo id="rtlabs.config.armeabi.exe.debug.395733966." name="/" resourcePath="">
<toolChain id="rtlabs.toolchain.armeabi.exe.debug.1947334985" name="arm-eabi-gcc" superClass="rtlabs.toolchain.armeabi.exe.debug">
<targetPlatform id="rtlabs.target.armeabi.platform.exe.debug.2112368015" name="Debug Platform" superClass="rtlabs.target.armeabi.platform.exe.debug"/>
<builder buildPath="${workspace_loc:/rtl_slavedemo/Debug}" id="rtlabs.target.armeabi.builder.exe.debug.102033655" keepEnvironmentInBuildfile="true" managedBuildOn="true" name="Gnu Make Builder" superClass="rtlabs.target.armeabi.builder.exe.debug"/>
<tool id="rtlabs.tool.armeabi.archiver.base.828057120" name="GCC Archiver" superClass="rtlabs.tool.armeabi.archiver.base"/>
<tool id="rtlabs.tool.armeabi.cpp.compiler.exe.debug.1051749048" name="GCC C++ Compiler" superClass="rtlabs.tool.armeabi.cpp.compiler.exe.debug">
<option id="rtlabs.cpp.compiler.option.optimization.level.249457712" name="Optimization Level" superClass="rtlabs.cpp.compiler.option.optimization.level" value="rtlabs.cpp.compiler.optimization.level.none" valueType="enumerated"/>
<option id="rtlabs.cpp.compiler.option.debugging.level.343225820" name="Debug Level" superClass="rtlabs.cpp.compiler.option.debugging.level" value="rtlabs.cpp.compiler.debugging.level.max" valueType="enumerated"/>
<option id="rtlabs.cpp.compiler.option.cputype.714333896" name="CPU type" superClass="rtlabs.cpp.compiler.option.cputype" value="cortex-m3" valueType="string"/>
<option id="rtlabs.cpp.compiler.option.fputype.1486047723" name="FPU type" superClass="rtlabs.cpp.compiler.option.fputype" value="vfp" valueType="string"/>
<option id="rtlabs.cpp.compiler.option.include.paths.1472643625" name="Include paths (-I)" superClass="rtlabs.cpp.compiler.option.include.paths" valueType="includePath">
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/ove}/include&quot;"/>
<listOptionValue builtIn="false" value="${RT_TOOLS}/rt-kernel-kinetis/include"/>
<listOptionValue builtIn="false" value="${RT_TOOLS}/rt-kernel-kinetis/include/arch/kinetis"/>
<listOptionValue builtIn="false" value="${RT_TOOLS}/rt-kernel-kinetis/include/kern"/>
<listOptionValue builtIn="false" value="${RT_TOOLS}/rt-kernel-kinetis/include/drivers"/>
<listOptionValue builtIn="false" value="${RT_TOOLS}/rt-kernel-kinetis/lwip/src/include"/>
<listOptionValue builtIn="false" value="${RT_TOOLS}/rt-kernel-kinetis/lwip/src/include/ipv4"/>
</option>
</tool>
<tool id="rtlabs.tool.armeabi.c.compiler.exe.debug.1114475996" name="GCC C Compiler" superClass="rtlabs.tool.armeabi.c.compiler.exe.debug">
<option defaultValue="rtlabs.c.optimization.level.none" id="rtlabs.c.compiler.option.optimization.level.2064772374" name="Optimization Level" superClass="rtlabs.c.compiler.option.optimization.level" value="rtlabs.c.optimization.level.size" valueType="enumerated"/>
<option id="rtlabs.c.compiler.option.debugging.level.2008882753" name="Debug Level" superClass="rtlabs.c.compiler.option.debugging.level" value="rtlabs.c.debugging.level.max" valueType="enumerated"/>
<option id="rtlabs.c.compiler.option.cputype.223737472" name="CPU type" superClass="rtlabs.c.compiler.option.cputype" value="cortex-m3" valueType="string"/>
<option id="rtlabs.c.compiler.option.fputype.730016496" name="FPU type" superClass="rtlabs.c.compiler.option.fputype" value="vfp" valueType="string"/>
<option id="rtlabs.c.compiler.option.include.paths.524058080" name="Include paths (-I)" superClass="rtlabs.c.compiler.option.include.paths" valueType="includePath">
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/k60/include}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/soes}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/soes_hw}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${RT_TOOLS}/rt-kernel-kinetis/include&quot;"/>
<listOptionValue builtIn="false" value="&quot;${RT_TOOLS}/rt-kernel-kinetis/include/kern&quot;"/>
<listOptionValue builtIn="false" value="&quot;${RT_TOOLS}/rt-kernel-kinetis/include/arch/kinetis&quot;"/>
<listOptionValue builtIn="false" value="&quot;${RT_TOOLS}/rt-kernel-kinetis/include/drivers&quot;"/>
<listOptionValue builtIn="false" value="&quot;${RT_TOOLS}/rt-kernel-kinetis/lwip/src/include&quot;"/>
<listOptionValue builtIn="false" value="&quot;${RT_TOOLS}/rt-kernel-kinetis/lwip/src/include/ipv4&quot;"/>
</option>
<inputType id="rtlabs.tool.armeabi.c.compiler.input.1221496616" superClass="rtlabs.tool.armeabi.c.compiler.input"/>
</tool>
<tool id="rtlabs.tool.armeabi.c.linker.exe.debug.638005762" name="GCC C Linker" superClass="rtlabs.tool.armeabi.c.linker.exe.debug">
<option id="rtlabs.c.link.option.ldflags.408960093" name="Linker flags" superClass="rtlabs.c.link.option.ldflags" value="-Wl,--no-wchar-size-warning" valueType="string"/>
<option id="rtlabs.c.link.option.cputype.85664596" name="CPU type" superClass="rtlabs.c.link.option.cputype" value="cortex-m3" valueType="string"/>
<option id="rtlabs.c.link.option.fputype.1797478635" name="FPU type" superClass="rtlabs.c.link.option.fputype" value="vfp" valueType="string"/>
<option id="rtlabs.c.link.option.paths.2085532064" name="Library search path (-L)" superClass="rtlabs.c.link.option.paths" valueType="libPaths">
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/soes_hw/Debug}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/k60/Debug}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/soes/Debug}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${RT_TOOLS}/rt-kernel-kinetis/lib/kinetis&quot;"/>
</option>
<option id="rtlabs.c.link.option.libs.1521365346" name="Libraries (-l)" superClass="rtlabs.c.link.option.libs" valueType="libs">
<listOptionValue builtIn="false" value="kinetis"/>
<listOptionValue builtIn="false" value="k60"/>
<listOptionValue builtIn="false" value="soes"/>
<listOptionValue builtIn="false" value="soes_hw"/>
<listOptionValue builtIn="false" value="kern"/>
<listOptionValue builtIn="false" value="dev"/>
<listOptionValue builtIn="false" value="sio"/>
<listOptionValue builtIn="false" value="spi"/>
<listOptionValue builtIn="false" value="fs"/>
<listOptionValue builtIn="false" value="block"/>
<listOptionValue builtIn="false" value="usb"/>
<listOptionValue builtIn="false" value="i2c"/>
<listOptionValue builtIn="false" value="nand"/>
<listOptionValue builtIn="false" value="lwip"/>
<listOptionValue builtIn="false" value="eth"/>
<listOptionValue builtIn="false" value="can"/>
<listOptionValue builtIn="false" value="c"/>
<listOptionValue builtIn="false" value="m"/>
</option>
<option id="rtlabs.c.link.option.script.1311257559" name="Link script file" superClass="rtlabs.c.link.option.script" valueType="stringList">
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/k60/k60.ld}&quot;"/>
</option>
<option id="rtlabs.c.link.option.userobjs.356017578" name="Other objects" superClass="rtlabs.c.link.option.userobjs" valueType="userObjs">
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/Debug/eeprom.o}&quot;"/>
</option>
<inputType id="rtlabs.tool.gnu.c.linker.input.1877908425" superClass="rtlabs.tool.gnu.c.linker.input">
<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
<additionalInput kind="additionalinput" paths="$(LIBS)"/>
</inputType>
</tool>
<tool id="rtlabs.tool.armeabi.cpp.linker.exe.debug.1238426046" name="GCC C++ Linker" superClass="rtlabs.tool.armeabi.cpp.linker.exe.debug">
<option id="rtlabs.cpp.link.option.ldflags.1307887381" name="Linker flags" superClass="rtlabs.cpp.link.option.ldflags" value="-Wl,--no-wchar-size-warning" valueType="string"/>
<option id="rtlabs.cpp.link.option.cputype.1088902481" name="CPU type" superClass="rtlabs.cpp.link.option.cputype" value="cortex-m3" valueType="string"/>
<option id="rtlabs.cpp.link.option.fputype.584534108" name="FPU type" superClass="rtlabs.cpp.link.option.fputype" value="vfp" valueType="string"/>
<option id="rtlabs.cpp.link.option.paths.364560952" name="Library search path (-L)" superClass="rtlabs.cpp.link.option.paths" valueType="libPaths">
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/ove}/Debug&quot;"/>
<listOptionValue builtIn="false" value="${RT_TOOLS}/rt-kernel-kinetis/lib/kinetis"/>
</option>
<option id="rtlabs.cpp.link.option.libs.1929680342" name="Libraries (-l)" superClass="rtlabs.cpp.link.option.libs" valueType="libs">
<listOptionValue builtIn="false" value="stdc++"/>
<listOptionValue builtIn="false" value="kinetis"/>
<listOptionValue builtIn="false" value="ove"/>
<listOptionValue builtIn="false" value="kern"/>
<listOptionValue builtIn="false" value="dev"/>
<listOptionValue builtIn="false" value="sio"/>
<listOptionValue builtIn="false" value="spi"/>
<listOptionValue builtIn="false" value="fs"/>
<listOptionValue builtIn="false" value="block"/>
<listOptionValue builtIn="false" value="usb"/>
<listOptionValue builtIn="false" value="i2c"/>
<listOptionValue builtIn="false" value="nand"/>
<listOptionValue builtIn="false" value="lwip"/>
<listOptionValue builtIn="false" value="eth"/>
<listOptionValue builtIn="false" value="can"/>
<listOptionValue builtIn="false" value="c"/>
<listOptionValue builtIn="false" value="m"/>
</option>
<option id="rtlabs.cpp.link.option.script.984932500" name="Link script file" superClass="rtlabs.cpp.link.option.script" valueType="stringList">
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/ove}/ove.ld&quot;"/>
</option>
</tool>
<tool id="rtlabs.tool.armeabi.assembler.exe.debug.1880588445" name="GCC Assembler" superClass="rtlabs.tool.armeabi.assembler.exe.debug">
<inputType id="rtlabs.tool.gnu.assembler.input.1792769864" superClass="rtlabs.tool.gnu.assembler.input"/>
</tool>
<tool id="rtlabs.tool.armeabi.tt_parse.base.1984127575" name="tt_parse" superClass="rtlabs.tool.armeabi.tt_parse.base"/>
<tool id="rtlabs.tool.armeabi.objcopy.base.394413101" name="GNU Objcopy" superClass="rtlabs.tool.armeabi.objcopy.base"/>
<tool id="rtlabs.tool.armeabi.report.base.1469820141" name="Report" superClass="rtlabs.tool.armeabi.report.base"/>
</toolChain>
</folderInfo>
</configuration>
</storageModule>
<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
<storageModule moduleId="org.eclipse.cdt.core.language.mapping"/>
<storageModule moduleId="org.eclipse.cdt.internal.ui.text.commentOwnerProjectMappings"/>
</cconfiguration>
<cconfiguration id="rtlabs.config.armeabi.exe.release.1352352209">
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="rtlabs.config.armeabi.exe.release.1352352209" moduleId="org.eclipse.cdt.core.settings" name="Release">
<externalSettings/>
<extensions>
<extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
<extension id="org.eclipse.cdt.core.MakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
</extensions>
</storageModule>
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
<configuration artifactName="rtl_slavedemo" buildArtefactType="rtlabs.buildArtefactType.elf" buildProperties="org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.release,org.eclipse.cdt.build.core.buildArtefactType=rtlabs.buildArtefactType.elf" cleanCommand="rm -rf" description="" id="rtlabs.config.armeabi.exe.release.1352352209" name="Release" parent="rtlabs.config.armeabi.exe.release">
<folderInfo id="rtlabs.config.armeabi.exe.release.1352352209." name="/" resourcePath="">
<toolChain id="rtlabs.toolchain.armeabi.exe.release.1613000513" name="arm-eabi-gcc" superClass="rtlabs.toolchain.armeabi.exe.release">
<targetPlatform id="rtlabs.target.armeabi.platform.exe.release.882410523" name="Debug Platform" superClass="rtlabs.target.armeabi.platform.exe.release"/>
<builder buildPath="${workspace_loc:/rtl_slavedemo/Release}" id="rtlabs.target.armeabi.builder.exe.release.753788263" keepEnvironmentInBuildfile="true" managedBuildOn="true" name="Gnu Make Builder" superClass="rtlabs.target.armeabi.builder.exe.release"/>
<tool id="rtlabs.tool.armeabi.archiver.base.1631529565" name="GCC Archiver" superClass="rtlabs.tool.armeabi.archiver.base"/>
<tool id="rtlabs.tool.armeabi.cpp.compiler.exe.release.1256478894" name="GCC C++ Compiler" superClass="rtlabs.tool.armeabi.cpp.compiler.exe.release">
<option id="rtlabs.cpp.compiler.option.optimization.level.2030419580" name="Optimization Level" superClass="rtlabs.cpp.compiler.option.optimization.level" value="rtlabs.cpp.compiler.optimization.level.size" valueType="enumerated"/>
<option id="rtlabs.cpp.compiler.option.debugging.level.268990636" name="Debug Level" superClass="rtlabs.cpp.compiler.option.debugging.level" value="rtlabs.cpp.compiler.debugging.level.none" valueType="enumerated"/>
<option id="rtlabs.cpp.compiler.option.cputype.3126851" name="CPU type" superClass="rtlabs.cpp.compiler.option.cputype" value="cortex-m3" valueType="string"/>
<option id="rtlabs.cpp.compiler.option.fputype.1684800354" name="FPU type" superClass="rtlabs.cpp.compiler.option.fputype" value="vfp" valueType="string"/>
<option id="rtlabs.cpp.compiler.option.include.paths.1144871232" name="Include paths (-I)" superClass="rtlabs.cpp.compiler.option.include.paths" valueType="includePath">
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/ove}/include&quot;"/>
<listOptionValue builtIn="false" value="${RT_TOOLS}/rt-kernel-kinetis/include"/>
<listOptionValue builtIn="false" value="${RT_TOOLS}/rt-kernel-kinetis/include/arch/kinetis"/>
<listOptionValue builtIn="false" value="${RT_TOOLS}/rt-kernel-kinetis/include/kern"/>
<listOptionValue builtIn="false" value="${RT_TOOLS}/rt-kernel-kinetis/include/drivers"/>
<listOptionValue builtIn="false" value="${RT_TOOLS}/rt-kernel-kinetis/lwip/src/include"/>
<listOptionValue builtIn="false" value="${RT_TOOLS}/rt-kernel-kinetis/lwip/src/include/ipv4"/>
</option>
</tool>
<tool id="rtlabs.tool.armeabi.c.compiler.exe.release.1284416823" name="GCC C Compiler" superClass="rtlabs.tool.armeabi.c.compiler.exe.release">
<option defaultValue="rtlabs.c.optimization.level.size" id="rtlabs.c.compiler.option.optimization.level.95318416" name="Optimization Level" superClass="rtlabs.c.compiler.option.optimization.level" valueType="enumerated"/>
<option id="rtlabs.c.compiler.option.debugging.level.988544186" name="Debug Level" superClass="rtlabs.c.compiler.option.debugging.level" value="rtlabs.c.debugging.level.none" valueType="enumerated"/>
<option id="rtlabs.c.compiler.option.cputype.323769041" name="CPU type" superClass="rtlabs.c.compiler.option.cputype" value="cortex-m3" valueType="string"/>
<option id="rtlabs.c.compiler.option.fputype.2056022512" name="FPU type" superClass="rtlabs.c.compiler.option.fputype" value="vfp" valueType="string"/>
<option id="rtlabs.c.compiler.option.include.paths.1287122596" name="Include paths (-I)" superClass="rtlabs.c.compiler.option.include.paths" valueType="includePath">
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/ove}/include&quot;"/>
<listOptionValue builtIn="false" value="${RT_TOOLS}/rt-kernel-kinetis/include"/>
<listOptionValue builtIn="false" value="${RT_TOOLS}/rt-kernel-kinetis/include/arch/kinetis"/>
<listOptionValue builtIn="false" value="${RT_TOOLS}/rt-kernel-kinetis/include/kern"/>
<listOptionValue builtIn="false" value="${RT_TOOLS}/rt-kernel-kinetis/include/drivers"/>
<listOptionValue builtIn="false" value="${RT_TOOLS}/rt-kernel-kinetis/lwip/src/include"/>
<listOptionValue builtIn="false" value="${RT_TOOLS}/rt-kernel-kinetis/lwip/src/include/ipv4"/>
</option>
<inputType id="rtlabs.tool.armeabi.c.compiler.input.340351101" superClass="rtlabs.tool.armeabi.c.compiler.input"/>
</tool>
<tool id="rtlabs.tool.armeabi.c.linker.exe.release.454342692" name="GCC C Linker" superClass="rtlabs.tool.armeabi.c.linker.exe.release">
<option id="rtlabs.c.link.option.ldflags.467514303" name="Linker flags" superClass="rtlabs.c.link.option.ldflags" value="-Wl,--no-wchar-size-warning" valueType="string"/>
<option id="rtlabs.c.link.option.cputype.1540269858" name="CPU type" superClass="rtlabs.c.link.option.cputype" value="cortex-m3" valueType="string"/>
<option id="rtlabs.c.link.option.fputype.2094434549" name="FPU type" superClass="rtlabs.c.link.option.fputype" value="vfp" valueType="string"/>
<option id="rtlabs.c.link.option.paths.1000360237" name="Library search path (-L)" superClass="rtlabs.c.link.option.paths" valueType="libPaths">
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/ove}/Release&quot;"/>
<listOptionValue builtIn="false" value="${RT_TOOLS}/rt-kernel-kinetis/lib/kinetis"/>
</option>
<option id="rtlabs.c.link.option.libs.1239220092" name="Libraries (-l)" superClass="rtlabs.c.link.option.libs" valueType="libs">
<listOptionValue builtIn="false" value="kinetis"/>
<listOptionValue builtIn="false" value="ove"/>
<listOptionValue builtIn="false" value="kern"/>
<listOptionValue builtIn="false" value="dev"/>
<listOptionValue builtIn="false" value="sio"/>
<listOptionValue builtIn="false" value="spi"/>
<listOptionValue builtIn="false" value="fs"/>
<listOptionValue builtIn="false" value="block"/>
<listOptionValue builtIn="false" value="usb"/>
<listOptionValue builtIn="false" value="i2c"/>
<listOptionValue builtIn="false" value="nand"/>
<listOptionValue builtIn="false" value="lwip"/>
<listOptionValue builtIn="false" value="eth"/>
<listOptionValue builtIn="false" value="can"/>
<listOptionValue builtIn="false" value="c"/>
<listOptionValue builtIn="false" value="m"/>
</option>
<option id="rtlabs.c.link.option.script.118766822" name="Link script file" superClass="rtlabs.c.link.option.script" valueType="stringList">
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/ove}/ove.ld&quot;"/>
</option>
<inputType id="rtlabs.tool.gnu.c.linker.input.920675075" superClass="rtlabs.tool.gnu.c.linker.input">
<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
<additionalInput kind="additionalinput" paths="$(LIBS)"/>
</inputType>
</tool>
<tool id="rtlabs.tool.armeabi.cpp.linker.exe.release.1478791944" name="GCC C++ Linker" superClass="rtlabs.tool.armeabi.cpp.linker.exe.release">
<option id="rtlabs.cpp.link.option.ldflags.1692703855" name="Linker flags" superClass="rtlabs.cpp.link.option.ldflags" value="-Wl,--no-wchar-size-warning" valueType="string"/>
<option id="rtlabs.cpp.link.option.cputype.2090075069" name="CPU type" superClass="rtlabs.cpp.link.option.cputype" value="cortex-m3" valueType="string"/>
<option id="rtlabs.cpp.link.option.fputype.615453550" name="FPU type" superClass="rtlabs.cpp.link.option.fputype" value="vfp" valueType="string"/>
<option id="rtlabs.cpp.link.option.paths.593397992" name="Library search path (-L)" superClass="rtlabs.cpp.link.option.paths" valueType="libPaths">
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/ove}/Release&quot;"/>
<listOptionValue builtIn="false" value="${RT_TOOLS}/rt-kernel-kinetis/lib/kinetis"/>
</option>
<option id="rtlabs.cpp.link.option.libs.1278432357" name="Libraries (-l)" superClass="rtlabs.cpp.link.option.libs" valueType="libs">
<listOptionValue builtIn="false" value="stdc++"/>
<listOptionValue builtIn="false" value="kinetis"/>
<listOptionValue builtIn="false" value="ove"/>
<listOptionValue builtIn="false" value="kern"/>
<listOptionValue builtIn="false" value="dev"/>
<listOptionValue builtIn="false" value="sio"/>
<listOptionValue builtIn="false" value="spi"/>
<listOptionValue builtIn="false" value="fs"/>
<listOptionValue builtIn="false" value="block"/>
<listOptionValue builtIn="false" value="usb"/>
<listOptionValue builtIn="false" value="i2c"/>
<listOptionValue builtIn="false" value="nand"/>
<listOptionValue builtIn="false" value="lwip"/>
<listOptionValue builtIn="false" value="eth"/>
<listOptionValue builtIn="false" value="can"/>
<listOptionValue builtIn="false" value="c"/>
<listOptionValue builtIn="false" value="m"/>
</option>
<option id="rtlabs.cpp.link.option.script.1267619008" name="Link script file" superClass="rtlabs.cpp.link.option.script" valueType="stringList">
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/ove}/ove.ld&quot;"/>
</option>
</tool>
<tool id="rtlabs.tool.armeabi.assembler.exe.release.896410211" name="GCC Assembler" superClass="rtlabs.tool.armeabi.assembler.exe.release">
<inputType id="rtlabs.tool.gnu.assembler.input.172476764" superClass="rtlabs.tool.gnu.assembler.input"/>
</tool>
<tool id="rtlabs.tool.armeabi.tt_parse.base.891080548" name="tt_parse" superClass="rtlabs.tool.armeabi.tt_parse.base"/>
<tool id="rtlabs.tool.armeabi.objcopy.base.204758544" name="GNU Objcopy" superClass="rtlabs.tool.armeabi.objcopy.base"/>
<tool id="rtlabs.tool.armeabi.report.base.1120133915" name="Report" superClass="rtlabs.tool.armeabi.report.base"/>
</toolChain>
</folderInfo>
</configuration>
</storageModule>
<storageModule moduleId="org.eclipse.cdt.core.externalSettings">
<externalSettings containerId="ove;rtlabs.config.armeabi.lib.release.1556439095" factoryId="org.eclipse.cdt.core.cfg.export.settings.sipplier"/>
</storageModule>
<storageModule moduleId="org.eclipse.cdt.core.language.mapping"/>
<storageModule moduleId="org.eclipse.cdt.internal.ui.text.commentOwnerProjectMappings"/>
</cconfiguration>
</storageModule>
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
<project id="rtl_slavedemo.rtlabs.target.armeabi.exe.482284409" name="Application" projectType="rtlabs.target.armeabi.exe"/>
</storageModule>
<storageModule moduleId="refreshScope"/>
<storageModule moduleId="scannerConfiguration">
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
<profile id="com.rtlabs.workbench.armeabi.armeabiManagedMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="${_COMPILERS}/arm-eabi/bin/arm-eabi-gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="com.rtlabs.workbench.bfinelf.BfinElfManagedMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="${_COMPILERS}/bfin-elf/bin/bfin-elf-gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="com.rtlabs.workbench.powerpceabi.PowerPCEABIManagedMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="${_COMPILERS}/powerpc-eabi/bin/powerpc-eabi-gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="com.rtlabs.workbench.powerpceabispe.PowerPCEABISPEManagedMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="${_COMPILERS}/powerpc-eabispe/bin/powerpc-eabispe-gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="makefileGenerator">
<runAction arguments="-E -P -v -dD" command="" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/${specs_file}&quot;'" command="sh" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-c 'g++ -E -P -v -dD &quot;${plugin_state_location}/specs.cpp&quot;'" command="sh" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/specs.c&quot;'" command="sh" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<scannerConfigBuildInfo instanceId="rtlabs.config.armeabi.exe.debug.395733966;rtlabs.config.armeabi.exe.debug.395733966.;rtlabs.tool.armeabi.c.compiler.exe.debug.1114475996;rtlabs.tool.armeabi.c.compiler.input.1221496616">
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.rtlabs.workbench.armeabi.armeabiManagedMakePerProjectProfile"/>
<profile id="com.rtlabs.workbench.armeabi.armeabiManagedMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="${_COMPILERS}/arm-eabi/bin/arm-eabi-gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="com.rtlabs.workbench.bfinelf.BfinElfManagedMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="${_COMPILERS}/bfin-elf/bin/bfin-elf-gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="com.rtlabs.workbench.powerpceabi.PowerPCEABIManagedMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="${_COMPILERS}/powerpc-eabi/bin/powerpc-eabi-gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="com.rtlabs.workbench.powerpceabispe.PowerPCEABISPEManagedMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="${_COMPILERS}/powerpc-eabispe/bin/powerpc-eabispe-gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="makefileGenerator">
<runAction arguments="-E -P -v -dD" command="" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/${specs_file}&quot;'" command="sh" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-c 'g++ -E -P -v -dD &quot;${plugin_state_location}/specs.cpp&quot;'" command="sh" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/specs.c&quot;'" command="sh" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
</scannerConfigBuildInfo>
<scannerConfigBuildInfo instanceId="rtlabs.config.armeabi.exe.release.1352352209;rtlabs.config.armeabi.exe.release.1352352209.;rtlabs.tool.armeabi.c.compiler.exe.release.1284416823;rtlabs.tool.armeabi.c.compiler.input.340351101">
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.rtlabs.workbench.armeabi.armeabiManagedMakePerProjectProfile"/>
<profile id="com.rtlabs.workbench.armeabi.armeabiManagedMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="${_COMPILERS}/arm-eabi/bin/arm-eabi-gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="com.rtlabs.workbench.bfinelf.BfinElfManagedMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="${_COMPILERS}/bfin-elf/bin/bfin-elf-gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="com.rtlabs.workbench.powerpceabi.PowerPCEABIManagedMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="${_COMPILERS}/powerpc-eabi/bin/powerpc-eabi-gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="com.rtlabs.workbench.powerpceabispe.PowerPCEABISPEManagedMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="${_COMPILERS}/powerpc-eabispe/bin/powerpc-eabispe-gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="makefileGenerator">
<runAction arguments="-E -P -v -dD" command="" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/${specs_file}&quot;'" command="sh" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-c 'g++ -E -P -v -dD &quot;${plugin_state_location}/specs.cpp&quot;'" command="sh" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/specs.c&quot;'" command="sh" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
</scannerConfigBuildInfo>
</storageModule>
</cproject>

View File

@ -0,0 +1,85 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>rtl_slavedemo</name>
<comment></comment>
<projects>
<project>soes</project>
<project>soes_hw</project>
<project>ove</project>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name>
<triggers>clean,full,incremental,</triggers>
<arguments>
<dictionary>
<key>?name?</key>
<value></value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.append_environment</key>
<value>true</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.autoBuildTarget</key>
<value>all</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.buildArguments</key>
<value></value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.buildCommand</key>
<value>make</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.buildLocation</key>
<value>${workspace_loc:/rtl_slavedemo/Debug}</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.cleanBuildTarget</key>
<value>clean</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.contents</key>
<value>org.eclipse.cdt.make.core.activeConfigSettings</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.enableAutoBuild</key>
<value>false</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.enableCleanBuild</key>
<value>true</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.enableFullBuild</key>
<value>true</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.fullBuildTarget</key>
<value>all</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.stopOnError</key>
<value>true</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.useDefaultBuildCmd</key>
<value>true</value>
</dictionary>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>
<triggers>full,incremental,</triggers>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.cdt.core.cnature</nature>
<nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
<nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
</natures>
</projectDescription>

View File

@ -0,0 +1,20 @@
#Thu Apr 19 14:23:36 CEST 2012
eclipse.preferences.version=1
org.eclipse.cdt.codan.checkers.errnoreturn=Warning
org.eclipse.cdt.codan.checkers.errnoreturn.params={fileScope\=>inclusion\=>(),exclusion\=>(),implicit\=>false}
org.eclipse.cdt.codan.checkers.errreturnvalue=Error
org.eclipse.cdt.codan.checkers.errreturnvalue.params={fileScope\=>inclusion\=>(),exclusion\=>()}
org.eclipse.cdt.codan.checkers.noreturn=Error
org.eclipse.cdt.codan.checkers.noreturn.params={fileScope\=>inclusion\=>(),exclusion\=>(),implicit\=>false}
org.eclipse.cdt.codan.internal.checkers.AssignmentInConditionProblem=Warning
org.eclipse.cdt.codan.internal.checkers.AssignmentInConditionProblem.params={fileScope\=>inclusion\=>(),exclusion\=>()}
org.eclipse.cdt.codan.internal.checkers.CatchByReference=Warning
org.eclipse.cdt.codan.internal.checkers.CatchByReference.params={fileScope\=>inclusion\=>(),exclusion\=>(),unknown\=>false,exceptions\=>()}
org.eclipse.cdt.codan.internal.checkers.NamingConventionFunctionChecker=-Info
org.eclipse.cdt.codan.internal.checkers.NamingConventionFunctionChecker.params={fileScope\=>inclusion\=>(),exclusion\=>(),pattern\=>"^[a-z]"}
org.eclipse.cdt.codan.internal.checkers.NonVirtualDestructorProblem=Warning
org.eclipse.cdt.codan.internal.checkers.NonVirtualDestructorProblem.params={fileScope\=>inclusion\=>(),exclusion\=>()}
org.eclipse.cdt.codan.internal.checkers.StatementHasNoEffectProblem=Warning
org.eclipse.cdt.codan.internal.checkers.StatementHasNoEffectProblem.params={fileScope\=>inclusion\=>(),exclusion\=>(),macro\=>true,exceptions\=>()}
org.eclipse.cdt.codan.internal.checkers.SuggestedParenthesisProblem=Warning
org.eclipse.cdt.codan.internal.checkers.SuggestedParenthesisProblem.params={fileScope\=>inclusion\=>(),exclusion\=>(),paramNot\=>false}

View File

@ -0,0 +1,26 @@
#Thu May 03 13:45:19 CEST 2012
eclipse.preferences.version=1
environment/project/rtlabs.config.armeabi.exe.debug.395733966.824490108/COMPILERS/delimiter=\:
environment/project/rtlabs.config.armeabi.exe.debug.395733966.824490108/COMPILERS/operation=append
environment/project/rtlabs.config.armeabi.exe.debug.395733966.824490108/COMPILERS/value=${_COMPILERS}
environment/project/rtlabs.config.armeabi.exe.debug.395733966.824490108/RT_TOOLS/delimiter=\:
environment/project/rtlabs.config.armeabi.exe.debug.395733966.824490108/RT_TOOLS/operation=append
environment/project/rtlabs.config.armeabi.exe.debug.395733966.824490108/RT_TOOLS/value=${_RT_TOOLS}
environment/project/rtlabs.config.armeabi.exe.debug.395733966.824490108/append=true
environment/project/rtlabs.config.armeabi.exe.debug.395733966.824490108/appendContributed=true
environment/project/rtlabs.config.armeabi.exe.debug.395733966/COMPILERS/delimiter=\:
environment/project/rtlabs.config.armeabi.exe.debug.395733966/COMPILERS/operation=append
environment/project/rtlabs.config.armeabi.exe.debug.395733966/COMPILERS/value=${_COMPILERS}
environment/project/rtlabs.config.armeabi.exe.debug.395733966/RT_TOOLS/delimiter=\:
environment/project/rtlabs.config.armeabi.exe.debug.395733966/RT_TOOLS/operation=append
environment/project/rtlabs.config.armeabi.exe.debug.395733966/RT_TOOLS/value=${_RT_TOOLS}
environment/project/rtlabs.config.armeabi.exe.debug.395733966/append=true
environment/project/rtlabs.config.armeabi.exe.debug.395733966/appendContributed=true
environment/project/rtlabs.config.armeabi.exe.release.1352352209/COMPILERS/delimiter=\:
environment/project/rtlabs.config.armeabi.exe.release.1352352209/COMPILERS/operation=append
environment/project/rtlabs.config.armeabi.exe.release.1352352209/COMPILERS/value=${_COMPILERS}
environment/project/rtlabs.config.armeabi.exe.release.1352352209/RT_TOOLS/delimiter=\:
environment/project/rtlabs.config.armeabi.exe.release.1352352209/RT_TOOLS/operation=append
environment/project/rtlabs.config.armeabi.exe.release.1352352209/RT_TOOLS/value=${_RT_TOOLS}
environment/project/rtlabs.config.armeabi.exe.release.1352352209/append=true
environment/project/rtlabs.config.armeabi.exe.release.1352352209/appendContributed=true

View File

@ -0,0 +1,43 @@
<?xml version="1.0"?>
<EtherCATInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="EtherCATInfo.xsd" Version="1.2">
<Vendor>
<Id>4919</Id>
<Name>rt-labs AB</Name>
</Vendor>
<Descriptions>
<Groups>
<Group>
<Type>ATENSLAVE</Type>
<Name>ATO</Name>
</Group>
</Groups>
<Devices>
<Device Physics="YY">
<Type ProductCode="#x12783456" RevisionNo="#x00000001">ATO sample application</Type>
<Name><![CDATA[ATEN-ATO output slave]]></Name>
<GroupType>ATENSLAVE</GroupType>
<Fmmu>Outputs</Fmmu>
<Fmmu>Inputs</Fmmu>
<Sm DefaultSize="128" StartAddress="#x1000" ControlByte="#x26" Enable="1">MBoxOut</Sm>
<Sm DefaultSize="128" StartAddress="#x1080" ControlByte="#x22" Enable="1">MBoxIn</Sm>
<Sm StartAddress="#x1100" ControlByte="#x24" Enable="1">Outputs</Sm>
<Sm StartAddress="#x1180" ControlByte="#x20" Enable="1">Inputs</Sm>
<Mailbox DataLinkLayer="true">
<CoE SdoInfo="true" CompleteAccess="false" PdoUpload="true"/>
</Mailbox>
<Dc>
<OpMode>
<Name>DcOff</Name>
<Desc>DC unused</Desc>
<AssignActivate>#x0000</AssignActivate>
</OpMode>
</Dc>
<Eeprom>
<ByteSize>2048</ByteSize>
<ConfigData>050E0306102700</ConfigData>
<BootStrap>0010800080108000</BootStrap>
</Eeprom>
</Device>
</Devices>
</Descriptions>
</EtherCATInfo>

View File

@ -0,0 +1,210 @@
/******************************************************************************
* * *** ***
* *** *** ***
* *** **** ********** *** ***** *** **** *****
* ********* ********** *** ********* ************ *********
* **** *** *** *** *** **** ***
* *** *** ****** *** *********** *** **** *****
* *** *** ****** *** ************* *** **** *****
* *** **** **** *** *** *** **** ***
* *** ******* ***** ************** ************* *********
* *** ***** *** ******* ** ** ****** *****
* t h e r e a l t i m e t a r g e t e x p e r t s
*
* http://www.rt-labs.com
* Copyright (C) 2012-2013. rt-labs AB, Sweden. All rights reserved.
*------------------------------------------------------------------------------
* $Id: bootstrap.c 522 2013-06-20 16:16:45Z rtlaka $
*------------------------------------------------------------------------------
*/
#include <kern.h>
#include <bsp.h>
//#include <twrk60.h>
#include <flash_drv.h>
#include "utypes.h"
#include "esc.h"
#include "esc_foe.h"
#include "osal.h"
#include "bootstrap.h"
#define ESC_DEBUG
#ifdef ESC_DEBUG
#define DPRINT(...) OSAL_PRINT ("bootstrap: "__VA_ARGS__)
#define DEBUG_ASSERT(expression) ASSERT(expression)
#else
#define DPRINT(...)
#define DEBUG_ASSERT(expression)
#endif /* DEBUG */
uint32_t local_boot_state = BOOT_IDLE;
static uint32_t boot_started = 0;
static uint32_t boot_watch_dog = 0;
static uint32_t boot_time_ms = BOOT_WATCHDOG_MS;
static uint32_t current_tick_ms;
/* Dummy values pointing to a flash writing area when updating Firmware */
#define FLASH_BLOCK_SIZE 256 * 1024
#define FLASH_SECTOR_SIZE 2048
#define FLASH_EEPROM_SECTIONS 2
void boot_soft_reset (void)
{
DPRINT ("boot_soft_reset\n");
}
void init_boothook (void)
{
DPRINT("osal_init_boothook\n");
local_boot_state = BOOT_START;
}
void boot_inithook (void)
{
if (local_boot_state == BOOT_FAILED)
{
DPRINT("osal_boot_inithook : BOOT failed\n");
local_boot_state = BOOT_IDLE;
}
else
{
DPRINT("osal_boot_inithook\n");
local_boot_state = BOOT_SWAP;
}
}
uint32 flash_foe_buffer (foe_writefile_cfg_t * self, uint8 * data)
{
uint32 flash_cmd_failed = 0;
uint32 calculated_address = self->dest_start_address + self->address_offset;
/* This part is Cortex M4 Kinetis specific therefore placed in Hooks*/
/* Erase every new sector we enter by looking at modulo sector size */
if ( (calculated_address % FLASH_SECTOR_SIZE) == 0)
{
//FIXME: flash_cmd_failed = flash_drv_erase_sector (calculated_address);
DPRINT("flash_erase_sector %x\n",calculated_address);
if(flash_cmd_failed)
{
DPRINT("flash_erase_sector %x\n",calculated_address);
}
}
/* Program flash */
if (!flash_cmd_failed)
{
//FIXME: flash_cmd_failed = flash_drv_program_longword (calculated_address, data);
if(flash_cmd_failed)
{
DPRINT("flash_program_failed %x\n",calculated_address);
}
}
/* Check the newly programmed flash */
if (!flash_cmd_failed)
{
flash_cmd_failed = flash_drv_program_check (calculated_address,
FTFL_USER_MARGIN, data);
if(flash_cmd_failed)
{
DPRINT("flash_check failed at %x\n",calculated_address);
}
}
return flash_cmd_failed;
}
void bootstrap_foe_init (void)
{
/* Imported linker script variable
* extern uint32_t flash_start;
*/
/* This part is Cortex M4 Kinetis specific therefore placed in Hooks*/
static foe_writefile_cfg_t files[] =
{
{
.name = "ato.bin",
.max_data = FLASH_BLOCK_SIZE,
.dest_start_address = FLASH_BLOCK_SIZE + 0, /* + (uint32_t)&flash_start,*/
.address_offset = 0,
.filepass = 0,
.write_function = flash_foe_buffer /* NULL if not used */
},
{
.name = "eeprom.bin",
.max_data = FLASH_SECTOR_SIZE,
.dest_start_address = (2 * FLASH_BLOCK_SIZE) -
(FLASH_EEPROM_SECTIONS * FLASH_SECTOR_SIZE),
.address_offset = 0,
.filepass = 0,
.write_function = flash_foe_buffer /* NULL if not used */
},
};
static uint8 fbuf[FLASH_WRITE_BLOCK_SIZE];
static foe_cfg_t config =
{
.buffer_size = FLASH_WRITE_BLOCK_SIZE, /* Buffer size before we flush to destination */
.fbuffer = (uint8 *)&fbuf,
.empty_write = 0xFF,
.n_files = NELEMENTS (files),
.files = files
};
FOE_config ((foe_cfg_t *)&config, (foe_writefile_cfg_t *)&files);
}
void bootstrap_state (void)
{
switch (local_boot_state)
{
/* BOOT_START is set from Init->Boot hook called from ESC_state */
case BOOT_START:
{
local_boot_state = BOOT_UPDATING;
boot_started = tick_to_ms (tick_get ());
boot_watch_dog = boot_started + boot_time_ms;
DPRINT ("boot_started: %d, boot_watch_dog: %d\n",boot_started,boot_watch_dog);
break;
}
case BOOT_UPDATING:
{
current_tick_ms = tick_to_ms (tick_get ());
if (boot_watch_dog < current_tick_ms)
{
local_boot_state = BOOT_FAILED;
DPRINT ("boot failed at: %d\n",current_tick_ms);
}
break;
}
case BOOT_SWAP:
{
/* BOOT_SWAP is set from Boot->Init hook called from ESC_state */
//FIXME:if (!boot_swap_flash ())
/*FIXME:*/if (1)
{
/* IF it went OK we'll trigger BOOT_RESET */
local_boot_state = BOOT_RESET;
}
else
{
DPRINT ("boot_swap_failed\n");
local_boot_state = BOOT_FAILED;
}
break;
}
case BOOT_RESET:
{
/* BOOT_RESET is set from Boot->Init hook called from ESC_state */
local_boot_state = BOOT_IDLE;
boot_soft_reset();
break;
}
case BOOT_FAILED:
default:
break;
}
}

View File

@ -0,0 +1,38 @@
/******************************************************************************
* * *** ***
* *** *** ***
* *** **** ********** *** ***** *** **** *****
* ********* ********** *** ********* ************ *********
* **** *** *** *** *** **** ***
* *** *** ****** *** *********** *** **** *****
* *** *** ****** *** ************* *** **** *****
* *** **** **** *** *** *** **** ***
* *** ******* ***** ************** ************* *********
* *** ***** *** ******* ** ** ****** *****
* t h e r e a l t i m e t a r g e t e x p e r t s
*
* http://www.rt-labs.com
* Copyright (C) 2012-2013. rt-labs AB, Sweden. All rights reserved.
*------------------------------------------------------------------------------
* $Id: bootstrap.h 522 2013-06-20 16:16:45Z rtlaka $
*------------------------------------------------------------------------------
*/
#ifndef _bootstrap_
#define _bootstrap_
#define BOOT_IDLE 0
#define BOOT_START 1
#define BOOT_UPDATING 2
#define BOOT_SWAP 3
#define BOOT_RESET 4
#define BOOT_FAILED 99
#define BOOT_WATCHDOG_MS 20 * 1000
void bootstrap_foe_init (void);
void bootstrap_state (void);
void boot_inithook (void);
void init_boothook (void);
#endif

Binary file not shown.

View File

@ -0,0 +1,193 @@
/******************************************************************************
* * *** ***
* *** *** ***
* *** **** ********** *** ***** *** **** *****
* ********* ********** *** ********* ************ *********
* **** *** *** *** *** **** ***
* *** *** ****** *** *********** *** **** *****
* *** *** ****** *** ************* *** **** *****
* *** **** **** *** *** *** **** ***
* *** ******* ***** ************** ************* *********
* *** ***** *** ******* ** ** ****** *****
* t h e r e a l t i m e t a r g e t e x p e r t s
*
* http://www.rt-labs.com
* Copyright (C) 2012-2013. rt-labs AB, Sweden. All rights reserved.
*------------------------------------------------------------------------------
* $Id: led_handler.c 522 2013-06-20 16:16:45Z rtlaka $
*------------------------------------------------------------------------------
*/
#include <kern.h>
#include <bsp.h>
#include "utypes.h"
#include "esc.h"
#include "bootstrap.h"
extern uint32_t local_boot_state;
#define GPIO_LED_RED 1 /* Dummy GPIO number, suppose to be real GPIO pin for LED */
enum led_flash
{ OFF, ON, FLICKER, BLINK, SINGLE_FLASH, DOUBLE_FLASH, INVERTED_DOUBLE_FLASH,
TRIPLE_FLASH };
void led_handler(uint32_t led_state, uint32_t led_number)
{
switch (led_state)
{
case OFF:
{
gpio_set (led_number, 1);
task_delay (tick_from_ms (1000));
break;
}
case ON:
{
gpio_set (led_number, 0);
task_delay (tick_from_ms (1000));
break;
}
case FLICKER:
{
gpio_set (led_number, 0);
task_delay (tick_from_ms (50));
gpio_set (led_number, 1);
task_delay (tick_from_ms (50));
break;
}
case BLINK:
{
gpio_set (led_number, 0);
task_delay (tick_from_ms (200));
gpio_set (led_number, 1);
task_delay (tick_from_ms (200));
break;
}
case SINGLE_FLASH:
{
gpio_set (led_number, 0);
task_delay (tick_from_ms (200));
gpio_set (led_number, 1);
task_delay (tick_from_ms (1000));
break;
}
case DOUBLE_FLASH:
{
gpio_set (led_number, 0);
task_delay (tick_from_ms (200));
gpio_set (led_number, 1);
task_delay (tick_from_ms (200));
gpio_set (led_number, 0);
task_delay (tick_from_ms (200));
gpio_set (led_number, 1);
task_delay (tick_from_ms (1000));
break;
}
case INVERTED_DOUBLE_FLASH:
case TRIPLE_FLASH:
default:
{
task_delay (tick_from_ms (1000));
break;
}
}
}
void led_run (void *arg)
{
uint16_t al_status;
enum led_flash led_state = OFF;
for (;;)
{
/* Led states according to ETG1300 IndicatorLabelingSpecification
* RUN led task only used if not ESC pin is connected.
*/
al_status = ESCvar.ALstatus & 0x1f;
if (al_status & ESCop)
{
led_state = ON;
}
else if (al_status & ESCinit)
{
led_state = OFF;
}
else if (al_status & ESCpreop)
{
led_state = BLINK;
}
else if (al_status & ESCsafeop)
{
led_state = SINGLE_FLASH;
}
else if (al_status & ESCboot)
{
led_state = FLICKER;
}
else
{
led_state = OFF;
}
led_handler (led_state, GPIO_LED_RED);
}
}
void led_error (void *arg)
{
uint16_t al_status,al_status_code;
enum led_flash led_state = OFF;
for (;;)
{
/* Led states according to ETG1300 IndicatorLabelingSpecification */
al_status = ESCvar.ALstatus & 0x001f;
al_status_code = ESCvar.ALerror;
/* Note: Flicker is defined blow aswell
* Capture APPLICATION errors that happend during boot
*/
if ((al_status & ESCboot) && (local_boot_state == BOOT_FAILED))
{
led_state = FLICKER;
}
/* The AL status code == No error or NO AL status Error Indication
* of not entered the requested starte
*/
else if (al_status_code == 0x00 || !(al_status & 0x10))
{
led_state = OFF;
}
/* 0x002D No Sync Error
* 0x0032 PLL error
*/
else if (al_status_code == 0x2D || al_status_code == 0x32 )
{
led_state = SINGLE_FLASH;
}
/* 0x001B SyncManager watchdog */
else if (al_status_code == 0x1B )
{
led_state = DOUBLE_FLASH;
}
/* Booting error, Init state reached but Error Indicator bit is set
* to 1 in Al Status
* Application BOOT information, fail or not
*/
else if (al_status & (ESCinit | ESCerror))
{
led_state = FLICKER;
}
/* Invalid Configuration, General configuration change
* We'll end here at last if we got errors in ALstatus
*/
else
{
led_state = BLINK;
}
led_handler (led_state,GPIO_LED_RED);
}
}

View File

@ -0,0 +1,36 @@
/******************************************************************************
* * *** ***
* *** *** ***
* *** **** ********** *** ***** *** **** *****
* ********* ********** *** ********* ************ *********
* **** *** *** *** *** **** ***
* *** *** ****** *** *********** *** **** *****
* *** *** ****** *** ************* *** **** *****
* *** **** **** *** *** *** **** ***
* *** ******* ***** ************** ************* *********
* *** ***** *** ******* ** ** ****** *****
* t h e r e a l t i m e t a r g e t e x p e r t s
*
* http://www.rt-labs.com
* Copyright (C) 2012-2013. rt-labs AB, Sweden. All rights reserved.
*------------------------------------------------------------------------------
* $Id: main.c 522 2013-06-20 16:16:45Z rtlaka $
*------------------------------------------------------------------------------
*/
#include <kern.h>
int main(void)
{
extern void led_run (void *arg);
extern void led_error (void *arg);
extern void soes (void *arg);
extern void my_cyclic_callback (void * arg);
/* task_spawn ("led_run", led_run, 15, 512, NULL); */
task_spawn ("led_error", led_error, 15, 512, NULL);
task_spawn ("t_StatsPrint", my_cyclic_callback, 20, 1024, (void *)NULL);
task_spawn ("soes", soes, 8, 1024, NULL);
return (0);
}

View File

@ -0,0 +1,236 @@
/*
* SOES Simple Open EtherCAT Slave
*
* File : objectlist.h
* Version : 0.9.2
* Date : 22-02-2010
* Copyright (C) 2007-2013 Arthur Ketels
*
* SOES is free software; you can redistribute it and/or modify it under
* the terms of the GNU General Public License version 2 as published by the Free
* Software Foundation.
*
* SOES is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* for more details.
*
* As a special exception, if other files instantiate templates or use macros
* or inline functions from this file, or you compile this file and link it
* with other works to produce a work based on this file, this file does not
* by itself cause the resulting work to be covered by the GNU General Public
* License. However the source code for this file must still be made available
* in accordance with section (3) of the GNU General Public License.
*
* This exception does not invalidate any other reasons why a work based on
* this file might be covered by the GNU General Public License.
*
* The EtherCAT Technology, the trade name and logo "EtherCAT" are the intellectual
* property of, and protected by Beckhoff Automation GmbH.
*/
/** \file
* \brief
* CoE Object Dictionary.
*
* Part of application, describe the slave and its process data.
*/
#ifndef __objectlist__
#define __objectlist__
typedef FLASHSTORE struct PACKED
{
uint16 subindex;
uint16 datatype;
uint16 bitlength;
uint16 access;
char FLASHSTORE *name;
uint32 value;
void *data;
} _objd;
typedef FLASHSTORE struct PACKED
{
uint16 index;
uint16 objtype;
uint8 maxsub;
uint8 pad1;
char FLASHSTORE *name;
_objd FLASHSTORE *objdesc;
} _objectlist;
#define OBJH_READ 0
#define OBJH_WRITE 1
#define _ac FLASHSTORE char
#define nil 0
#define OTYPE_DOMAIN 0x0002
#define OTYPE_DEFTYPE 0x0005
#define OTYPE_DEFSTRUCT 0x0006
#define OTYPE_VAR 0x0007
#define OTYPE_ARRAY 0x0008
#define OTYPE_RECORD 0x0009
#define DTYPE_BOOLEAN 0x0001
#define DTYPE_INTEGER8 0x0002
#define DTYPE_INTEGER16 0x0003
#define DTYPE_INTEGER32 0x0004
#define DTYPE_UNSIGNED8 0x0005
#define DTYPE_UNSIGNED16 0x0006
#define DTYPE_UNSIGNED32 0x0007
#define DTYPE_REAL32 0x0008
#define DTYPE_VISIBLE_STRING 0x0009
#define DTYPE_OCTET_STRING 0x000A
#define DTYPE_UNICODE_STRING 0x000B
#define DTYPE_INTEGER24 0x0010
#define DTYPE_UNSIGNED24 0x0016
#define DTYPE_INTEGER64 0x0015
#define DTYPE_UNSIGNED64 0x001B
#define DTYPE_REAL64 0x0011
#define DTYPE_PDO_MAPPING 0x0021
#define DTYPE_IDENTITY 0x0023
#define DTYPE_BIT1 0x0030
#define DTYPE_BIT2 0x0031
#define DTYPE_BIT3 0x0032
#define DTYPE_BIT4 0x0033
#define DTYPE_BIT5 0x0034
#define DTYPE_BIT6 0x0035
#define DTYPE_BIT7 0x0036
#define DTYPE_BIT8 0x0037
#define ATYPE_R 0x07
#define ATYPE_RW 0x3F
#define ATYPE_RWpre 0x0F
#define ATYPE_RXPDO 0x40
#define ATYPE_TXPDO 0x80
_ac acName1000[] = "Device Type";
_ac acName1008[] = "Manufacturer Device Name";
_ac acName1009[] = "Manufacturer Hardware Version";
_ac acName100A[] = "Manufacturer Software Version";
_ac acName1018[] = "Identity Object";
_ac acName1018_01[] = "Vendor ID";
_ac acName1018_02[] = "Product Code";
_ac acName1018_03[] = "Revision Number";
_ac acName1018_04[] = "Serial Number";
_ac acNameMO[] = "Mapped object";
_ac acName1600[] = "Receive PDO mapping";
_ac acName1A00[] = "Transmit PDO mapping";
_ac acName1C00[] = "Sync Manager Communication type";
_ac acName1C00_01[] = "Communications type SM0";
_ac acName1C00_02[] = "Communications type SM1";
_ac acName1C00_03[] = "Communications type SM2";
_ac acName1C00_04[] = "Communications type SM3";
_ac acName1C10[] = "Sync Manager 0 PDO Assignment";
_ac acName1C11[] = "Sync Manager 1 PDO Assignment";
_ac acName1C12[] = "Sync Manager 2 PDO Assignment";
_ac acName1C13[] = "Sync Manager 3 PDO Assignment";
_ac acNameNOE[] = "Number of entries";
_ac acName6000[] = "Digital Inputs";
_ac acName6000_01[] = "Button";
_ac acName6000_02[] = "Encoder";
_ac acName7000[] = "Digital outputs";
_ac acName7000_01[] = "LED";
_ac acName7100[] = "Parameters";
_ac acName7100_01[] = "Encoder scale";
_ac acName7100_02[] = "Encoder scale mirror";
_ac acName8001[] = "Slave commands";
_ac acName8001_01[] = "Reset counter";
//_ac acName[]="";
char ac1008_00[] = "SOES test application";
char ac1009_00[] = "0.0.2";
char ac100A_00[] = "0.9.3";
FLASHSTORE _objd SDO1000[] =
{ {0x00, DTYPE_UNSIGNED32, 32, ATYPE_R, &acName1000[0], 0x00000000, nil} };
FLASHSTORE _objd SDO1008[] =
{ {0x00, DTYPE_VISIBLE_STRING, sizeof (ac1008_00) << 3, ATYPE_R, &acName1008[0], 0, &ac1008_00[0]}
};
FLASHSTORE _objd SDO1009[] =
{ {0x00, DTYPE_VISIBLE_STRING, sizeof (ac1009_00) << 3, ATYPE_R, &acName1009[0], 0, &ac1009_00[0]}
};
FLASHSTORE _objd SDO100A[] =
{ {0x00, DTYPE_VISIBLE_STRING, sizeof (ac100A_00) << 3, ATYPE_R, &acName100A[0], 0, &ac100A_00[0]}
};
FLASHSTORE _objd SDO1018[] =
{ {0x00, DTYPE_UNSIGNED8, 8, ATYPE_R, &acNameNOE[0], 0x04, nil},
{0x01, DTYPE_UNSIGNED32, 32, ATYPE_R, &acName1018_01[0], 0x00001337, nil},
{0x02, DTYPE_UNSIGNED32, 32, ATYPE_R, &acName1018_02[0], 0x12783456, nil},
{0x03, DTYPE_UNSIGNED32, 32, ATYPE_R, &acName1018_03[0], 0x00000001, nil},
{0x04, DTYPE_UNSIGNED32, 32, ATYPE_R, &acName1018_04[0], 0x00000000, nil}
};
FLASHSTORE _objd SDO1600[] =
{ {0x00, DTYPE_UNSIGNED8, 8, ATYPE_R, &acNameNOE[0], 0x01, nil},
{0x01, DTYPE_UNSIGNED32, 32, ATYPE_R, &acNameMO[0], 0x70000108, nil}
};
FLASHSTORE _objd SDO1A00[] =
{ {0x00, DTYPE_UNSIGNED8, 8, ATYPE_R, &acNameNOE[0], 0x02, nil},
{0x01, DTYPE_UNSIGNED32, 32, ATYPE_R, &acNameMO[0], 0x60000108, nil},
{0x02, DTYPE_UNSIGNED32, 32, ATYPE_R, &acNameMO[0], 0x60000220, nil}
};
FLASHSTORE _objd SDO1C00[] =
{ {0x00, DTYPE_UNSIGNED8, 8, ATYPE_R, &acNameNOE[0], 0x04, nil},
{0x01, DTYPE_UNSIGNED8, 8, ATYPE_R, &acName1C00_01[0], 0x01, nil},
{0x02, DTYPE_UNSIGNED8, 8, ATYPE_R, &acName1C00_02[0], 0x02, nil},
{0x03, DTYPE_UNSIGNED8, 8, ATYPE_R, &acName1C00_03[0], 0x03, nil},
{0x04, DTYPE_UNSIGNED8, 8, ATYPE_R, &acName1C00_04[0], 0x04, nil}
};
FLASHSTORE _objd SDO1C10[] =
{ {0x00, DTYPE_UNSIGNED8, 8, ATYPE_R, &acName1C10[0], 0x00, nil}
};
FLASHSTORE _objd SDO1C11[] =
{ {0x00, DTYPE_UNSIGNED8, 8, ATYPE_R, &acName1C11[0], 0x00, nil}
};
FLASHSTORE _objd SDO1C12[] =
{ {0x00, DTYPE_UNSIGNED8, 8, ATYPE_R, &acNameNOE[0], 0x01, nil},
{0x01, DTYPE_UNSIGNED16, 16, ATYPE_R, &acNameMO[0], 0x1600, nil}
};
FLASHSTORE _objd SDO1C13[] =
{ {0x00, DTYPE_UNSIGNED8, 8, ATYPE_R, &acNameNOE[0], 0x01, nil},
{0x01, DTYPE_UNSIGNED16, 16, ATYPE_R, &acNameMO[0], 0x1A00, nil}
};
FLASHSTORE _objd SDO6000[] =
{ {0x00, DTYPE_UNSIGNED8, 8, ATYPE_R, &acNameNOE[0], 0x02, nil},
{0x01, DTYPE_UNSIGNED8, 8, ATYPE_R, &acName6000_01[0], 0, &(Rb.button)},
{0x02, DTYPE_UNSIGNED32, 32, ATYPE_R, &acName6000_02[0], 0, &(Rb.encoder)}
};
FLASHSTORE _objd SDO7000[] =
{ {0x00, DTYPE_UNSIGNED8, 8, ATYPE_R, &acNameNOE[0], 0x01, nil},
{0x01, DTYPE_UNSIGNED8, 8, ATYPE_RW, &acName7000_01[0], 0, &(Wb.LED)}
};
FLASHSTORE _objd SDO7100[] =
{ {0x00, DTYPE_UNSIGNED8, 8, ATYPE_R, &acNameNOE[0], 0x02, nil},
{0x01, DTYPE_UNSIGNED32, 32, ATYPE_RW, &acName7100_01[0], 0, &(encoder_scale)},
{0x02, DTYPE_UNSIGNED32, 32, ATYPE_R, &acName7100_02[0], 0, &(encoder_scale_mirror)}
};
FLASHSTORE _objd SDO8001[] =
{ {0x00, DTYPE_UNSIGNED8, 8, ATYPE_R, &acNameNOE[0], 0x01, nil},
{0x01, DTYPE_UNSIGNED32, 32, ATYPE_RW, &acName8001_01[0], 0, &(Cb.reset_counter)},
};
FLASHSTORE _objectlist SDOobjects[] =
{ {0x1000, OTYPE_VAR, 0, 0, &acName1000[0], &SDO1000[0]},
{0x1008, OTYPE_VAR, 0, 0, &acName1008[0], &SDO1008[0]},
{0x1009, OTYPE_VAR, 0, 0, &acName1009[0], &SDO1009[0]},
{0x100A, OTYPE_VAR, 0, 0, &acName100A[0], &SDO100A[0]},
{0x1018, OTYPE_RECORD, 4, 0, &acName1018[0], &SDO1018[0]},
{0x1600, OTYPE_RECORD, 0x01, 0, &acName1600[0], &SDO1600[0]},
{0x1A00, OTYPE_RECORD, 0x02, 0, &acName1A00[0], &SDO1A00[0]},
{0x1C00, OTYPE_ARRAY, 4, 0, &acName1C00[0], &SDO1C00[0]},
{0x1C10, OTYPE_ARRAY, 0, 0, &acName1C10[0], &SDO1C10[0]},
{0x1C11, OTYPE_ARRAY, 0, 0, &acName1C11[0], &SDO1C11[0]},
{0x1C12, OTYPE_ARRAY, 1, 0, &acName1C12[0], &SDO1C12[0]},
{0x1C13, OTYPE_ARRAY, 1, 0, &acName1C13[0], &SDO1C13[0]},
{0x6000, OTYPE_ARRAY, 0x02, 0, &acName6000[0], &SDO6000[0]},
{0x7000, OTYPE_ARRAY, 0x01, 0, &acName7000[0], &SDO7000[0]},
{0x7100, OTYPE_ARRAY, 0x02, 0, &acName7100[0], &SDO7100[0]},
{0x8001, OTYPE_ARRAY, 0x01, 0, &acName8001[0], &SDO8001[0]},
{0xffff, 0xff, 0xff, 0xff, nil, nil}
};
#endif

View File

@ -0,0 +1,28 @@
/******************************************************************************
* * *** ***
* *** *** ***
* *** **** ********** *** ***** *** **** *****
* ********* ********** *** ********* ************ *********
* **** *** *** *** *** **** ***
* *** *** ****** *** *********** *** **** *****
* *** *** ****** *** ************* *** **** *****
* *** **** **** *** *** *** **** ***
* *** ******* ***** ************** ************* *********
* *** ***** *** ******* ** ** ****** *****
* t h e r e a l t i m e t a r g e t e x p e r t s
*
* http://www.rt-labs.com
* Copyright (C) 2012-2013. rt-labs AB, Sweden. All rights reserved.
*------------------------------------------------------------------------------
* $Id: osal.h 522 2013-06-20 16:16:45Z rtlaka $
*------------------------------------------------------------------------------
*/
#ifndef _osal_
#define _osal_
#include <kern.h>
#define OSAL_PRINT rprintp
#endif

View File

@ -0,0 +1,380 @@
/*
* SOES Simple Open EtherCAT Slave
*
* File : soes.c
* Version : 0.9.2
* Date : 22-02-2010
* Copyright (C) 2007-2013 Arthur Ketels
*
* SOES is free software; you can redistribute it and/or modify it under
* the terms of the GNU General Public License version 2 as published by the Free
* Software Foundation.
*
* SOES is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* for more details.
*
* As a special exception, if other files instantiate templates or use macros
* or inline functions from this file, or you compile this file and link it
* with other works to produce a work based on this file, this file does not
* by itself cause the resulting work to be covered by the GNU General Public
* License. However the source code for this file must still be made available
* in accordance with section (3) of the GNU General Public License.
*
* This exception does not invalidate any other reasons why a work based on
* this file might be covered by the GNU General Public License.
*
* The EtherCAT Technology, the trade name and logo "EtherCAT" are the intellectual
* property of, and protected by Beckhoff Automation GmbH.
*/
/** \file
* \brief
* The application.
*
* The application, the main loop that service EtherCAT.
*/
#include <kern.h>
#include <bsp.h>
#include <flash_drv.h>
#include <stdio.h>
#include "utypes.h"
#include "esc.h"
#include "esc_coe.h"
#include "esc_foe.h"
#include "osal.h"
#include "bootstrap.h"
#define ESC_DEBUG
#ifdef ESC_DEBUG
#define DPRINT(...) OSAL_PRINT ("soes: "__VA_ARGS__)
#define DEBUG_ASSERT(expression) ASSERT(expression)
#else
#define DPRINT(...)
#define DEBUG_ASSERT(expression)
#endif /* DEBUG */
#define WD_RESET 1000
#define DEFAULTTXPDOMAP 0x1a00
#define DEFAULTRXPDOMAP 0x1600
#define DEFAULTTXPDOITEMS 1
#define DEFAULTRXPDOITEMS 1
#define GPIO_ECAT_RESET 1 /* specific function to hold ESC reset on startup
* when emulating EEPROM
*/
uint32 encoder_scale;
uint32 encoder_scale_mirror;
volatile _ESCvar ESCvar;
_MBX MBX[MBXBUFFERS];
_MBXcontrol MBXcontrol[MBXBUFFERS];
uint8 MBXrun=0;
uint16 SM2_sml,SM3_sml;
_Rbuffer Rb;
_Wbuffer Wb;
_Cbuffer Cb;
_App App;
uint16 TXPDOsize,RXPDOsize;
int wd_cnt = WD_RESET;
volatile uint8 digoutput;
volatile uint8 diginput;
uint16 txpdomap = DEFAULTTXPDOMAP;
uint16 rxpdomap = DEFAULTRXPDOMAP;
uint8 txpdoitems = DEFAULTTXPDOITEMS;
uint8 rxpdoitems = DEFAULTTXPDOITEMS;
extern uint32_t local_boot_state;
static const char *spi_name = "/spi0/et1100";
/** Mandatory: Hook called from the slave stack SDO Download handler to act on
* user specified Index and Sub-index.
*
* @param[in] index = index of SDO download request to handle
* @param[in] sub-index = sub-index of SDO download request to handle
*/
void ESC_objecthandler (uint16 index, uint8 subindex)
{
switch (index)
{
case 0x1c12:
{
if (rxpdoitems > 1)
{
rxpdoitems = 1;
}
if ((rxpdomap != 0x1600) && (rxpdomap != 0x1601)
&& (rxpdomap != 0x0000))
{
rxpdomap = 0x1600;
}
RXPDOsize = SM2_sml = sizeRXPDO ();
break;
}
case 0x1c13:
{
if (txpdoitems > 1)
{
txpdoitems = 1;
}
if ((txpdomap != 0x1A00) && (txpdomap != 0x1A01)
&& (rxpdomap != 0x0000))
{
txpdomap = 0x1A00;
}
TXPDOsize = SM3_sml = sizeTXPDO ();
break;
}
case 0x7100:
{
switch (subindex)
{
case 0x01:
{
encoder_scale_mirror = encoder_scale;
break;
}
}
break;
}
case 0x8001:
{
switch (subindex)
{
case 0x01:
{
Cb.reset_counter = 0;
break;
}
}
break;
}
}
}
/** Mandatory: Hook called from the slave stack ESC_stopoutputs to act on state changes
* forcing us to stop outputs. Here we can set them to a safe state.
* set
*/
void APP_safeoutput (void)
{
DPRINT ("APP_safeoutput called\n");
Wb.LED = 0;
}
/** Mandatory: Write local process data to Sync Manager 3, Master Inputs.
*/
void TXPDO_update (void)
{
ESC_write (SM3_sma, &Rb.button, TXPDOsize, (void *) &ESCvar.ALevent);
}
/** Mandatory: Read Sync Manager 2 to local process data, Master Outputs.
*/
void RXPDO_update (void)
{
ESC_read (SM2_sma, &Wb.LED, RXPDOsize, (void *) &ESCvar.ALevent);
}
/** Mandatory: Function to update local I/O, call read ethercat outputs, call
* write ethercat inputs. Implement watch-dog counter to count-out if we have
* made state change affecting the App.state.
*/
void DIG_process (void)
{
if (wd_cnt)
{
wd_cnt--;
}
if (App.state & APPSTATE_OUTPUT)
{
/* SM2 trigger ? */
if (ESCvar.ALevent & ESCREG_ALEVENT_SM2)
{
ESCvar.ALevent &= ~ESCREG_ALEVENT_SM2;
RXPDO_update ();
wd_cnt = WD_RESET;
/* dummy output point */
//gpio_set(GPIO_LED, Wb.LED & BIT(0));
}
if (!wd_cnt)
{
DPRINT("DIG_process watchdog tripped\n");
ESC_stopoutput ();
/* watchdog, invalid outputs */
ESC_ALerror (ALERR_WATCHDOG);
/* goto safe-op with error bit set */
ESC_ALstatus (ESCsafeop | ESCerror);
}
}
else
{
wd_cnt = WD_RESET;
}
if (App.state)
{
//Rb.button = gpio_get(GPIO_WAKEUP);
Rb.button = (flash_drv_get_active_swap() && 0x8);
Cb.reset_counter++;
Rb.encoder = Cb.reset_counter;
TXPDO_update ();
}
}
void esc_reset (void)
{
volatile int timeout;
DPRINT("esc_reset_started\n");
gpio_set (GPIO_ECAT_RESET,0); /* pin =0 */
gpio_configure_pin (GPIO_ECAT_RESET,MUX_GPIO,IRQC_DISABLED,MODE_OUTPUT);
task_delay (1000);
gpio_configure_pin (GPIO_ECAT_RESET,MUX_GPIO,IRQC_DISABLED,MODE_INPUT);
while(timeout<10000000)
{
/* ECAT releases resetpin */
if(gpio_get (GPIO_ECAT_RESET)!=0)
{
break; // OK
}
timeout++;
task_delay (30);
}
DPRINT("esc_reset_ended\n");
}
/** Optional: Hook called after state change for application specific
* actions for specific state changes.
*/
void post_state_change_hook (uint8 * as, uint8 * an)
{
/* Add specific step change hooks here */
if ((*as == BOOT_TO_INIT) && (*an == ESCinit))
{
boot_inithook ();
}
else if((*as == INIT_TO_BOOT) && (*an & ESCerror ) == 0)
{
init_boothook ();
}
}
/** SOES main loop. Start by initializing the stack software followed by
* the application loop for cyclic read the EtherCAT state and staus, update
* of I/O.
*/
void soes (void *arg)
{
DPRINT ("SOES (Simple Open EtherCAT Slave)\n");
TXPDOsize = SM3_sml = sizeTXPDO ();
RXPDOsize = SM2_sml = sizeRXPDO ();
/* Setup post config hooks */
static esc_cfg_t config =
{
.pre_state_change_hook = NULL,
.post_state_change_hook = post_state_change_hook
};
ESC_config ((esc_cfg_t *)&config);
esc_reset ();
ESC_init ((void *)spi_name);
task_delay (tick_from_ms (200));
/* wait until ESC is started up */
while ((ESCvar.DLstatus & 0x0001) == 0)
{
ESC_read (ESCREG_DLSTATUS, (void *) &ESCvar.DLstatus,
sizeof (ESCvar.DLstatus), (void *) &ESCvar.ALevent);
ESCvar.DLstatus = etohs (ESCvar.DLstatus);
}
/* Pre FoE to set up Application information */
bootstrap_foe_init ();
/* Init FoE */
FOE_init();
/* reset ESC to init state */
ESC_ALstatus (ESCinit);
ESC_ALerror (ALERR_NONE);
ESC_stopmbx ();
ESC_stopinput ();
ESC_stopoutput ();
DPRINT ("Application_loop GO\n");
/* application run loop */
while (1)
{
/* On init restore PDO mappings to default size */
if((ESCvar.ALstatus & 0x0f) == ESCinit)
{
txpdomap = DEFAULTTXPDOMAP;
rxpdomap = DEFAULTRXPDOMAP;
txpdoitems = DEFAULTTXPDOITEMS;
rxpdoitems = DEFAULTTXPDOITEMS;
}
/* Read local time from ESC*/
ESC_read (ESCREG_LOCALTIME, (void *) &ESCvar.Time, sizeof (ESCvar.Time),
(void *) &ESCvar.ALevent);
ESCvar.Time = etohl (ESCvar.Time);
/* Check the state machine */
ESC_state ();
/* If else to two separate execution paths
* If we're running BOOSTRAP
* - MailBox
* - FoE
* Else we're running normal execution
* - MailBox
* - CoE
*/
if(local_boot_state)
{
if (ESC_mbxprocess ())
{
ESC_foeprocess ();
ESC_xoeprocess ();
}
bootstrap_state ();
}
else
{
if (ESC_mbxprocess ())
{
ESC_coeprocess ();
ESC_xoeprocess ();
}
DIG_process ();
}
};
}
uint8_t load1s, load5s, load10s;
void my_cyclic_callback (void * arg)
{
while (1)
{
task_delay(tick_from_ms (20000));
stats_get_load (&load1s, &load5s, &load10s);
DPRINT ("%d:%d:%d (1s:5s:10s)\n",
load1s, load5s, load10s);
DPRINT ("Local bootstate: %d App.state: %d\n", local_boot_state,App.state);
DPRINT ("AlStatus : 0x%x, AlError : 0x%x, Watchdog : %d \n", (ESCvar.ALstatus & 0x001f),ESCvar.ALerror,wd_cnt);
}
}

View File

@ -0,0 +1,123 @@
/*
* SOES Simple Open EtherCAT Slave
*
* File : utype.h
* Version : 0.9.2
* Date : 22-02-2010
* Copyright (C) 2007-2013 Arthur Ketels
*
* SOES is free software; you can redistribute it and/or modify it under
* the terms of the GNU General Public License version 2 as published by the Free
* Software Foundation.
*
* SOES is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* for more details.
*
* As a special exception, if other files instantiate templates or use macros
* or inline functions from this file, or you compile this file and link it
* with other works to produce a work based on this file, this file does not
* by itself cause the resulting work to be covered by the GNU General Public
* License. However the source code for this file must still be made available
* in accordance with section (3) of the GNU General Public License.
*
* This exception does not invalidate any other reasons why a work based on
* this file might be covered by the GNU General Public License.
*
* The EtherCAT Technology, the trade name and logo "EtherCAT" are the intellectual
* property of, and protected by Beckhoff Automation GmbH.
*/
/** \file
* \brief
* Header file for Application types.
*
* Part of the application, host declarations of application types mapped against
* ServiceData Objects and ProcessData Objects .
*/
#include <stdint.h>
#define uint8 uint8_t
#define int8 int8_t
#define uint16 uint16_t
#define int16 int16_t
#define uint32 uint32_t
#define int32 int32_t
typedef union
{
uint16 w;
uint8 b[2];
} uint16union;
#define APPSTATE_IDLE 0x00
#define APPSTATE_INPUT 0x01
#define APPSTATE_OUTPUT 0x02
typedef struct
{
uint8 state;
uint8 button;
uint32 encoder;
} _Rbuffer;
typedef struct
{
uint8 LED;
} _Wbuffer;
typedef struct
{
uint32 reset_counter;
} _Cbuffer;
typedef struct
{
uint8 state; // internal, don't change!!!!
} _App;
extern _Rbuffer Rb;
extern _Wbuffer Wb;
extern _Cbuffer Cb;
extern _App App;
extern uint32 encoder_scale;
extern uint32 encoder_scale_mirror;
#define EC_LITTLE_ENDIAN
#if !defined(EC_BIG_ENDIAN) && defined(EC_LITTLE_ENDIAN)
#define htoes(A) (A)
#define htoel(A) (A)
#define htoell(A) (A)
#define etohs(A) (A)
#define etohl(A) (A)
#define etohll(A) (A)
#elif !defined(EC_LITTLE_ENDIAN) && defined(EC_BIG_ENDIAN)
#define htoes(A) ((((uint16)(A) & 0xff00) >> 8) | \
(((uint16)(A) & 0x00ff) << 8))
#define htoel(A) ((((uint32)(A) & 0xff000000) >> 24) | \
(((uint32)(A) & 0x00ff0000) >> 8) | \
(((uint32)(A) & 0x0000ff00) << 8) | \
(((uint32)(A) & 0x000000ff) << 24))
#define htoell(A) ((((uint64)(A) & (uint64)0xff00000000000000ULL) >> 56) | \
(((uint64)(A) & (uint64)0x00ff000000000000ULL) >> 40) | \
(((uint64)(A) & (uint64)0x0000ff0000000000ULL) >> 24) | \
(((uint64)(A) & (uint64)0x000000ff00000000ULL) >> 8) | \
(((uint64)(A) & (uint64)0x00000000ff000000ULL) << 8) | \
(((uint64)(A) & (uint64)0x0000000000ff0000ULL) << 24) | \
(((uint64)(A) & (uint64)0x000000000000ff00ULL) << 40) | \
(((uint64)(A) & (uint64)0x00000000000000ffULL) << 56))
#define etohs htoes
#define etohl htoel
#define etohll htoell
#else
#error "Must define one of EC_BIG_ENDIAN or EC_LITTLE_ENDIAN"
#endif

View File

@ -0,0 +1,526 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?fileVersion 4.0.0?>
<cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
<storageModule moduleId="org.eclipse.cdt.core.settings">
<cconfiguration id="rtlabs.config.armeabi.lib.debug.1584596903">
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="rtlabs.config.armeabi.lib.debug.1584596903" moduleId="org.eclipse.cdt.core.settings" name="Debug">
<externalSettings/>
<extensions>
<extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
<extension id="org.eclipse.cdt.core.MakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
</extensions>
</storageModule>
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
<configuration artifactExtension="a" artifactName="soes_hw" buildArtefactType="rtlabs.buildArtefactType.lib" buildProperties="org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.debug,org.eclipse.cdt.build.core.buildArtefactType=rtlabs.buildArtefactType.lib" cleanCommand="rm -rf" description="" id="rtlabs.config.armeabi.lib.debug.1584596903" name="Debug" parent="rtlabs.config.armeabi.lib.debug">
<folderInfo id="rtlabs.config.armeabi.lib.debug.1584596903." name="/" resourcePath="">
<toolChain id="rtlabs.toolchain.armeabi.lib.debug.1908802659" name="arm-eabi-gcc" superClass="rtlabs.toolchain.armeabi.lib.debug">
<targetPlatform id="rtlabs.target.armeabi.platform.lib.debug.1313071774" name="Debug Platform" superClass="rtlabs.target.armeabi.platform.lib.debug"/>
<builder buildPath="${workspace_loc:/soes_hw/Debug}" id="rtlabs.target.armeabi.builder.lib.debug.1806919032" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" superClass="rtlabs.target.armeabi.builder.lib.debug"/>
<tool id="rtlabs.tool.armeabi.archiver.lib.debug.1524010350" name="GCC Archiver" superClass="rtlabs.tool.armeabi.archiver.lib.debug"/>
<tool id="rtlabs.tool.armeabi.cpp.compiler.lib.debug.942247476" name="GCC C++ Compiler" superClass="rtlabs.tool.armeabi.cpp.compiler.lib.debug">
<option id="rtlabs.cpp.compiler.option.optimization.level.810416761" name="Optimization Level" superClass="rtlabs.cpp.compiler.option.optimization.level" value="rtlabs.cpp.compiler.optimization.level.none" valueType="enumerated"/>
<option id="rtlabs.cpp.compiler.option.debugging.level.425145595" name="Debug Level" superClass="rtlabs.cpp.compiler.option.debugging.level" value="rtlabs.cpp.compiler.debugging.level.max" valueType="enumerated"/>
<option id="rtlabs.cpp.compiler.option.cputype.324198507" name="CPU type" superClass="rtlabs.cpp.compiler.option.cputype" value="cortex-m3" valueType="string"/>
<option id="rtlabs.cpp.compiler.option.fputype.311658502" name="FPU type" superClass="rtlabs.cpp.compiler.option.fputype" value="vfp" valueType="string"/>
<option id="rtlabs.cpp.compiler.option.include.paths.1340612902" name="Include paths (-I)" superClass="rtlabs.cpp.compiler.option.include.paths" valueType="includePath">
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/ove}/include&quot;"/>
<listOptionValue builtIn="false" value="${RT_TOOLS}/rt-kernel-kinetis/include"/>
<listOptionValue builtIn="false" value="${RT_TOOLS}/rt-kernel-kinetis/include/arch/kinetis"/>
<listOptionValue builtIn="false" value="${RT_TOOLS}/rt-kernel-kinetis/include/kern"/>
<listOptionValue builtIn="false" value="${RT_TOOLS}/rt-kernel-kinetis/include/drivers"/>
<listOptionValue builtIn="false" value="${RT_TOOLS}/rt-kernel-kinetis/lwip/src/include"/>
<listOptionValue builtIn="false" value="${RT_TOOLS}/rt-kernel-kinetis/lwip/src/include/ipv4"/>
</option>
</tool>
<tool id="rtlabs.tool.armeabi.c.compiler.lib.debug.393020142" name="GCC C Compiler" superClass="rtlabs.tool.armeabi.c.compiler.lib.debug">
<option defaultValue="rtlabs.c.optimization.level.none" id="rtlabs.c.compiler.option.optimization.level.2134132978" name="Optimization Level" superClass="rtlabs.c.compiler.option.optimization.level" value="rtlabs.c.optimization.level.size" valueType="enumerated"/>
<option id="rtlabs.c.compiler.option.debugging.level.1280959109" name="Debug Level" superClass="rtlabs.c.compiler.option.debugging.level" value="rtlabs.c.debugging.level.max" valueType="enumerated"/>
<option id="rtlabs.c.compiler.option.cputype.2106628634" name="CPU type" superClass="rtlabs.c.compiler.option.cputype" value="cortex-m3" valueType="string"/>
<option id="rtlabs.c.compiler.option.fputype.537314553" name="FPU type" superClass="rtlabs.c.compiler.option.fputype" value="vfp" valueType="string"/>
<option id="rtlabs.c.compiler.option.include.paths.203105796" name="Include paths (-I)" superClass="rtlabs.c.compiler.option.include.paths" valueType="includePath">
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/k60/include}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/soes}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/rtl_slavedemo}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${RT_TOOLS}/rt-kernel-kinetis/include&quot;"/>
<listOptionValue builtIn="false" value="&quot;${RT_TOOLS}/rt-kernel-kinetis/include/arch/kinetis&quot;"/>
<listOptionValue builtIn="false" value="&quot;${RT_TOOLS}/rt-kernel-kinetis/include/drivers&quot;"/>
<listOptionValue builtIn="false" value="&quot;${RT_TOOLS}/rt-kernel-kinetis/include/kern&quot;"/>
<listOptionValue builtIn="false" value="&quot;${RT_TOOLS}/rt-kernel-kinetis/lwip/src/include&quot;"/>
<listOptionValue builtIn="false" value="&quot;${RT_TOOLS}/rt-kernel-kinetis/lwip/src/include/ipv4&quot;"/>
</option>
<inputType id="rtlabs.tool.armeabi.c.compiler.input.164221033" superClass="rtlabs.tool.armeabi.c.compiler.input"/>
</tool>
<tool id="rtlabs.tool.armeabi.c.linker.base.944490010" name="GCC C Linker" superClass="rtlabs.tool.armeabi.c.linker.base">
<option id="rtlabs.c.link.option.ldflags.2021467920" name="Linker flags" superClass="rtlabs.c.link.option.ldflags" value="-Wl,--no-wchar-size-warning" valueType="string"/>
<option id="rtlabs.c.link.option.cputype.398066652" name="CPU type" superClass="rtlabs.c.link.option.cputype" value="cortex-m3" valueType="string"/>
<option id="rtlabs.c.link.option.fputype.1690817691" name="FPU type" superClass="rtlabs.c.link.option.fputype" value="vfp" valueType="string"/>
</tool>
<tool id="rtlabs.tool.armeabi.cpp.linker.base.1289444701" name="GCC C++ Linker" superClass="rtlabs.tool.armeabi.cpp.linker.base">
<option id="rtlabs.cpp.link.option.ldflags.2008602152" name="Linker flags" superClass="rtlabs.cpp.link.option.ldflags" value="-Wl,--no-wchar-size-warning" valueType="string"/>
<option id="rtlabs.cpp.link.option.cputype.854512329" name="CPU type" superClass="rtlabs.cpp.link.option.cputype" value="cortex-m3" valueType="string"/>
<option id="rtlabs.cpp.link.option.fputype.755892532" name="FPU type" superClass="rtlabs.cpp.link.option.fputype" value="vfp" valueType="string"/>
</tool>
<tool id="rtlabs.tool.armeabi.assembler.lib.debug.1357214345" name="GCC Assembler" superClass="rtlabs.tool.armeabi.assembler.lib.debug">
<inputType id="rtlabs.tool.gnu.assembler.input.382435641" superClass="rtlabs.tool.gnu.assembler.input"/>
</tool>
<tool id="rtlabs.tool.armeabi.tt_parse.base.1650054222" name="tt_parse" superClass="rtlabs.tool.armeabi.tt_parse.base"/>
<tool id="rtlabs.tool.armeabi.objcopy.base.882688402" name="GNU Objcopy" superClass="rtlabs.tool.armeabi.objcopy.base"/>
<tool id="rtlabs.tool.armeabi.report.base.1583723997" name="Report" superClass="rtlabs.tool.armeabi.report.base"/>
</toolChain>
</folderInfo>
</configuration>
</storageModule>
<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
<storageModule moduleId="org.eclipse.cdt.core.language.mapping"/>
<storageModule moduleId="org.eclipse.cdt.internal.ui.text.commentOwnerProjectMappings"/>
</cconfiguration>
<cconfiguration id="rtlabs.config.armeabi.lib.release.1787964582">
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="rtlabs.config.armeabi.lib.release.1787964582" moduleId="org.eclipse.cdt.core.settings" name="Release">
<externalSettings/>
<extensions>
<extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
<extension id="org.eclipse.cdt.core.MakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
</extensions>
</storageModule>
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
<configuration artifactExtension="a" artifactName="soes_hw" buildArtefactType="rtlabs.buildArtefactType.lib" buildProperties="org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.release,org.eclipse.cdt.build.core.buildArtefactType=rtlabs.buildArtefactType.lib" cleanCommand="rm -rf" description="" id="rtlabs.config.armeabi.lib.release.1787964582" name="Release" parent="rtlabs.config.armeabi.lib.release">
<folderInfo id="rtlabs.config.armeabi.lib.release.1787964582." name="/" resourcePath="">
<toolChain id="rtlabs.toolchain.armeabi.lib.release.171115469" name="arm-eabi-gcc" superClass="rtlabs.toolchain.armeabi.lib.release">
<targetPlatform id="rtlabs.target.armeabi.platform.lib.release.1051734341" name="Debug Platform" superClass="rtlabs.target.armeabi.platform.lib.release"/>
<builder buildPath="${workspace_loc:/soes_hw/Release}" id="rtlabs.target.armeabi.builder.lib.release.1787804731" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" superClass="rtlabs.target.armeabi.builder.lib.release"/>
<tool id="rtlabs.tool.armeabi.archiver.lib.release.1458420732" name="GCC Archiver" superClass="rtlabs.tool.armeabi.archiver.lib.release"/>
<tool id="rtlabs.tool.armeabi.cpp.compiler.lib.release.1579263096" name="GCC C++ Compiler" superClass="rtlabs.tool.armeabi.cpp.compiler.lib.release">
<option id="rtlabs.cpp.compiler.option.optimization.level.155703549" name="Optimization Level" superClass="rtlabs.cpp.compiler.option.optimization.level" value="rtlabs.cpp.compiler.optimization.level.size" valueType="enumerated"/>
<option id="rtlabs.cpp.compiler.option.debugging.level.1728054043" name="Debug Level" superClass="rtlabs.cpp.compiler.option.debugging.level" value="rtlabs.cpp.compiler.debugging.level.none" valueType="enumerated"/>
<option id="rtlabs.cpp.compiler.option.cputype.303571010" name="CPU type" superClass="rtlabs.cpp.compiler.option.cputype" value="cortex-m3" valueType="string"/>
<option id="rtlabs.cpp.compiler.option.fputype.675449466" name="FPU type" superClass="rtlabs.cpp.compiler.option.fputype" value="vfp" valueType="string"/>
<option id="rtlabs.cpp.compiler.option.include.paths.1344096056" name="Include paths (-I)" superClass="rtlabs.cpp.compiler.option.include.paths" valueType="includePath">
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/ove}/include&quot;"/>
<listOptionValue builtIn="false" value="${RT_TOOLS}/rt-kernel-kinetis/include"/>
<listOptionValue builtIn="false" value="${RT_TOOLS}/rt-kernel-kinetis/include/arch/kinetis"/>
<listOptionValue builtIn="false" value="${RT_TOOLS}/rt-kernel-kinetis/include/kern"/>
<listOptionValue builtIn="false" value="${RT_TOOLS}/rt-kernel-kinetis/include/drivers"/>
<listOptionValue builtIn="false" value="${RT_TOOLS}/rt-kernel-kinetis/lwip/src/include"/>
<listOptionValue builtIn="false" value="${RT_TOOLS}/rt-kernel-kinetis/lwip/src/include/ipv4"/>
</option>
</tool>
<tool id="rtlabs.tool.armeabi.c.compiler.lib.release.849757192" name="GCC C Compiler" superClass="rtlabs.tool.armeabi.c.compiler.lib.release">
<option defaultValue="rtlabs.c.optimization.level.size" id="rtlabs.c.compiler.option.optimization.level.1563953927" name="Optimization Level" superClass="rtlabs.c.compiler.option.optimization.level" valueType="enumerated"/>
<option id="rtlabs.c.compiler.option.debugging.level.243478802" name="Debug Level" superClass="rtlabs.c.compiler.option.debugging.level" value="rtlabs.c.debugging.level.none" valueType="enumerated"/>
<option id="rtlabs.c.compiler.option.cputype.1414064807" name="CPU type" superClass="rtlabs.c.compiler.option.cputype" value="cortex-m3" valueType="string"/>
<option id="rtlabs.c.compiler.option.fputype.652228209" name="FPU type" superClass="rtlabs.c.compiler.option.fputype" value="vfp" valueType="string"/>
<option id="rtlabs.c.compiler.option.include.paths.1343777005" name="Include paths (-I)" superClass="rtlabs.c.compiler.option.include.paths" valueType="includePath">
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/ove}/include&quot;"/>
<listOptionValue builtIn="false" value="${RT_TOOLS}/rt-kernel-kinetis/include"/>
<listOptionValue builtIn="false" value="${RT_TOOLS}/rt-kernel-kinetis/include/arch/kinetis"/>
<listOptionValue builtIn="false" value="${RT_TOOLS}/rt-kernel-kinetis/include/kern"/>
<listOptionValue builtIn="false" value="${RT_TOOLS}/rt-kernel-kinetis/include/drivers"/>
<listOptionValue builtIn="false" value="${RT_TOOLS}/rt-kernel-kinetis/lwip/src/include"/>
<listOptionValue builtIn="false" value="${RT_TOOLS}/rt-kernel-kinetis/lwip/src/include/ipv4"/>
</option>
<inputType id="rtlabs.tool.armeabi.c.compiler.input.35638722" superClass="rtlabs.tool.armeabi.c.compiler.input"/>
</tool>
<tool id="rtlabs.tool.armeabi.c.linker.base.1757482121" name="GCC C Linker" superClass="rtlabs.tool.armeabi.c.linker.base">
<option id="rtlabs.c.link.option.ldflags.328674928" name="Linker flags" superClass="rtlabs.c.link.option.ldflags" value="-Wl,--no-wchar-size-warning" valueType="string"/>
<option id="rtlabs.c.link.option.cputype.633969273" name="CPU type" superClass="rtlabs.c.link.option.cputype" value="cortex-m3" valueType="string"/>
<option id="rtlabs.c.link.option.fputype.484415652" name="FPU type" superClass="rtlabs.c.link.option.fputype" value="vfp" valueType="string"/>
</tool>
<tool id="rtlabs.tool.armeabi.cpp.linker.base.1157095996" name="GCC C++ Linker" superClass="rtlabs.tool.armeabi.cpp.linker.base">
<option id="rtlabs.cpp.link.option.ldflags.830130063" name="Linker flags" superClass="rtlabs.cpp.link.option.ldflags" value="-Wl,--no-wchar-size-warning" valueType="string"/>
<option id="rtlabs.cpp.link.option.cputype.1360590577" name="CPU type" superClass="rtlabs.cpp.link.option.cputype" value="cortex-m3" valueType="string"/>
<option id="rtlabs.cpp.link.option.fputype.1829287876" name="FPU type" superClass="rtlabs.cpp.link.option.fputype" value="vfp" valueType="string"/>
</tool>
<tool id="rtlabs.tool.armeabi.assembler.lib.release.298540314" name="GCC Assembler" superClass="rtlabs.tool.armeabi.assembler.lib.release">
<inputType id="rtlabs.tool.gnu.assembler.input.261245420" superClass="rtlabs.tool.gnu.assembler.input"/>
</tool>
<tool id="rtlabs.tool.armeabi.tt_parse.base.398873951" name="tt_parse" superClass="rtlabs.tool.armeabi.tt_parse.base"/>
<tool id="rtlabs.tool.armeabi.objcopy.base.1317536337" name="GNU Objcopy" superClass="rtlabs.tool.armeabi.objcopy.base"/>
<tool id="rtlabs.tool.armeabi.report.base.160797351" name="Report" superClass="rtlabs.tool.armeabi.report.base"/>
</toolChain>
</folderInfo>
</configuration>
</storageModule>
<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
<storageModule moduleId="org.eclipse.cdt.core.language.mapping"/>
<storageModule moduleId="org.eclipse.cdt.internal.ui.text.commentOwnerProjectMappings"/>
</cconfiguration>
</storageModule>
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
<project id="soes_hw.rtlabs.target.armeabi.lib.9912461" name="Library" projectType="rtlabs.target.armeabi.lib"/>
</storageModule>
<storageModule moduleId="refreshScope"/>
<storageModule moduleId="scannerConfiguration">
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
<profile id="com.rtlabs.workbench.armeabi.armeabiManagedMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="${_COMPILERS}/arm-eabi/bin/arm-eabi-gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="com.rtlabs.workbench.bfinelf.BfinElfManagedMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="${_COMPILERS}/bfin-elf/bin/bfin-elf-gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="com.rtlabs.workbench.powerpceabi.PowerPCEABIManagedMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="${_COMPILERS}/powerpc-eabi/bin/powerpc-eabi-gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="com.rtlabs.workbench.powerpceabispe.PowerPCEABISPEManagedMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="${_COMPILERS}/powerpc-eabispe/bin/powerpc-eabispe-gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="makefileGenerator">
<runAction arguments="-E -P -v -dD" command="" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/${specs_file}&quot;'" command="sh" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-c 'g++ -E -P -v -dD &quot;${plugin_state_location}/specs.cpp&quot;'" command="sh" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/specs.c&quot;'" command="sh" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<scannerConfigBuildInfo instanceId="rtlabs.config.armeabi.lib.debug.1584596903;rtlabs.config.armeabi.lib.debug.1584596903.;rtlabs.tool.armeabi.c.compiler.lib.debug.393020142;rtlabs.tool.armeabi.c.compiler.input.164221033">
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.rtlabs.workbench.armeabi.armeabiManagedMakePerProjectProfile"/>
<profile id="com.rtlabs.workbench.armeabi.armeabiManagedMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="${_COMPILERS}/arm-eabi/bin/arm-eabi-gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="com.rtlabs.workbench.bfinelf.BfinElfManagedMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="${_COMPILERS}/bfin-elf/bin/bfin-elf-gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="com.rtlabs.workbench.powerpceabi.PowerPCEABIManagedMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="${_COMPILERS}/powerpc-eabi/bin/powerpc-eabi-gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="com.rtlabs.workbench.powerpceabispe.PowerPCEABISPEManagedMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="${_COMPILERS}/powerpc-eabispe/bin/powerpc-eabispe-gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="makefileGenerator">
<runAction arguments="-E -P -v -dD" command="" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/${specs_file}&quot;'" command="sh" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-c 'g++ -E -P -v -dD &quot;${plugin_state_location}/specs.cpp&quot;'" command="sh" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/specs.c&quot;'" command="sh" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
</scannerConfigBuildInfo>
<scannerConfigBuildInfo instanceId="rtlabs.config.armeabi.lib.release.1787964582;rtlabs.config.armeabi.lib.release.1787964582.;rtlabs.tool.armeabi.c.compiler.lib.release.849757192;rtlabs.tool.armeabi.c.compiler.input.35638722">
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.rtlabs.workbench.armeabi.armeabiManagedMakePerProjectProfile"/>
<profile id="com.rtlabs.workbench.armeabi.armeabiManagedMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="${_COMPILERS}/arm-eabi/bin/arm-eabi-gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="com.rtlabs.workbench.bfinelf.BfinElfManagedMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="${_COMPILERS}/bfin-elf/bin/bfin-elf-gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="com.rtlabs.workbench.powerpceabi.PowerPCEABIManagedMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="${_COMPILERS}/powerpc-eabi/bin/powerpc-eabi-gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="com.rtlabs.workbench.powerpceabispe.PowerPCEABISPEManagedMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="${_COMPILERS}/powerpc-eabispe/bin/powerpc-eabispe-gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="makefileGenerator">
<runAction arguments="-E -P -v -dD" command="" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/${specs_file}&quot;'" command="sh" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-c 'g++ -E -P -v -dD &quot;${plugin_state_location}/specs.cpp&quot;'" command="sh" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/specs.c&quot;'" command="sh" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
</scannerConfigBuildInfo>
</storageModule>
</cproject>

View File

@ -0,0 +1,82 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>soes_hw</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name>
<triggers>clean,full,incremental,</triggers>
<arguments>
<dictionary>
<key>?name?</key>
<value></value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.append_environment</key>
<value>true</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.autoBuildTarget</key>
<value>all</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.buildArguments</key>
<value></value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.buildCommand</key>
<value>make</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.buildLocation</key>
<value>${workspace_loc:/soes_hw/Debug}</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.cleanBuildTarget</key>
<value>clean</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.contents</key>
<value>org.eclipse.cdt.make.core.activeConfigSettings</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.enableAutoBuild</key>
<value>false</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.enableCleanBuild</key>
<value>true</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.enableFullBuild</key>
<value>true</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.fullBuildTarget</key>
<value>all</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.stopOnError</key>
<value>true</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.useDefaultBuildCmd</key>
<value>true</value>
</dictionary>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>
<triggers>full,incremental,</triggers>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.cdt.core.cnature</nature>
<nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
<nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
</natures>
</projectDescription>

View File

@ -0,0 +1,134 @@
/*
* SOES Simple Open EtherCAT Slave
*
* File : esc_hw.c
* Version : 0.9.2
* Date : 22-02-2010
* Copyright (C) 2007-2013 Arthur Ketels
* Copyright (C) 2012-2013 rt-labs
*
* SOES is free software; you can redistribute it and/or modify it under
* the terms of the GNU General Public License version 2 as published by the Free
* Software Foundation.
*
* SOES is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* for more details.
*
* As a special exception, if other files instantiate templates or use macros
* or inline functions from this file, or you compile this file and link it
* with other works to produce a work based on this file, this file does not
* by itself cause the resulting work to be covered by the GNU General Public
* License. However the source code for this file must still be made available
* in accordance with section (3) of the GNU General Public License.
*
* This exception does not invalidate any other reasons why a work based on
* this file might be covered by the GNU General Public License.
*
* The EtherCAT Technology, the trade name and logo "EtherCAT" are the intellectual
* property of, and protected by Beckhoff Automation GmbH.
*/
/** \file
* \brief
* ESC hardware layer functions.
*
* Function to read and write commands to the ESC. Used to read/write ESC
* registers and memory.
*/
#include <utypes.h>
#include <spi/spi.h>
#include <string.h>
#define ESC_CMD_READ 0x02
#define ESC_CMD_READWS 0x03
#define ESC_CMD_WRITE 0x04
#define ESC_CMD_NOP 0x00
#define ESC_TERM 0xff
#define ESC_NEXT 0x00
static int et1100 = -1;
static uint8_t read_termination[128] = { 0 };
void esc_address (uint16_t address, uint8_t command, uint16_t * al_event)
{
/* Device is selected already.
* We use 2 bytes addressing.
*/
uint8_t data[2];
/* address 12:5 */
data[0] = (address >> 5);
/* address 4:0 and cmd 2:0 */
data[1] = ((address & 0x1F) << 3) | command;
/* Write (and read AL interrupt register) */
spi_bidirectionally_transfer (et1100, (uint8_t *) al_event, data,
sizeof (data));
}
#ifndef WSREAD
/** ESC read function used by the Slave stack.
*
* @param[in] address = address of ESC register to read
* @param[out] buf = pointer to buffer to read in
* @param[in] len = number of bytes to read
* @param[out] tALevent = on every read we refresh the AL event register
* @return 0 as default, the stack don't rely on any result
*/
uint8 ESC_read (uint16 address, void *buf, uint16 len, void *tALevent)
{
/* Select device. */
spi_select (et1100);
/* Write address and command to device. */
esc_address (address, ESC_CMD_READ, tALevent);
/* Here we want to read data and keep MOSI low (0x00) during
* all bytes except the last one where we want to pull it high (0xFF).
* Read (and write termination bytes).
*/
spi_bidirectionally_transfer (et1100, buf, read_termination + (128 - len),
len);
/* Un-select device. */
spi_unselect (et1100);
/* result is never used */
return 0;
}
#endif
#ifdef WSREAD
#error NOT SUPPORTED!
#endif
/** ESC write function used by the Slave stack.
*
* @param[in] address = address of ESC register to write
* @param[out] buf = pointer to buffer to write from
* @param[in] len = number of bytes to write
* @param[out] tALevent = on every read we refresh the AL event register
* @return 0 as default, the stack don't rely on any result
*/
uint8 ESC_write (uint16 address, void *buf, uint16 len, void *tALevent)
{
/* Select device. */
spi_select (et1100);
/* Write address and command to device. */
esc_address (address, ESC_CMD_WRITE, tALevent);
/* Write data. */
write (et1100, buf, len);
/* Un-select device. */
spi_unselect (et1100);
/* result is never used */
return 0;
}
void ESC_init (void * arg)
{
char * spi_name = (char *)arg;
et1100 = open (spi_name, O_RDWR, 0);
read_termination[127] = 0xFF;
}

524
soes/.cproject 100644
View File

@ -0,0 +1,524 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?fileVersion 4.0.0?>
<cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
<storageModule moduleId="org.eclipse.cdt.core.settings">
<cconfiguration id="rtlabs.config.armeabi.lib.debug.2131034717">
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="rtlabs.config.armeabi.lib.debug.2131034717" moduleId="org.eclipse.cdt.core.settings" name="Debug">
<externalSettings/>
<extensions>
<extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
<extension id="org.eclipse.cdt.core.MakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
</extensions>
</storageModule>
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
<configuration artifactExtension="a" artifactName="soes" buildArtefactType="rtlabs.buildArtefactType.lib" buildProperties="org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.debug,org.eclipse.cdt.build.core.buildArtefactType=rtlabs.buildArtefactType.lib" cleanCommand="rm -rf" description="" id="rtlabs.config.armeabi.lib.debug.2131034717" name="Debug" parent="rtlabs.config.armeabi.lib.debug">
<folderInfo id="rtlabs.config.armeabi.lib.debug.2131034717." name="/" resourcePath="">
<toolChain id="rtlabs.toolchain.armeabi.lib.debug.366687097" name="arm-eabi-gcc" superClass="rtlabs.toolchain.armeabi.lib.debug">
<targetPlatform id="rtlabs.target.armeabi.platform.lib.debug.1535129639" name="Debug Platform" superClass="rtlabs.target.armeabi.platform.lib.debug"/>
<builder buildPath="${workspace_loc:/soes/Debug}" id="rtlabs.target.armeabi.builder.lib.debug.1689617093" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" superClass="rtlabs.target.armeabi.builder.lib.debug"/>
<tool id="rtlabs.tool.armeabi.archiver.lib.debug.829952529" name="GCC Archiver" superClass="rtlabs.tool.armeabi.archiver.lib.debug"/>
<tool id="rtlabs.tool.armeabi.cpp.compiler.lib.debug.696853570" name="GCC C++ Compiler" superClass="rtlabs.tool.armeabi.cpp.compiler.lib.debug">
<option id="rtlabs.cpp.compiler.option.optimization.level.1022589365" name="Optimization Level" superClass="rtlabs.cpp.compiler.option.optimization.level" value="rtlabs.cpp.compiler.optimization.level.none" valueType="enumerated"/>
<option id="rtlabs.cpp.compiler.option.debugging.level.583885497" name="Debug Level" superClass="rtlabs.cpp.compiler.option.debugging.level" value="rtlabs.cpp.compiler.debugging.level.max" valueType="enumerated"/>
<option id="rtlabs.cpp.compiler.option.cputype.1765663704" name="CPU type" superClass="rtlabs.cpp.compiler.option.cputype" value="cortex-m3" valueType="string"/>
<option id="rtlabs.cpp.compiler.option.fputype.23562784" name="FPU type" superClass="rtlabs.cpp.compiler.option.fputype" value="vfp" valueType="string"/>
<option id="rtlabs.cpp.compiler.option.include.paths.521945166" name="Include paths (-I)" superClass="rtlabs.cpp.compiler.option.include.paths" valueType="includePath">
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/ove}/include&quot;"/>
<listOptionValue builtIn="false" value="${RT_TOOLS}/rt-kernel-kinetis/include"/>
<listOptionValue builtIn="false" value="${RT_TOOLS}/rt-kernel-kinetis/include/arch/kinetis"/>
<listOptionValue builtIn="false" value="${RT_TOOLS}/rt-kernel-kinetis/include/kern"/>
<listOptionValue builtIn="false" value="${RT_TOOLS}/rt-kernel-kinetis/include/drivers"/>
<listOptionValue builtIn="false" value="${RT_TOOLS}/rt-kernel-kinetis/lwip/src/include"/>
<listOptionValue builtIn="false" value="${RT_TOOLS}/rt-kernel-kinetis/lwip/src/include/ipv4"/>
</option>
</tool>
<tool id="rtlabs.tool.armeabi.c.compiler.lib.debug.938503971" name="GCC C Compiler" superClass="rtlabs.tool.armeabi.c.compiler.lib.debug">
<option defaultValue="rtlabs.c.optimization.level.none" id="rtlabs.c.compiler.option.optimization.level.244978858" name="Optimization Level" superClass="rtlabs.c.compiler.option.optimization.level" value="rtlabs.c.optimization.level.size" valueType="enumerated"/>
<option id="rtlabs.c.compiler.option.debugging.level.579079689" name="Debug Level" superClass="rtlabs.c.compiler.option.debugging.level" value="rtlabs.c.debugging.level.max" valueType="enumerated"/>
<option id="rtlabs.c.compiler.option.cputype.1548902665" name="CPU type" superClass="rtlabs.c.compiler.option.cputype" value="cortex-m3" valueType="string"/>
<option id="rtlabs.c.compiler.option.fputype.855635193" name="FPU type" superClass="rtlabs.c.compiler.option.fputype" value="vfp" valueType="string"/>
<option id="rtlabs.c.compiler.option.include.paths.79398892" name="Include paths (-I)" superClass="rtlabs.c.compiler.option.include.paths" valueType="includePath">
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/k60/include}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/rtl_slavedemo}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/soes_hw}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${RT_TOOLS}/rt-kernel-kinetis/include&quot;"/>
<listOptionValue builtIn="false" value="&quot;${RT_TOOLS}/rt-kernel-kinetis/include/kern&quot;"/>
<listOptionValue builtIn="false" value="&quot;${RT_TOOLS}/rt-kernel-kinetis/include/arch/kinetis&quot;"/>
<listOptionValue builtIn="false" value="&quot;${RT_TOOLS}/rt-kernel-kinetis/include/drivers&quot;"/>
<listOptionValue builtIn="false" value="&quot;${RT_TOOLS}/rt-kernel-kinetis/lwip/src/include&quot;"/>
<listOptionValue builtIn="false" value="&quot;${RT_TOOLS}/rt-kernel-kinetis/lwip/src/include/ipv4&quot;"/>
</option>
<option id="rtlabs.c.compiler.option.optimization.flags.2063580394" name="Other optimization flags" superClass="rtlabs.c.compiler.option.optimization.flags" value="-fno-strict-aliasing" valueType="string"/>
<option id="rtlabs.c.compiler.option.misc.other.1141698962" name="Other flags" superClass="rtlabs.c.compiler.option.misc.other" value="-c -fmessage-length=0 -fshort-wchar -Wno-unused-parameter" valueType="string"/>
<inputType id="rtlabs.tool.armeabi.c.compiler.input.1929320179" superClass="rtlabs.tool.armeabi.c.compiler.input"/>
</tool>
<tool id="rtlabs.tool.armeabi.c.linker.base.552988201" name="GCC C Linker" superClass="rtlabs.tool.armeabi.c.linker.base">
<option id="rtlabs.c.link.option.ldflags.1688252900" name="Linker flags" superClass="rtlabs.c.link.option.ldflags" value="-Wl,--no-wchar-size-warning" valueType="string"/>
<option id="rtlabs.c.link.option.cputype.868858032" name="CPU type" superClass="rtlabs.c.link.option.cputype" value="cortex-m3" valueType="string"/>
<option id="rtlabs.c.link.option.fputype.1498768764" name="FPU type" superClass="rtlabs.c.link.option.fputype" value="vfp" valueType="string"/>
</tool>
<tool id="rtlabs.tool.armeabi.cpp.linker.base.375778992" name="GCC C++ Linker" superClass="rtlabs.tool.armeabi.cpp.linker.base">
<option id="rtlabs.cpp.link.option.ldflags.1083174954" name="Linker flags" superClass="rtlabs.cpp.link.option.ldflags" value="-Wl,--no-wchar-size-warning" valueType="string"/>
<option id="rtlabs.cpp.link.option.cputype.1244125937" name="CPU type" superClass="rtlabs.cpp.link.option.cputype" value="cortex-m3" valueType="string"/>
<option id="rtlabs.cpp.link.option.fputype.1864254724" name="FPU type" superClass="rtlabs.cpp.link.option.fputype" value="vfp" valueType="string"/>
</tool>
<tool id="rtlabs.tool.armeabi.assembler.lib.debug.1840892184" name="GCC Assembler" superClass="rtlabs.tool.armeabi.assembler.lib.debug">
<inputType id="rtlabs.tool.gnu.assembler.input.1425591986" superClass="rtlabs.tool.gnu.assembler.input"/>
</tool>
<tool id="rtlabs.tool.armeabi.tt_parse.base.217197981" name="tt_parse" superClass="rtlabs.tool.armeabi.tt_parse.base"/>
<tool id="rtlabs.tool.armeabi.objcopy.base.267770674" name="GNU Objcopy" superClass="rtlabs.tool.armeabi.objcopy.base"/>
<tool id="rtlabs.tool.armeabi.report.base.1417864797" name="Report" superClass="rtlabs.tool.armeabi.report.base"/>
</toolChain>
</folderInfo>
</configuration>
</storageModule>
<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
</cconfiguration>
<cconfiguration id="rtlabs.config.armeabi.lib.release.1175849548">
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="rtlabs.config.armeabi.lib.release.1175849548" moduleId="org.eclipse.cdt.core.settings" name="Release">
<externalSettings/>
<extensions>
<extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
<extension id="org.eclipse.cdt.core.MakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
</extensions>
</storageModule>
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
<configuration artifactExtension="a" artifactName="soes" buildArtefactType="rtlabs.buildArtefactType.lib" buildProperties="org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.release,org.eclipse.cdt.build.core.buildArtefactType=rtlabs.buildArtefactType.lib" cleanCommand="rm -rf" description="" id="rtlabs.config.armeabi.lib.release.1175849548" name="Release" parent="rtlabs.config.armeabi.lib.release">
<folderInfo id="rtlabs.config.armeabi.lib.release.1175849548." name="/" resourcePath="">
<toolChain id="rtlabs.toolchain.armeabi.lib.release.1927487379" name="arm-eabi-gcc" superClass="rtlabs.toolchain.armeabi.lib.release">
<targetPlatform id="rtlabs.target.armeabi.platform.lib.release.1359681473" name="Debug Platform" superClass="rtlabs.target.armeabi.platform.lib.release"/>
<builder buildPath="${workspace_loc:/soes/Release}" id="rtlabs.target.armeabi.builder.lib.release.1076903497" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" superClass="rtlabs.target.armeabi.builder.lib.release"/>
<tool id="rtlabs.tool.armeabi.archiver.lib.release.294026764" name="GCC Archiver" superClass="rtlabs.tool.armeabi.archiver.lib.release"/>
<tool id="rtlabs.tool.armeabi.cpp.compiler.lib.release.1726368298" name="GCC C++ Compiler" superClass="rtlabs.tool.armeabi.cpp.compiler.lib.release">
<option id="rtlabs.cpp.compiler.option.optimization.level.1733582146" name="Optimization Level" superClass="rtlabs.cpp.compiler.option.optimization.level" value="rtlabs.cpp.compiler.optimization.level.size" valueType="enumerated"/>
<option id="rtlabs.cpp.compiler.option.debugging.level.1270169161" name="Debug Level" superClass="rtlabs.cpp.compiler.option.debugging.level" value="rtlabs.cpp.compiler.debugging.level.none" valueType="enumerated"/>
<option id="rtlabs.cpp.compiler.option.cputype.401799170" name="CPU type" superClass="rtlabs.cpp.compiler.option.cputype" value="cortex-m3" valueType="string"/>
<option id="rtlabs.cpp.compiler.option.fputype.1528027500" name="FPU type" superClass="rtlabs.cpp.compiler.option.fputype" value="vfp" valueType="string"/>
<option id="rtlabs.cpp.compiler.option.include.paths.1711984968" name="Include paths (-I)" superClass="rtlabs.cpp.compiler.option.include.paths" valueType="includePath">
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/ove}/include&quot;"/>
<listOptionValue builtIn="false" value="${RT_TOOLS}/rt-kernel-kinetis/include"/>
<listOptionValue builtIn="false" value="${RT_TOOLS}/rt-kernel-kinetis/include/arch/kinetis"/>
<listOptionValue builtIn="false" value="${RT_TOOLS}/rt-kernel-kinetis/include/kern"/>
<listOptionValue builtIn="false" value="${RT_TOOLS}/rt-kernel-kinetis/include/drivers"/>
<listOptionValue builtIn="false" value="${RT_TOOLS}/rt-kernel-kinetis/lwip/src/include"/>
<listOptionValue builtIn="false" value="${RT_TOOLS}/rt-kernel-kinetis/lwip/src/include/ipv4"/>
</option>
</tool>
<tool id="rtlabs.tool.armeabi.c.compiler.lib.release.406234290" name="GCC C Compiler" superClass="rtlabs.tool.armeabi.c.compiler.lib.release">
<option defaultValue="rtlabs.c.optimization.level.size" id="rtlabs.c.compiler.option.optimization.level.1952413531" name="Optimization Level" superClass="rtlabs.c.compiler.option.optimization.level" valueType="enumerated"/>
<option id="rtlabs.c.compiler.option.debugging.level.1132242450" name="Debug Level" superClass="rtlabs.c.compiler.option.debugging.level" value="rtlabs.c.debugging.level.none" valueType="enumerated"/>
<option id="rtlabs.c.compiler.option.cputype.1478344429" name="CPU type" superClass="rtlabs.c.compiler.option.cputype" value="cortex-m3" valueType="string"/>
<option id="rtlabs.c.compiler.option.fputype.1170053808" name="FPU type" superClass="rtlabs.c.compiler.option.fputype" value="vfp" valueType="string"/>
<option id="rtlabs.c.compiler.option.include.paths.2130047993" name="Include paths (-I)" superClass="rtlabs.c.compiler.option.include.paths" valueType="includePath">
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/ove}/include&quot;"/>
<listOptionValue builtIn="false" value="${RT_TOOLS}/rt-kernel-kinetis/include"/>
<listOptionValue builtIn="false" value="${RT_TOOLS}/rt-kernel-kinetis/include/arch/kinetis"/>
<listOptionValue builtIn="false" value="${RT_TOOLS}/rt-kernel-kinetis/include/kern"/>
<listOptionValue builtIn="false" value="${RT_TOOLS}/rt-kernel-kinetis/include/drivers"/>
<listOptionValue builtIn="false" value="${RT_TOOLS}/rt-kernel-kinetis/lwip/src/include"/>
<listOptionValue builtIn="false" value="${RT_TOOLS}/rt-kernel-kinetis/lwip/src/include/ipv4"/>
</option>
<inputType id="rtlabs.tool.armeabi.c.compiler.input.2143338800" superClass="rtlabs.tool.armeabi.c.compiler.input"/>
</tool>
<tool id="rtlabs.tool.armeabi.c.linker.base.915242624" name="GCC C Linker" superClass="rtlabs.tool.armeabi.c.linker.base">
<option id="rtlabs.c.link.option.ldflags.1647058270" name="Linker flags" superClass="rtlabs.c.link.option.ldflags" value="-Wl,--no-wchar-size-warning" valueType="string"/>
<option id="rtlabs.c.link.option.cputype.1708628671" name="CPU type" superClass="rtlabs.c.link.option.cputype" value="cortex-m3" valueType="string"/>
<option id="rtlabs.c.link.option.fputype.618692293" name="FPU type" superClass="rtlabs.c.link.option.fputype" value="vfp" valueType="string"/>
</tool>
<tool id="rtlabs.tool.armeabi.cpp.linker.base.2128529981" name="GCC C++ Linker" superClass="rtlabs.tool.armeabi.cpp.linker.base">
<option id="rtlabs.cpp.link.option.ldflags.2075920446" name="Linker flags" superClass="rtlabs.cpp.link.option.ldflags" value="-Wl,--no-wchar-size-warning" valueType="string"/>
<option id="rtlabs.cpp.link.option.cputype.1356692523" name="CPU type" superClass="rtlabs.cpp.link.option.cputype" value="cortex-m3" valueType="string"/>
<option id="rtlabs.cpp.link.option.fputype.662228326" name="FPU type" superClass="rtlabs.cpp.link.option.fputype" value="vfp" valueType="string"/>
</tool>
<tool id="rtlabs.tool.armeabi.assembler.lib.release.587275398" name="GCC Assembler" superClass="rtlabs.tool.armeabi.assembler.lib.release">
<inputType id="rtlabs.tool.gnu.assembler.input.1602381483" superClass="rtlabs.tool.gnu.assembler.input"/>
</tool>
<tool id="rtlabs.tool.armeabi.tt_parse.base.16224567" name="tt_parse" superClass="rtlabs.tool.armeabi.tt_parse.base"/>
<tool id="rtlabs.tool.armeabi.objcopy.base.1221609684" name="GNU Objcopy" superClass="rtlabs.tool.armeabi.objcopy.base"/>
<tool id="rtlabs.tool.armeabi.report.base.27510431" name="Report" superClass="rtlabs.tool.armeabi.report.base"/>
</toolChain>
</folderInfo>
</configuration>
</storageModule>
<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
</cconfiguration>
</storageModule>
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
<project id="soes.rtlabs.target.armeabi.lib.1628841477" name="Library" projectType="rtlabs.target.armeabi.lib"/>
</storageModule>
<storageModule moduleId="refreshScope"/>
<storageModule moduleId="scannerConfiguration">
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
<profile id="com.rtlabs.workbench.armeabi.armeabiManagedMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="${_COMPILERS}/arm-eabi/bin/arm-eabi-gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="com.rtlabs.workbench.bfinelf.BfinElfManagedMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="${_COMPILERS}/bfin-elf/bin/bfin-elf-gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="com.rtlabs.workbench.powerpceabi.PowerPCEABIManagedMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="${_COMPILERS}/powerpc-eabi/bin/powerpc-eabi-gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="com.rtlabs.workbench.powerpceabispe.PowerPCEABISPEManagedMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="${_COMPILERS}/powerpc-eabispe/bin/powerpc-eabispe-gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="makefileGenerator">
<runAction arguments="-E -P -v -dD" command="" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/${specs_file}&quot;'" command="sh" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-c 'g++ -E -P -v -dD &quot;${plugin_state_location}/specs.cpp&quot;'" command="sh" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/specs.c&quot;'" command="sh" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<scannerConfigBuildInfo instanceId="rtlabs.config.armeabi.lib.release.1175849548;rtlabs.config.armeabi.lib.release.1175849548.;rtlabs.tool.armeabi.c.compiler.lib.release.406234290;rtlabs.tool.armeabi.c.compiler.input.2143338800">
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.rtlabs.workbench.armeabi.armeabiManagedMakePerProjectProfile"/>
<profile id="com.rtlabs.workbench.armeabi.armeabiManagedMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="${_COMPILERS}/arm-eabi/bin/arm-eabi-gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="com.rtlabs.workbench.bfinelf.BfinElfManagedMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="${_COMPILERS}/bfin-elf/bin/bfin-elf-gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="com.rtlabs.workbench.powerpceabi.PowerPCEABIManagedMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="${_COMPILERS}/powerpc-eabi/bin/powerpc-eabi-gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="com.rtlabs.workbench.powerpceabispe.PowerPCEABISPEManagedMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="${_COMPILERS}/powerpc-eabispe/bin/powerpc-eabispe-gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="makefileGenerator">
<runAction arguments="-E -P -v -dD" command="" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/${specs_file}&quot;'" command="sh" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-c 'g++ -E -P -v -dD &quot;${plugin_state_location}/specs.cpp&quot;'" command="sh" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/specs.c&quot;'" command="sh" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
</scannerConfigBuildInfo>
<scannerConfigBuildInfo instanceId="rtlabs.config.armeabi.lib.debug.2131034717;rtlabs.config.armeabi.lib.debug.2131034717.;rtlabs.tool.armeabi.c.compiler.lib.debug.938503971;rtlabs.tool.armeabi.c.compiler.input.1929320179">
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.rtlabs.workbench.armeabi.armeabiManagedMakePerProjectProfile"/>
<profile id="com.rtlabs.workbench.armeabi.armeabiManagedMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="${_COMPILERS}/arm-eabi/bin/arm-eabi-gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="com.rtlabs.workbench.bfinelf.BfinElfManagedMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="${_COMPILERS}/bfin-elf/bin/bfin-elf-gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="com.rtlabs.workbench.powerpceabi.PowerPCEABIManagedMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="${_COMPILERS}/powerpc-eabi/bin/powerpc-eabi-gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="com.rtlabs.workbench.powerpceabispe.PowerPCEABISPEManagedMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="${_COMPILERS}/powerpc-eabispe/bin/powerpc-eabispe-gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="makefileGenerator">
<runAction arguments="-E -P -v -dD" command="" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/${specs_file}&quot;'" command="sh" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-c 'g++ -E -P -v -dD &quot;${plugin_state_location}/specs.cpp&quot;'" command="sh" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/specs.c&quot;'" command="sh" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
</scannerConfigBuildInfo>
</storageModule>
</cproject>

82
soes/.project 100644
View File

@ -0,0 +1,82 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>soes</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name>
<triggers>clean,full,incremental,</triggers>
<arguments>
<dictionary>
<key>?name?</key>
<value></value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.append_environment</key>
<value>true</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.autoBuildTarget</key>
<value>all</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.buildArguments</key>
<value></value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.buildCommand</key>
<value>make</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.buildLocation</key>
<value>${workspace_loc:/soes/Debug}</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.cleanBuildTarget</key>
<value>clean</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.contents</key>
<value>org.eclipse.cdt.make.core.activeConfigSettings</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.enableAutoBuild</key>
<value>false</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.enableCleanBuild</key>
<value>true</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.enableFullBuild</key>
<value>true</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.fullBuildTarget</key>
<value>all</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.stopOnError</key>
<value>true</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.useDefaultBuildCmd</key>
<value>true</value>
</dictionary>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>
<triggers>full,incremental,</triggers>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.cdt.core.cnature</nature>
<nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
<nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
</natures>
</projectDescription>

1742
soes/Doxyfile 100644

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,68 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>SOES: Data Structures</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<!-- Generated by Doxygen 1.7.4 -->
<div id="top">
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">SOES&#160;<span id="projectnumber">v1.0.0</span></div>
</td>
</tr>
</tbody>
</table>
</div>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
<li><a href="functions.html"><span>Data&#160;Fields</span></a></li>
</ul>
</div>
</div>
<div class="header">
<div class="headertitle">
<div class="title">Data Structures</div> </div>
</div>
<div class="contents">
<div class="textblock">Here are the data structures with brief descriptions:</div><table>
<tr><td class="indexkey"><a class="el" href="struct__COEentdesc.html">_COEentdesc</a></td><td class="indexvalue"></td></tr>
<tr><td class="indexkey"><a class="el" href="struct__COEh.html">_COEh</a></td><td class="indexvalue"></td></tr>
<tr><td class="indexkey"><a class="el" href="struct__COEobjdesc.html">_COEobjdesc</a></td><td class="indexvalue"></td></tr>
<tr><td class="indexkey"><a class="el" href="struct__COEsdo.html">_COEsdo</a></td><td class="indexvalue"></td></tr>
<tr><td class="indexkey"><a class="el" href="struct__ESCsm.html">_ESCsm</a></td><td class="indexvalue"></td></tr>
<tr><td class="indexkey"><a class="el" href="struct__ESCsm2.html">_ESCsm2</a></td><td class="indexvalue"></td></tr>
<tr><td class="indexkey"><a class="el" href="struct__ESCvar.html">_ESCvar</a></td><td class="indexvalue"></td></tr>
<tr><td class="indexkey"><a class="el" href="struct__FOE.html">_FOE</a></td><td class="indexvalue"></td></tr>
<tr><td class="indexkey"><a class="el" href="struct__FOEh.html">_FOEh</a></td><td class="indexvalue"></td></tr>
<tr><td class="indexkey"><a class="el" href="struct__FOEvar.html">_FOEvar</a></td><td class="indexvalue"></td></tr>
<tr><td class="indexkey"><a class="el" href="struct__INFOh.html">_INFOh</a></td><td class="indexvalue"></td></tr>
<tr><td class="indexkey"><a class="el" href="struct__MBX.html">_MBX</a></td><td class="indexvalue"></td></tr>
<tr><td class="indexkey"><a class="el" href="struct__MBXcontrol.html">_MBXcontrol</a></td><td class="indexvalue"></td></tr>
<tr><td class="indexkey"><a class="el" href="struct__MBXerr.html">_MBXerr</a></td><td class="indexvalue"></td></tr>
<tr><td class="indexkey"><a class="el" href="struct__MBXh.html">_MBXh</a></td><td class="indexvalue"></td></tr>
<tr><td class="indexkey"><a class="el" href="structesc__cfg__t.html">esc_cfg_t</a></td><td class="indexvalue"></td></tr>
<tr><td class="indexkey"><a class="el" href="structfoe__cfg__t.html">foe_cfg_t</a></td><td class="indexvalue"></td></tr>
<tr><td class="indexkey"><a class="el" href="structfoe__writefile__cfg.html">foe_writefile_cfg_t</a></td><td class="indexvalue"></td></tr>
<tr><td class="indexkey"><a class="el" href="structPACKED.html">PACKED</a></td><td class="indexvalue"></td></tr>
</table>
</div>
<hr class="footer"/><address class="footer"><small>Generated on Wed Jul 10 2013 11:14:19 for SOES by&#160;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
</body>
</html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 677 B

View File

@ -0,0 +1,54 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>SOES: Data Structure Index</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<!-- Generated by Doxygen 1.7.4 -->
<div id="top">
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">SOES&#160;<span id="projectnumber">v1.0.0</span></div>
</td>
</tr>
</tbody>
</table>
</div>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
<li><a href="functions.html"><span>Data&#160;Fields</span></a></li>
</ul>
</div>
</div>
<div class="header">
<div class="headertitle">
<div class="title">Data Structure Index</div> </div>
</div>
<div class="contents">
<div class="qindex"><a class="qindex" href="#letter_E">E</a>&#160;|&#160;<a class="qindex" href="#letter_F">F</a>&#160;|&#160;<a class="qindex" href="#letter_P">P</a>&#160;|&#160;<a class="qindex" href="#letter__">_</a></div>
<table align="center" width="95%" border="0" cellspacing="0" cellpadding="0">
<tr><td><a name="letter_E"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;E&#160;&#160;</div></td></tr></table>
</td><td><a name="letter_P"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;P&#160;&#160;</div></td></tr></table>
</td><td><a class="el" href="struct__COEobjdesc.html">_COEobjdesc</a>&#160;&#160;&#160;</td><td><a class="el" href="struct__FOE.html">_FOE</a>&#160;&#160;&#160;</td><td><a class="el" href="struct__MBX.html">_MBX</a>&#160;&#160;&#160;</td></tr><tr><td><a class="el" href="structesc__cfg__t.html">esc_cfg_t</a>&#160;&#160;&#160;</td><td><a class="el" href="structPACKED.html">PACKED</a>&#160;&#160;&#160;</td><td><a class="el" href="struct__COEsdo.html">_COEsdo</a>&#160;&#160;&#160;</td><td><a class="el" href="struct__FOEh.html">_FOEh</a>&#160;&#160;&#160;</td><td><a class="el" href="struct__MBXcontrol.html">_MBXcontrol</a>&#160;&#160;&#160;</td></tr><tr><td><a name="letter_F"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;F&#160;&#160;</div></td></tr></table>
</td><td><a name="letter__"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;_&#160;&#160;</div></td></tr></table>
</td><td><a class="el" href="struct__ESCsm.html">_ESCsm</a>&#160;&#160;&#160;</td><td><a class="el" href="struct__FOEvar.html">_FOEvar</a>&#160;&#160;&#160;</td><td><a class="el" href="struct__MBXerr.html">_MBXerr</a>&#160;&#160;&#160;</td></tr><tr><td><a class="el" href="structfoe__cfg__t.html">foe_cfg_t</a>&#160;&#160;&#160;</td><td><a class="el" href="struct__COEentdesc.html">_COEentdesc</a>&#160;&#160;&#160;</td><td><a class="el" href="struct__ESCsm2.html">_ESCsm2</a>&#160;&#160;&#160;</td><td><a class="el" href="struct__INFOh.html">_INFOh</a>&#160;&#160;&#160;</td><td><a class="el" href="struct__MBXh.html">_MBXh</a>&#160;&#160;&#160;</td></tr><tr><td><a class="el" href="structfoe__writefile__cfg.html">foe_writefile_cfg</a>&#160;&#160;&#160;</td><td><a class="el" href="struct__COEh.html">_COEh</a>&#160;&#160;&#160;</td><td><a class="el" href="struct__ESCvar.html">_ESCvar</a>&#160;&#160;&#160;</td></tr></table><div class="qindex"><a class="qindex" href="#letter_E">E</a>&#160;|&#160;<a class="qindex" href="#letter_F">F</a>&#160;|&#160;<a class="qindex" href="#letter_P">P</a>&#160;|&#160;<a class="qindex" href="#letter__">_</a></div>
</div>
<hr class="footer"/><address class="footer"><small>Generated on Wed Jul 10 2013 11:14:19 for SOES by&#160;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
</body>
</html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 126 B

View File

@ -0,0 +1,835 @@
/* The standard CSS for doxygen */
body, table, div, p, dl {
font-family: Lucida Grande, Verdana, Geneva, Arial, sans-serif;
font-size: 12px;
}
/* @group Heading Levels */
h1 {
font-size: 150%;
}
.title {
font-size: 150%;
font-weight: bold;
margin: 10px 2px;
}
h2 {
font-size: 120%;
}
h3 {
font-size: 100%;
}
dt {
font-weight: bold;
}
div.multicol {
-moz-column-gap: 1em;
-webkit-column-gap: 1em;
-moz-column-count: 3;
-webkit-column-count: 3;
}
p.startli, p.startdd, p.starttd {
margin-top: 2px;
}
p.endli {
margin-bottom: 0px;
}
p.enddd {
margin-bottom: 4px;
}
p.endtd {
margin-bottom: 2px;
}
/* @end */
caption {
font-weight: bold;
}
span.legend {
font-size: 70%;
text-align: center;
}
h3.version {
font-size: 90%;
text-align: center;
}
div.qindex, div.navtab{
background-color: #EBEFF6;
border: 1px solid #A3B4D7;
text-align: center;
margin: 2px;
padding: 2px;
}
div.qindex, div.navpath {
width: 100%;
line-height: 140%;
}
div.navtab {
margin-right: 15px;
}
/* @group Link Styling */
a {
color: #3D578C;
font-weight: normal;
text-decoration: none;
}
.contents a:visited {
color: #4665A2;
}
a:hover {
text-decoration: underline;
}
a.qindex {
font-weight: bold;
}
a.qindexHL {
font-weight: bold;
background-color: #9CAFD4;
color: #ffffff;
border: 1px double #869DCA;
}
.contents a.qindexHL:visited {
color: #ffffff;
}
a.el {
font-weight: bold;
}
a.elRef {
}
a.code {
color: #4665A2;
}
a.codeRef {
color: #4665A2;
}
/* @end */
dl.el {
margin-left: -1cm;
}
.fragment {
font-family: monospace, fixed;
font-size: 105%;
}
pre.fragment {
border: 1px solid #C4CFE5;
background-color: #FBFCFD;
padding: 4px 6px;
margin: 4px 8px 4px 2px;
overflow: auto;
word-wrap: break-word;
font-size: 9pt;
line-height: 125%;
}
div.ah {
background-color: black;
font-weight: bold;
color: #ffffff;
margin-bottom: 3px;
margin-top: 3px;
padding: 0.2em;
border: solid thin #333;
border-radius: 0.5em;
-webkit-border-radius: .5em;
-moz-border-radius: .5em;
box-shadow: 2px 2px 3px #999;
-webkit-box-shadow: 2px 2px 3px #999;
-moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px;
background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444));
background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000);
}
div.groupHeader {
margin-left: 16px;
margin-top: 12px;
font-weight: bold;
}
div.groupText {
margin-left: 16px;
font-style: italic;
}
body {
background: white;
color: black;
margin: 0;
}
div.contents {
margin-top: 10px;
margin-left: 10px;
margin-right: 5px;
}
td.indexkey {
background-color: #EBEFF6;
font-weight: bold;
border: 1px solid #C4CFE5;
margin: 2px 0px 2px 0;
padding: 2px 10px;
}
td.indexvalue {
background-color: #EBEFF6;
border: 1px solid #C4CFE5;
padding: 2px 10px;
margin: 2px 0px;
}
tr.memlist {
background-color: #EEF1F7;
}
p.formulaDsp {
text-align: center;
}
img.formulaDsp {
}
img.formulaInl {
vertical-align: middle;
}
div.center {
text-align: center;
margin-top: 0px;
margin-bottom: 0px;
padding: 0px;
}
div.center img {
border: 0px;
}
address.footer {
text-align: right;
padding-right: 12px;
}
img.footer {
border: 0px;
vertical-align: middle;
}
/* @group Code Colorization */
span.keyword {
color: #008000
}
span.keywordtype {
color: #604020
}
span.keywordflow {
color: #e08000
}
span.comment {
color: #800000
}
span.preprocessor {
color: #806020
}
span.stringliteral {
color: #002080
}
span.charliteral {
color: #008080
}
span.vhdldigit {
color: #ff00ff
}
span.vhdlchar {
color: #000000
}
span.vhdlkeyword {
color: #700070
}
span.vhdllogic {
color: #ff0000
}
/* @end */
/*
.search {
color: #003399;
font-weight: bold;
}
form.search {
margin-bottom: 0px;
margin-top: 0px;
}
input.search {
font-size: 75%;
color: #000080;
font-weight: normal;
background-color: #e8eef2;
}
*/
td.tiny {
font-size: 75%;
}
.dirtab {
padding: 4px;
border-collapse: collapse;
border: 1px solid #A3B4D7;
}
th.dirtab {
background: #EBEFF6;
font-weight: bold;
}
hr {
height: 0px;
border: none;
border-top: 1px solid #4A6AAA;
}
hr.footer {
height: 1px;
}
/* @group Member Descriptions */
table.memberdecls {
border-spacing: 0px;
padding: 0px;
}
.mdescLeft, .mdescRight,
.memItemLeft, .memItemRight,
.memTemplItemLeft, .memTemplItemRight, .memTemplParams {
background-color: #F9FAFC;
border: none;
margin: 4px;
padding: 1px 0 0 8px;
}
.mdescLeft, .mdescRight {
padding: 0px 8px 4px 8px;
color: #555;
}
.memItemLeft, .memItemRight, .memTemplParams {
border-top: 1px solid #C4CFE5;
}
.memItemLeft, .memTemplItemLeft {
white-space: nowrap;
}
.memItemRight {
width: 100%;
}
.memTemplParams {
color: #4665A2;
white-space: nowrap;
}
/* @end */
/* @group Member Details */
/* Styles for detailed member documentation */
.memtemplate {
font-size: 80%;
color: #4665A2;
font-weight: normal;
margin-left: 9px;
}
.memnav {
background-color: #EBEFF6;
border: 1px solid #A3B4D7;
text-align: center;
margin: 2px;
margin-right: 15px;
padding: 2px;
}
.mempage {
width: 100%;
}
.memitem {
padding: 0;
margin-bottom: 10px;
margin-right: 5px;
}
.memname {
white-space: nowrap;
font-weight: bold;
margin-left: 6px;
}
.memproto {
border-top: 1px solid #A8B8D9;
border-left: 1px solid #A8B8D9;
border-right: 1px solid #A8B8D9;
padding: 6px 0px 6px 0px;
color: #253555;
font-weight: bold;
text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);
/* opera specific markup */
box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
border-top-right-radius: 8px;
border-top-left-radius: 8px;
/* firefox specific markup */
-moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;
-moz-border-radius-topright: 8px;
-moz-border-radius-topleft: 8px;
/* webkit specific markup */
-webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
-webkit-border-top-right-radius: 8px;
-webkit-border-top-left-radius: 8px;
background-image:url('nav_f.png');
background-repeat:repeat-x;
background-color: #E2E8F2;
}
.memdoc {
border-bottom: 1px solid #A8B8D9;
border-left: 1px solid #A8B8D9;
border-right: 1px solid #A8B8D9;
padding: 2px 5px;
background-color: #FBFCFD;
border-top-width: 0;
/* opera specific markup */
border-bottom-left-radius: 8px;
border-bottom-right-radius: 8px;
box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
/* firefox specific markup */
-moz-border-radius-bottomleft: 8px;
-moz-border-radius-bottomright: 8px;
-moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;
background-image: -moz-linear-gradient(center top, #FFFFFF 0%, #FFFFFF 60%, #F7F8FB 95%, #EEF1F7);
/* webkit specific markup */
-webkit-border-bottom-left-radius: 8px;
-webkit-border-bottom-right-radius: 8px;
-webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
background-image: -webkit-gradient(linear,center top,center bottom,from(#FFFFFF), color-stop(0.6,#FFFFFF), color-stop(0.60,#FFFFFF), color-stop(0.95,#F7F8FB), to(#EEF1F7));
}
.paramkey {
text-align: right;
}
.paramtype {
white-space: nowrap;
}
.paramname {
color: #602020;
white-space: nowrap;
}
.paramname em {
font-style: normal;
}
.params, .retval, .exception, .tparams {
border-spacing: 6px 2px;
}
.params .paramname, .retval .paramname {
font-weight: bold;
vertical-align: top;
}
.params .paramtype {
font-style: italic;
vertical-align: top;
}
.params .paramdir {
font-family: "courier new",courier,monospace;
vertical-align: top;
}
/* @end */
/* @group Directory (tree) */
/* for the tree view */
.ftvtree {
font-family: sans-serif;
margin: 0px;
}
/* these are for tree view when used as main index */
.directory {
font-size: 9pt;
font-weight: bold;
margin: 5px;
}
.directory h3 {
margin: 0px;
margin-top: 1em;
font-size: 11pt;
}
/*
The following two styles can be used to replace the root node title
with an image of your choice. Simply uncomment the next two styles,
specify the name of your image and be sure to set 'height' to the
proper pixel height of your image.
*/
/*
.directory h3.swap {
height: 61px;
background-repeat: no-repeat;
background-image: url("yourimage.gif");
}
.directory h3.swap span {
display: none;
}
*/
.directory > h3 {
margin-top: 0;
}
.directory p {
margin: 0px;
white-space: nowrap;
}
.directory div {
display: none;
margin: 0px;
}
.directory img {
vertical-align: -30%;
}
/* these are for tree view when not used as main index */
.directory-alt {
font-size: 100%;
font-weight: bold;
}
.directory-alt h3 {
margin: 0px;
margin-top: 1em;
font-size: 11pt;
}
.directory-alt > h3 {
margin-top: 0;
}
.directory-alt p {
margin: 0px;
white-space: nowrap;
}
.directory-alt div {
display: none;
margin: 0px;
}
.directory-alt img {
vertical-align: -30%;
}
/* @end */
div.dynheader {
margin-top: 8px;
}
address {
font-style: normal;
color: #2A3D61;
}
table.doxtable {
border-collapse:collapse;
}
table.doxtable td, table.doxtable th {
border: 1px solid #2D4068;
padding: 3px 7px 2px;
}
table.doxtable th {
background-color: #374F7F;
color: #FFFFFF;
font-size: 110%;
padding-bottom: 4px;
padding-top: 5px;
text-align:left;
}
.tabsearch {
top: 0px;
left: 10px;
height: 36px;
background-image: url('tab_b.png');
z-index: 101;
overflow: hidden;
font-size: 13px;
}
.navpath ul
{
font-size: 11px;
background-image:url('tab_b.png');
background-repeat:repeat-x;
height:30px;
line-height:30px;
color:#8AA0CC;
border:solid 1px #C2CDE4;
overflow:hidden;
margin:0px;
padding:0px;
}
.navpath li
{
list-style-type:none;
float:left;
padding-left:10px;
padding-right:15px;
background-image:url('bc_s.png');
background-repeat:no-repeat;
background-position:right;
color:#364D7C;
}
.navpath li.navelem a
{
height:32px;
display:block;
text-decoration: none;
outline: none;
}
.navpath li.navelem a:hover
{
color:#6884BD;
}
.navpath li.footer
{
list-style-type:none;
float:right;
padding-left:10px;
padding-right:15px;
background-image:none;
background-repeat:no-repeat;
background-position:right;
color:#364D7C;
font-size: 8pt;
}
div.summary
{
float: right;
font-size: 8pt;
padding-right: 5px;
width: 50%;
text-align: right;
}
div.summary a
{
white-space: nowrap;
}
div.ingroups
{
font-size: 8pt;
padding-left: 5px;
width: 50%;
text-align: left;
}
div.ingroups a
{
white-space: nowrap;
}
div.header
{
background-image:url('nav_h.png');
background-repeat:repeat-x;
background-color: #F9FAFC;
margin: 0px;
border-bottom: 1px solid #C4CFE5;
}
div.headertitle
{
padding: 5px 5px 5px 10px;
}
dl
{
padding: 0 0 0 10px;
}
dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug
{
border-left:4px solid;
padding: 0 0 0 6px;
}
dl.note
{
border-color: #D0C000;
}
dl.warning, dl.attention
{
border-color: #FF0000;
}
dl.pre, dl.post, dl.invariant
{
border-color: #00D000;
}
dl.deprecated
{
border-color: #505050;
}
dl.todo
{
border-color: #00C0E0;
}
dl.test
{
border-color: #3030E0;
}
dl.bug
{
border-color: #C08050;
}
#projectlogo
{
text-align: center;
vertical-align: bottom;
border-collapse: separate;
}
#projectlogo img
{
border: 0px none;
}
#projectname
{
font: 300% Tahoma, Arial,sans-serif;
margin: 0px;
padding: 2px 0px;
}
#projectbrief
{
font: 120% Tahoma, Arial,sans-serif;
margin: 0px;
padding: 0px;
}
#projectnumber
{
font: 50% Tahoma, Arial,sans-serif;
margin: 0px;
padding: 0px;
}
#titlearea
{
padding: 0px;
margin: 0px;
width: 100%;
border-bottom: 1px solid #5373B4;
}
.image
{
text-align: center;
}
.dotgraph
{
text-align: center;
}
.mscgraph
{
text-align: center;
}
.caption
{
font-weight: bold;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

View File

@ -0,0 +1,747 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>SOES: esc.c File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<!-- Generated by Doxygen 1.7.4 -->
<div id="top">
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">SOES&#160;<span id="projectnumber">v1.0.0</span></div>
</td>
</tr>
</tbody>
</table>
</div>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
<li><a href="globals.html"><span>Globals</span></a></li>
</ul>
</div>
</div>
<div class="header">
<div class="summary">
<a href="#func-members">Functions</a> &#124;
<a href="#var-members">Variables</a> </div>
<div class="headertitle">
<div class="title">esc.c File Reference</div> </div>
</div>
<div class="contents">
<p>Base EtherCAT functions for handling the Data Link Layer and Malilboxes.
<a href="#details">More...</a></p>
<div class="textblock"><code>#include &lt;string.h&gt;</code><br/>
<code>#include &quot;utypes.h&quot;</code><br/>
<code>#include &quot;<a class="el" href="esc_8h.html">esc.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="esc__coe_8h.html">esc_coe.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="esc__foe_8h.html">esc_foe.h</a>&quot;</code><br/>
</div><table class="memberdecls">
<tr><td colspan="2"><h2><a name="func-members"></a>
Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="esc_8c.html#ae49fff6e6440edd2c55a077d724b898c">ESC_ALerror</a> (uint16 errornumber)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="esc_8c.html#a9794dd94da984eb6bfb88879aabf4e3d">ESC_ALstatus</a> (uint8 status)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="esc_8c.html#ad4f4c1dd0c961f827f8f1d578fed087d">ESC_SMack</a> (uint8 n)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="esc_8c.html#ad419b1ac3abaf24fa53d55ede4810ce7">ESC_SMstatus</a> (uint8 n)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="esc_8c.html#a602dae15b9286e4ab4716fb85f8f3c58">ESC_SMwritepdi</a> (uint8 n)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="esc_8c.html#a20ec7aa0e6d89492dc4562b9c4657f6f">ESC_SMenable</a> (uint8 n)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="esc_8c.html#af318524ace0e280d9e87afc9f73b57fa">ESC_SMdisable</a> (uint8 n)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="esc_8c.html#a152dee1d6c0bce00aa029d833e147380">ESC_address</a> (void)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">uint8&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="esc_8c.html#a86d7576d9f8b1e63ad8ad2a6cf991c50">ESC_WDstatus</a> (void)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">uint8&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="esc_8c.html#aeee5a004e7e70410ceb89c26537a2ccf">ESC_checkmbx</a> (uint8 state)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">uint8&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="esc_8c.html#afc72202bfde332668a10d54e3b56083b">ESC_startmbx</a> (uint8 state)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">uint8&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="esc_8c.html#a5cd0a7feb7e50e42fcdb71e6a28799ab">ESC_checkmbxboot</a> (uint8 state)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">uint8&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="esc_8c.html#a99dd26de7272793bd6ffe56af9316fbe">ESC_startmbxboot</a> (uint8 state)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="esc_8c.html#af114806603011938e35ae366d115d90f">ESC_stopmbx</a> (void)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="esc_8c.html#a268c2208d13c00552cc25c7c823c78b3">ESC_readmbx</a> (void)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="esc_8c.html#add404335229e458ca751345aa701f3ce">ESC_writembx</a> (uint8 n)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="esc_8c.html#a3833c0b62cdc0b62ee929154e9744fcc">ESC_ackmbxread</a> (void)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">uint8&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="esc_8c.html#a9cdac6a8b19f5a033267973c6b97e501">ESC_claimbuffer</a> (void)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">uint8&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="esc_8c.html#ab5fb5800733c7419cad42f030860b966">ESC_outreqbuffer</a> (void)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="esc_8c.html#ad4d3079177cc7d1bd78862b5a5cb7fe7">MBX_error</a> (uint16 error)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">uint8&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="esc_8c.html#ae75d37a1bdce82374c3b262f18945cb3">ESC_mbxprocess</a> (void)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="esc_8c.html#aa783bb45ace470b98607ce7c4af0460f">ESC_xoeprocess</a> (void)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">uint8&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="esc_8c.html#a24ef310d3626f86db81293553d0a6c88">ESC_checkSM23</a> (uint8 state)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">uint8&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="esc_8c.html#a7e667a53ef89c4a27578e26e2479d05d">ESC_startinput</a> (uint8 state)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="esc_8c.html#a81ea48b9683662e8bed01fbb77826236">ESC_stopinput</a> (void)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">uint8&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="esc_8c.html#a5e77a7172bd88586c08829b6d5977016">ESC_startoutput</a> (uint8 state)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="esc_8c.html#aea60761cf8862550e8901aa996069f8d">ESC_stopoutput</a> (void)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="esc_8c.html#a1f4da4aa96dc469b218abf33ff857130">ESC_state</a> (void)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="esc_8c.html#a5ddaf0c8fd9944f21be30480125b6736">ESC_config</a> (<a class="el" href="structesc__cfg__t.html">esc_cfg_t</a> *cfg)</td></tr>
<tr><td colspan="2"><h2><a name="var-members"></a>
Variables</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="structesc__cfg__t.html">esc_cfg_t</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="esc_8c.html#a23be27590c28284bdca777f918b40d09">esc_cfg</a> = NULL</td></tr>
</table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><p>Base EtherCAT functions for handling the Data Link Layer and Malilboxes. </p>
<p>State machine and mailbox support. </p>
</div><hr/><h2>Function Documentation</h2>
<a class="anchor" id="a3833c0b62cdc0b62ee929154e9744fcc"></a><!-- doxytag: member="esc.c::ESC_ackmbxread" ref="a3833c0b62cdc0b62ee929154e9744fcc" args="(void)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void ESC_ackmbxread </td>
<td>(</td>
<td class="paramtype">void&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>TBD </p>
</div>
</div>
<a class="anchor" id="a152dee1d6c0bce00aa029d833e147380"></a><!-- doxytag: member="esc.c::ESC_address" ref="a152dee1d6c0bce00aa029d833e147380" args="(void)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void ESC_address </td>
<td>(</td>
<td class="paramtype">void&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Read Configured Station Address register 0x010 assigned by the Master. </p>
</div>
</div>
<a class="anchor" id="ae49fff6e6440edd2c55a077d724b898c"></a><!-- doxytag: member="esc.c::ESC_ALerror" ref="ae49fff6e6440edd2c55a077d724b898c" args="(uint16 errornumber)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void ESC_ALerror </td>
<td>(</td>
<td class="paramtype">uint16&#160;</td>
<td class="paramname"><em>errornumber</em></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Write AL Status Code to the ESC.</p>
<dl><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">errornumber</td><td>= Write an by EtherCAT specified Error number register 0x134 AL Status Code </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="a9794dd94da984eb6bfb88879aabf4e3d"></a><!-- doxytag: member="esc.c::ESC_ALstatus" ref="a9794dd94da984eb6bfb88879aabf4e3d" args="(uint8 status)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void ESC_ALstatus </td>
<td>(</td>
<td class="paramtype">uint8&#160;</td>
<td class="paramname"><em>status</em></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Write AL Status to the ESC.</p>
<dl><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">status</td><td>= Write current slave status to register 0x130 AL Status reflecting actual state and error indication if present </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="aeee5a004e7e70410ceb89c26537a2ccf"></a><!-- doxytag: member="esc.c::ESC_checkmbx" ref="aeee5a004e7e70410ceb89c26537a2ccf" args="(uint8 state)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint8 ESC_checkmbx </td>
<td>(</td>
<td class="paramtype">uint8&#160;</td>
<td class="paramname"><em>state</em></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Check mailbox status by reading all SyncManager 0 and 1 data. The read values are compared with local definitions for SM Physical Address, SM Length and SM Control. If we check fails we disable Mailboxes by disabling SyncManager 0 and 1 and return state Init with Error flag set.</p>
<dl><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">state</td><td>= Current state request read from ALControl 0x0120 </td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>if all Mailbox values is correct we return incoming state request, otherwise we return state Init with Error flag set. </dd></dl>
</div>
</div>
<a class="anchor" id="a5cd0a7feb7e50e42fcdb71e6a28799ab"></a><!-- doxytag: member="esc.c::ESC_checkmbxboot" ref="a5cd0a7feb7e50e42fcdb71e6a28799ab" args="(uint8 state)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint8 ESC_checkmbxboot </td>
<td>(</td>
<td class="paramtype">uint8&#160;</td>
<td class="paramname"><em>state</em></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Check boostrap mailbox status by reading all SyncManager 0 and 1 data. The read values are compared with local definitions for SM Physical Address, SM Length and SM Control. If we check fails we disable Mailboxes by disabling SyncManager 0 and 1 and return state Init with Error flag set.</p>
<dl><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">state</td><td>= Current state request read from ALControl 0x0120 </td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>if all Mailbox values is correct we return incoming state request, otherwise we return state Init with Error flag set. </dd></dl>
</div>
</div>
<a class="anchor" id="a24ef310d3626f86db81293553d0a6c88"></a><!-- doxytag: member="esc.c::ESC_checkSM23" ref="a24ef310d3626f86db81293553d0a6c88" args="(uint8 state)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint8 ESC_checkSM23 </td>
<td>(</td>
<td class="paramtype">uint8&#160;</td>
<td class="paramname"><em>state</em></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Validate the values of Sync Manager 2 &amp; 3 that the current ESC values is equal to configured and calculated local values.</p>
<dl><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">state</td><td>= Requested state. </td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>= incoming state request if every thing checks out OK. = state (PREOP | ERROR) if something isn't correct. </dd></dl>
</div>
</div>
<a class="anchor" id="a9cdac6a8b19f5a033267973c6b97e501"></a><!-- doxytag: member="esc.c::ESC_claimbuffer" ref="a9cdac6a8b19f5a033267973c6b97e501" args="(void)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint8 ESC_claimbuffer </td>
<td>(</td>
<td class="paramtype">void&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Allocate and prepare a mailbox buffer. Take the first Idle buffer from the End. Set Mailbox control state to be used for outbox and fill the mailbox buffer with address master and mailbox next CNT value between 1-7.</p>
<dl class="return"><dt><b>Returns:</b></dt><dd>The index of Mailbox buffer prepared for outbox. IF no buffer is available return 0. </dd></dl>
</div>
</div>
<a class="anchor" id="a5ddaf0c8fd9944f21be30480125b6736"></a><!-- doxytag: member="esc.c::ESC_config" ref="a5ddaf0c8fd9944f21be30480125b6736" args="(esc_cfg_t *cfg)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void ESC_config </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structesc__cfg__t.html">esc_cfg_t</a> *&#160;</td>
<td class="paramname"><em>cfg</em></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Function copying the application configuration variable to the stack local pointer variable.</p>
<dl><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">cfg</td><td>= Pointer to by the Application static declared configuration variable holding application specific details. Ex. post- and pre state change hooks </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ae75d37a1bdce82374c3b262f18945cb3"></a><!-- doxytag: member="esc.c::ESC_mbxprocess" ref="ae75d37a1bdce82374c3b262f18945cb3" args="(void)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint8 ESC_mbxprocess </td>
<td>(</td>
<td class="paramtype">void&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Mailbox routine for implementing the low-level part of the mailbox protocol used by Application Layers running on-top of mailboxes. It takes care of sending a mailbox, re-sending a mailbox, reading a mailbox and handles a mailbox full event.</p>
<dl class="return"><dt><b>Returns:</b></dt><dd>=0 if nothing to do. =1 if something to be handled by mailbox protocols. </dd></dl>
</div>
</div>
<a class="anchor" id="ab5fb5800733c7419cad42f030860b966"></a><!-- doxytag: member="esc.c::ESC_outreqbuffer" ref="ab5fb5800733c7419cad42f030860b966" args="(void)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint8 ESC_outreqbuffer </td>
<td>(</td>
<td class="paramtype">void&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Look for any present requests for posting to the outbox.</p>
<dl class="return"><dt><b>Returns:</b></dt><dd>the index of Mailbox buffer ready to be posted. </dd></dl>
</div>
</div>
<a class="anchor" id="a268c2208d13c00552cc25c7c823c78b3"></a><!-- doxytag: member="esc.c::ESC_readmbx" ref="a268c2208d13c00552cc25c7c823c78b3" args="(void)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void ESC_readmbx </td>
<td>(</td>
<td class="paramtype">void&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Read Receive mailbox and store data in local ESCvar.MBX variable. Combined function for bootstrap and other states. State check decides which one to read. </p>
</div>
</div>
<a class="anchor" id="ad4f4c1dd0c961f827f8f1d578fed087d"></a><!-- doxytag: member="esc.c::ESC_SMack" ref="ad4f4c1dd0c961f827f8f1d578fed087d" args="(uint8 n)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void ESC_SMack </td>
<td>(</td>
<td class="paramtype">uint8&#160;</td>
<td class="paramname"><em>n</em></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Read SM Status register 0x805(+ offset to SyncManager n) to acknowledge a Sync Manager event Bit 3 in ALevent. The result is not used.</p>
<dl><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">n</td><td>= Read Sync Manager no. n </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="af318524ace0e280d9e87afc9f73b57fa"></a><!-- doxytag: member="esc.c::ESC_SMdisable" ref="af318524ace0e280d9e87afc9f73b57fa" args="(uint8 n)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void ESC_SMdisable </td>
<td>(</td>
<td class="paramtype">uint8&#160;</td>
<td class="paramname"><em>n</em></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Write 1 to Bit0 in SM PDI control register 0x807(+ offset to SyncManager n) to De-activte the Sync Manager n.</p>
<dl><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">n</td><td>= Write to Sync Manager no. n </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="a20ec7aa0e6d89492dc4562b9c4657f6f"></a><!-- doxytag: member="esc.c::ESC_SMenable" ref="a20ec7aa0e6d89492dc4562b9c4657f6f" args="(uint8 n)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void ESC_SMenable </td>
<td>(</td>
<td class="paramtype">uint8&#160;</td>
<td class="paramname"><em>n</em></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Write 0 to Bit0 in SM PDI control register 0x807(+ offset to SyncManager n) to Activate the Sync Manager n.</p>
<dl><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">n</td><td>= Write to Sync Manager no. n </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ad419b1ac3abaf24fa53d55ede4810ce7"></a><!-- doxytag: member="esc.c::ESC_SMstatus" ref="ad419b1ac3abaf24fa53d55ede4810ce7" args="(uint8 n)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void ESC_SMstatus </td>
<td>(</td>
<td class="paramtype">uint8&#160;</td>
<td class="paramname"><em>n</em></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Read SM Status register 0x805(+ offset to SyncManager n) and save the result in global variable ESCvar.SM[n].</p>
<dl><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">n</td><td>= Read Sync Manager no. n </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="a602dae15b9286e4ab4716fb85f8f3c58"></a><!-- doxytag: member="esc.c::ESC_SMwritepdi" ref="a602dae15b9286e4ab4716fb85f8f3c58" args="(uint8 n)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void ESC_SMwritepdi </td>
<td>(</td>
<td class="paramtype">uint8&#160;</td>
<td class="paramname"><em>n</em></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Write ESCvar.SM[n] data to ESC PDI control register 0x807(+ offset to SyncManager n).</p>
<dl><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">n</td><td>= Write to Sync Manager no. n </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="a7e667a53ef89c4a27578e26e2479d05d"></a><!-- doxytag: member="esc.c::ESC_startinput" ref="a7e667a53ef89c4a27578e26e2479d05d" args="(uint8 state)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint8 ESC_startinput </td>
<td>(</td>
<td class="paramtype">uint8&#160;</td>
<td class="paramname"><em>state</em></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Function trying to enable start updating the process data inputs. It calls the check SM 2 &amp; 3 routine, based on the result from there if enables or disables the Input SyncManager, in addition it updates the ALStatusCode case something didn't pass the check.</p>
<dl><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">state</td><td>= Requested state. </td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>= state, incoming state request if every thing checks out OK. =state (PREOP | ERROR) if something isn't correct. </dd></dl>
</div>
</div>
<a class="anchor" id="afc72202bfde332668a10d54e3b56083b"></a><!-- doxytag: member="esc.c::ESC_startmbx" ref="afc72202bfde332668a10d54e3b56083b" args="(uint8 state)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint8 ESC_startmbx </td>
<td>(</td>
<td class="paramtype">uint8&#160;</td>
<td class="paramname"><em>state</em></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Try to start mailboxes for current ALControl state request by enabling SyncManager 0 and 1. If all mailbox settings is correct we return incoming state request, otherwise we return state Init with Error flag set and update local ALerror with code 0x16 Invalid mailbox configuration.</p>
<dl><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">state</td><td>= Current state request read from ALControl 0x0120 </td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>if all Mailbox values is correct we return incoming state, otherwise we return state Init with Error flag set. </dd></dl>
</div>
</div>
<a class="anchor" id="a99dd26de7272793bd6ffe56af9316fbe"></a><!-- doxytag: member="esc.c::ESC_startmbxboot" ref="a99dd26de7272793bd6ffe56af9316fbe" args="(uint8 state)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint8 ESC_startmbxboot </td>
<td>(</td>
<td class="paramtype">uint8&#160;</td>
<td class="paramname"><em>state</em></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Try to start bootstrap mailboxes for current ALControl state request by enabling SyncManager 0 and 1. If all mailbox settings is correct we return incoming state request, otherwise we return state Init with Error flag set and update local ALerror with code 0x16 Invalid mailbox configuration.</p>
<dl><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">state</td><td>= Current state request read from ALControl 0x0120 </td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>if all Mailbox values is correct we return incoming state, otherwise we return state Init with Error flag set. </dd></dl>
</div>
</div>
<a class="anchor" id="a5e77a7172bd88586c08829b6d5977016"></a><!-- doxytag: member="esc.c::ESC_startoutput" ref="a5e77a7172bd88586c08829b6d5977016" args="(uint8 state)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint8 ESC_startoutput </td>
<td>(</td>
<td class="paramtype">uint8&#160;</td>
<td class="paramname"><em>state</em></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Unconditional start of updating outputs by enabling Sync Manager 2. Set the App.state to APPSTATE_OUTPUT.</p>
<dl><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">state</td><td>= Not used. </td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>= state unchanged. </dd></dl>
</div>
</div>
<a class="anchor" id="a1f4da4aa96dc469b218abf33ff857130"></a><!-- doxytag: member="esc.c::ESC_state" ref="a1f4da4aa96dc469b218abf33ff857130" args="(void)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void ESC_state </td>
<td>(</td>
<td class="paramtype">void&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>The state handler acting on ALControl Bit(0) and SyncManager Activation BIT(4) events in the Al Event Request register 0x220. </p>
</div>
</div>
<a class="anchor" id="a81ea48b9683662e8bed01fbb77826236"></a><!-- doxytag: member="esc.c::ESC_stopinput" ref="a81ea48b9683662e8bed01fbb77826236" args="(void)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void ESC_stopinput </td>
<td>(</td>
<td class="paramtype">void&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Unconditional stop of updating inputs by disabling Sync Manager 2 &amp; 3. Set the App.state to APPSTATE_IDLE. </p>
</div>
</div>
<a class="anchor" id="af114806603011938e35ae366d115d90f"></a><!-- doxytag: member="esc.c::ESC_stopmbx" ref="af114806603011938e35ae366d115d90f" args="(void)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void ESC_stopmbx </td>
<td>(</td>
<td class="paramtype">void&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Stop mailboxes by disabling SyncManager 0 and 1. Clear local mailbox variables stored in ESCvar. </p>
</div>
</div>
<a class="anchor" id="aea60761cf8862550e8901aa996069f8d"></a><!-- doxytag: member="esc.c::ESC_stopoutput" ref="aea60761cf8862550e8901aa996069f8d" args="(void)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void ESC_stopoutput </td>
<td>(</td>
<td class="paramtype">void&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Unconditional stop of updating outputs by disabling Sync Manager 2. Set the App.state to APPSTATE_ONPUT. Call application hook APP_safeoutput letting the user to set safe state values on outputs. </p>
</div>
</div>
<a class="anchor" id="a86d7576d9f8b1e63ad8ad2a6cf991c50"></a><!-- doxytag: member="esc.c::ESC_WDstatus" ref="a86d7576d9f8b1e63ad8ad2a6cf991c50" args="(void)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint8 ESC_WDstatus </td>
<td>(</td>
<td class="paramtype">void&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Read Watchdog Status register 0x440. Result Bit0 0= Expired, 1= Active or disabled.</p>
<dl class="return"><dt><b>Returns:</b></dt><dd>value of register Watchdog Status. </dd></dl>
</div>
</div>
<a class="anchor" id="add404335229e458ca751345aa701f3ce"></a><!-- doxytag: member="esc.c::ESC_writembx" ref="add404335229e458ca751345aa701f3ce" args="(uint8 n)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void ESC_writembx </td>
<td>(</td>
<td class="paramtype">uint8&#160;</td>
<td class="paramname"><em>n</em></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Write local mailbox buffer ESCvar.MBX[n] to Send mailbox. Combined function for bootstrap and other states. State check decides which one to write.</p>
<dl><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">n</td><td>= Which local mailbox buffer n to send. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="aa783bb45ace470b98607ce7c4af0460f"></a><!-- doxytag: member="esc.c::ESC_xoeprocess" ref="aa783bb45ace470b98607ce7c4af0460f" args="(void)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void ESC_xoeprocess </td>
<td>(</td>
<td class="paramtype">void&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Handler for incorrect or unsupported mailbox data. Write error response in Mailbox. </p>
</div>
</div>
<a class="anchor" id="ad4d3079177cc7d1bd78862b5a5cb7fe7"></a><!-- doxytag: member="esc.c::MBX_error" ref="ad4d3079177cc7d1bd78862b5a5cb7fe7" args="(uint16 error)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void MBX_error </td>
<td>(</td>
<td class="paramtype">uint16&#160;</td>
<td class="paramname"><em>error</em></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Allocate and prepare a mailbox buffer for sending an error message. Take the first Idle buffer from the end. Set Mailbox control state to be used for outbox and fill the mailbox buffer with error information.</p>
<dl><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">n</td><td>= Error number to be sent in mailbox error message. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<hr/><h2>Variable Documentation</h2>
<a class="anchor" id="a23be27590c28284bdca777f918b40d09"></a><!-- doxytag: member="esc.c::esc_cfg" ref="a23be27590c28284bdca777f918b40d09" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="structesc__cfg__t.html">esc_cfg_t</a>* <a class="el" href="esc_8c.html#a23be27590c28284bdca777f918b40d09">esc_cfg</a> = NULL<code> [static]</code></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
</div>
<hr class="footer"/><address class="footer"><small>Generated on Wed Jul 10 2013 11:14:19 for SOES by&#160;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
</body>
</html>

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,536 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>SOES: esc_coe.c File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<!-- Generated by Doxygen 1.7.4 -->
<div id="top">
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">SOES&#160;<span id="projectnumber">v1.0.0</span></div>
</td>
</tr>
</tbody>
</table>
</div>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
<li><a href="globals.html"><span>Globals</span></a></li>
</ul>
</div>
</div>
<div class="header">
<div class="summary">
<a href="#define-members">Defines</a> &#124;
<a href="#func-members">Functions</a> &#124;
<a href="#var-members">Variables</a> </div>
<div class="headertitle">
<div class="title">esc_coe.c File Reference</div> </div>
</div>
<div class="contents">
<p>CAN over EtherCAT (CoE) module.
<a href="#details">More...</a></p>
<div class="textblock"><code>#include &lt;string.h&gt;</code><br/>
<code>#include &quot;utypes.h&quot;</code><br/>
<code>#include &quot;<a class="el" href="esc_8h.html">esc.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="esc__coe_8h.html">esc_coe.h</a>&quot;</code><br/>
<code>#include &quot;objectlist.h&quot;</code><br/>
</div><table class="memberdecls">
<tr><td colspan="2"><h2><a name="define-members"></a>
Defines</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="esc__coe_8c.html#ab8f17f5a016592c2d41887a2f29581d8">BITS2BYTES</a>(b)&#160;&#160;&#160;((b + 7) &gt;&gt; 3)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="esc__coe_8c.html#aa9a3a80105cd78cb4e2ed2833926abe4">ODLISTSIZE</a>&#160;&#160;&#160;((MBX1_sml - MBXHSIZE - sizeof(<a class="el" href="struct__COEh.html">_COEh</a>) - sizeof(<a class="el" href="struct__INFOh.html">_INFOh</a>) - 2) &amp; 0xfffe)</td></tr>
<tr><td colspan="2"><h2><a name="func-members"></a>
Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int32&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="esc__coe_8c.html#ae69df2a29e9017aab128508585ad6171">SDO_findobject</a> (uint16 index)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">uint16&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="esc__coe_8c.html#a5d1fb9538a28be98ec8ee762140ada35">sizeTXPDO</a> (void)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">uint16&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="esc__coe_8c.html#a836e3ff62cd9bba1ca2a5f5481104ba9">sizeRXPDO</a> (void)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int16&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="esc__coe_8c.html#a1fc8fd4ba74a85d5b4ca7ff7dc842edf">SDO_findsubindex</a> (int16 nidx, uint8 subindex)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="esc__coe_8c.html#a3efad71f0e21192002ef60437575f70b">copy2mbx</a> (void *source, void *dest, uint16 size)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="esc__coe_8c.html#ac8b791201457bff244ff36c4c5c85860">SDO_abort</a> (uint16 index, uint8 subindex, uint32 abortcode)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="esc__coe_8c.html#acc25f2ec413f5473f199ab5b9b8f4005">SDO_upload</a> (void)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="esc__coe_8c.html#a3655db85e86eee991facef9492fcc246">SDO_uploadsegment</a> (void)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="esc__coe_8c.html#a5da3e5d510d17ad992a2db811f522b54">ESC_pre_objecthandler</a> (uint16 index, uint8 subindex)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="esc__coe_8c.html#ae8c1c5930a2cc7a27375fa97acdb8df4">SDO_download</a> (void)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="esc__coe_8c.html#a4c5b3d7b4930375a4a87727629d1cfe7">SDO_infoerror</a> (uint32 abortcode)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="esc__coe_8c.html#ac43a13f88e3705c3f4ef40b8b9c2b431">SDO_getodlist</a> (void)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="esc__coe_8c.html#a362076e63fae0dd33b426f5c99d9a010">SDO_getodlistcont</a> (void)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="esc__coe_8c.html#acc7684bb6a1155dab1891514c264f12d">SDO_getod</a> (void)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="esc__coe_8c.html#a10a864197441d3da0fbd0623521e3d26">SDO_geted</a> (void)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="esc__coe_8c.html#a71c76794b7e4ed125cc9cda0e8508ccd">ESC_coeprocess</a> (void)</td></tr>
<tr><td colspan="2"><h2><a name="var-members"></a>
Variables</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">uint8&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="esc__coe_8c.html#a5ddbd167b7b79d375b2ce53e2b536347">txpdoitems</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">uint8&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="esc__coe_8c.html#a8bf6e1739ce6b8147f92dc36162b9e54">rxpdoitems</a></td></tr>
</table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><p>CAN over EtherCAT (CoE) module. </p>
<p>SDO read / write and SDO service functions </p>
</div><hr/><h2>Define Documentation</h2>
<a class="anchor" id="ab8f17f5a016592c2d41887a2f29581d8"></a><!-- doxytag: member="esc_coe.c::BITS2BYTES" ref="ab8f17f5a016592c2d41887a2f29581d8" args="(b)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define BITS2BYTES</td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname">b</td><td>)</td>
<td>&#160;&#160;&#160;((b + 7) &gt;&gt; 3)</td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<a class="anchor" id="aa9a3a80105cd78cb4e2ed2833926abe4"></a><!-- doxytag: member="esc_coe.c::ODLISTSIZE" ref="aa9a3a80105cd78cb4e2ed2833926abe4" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define ODLISTSIZE&#160;&#160;&#160;((MBX1_sml - MBXHSIZE - sizeof(<a class="el" href="struct__COEh.html">_COEh</a>) - sizeof(<a class="el" href="struct__INFOh.html">_INFOh</a>) - 2) &amp; 0xfffe)</td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<hr/><h2>Function Documentation</h2>
<a class="anchor" id="a3efad71f0e21192002ef60437575f70b"></a><!-- doxytag: member="esc_coe.c::copy2mbx" ref="a3efad71f0e21192002ef60437575f70b" args="(void *source, void *dest, uint16 size)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void copy2mbx </td>
<td>(</td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>source</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>dest</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16&#160;</td>
<td class="paramname"><em>size</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Copy to mailbox.</p>
<dl><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">source</td><td>= pointer to source </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">dest</td><td>= pointer to destination </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">size</td><td>= Size to copy </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="a71c76794b7e4ed125cc9cda0e8508ccd"></a><!-- doxytag: member="esc_coe.c::ESC_coeprocess" ref="a71c76794b7e4ed125cc9cda0e8508ccd" args="(void)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void ESC_coeprocess </td>
<td>(</td>
<td class="paramtype">void&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Main CoE function checking the status on current mailbox buffers carrying data, distributing the mailboxes to appropriate CoE functions. On Error an MBX_error or SDO Abort will be sent depending on error cause. </p>
</div>
</div>
<a class="anchor" id="a5da3e5d510d17ad992a2db811f522b54"></a><!-- doxytag: member="esc_coe.c::ESC_pre_objecthandler" ref="a5da3e5d510d17ad992a2db811f522b54" args="(uint16 index, uint8 subindex)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int ESC_pre_objecthandler </td>
<td>(</td>
<td class="paramtype">uint16&#160;</td>
<td class="paramname"><em>index</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8&#160;</td>
<td class="paramname"><em>subindex</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Function to pre-qualify the incoming SDO download.</p>
<dl><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">index</td><td>= index of SDO download request to check </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">sub-index</td><td>= sub-index of SDO download request to check </td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>1 if the SDO Download is correct. 0 If not correct. </dd></dl>
</div>
</div>
<a class="anchor" id="ac8b791201457bff244ff36c4c5c85860"></a><!-- doxytag: member="esc_coe.c::SDO_abort" ref="ac8b791201457bff244ff36c4c5c85860" args="(uint16 index, uint8 subindex, uint32 abortcode)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void SDO_abort </td>
<td>(</td>
<td class="paramtype">uint16&#160;</td>
<td class="paramname"><em>index</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8&#160;</td>
<td class="paramname"><em>subindex</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32&#160;</td>
<td class="paramname"><em>abortcode</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Function for sending an SDO Abort reply.</p>
<dl><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">index</td><td>= index of object causing abort reply </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">sub-index</td><td>= sub-index of object causing abort reply </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">abortcode</td><td>= abort code to send in reply </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ae8c1c5930a2cc7a27375fa97acdb8df4"></a><!-- doxytag: member="esc_coe.c::SDO_download" ref="ae8c1c5930a2cc7a27375fa97acdb8df4" args="(void)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void SDO_download </td>
<td>(</td>
<td class="paramtype">void&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Function for handling incoming requested SDO Download, validating the request and sending an response. On error an SDO Abort will be sent. </p>
</div>
</div>
<a class="anchor" id="ae69df2a29e9017aab128508585ad6171"></a><!-- doxytag: member="esc_coe.c::SDO_findobject" ref="ae69df2a29e9017aab128508585ad6171" args="(uint16 index)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int32 SDO_findobject </td>
<td>(</td>
<td class="paramtype">uint16&#160;</td>
<td class="paramname"><em>index</em></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Search for an object index matching the wanted value in the Object List.</p>
<dl><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">index</td><td>= value on index of object we want to locate </td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>local array index if we succeed, -1 if we didn't find the index. </dd></dl>
</div>
</div>
<a class="anchor" id="a1fc8fd4ba74a85d5b4ca7ff7dc842edf"></a><!-- doxytag: member="esc_coe.c::SDO_findsubindex" ref="a1fc8fd4ba74a85d5b4ca7ff7dc842edf" args="(int16 nidx, uint8 subindex)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int16 SDO_findsubindex </td>
<td>(</td>
<td class="paramtype">int16&#160;</td>
<td class="paramname"><em>nidx</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8&#160;</td>
<td class="paramname"><em>subindex</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Search for an object sub-index.</p>
<dl><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">nidx</td><td>= local array index of object we want to find sub-index to </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">subindex</td><td>= value on sub-index of object we want to locate </td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>local array index if we succeed, -1 if we didn't find the index. </dd></dl>
</div>
</div>
<a class="anchor" id="a10a864197441d3da0fbd0623521e3d26"></a><!-- doxytag: member="esc_coe.c::SDO_geted" ref="a10a864197441d3da0fbd0623521e3d26" args="(void)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void SDO_geted </td>
<td>(</td>
<td class="paramtype">void&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Function for handling incoming requested SDO Get Entry Description, validating the request and sending an response. On error an SDO Info Error will be sent. </p>
</div>
</div>
<a class="anchor" id="acc7684bb6a1155dab1891514c264f12d"></a><!-- doxytag: member="esc_coe.c::SDO_getod" ref="acc7684bb6a1155dab1891514c264f12d" args="(void)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void SDO_getod </td>
<td>(</td>
<td class="paramtype">void&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Function for handling incoming requested SDO Get Object Description, validating the request and sending an response. On error an SDO Info Error will be sent. </p>
</div>
</div>
<a class="anchor" id="ac43a13f88e3705c3f4ef40b8b9c2b431"></a><!-- doxytag: member="esc_coe.c::SDO_getodlist" ref="ac43a13f88e3705c3f4ef40b8b9c2b431" args="(void)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void SDO_getodlist </td>
<td>(</td>
<td class="paramtype">void&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Function for handling incoming requested SDO Get OD List, validating the request and sending an response. On error an SDO Info Error will be sent. </p>
</div>
</div>
<a class="anchor" id="a362076e63fae0dd33b426f5c99d9a010"></a><!-- doxytag: member="esc_coe.c::SDO_getodlistcont" ref="a362076e63fae0dd33b426f5c99d9a010" args="(void)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void SDO_getodlistcont </td>
<td>(</td>
<td class="paramtype">void&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Function for continuing sending left overs from previous requested SDO Get OD List, validating the request and sending an response. </p>
</div>
</div>
<a class="anchor" id="a4c5b3d7b4930375a4a87727629d1cfe7"></a><!-- doxytag: member="esc_coe.c::SDO_infoerror" ref="a4c5b3d7b4930375a4a87727629d1cfe7" args="(uint32 abortcode)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void SDO_infoerror </td>
<td>(</td>
<td class="paramtype">uint32&#160;</td>
<td class="paramname"><em>abortcode</em></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Function for sending an SDO Info Error reply.</p>
<dl><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">abortcode</td><td>= = abort code to send in reply </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="acc25f2ec413f5473f199ab5b9b8f4005"></a><!-- doxytag: member="esc_coe.c::SDO_upload" ref="acc25f2ec413f5473f199ab5b9b8f4005" args="(void)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void SDO_upload </td>
<td>(</td>
<td class="paramtype">void&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Function for responding on requested SDO Upload, sending the content requested in a free Mailbox buffer. Depending of size of data expedited, normal or segmented transfer is used. On error an SDO Abort will be sent. </p>
</div>
</div>
<a class="anchor" id="a3655db85e86eee991facef9492fcc246"></a><!-- doxytag: member="esc_coe.c::SDO_uploadsegment" ref="a3655db85e86eee991facef9492fcc246" args="(void)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void SDO_uploadsegment </td>
<td>(</td>
<td class="paramtype">void&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Function for handling the following SDO Upload if previous SDOUpload response was flagged it needed to be segmented. </p>
</div>
</div>
<a class="anchor" id="a836e3ff62cd9bba1ca2a5f5481104ba9"></a><!-- doxytag: member="esc_coe.c::sizeRXPDO" ref="a836e3ff62cd9bba1ca2a5f5481104ba9" args="(void)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint16 sizeRXPDO </td>
<td>(</td>
<td class="paramtype">void&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Calculate the size in Bytes of RxPDOs by adding the objects in SyncManager SDO 1C12.</p>
<dl class="return"><dt><b>Returns:</b></dt><dd>size of RxPDOs in Bytes. </dd></dl>
</div>
</div>
<a class="anchor" id="a5d1fb9538a28be98ec8ee762140ada35"></a><!-- doxytag: member="esc_coe.c::sizeTXPDO" ref="a5d1fb9538a28be98ec8ee762140ada35" args="(void)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint16 sizeTXPDO </td>
<td>(</td>
<td class="paramtype">void&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Calculate the size in Bytes of TxPDOs by adding the objects in SyncManager SDO 1C13.</p>
<dl class="return"><dt><b>Returns:</b></dt><dd>size of TxPDOs in Bytes. </dd></dl>
</div>
</div>
<hr/><h2>Variable Documentation</h2>
<a class="anchor" id="a8bf6e1739ce6b8147f92dc36162b9e54"></a><!-- doxytag: member="esc_coe.c::rxpdoitems" ref="a8bf6e1739ce6b8147f92dc36162b9e54" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint8 <a class="el" href="esc__coe_8c.html#a8bf6e1739ce6b8147f92dc36162b9e54">rxpdoitems</a></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<a class="anchor" id="a5ddbd167b7b79d375b2ce53e2b536347"></a><!-- doxytag: member="esc_coe.c::txpdoitems" ref="a5ddbd167b7b79d375b2ce53e2b536347" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint8 <a class="el" href="esc__coe_8c.html#a5ddbd167b7b79d375b2ce53e2b536347">txpdoitems</a></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
</div>
<hr class="footer"/><address class="footer"><small>Generated on Wed Jul 10 2013 11:14:19 for SOES by&#160;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
</body>
</html>

View File

@ -0,0 +1,146 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>SOES: esc_coe.h File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<!-- Generated by Doxygen 1.7.4 -->
<div id="top">
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">SOES&#160;<span id="projectnumber">v1.0.0</span></div>
</td>
</tr>
</tbody>
</table>
</div>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
<li><a href="globals.html"><span>Globals</span></a></li>
</ul>
</div>
</div>
<div class="header">
<div class="summary">
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">esc_coe.h File Reference</div> </div>
</div>
<div class="contents">
<p>Headerfile for <a class="el" href="esc__coe_8c.html" title="CAN over EtherCAT (CoE) module.">esc_coe.c</a>.
<a href="#details">More...</a></p>
<table class="memberdecls">
<tr><td colspan="2"><h2><a name="func-members"></a>
Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="esc__coe_8h.html#a71c76794b7e4ed125cc9cda0e8508ccd">ESC_coeprocess</a> (void)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">uint16&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="esc__coe_8h.html#a5d1fb9538a28be98ec8ee762140ada35">sizeTXPDO</a> (void)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">uint16&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="esc__coe_8h.html#a836e3ff62cd9bba1ca2a5f5481104ba9">sizeRXPDO</a> (void)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="esc__coe_8h.html#a414bacd094d9023838a396174a695f8d">ESC_objecthandler</a> (uint16 index, uint8 subindex)</td></tr>
</table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><p>Headerfile for <a class="el" href="esc__coe_8c.html" title="CAN over EtherCAT (CoE) module.">esc_coe.c</a>. </p>
</div><hr/><h2>Function Documentation</h2>
<a class="anchor" id="a71c76794b7e4ed125cc9cda0e8508ccd"></a><!-- doxytag: member="esc_coe.h::ESC_coeprocess" ref="a71c76794b7e4ed125cc9cda0e8508ccd" args="(void)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void ESC_coeprocess </td>
<td>(</td>
<td class="paramtype">void&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Main CoE function checking the status on current mailbox buffers carrying data, distributing the mailboxes to appropriate CoE functions. On Error an MBX_error or SDO Abort will be sent depending on error cause. </p>
</div>
</div>
<a class="anchor" id="a414bacd094d9023838a396174a695f8d"></a><!-- doxytag: member="esc_coe.h::ESC_objecthandler" ref="a414bacd094d9023838a396174a695f8d" args="(uint16 index, uint8 subindex)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void ESC_objecthandler </td>
<td>(</td>
<td class="paramtype">uint16&#160;</td>
<td class="paramname"><em>index</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8&#160;</td>
<td class="paramname"><em>subindex</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<a class="anchor" id="a836e3ff62cd9bba1ca2a5f5481104ba9"></a><!-- doxytag: member="esc_coe.h::sizeRXPDO" ref="a836e3ff62cd9bba1ca2a5f5481104ba9" args="(void)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint16 sizeRXPDO </td>
<td>(</td>
<td class="paramtype">void&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Calculate the size in Bytes of RxPDOs by adding the objects in SyncManager SDO 1C12.</p>
<dl class="return"><dt><b>Returns:</b></dt><dd>size of RxPDOs in Bytes. </dd></dl>
</div>
</div>
<a class="anchor" id="a5d1fb9538a28be98ec8ee762140ada35"></a><!-- doxytag: member="esc_coe.h::sizeTXPDO" ref="a5d1fb9538a28be98ec8ee762140ada35" args="(void)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint16 sizeTXPDO </td>
<td>(</td>
<td class="paramtype">void&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Calculate the size in Bytes of TxPDOs by adding the objects in SyncManager SDO 1C13.</p>
<dl class="return"><dt><b>Returns:</b></dt><dd>size of TxPDOs in Bytes. </dd></dl>
</div>
</div>
</div>
<hr class="footer"/><address class="footer"><small>Generated on Wed Jul 10 2013 11:14:19 for SOES by&#160;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
</body>
</html>

View File

@ -0,0 +1,481 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>SOES: esc_foe.c File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<!-- Generated by Doxygen 1.7.4 -->
<div id="top">
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">SOES&#160;<span id="projectnumber">v1.0.0</span></div>
</td>
</tr>
</tbody>
</table>
</div>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
<li><a href="globals.html"><span>Globals</span></a></li>
</ul>
</div>
</div>
<div class="header">
<div class="summary">
<a href="#define-members">Defines</a> &#124;
<a href="#func-members">Functions</a> &#124;
<a href="#var-members">Variables</a> </div>
<div class="headertitle">
<div class="title">esc_foe.c File Reference</div> </div>
</div>
<div class="contents">
<p>File over EtherCAT (FoE) module.
<a href="#details">More...</a></p>
<div class="textblock"><code>#include &quot;osal.h&quot;</code><br/>
<code>#include &quot;utypes.h&quot;</code><br/>
<code>#include &quot;<a class="el" href="esc_8h.html">esc.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="esc__foe_8h.html">esc_foe.h</a>&quot;</code><br/>
<code>#include &lt;string.h&gt;</code><br/>
</div><table class="memberdecls">
<tr><td colspan="2"><h2><a name="define-members"></a>
Defines</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="esc__foe_8c.html#a57a35bfd7d13bdfab37a48171286ecee">DPRINT</a>(...)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="esc__foe_8c.html#a40eaa99769ad24d7b1f0d91276497e96">DEBUG_ASSERT</a>(expression)</td></tr>
<tr><td colspan="2"><h2><a name="func-members"></a>
Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="esc__foe_8c.html#a1068bb4cb4200dd0a12a01fa875a4d4b">FOE_fopen</a> (char *name, uint8 num_chars, uint32 pass, uint8 op)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">uint16&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="esc__foe_8c.html#a2fe564ee56395c2ad9b3e294046ab11a">FOE_fwrite</a> (uint8 *data, uint16 length)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="esc__foe_8c.html#ada27a980ed9be4adb6e9e72a80bac0e6">FOE_fclose</a> (void)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="esc__foe_8c.html#ab759787663f3dbf3eefc2d7d4ebb7a48">FOE_init</a> ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="esc__foe_8c.html#a3dc61a42f1df1418e1b713b4ef6124c3">FOE_abort</a> (uint32 code)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="esc__foe_8c.html#a2d6c4bf6859f6b1ebd6a0b63fca21420">FOE_send_ack</a> ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="esc__foe_8c.html#a429078d3edbb532b67f887adb0ec59de">FOE_read</a> ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="esc__foe_8c.html#af0f456ea750b97416b704ade6d074a4d">FOE_write</a> ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="esc__foe_8c.html#af0f447cb34aefab559845633acba7eea">FOE_data</a> ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="esc__foe_8c.html#a50fcf09f71a9f45ebc806ebdf109a275">FOE_error</a> ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="esc__foe_8c.html#a0b138231b97d90990427644659e92e0c">FOE_config</a> (<a class="el" href="structfoe__cfg__t.html">foe_cfg_t</a> *cfg, foe_writefile_cfg_t *cfg_files)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="esc__foe_8c.html#a57ace265be44ccc2a0af313d007261b2">ESC_foeprocess</a> (void)</td></tr>
<tr><td colspan="2"><h2><a name="var-members"></a>
Variables</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">char&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="esc__foe_8c.html#a1f2c07c0dfd2d9a88c27b47abf1651af">foe_file_name</a> [FOE_FN_MAX+1]</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="structfoe__cfg__t.html">foe_cfg_t</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="esc__foe_8c.html#a7cc484767f3b463b2a72365d9c761a1f">foe_cfg</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static foe_writefile_cfg_t *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="esc__foe_8c.html#ab37a5f7aab01e0690365e1c73c56b496">foe_files</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static foe_writefile_cfg_t *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="esc__foe_8c.html#a2896ae544c74758f24d85208eba3477b">foe_file</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="struct__FOEvar.html">_FOEvar</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="esc__foe_8c.html#adcd7d70e05228c39934e5605bc705839">FOEvar</a></td></tr>
</table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><p>File over EtherCAT (FoE) module. </p>
<p>FOE read / write and FOE service functions </p>
</div><hr/><h2>Define Documentation</h2>
<a class="anchor" id="a40eaa99769ad24d7b1f0d91276497e96"></a><!-- doxytag: member="esc_foe.c::DEBUG_ASSERT" ref="a40eaa99769ad24d7b1f0d91276497e96" args="(expression)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define DEBUG_ASSERT</td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname">expression</td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<a class="anchor" id="a57a35bfd7d13bdfab37a48171286ecee"></a><!-- doxytag: member="esc_foe.c::DPRINT" ref="a57a35bfd7d13bdfab37a48171286ecee" args="(...)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define DPRINT</td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>...</em></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<hr/><h2>Function Documentation</h2>
<a class="anchor" id="a57ace265be44ccc2a0af313d007261b2"></a><!-- doxytag: member="esc_foe.c::ESC_foeprocess" ref="a57ace265be44ccc2a0af313d007261b2" args="(void)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void ESC_foeprocess </td>
<td>(</td>
<td class="paramtype">void&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Main FoE function checking the status on current mailbox buffers carrying data, distributing the mailboxes to appropriate FOE functions depending on requested opcode. On Error an FoE Error or FoE Abort will be sent. </p>
</div>
</div>
<a class="anchor" id="a3dc61a42f1df1418e1b713b4ef6124c3"></a><!-- doxytag: member="esc_foe.c::FOE_abort" ref="a3dc61a42f1df1418e1b713b4ef6124c3" args="(uint32 code)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void FOE_abort </td>
<td>(</td>
<td class="paramtype">uint32&#160;</td>
<td class="paramname"><em>code</em></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Function for sending an FOE abort frame.</p>
<dl><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">code</td><td>= abort code </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="a0b138231b97d90990427644659e92e0c"></a><!-- doxytag: member="esc_foe.c::FOE_config" ref="a0b138231b97d90990427644659e92e0c" args="(foe_cfg_t *cfg, foe_writefile_cfg_t *cfg_files)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void FOE_config </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structfoe__cfg__t.html">foe_cfg_t</a> *&#160;</td>
<td class="paramname"><em>cfg</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">foe_writefile_cfg_t *&#160;</td>
<td class="paramname"><em>cfg_files</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Function copying the application configuration variable to the FoE module local pointer variable.</p>
<dl><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">cfg</td><td>= Pointer to by the Application static declared configuration variable holding application specific details. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">cfg_files</td><td>= Pointer to by the Application static declared configuration variable holding file specific details for files to be handled by FoE </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="af0f447cb34aefab559845633acba7eea"></a><!-- doxytag: member="esc_foe.c::FOE_data" ref="af0f447cb34aefab559845633acba7eea" args="()" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void FOE_data </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>FoE data request handler. Validates and reads data until we're finsihed. Every read frame follwed by an Ack frame. On error we will send FOE Abort. </p>
</div>
</div>
<a class="anchor" id="a50fcf09f71a9f45ebc806ebdf109a275"></a><!-- doxytag: member="esc_foe.c::FOE_error" ref="a50fcf09f71a9f45ebc806ebdf109a275" args="()" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void FOE_error </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>FoE error requesthandler. Send an FOE Abort. </p>
</div>
</div>
<a class="anchor" id="ada27a980ed9be4adb6e9e72a80bac0e6"></a><!-- doxytag: member="esc_foe.c::FOE_fclose" ref="ada27a980ed9be4adb6e9e72a80bac0e6" args="(void)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint32_t FOE_fclose </td>
<td>(</td>
<td class="paramtype">void&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Function handling the final FOE_fwrite when we close up regardless if we have filled the buffers or not.</p>
<dl class="return"><dt><b>Returns:</b></dt><dd>Number of copied bytes on success, 0= if failed. </dd></dl>
</div>
</div>
<a class="anchor" id="a1068bb4cb4200dd0a12a01fa875a4d4b"></a><!-- doxytag: member="esc_foe.c::FOE_fopen" ref="a1068bb4cb4200dd0a12a01fa875a4d4b" args="(char *name, uint8 num_chars, uint32 pass, uint8 op)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int FOE_fopen </td>
<td>(</td>
<td class="paramtype">char *&#160;</td>
<td class="paramname"><em>name</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8&#160;</td>
<td class="paramname"><em>num_chars</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32&#160;</td>
<td class="paramname"><em>pass</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8&#160;</td>
<td class="paramname"><em>op</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Validate a write or read request by checking filename and password.</p>
<dl><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">name</td><td>= Filename </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">num_chars</td><td>= Length of filename </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">pass</td><td>= Numeric variable of password </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">op</td><td>= Request op-code </td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>0= if we succeed, FOE_ERR_NOTFOUND something wrong with filename or password </dd></dl>
</div>
</div>
<a class="anchor" id="a2fe564ee56395c2ad9b3e294046ab11a"></a><!-- doxytag: member="esc_foe.c::FOE_fwrite" ref="a2fe564ee56395c2ad9b3e294046ab11a" args="(uint8 *data, uint16 length)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint16 FOE_fwrite </td>
<td>(</td>
<td class="paramtype">uint8 *&#160;</td>
<td class="paramname"><em>data</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16&#160;</td>
<td class="paramname"><em>length</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Function reading mailbox buffer to local buffer to be handled by application write hook. Ex. flash routine used by software update. It will consume the buffer and call the write hook every time the configured flush buffer limit is reached.</p>
<dl><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">data</td><td>= Pointer to buffer </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">length</td><td>= Length of data to read</td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>Number of copied bytes. </dd></dl>
</div>
</div>
<a class="anchor" id="ab759787663f3dbf3eefc2d7d4ebb7a48"></a><!-- doxytag: member="esc_foe.c::FOE_init" ref="ab759787663f3dbf3eefc2d7d4ebb7a48" args="()" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void FOE_init </td>
<td>(</td>
<td class="paramtype">void&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Initialize by clearing all current status variables. </p>
</div>
</div>
<a class="anchor" id="a429078d3edbb532b67f887adb0ec59de"></a><!-- doxytag: member="esc_foe.c::FOE_read" ref="a429078d3edbb532b67f887adb0ec59de" args="()" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void FOE_read </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<a class="anchor" id="a2d6c4bf6859f6b1ebd6a0b63fca21420"></a><!-- doxytag: member="esc_foe.c::FOE_send_ack" ref="a2d6c4bf6859f6b1ebd6a0b63fca21420" args="()" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int FOE_send_ack </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Sends an FoE ack data frame.</p>
<dl class="return"><dt><b>Returns:</b></dt><dd>0= or error number. </dd></dl>
</div>
</div>
<a class="anchor" id="af0f456ea750b97416b704ade6d074a4d"></a><!-- doxytag: member="esc_foe.c::FOE_write" ref="af0f456ea750b97416b704ade6d074a4d" args="()" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void FOE_write </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>FoE write request handler. Starts with Initialize, Open and Ack that we can/will receive data. On error we will send FOE Abort. </p>
</div>
</div>
<hr/><h2>Variable Documentation</h2>
<a class="anchor" id="a7cc484767f3b463b2a72365d9c761a1f"></a><!-- doxytag: member="esc_foe.c::foe_cfg" ref="a7cc484767f3b463b2a72365d9c761a1f" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="structfoe__cfg__t.html">foe_cfg_t</a>* <a class="el" href="esc__foe_8c.html#a7cc484767f3b463b2a72365d9c761a1f">foe_cfg</a><code> [static]</code></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Main FoE configuration pointer data array. Structure i allocated and filled by the application defining what preferences it require. </p>
</div>
</div>
<a class="anchor" id="a2896ae544c74758f24d85208eba3477b"></a><!-- doxytag: member="esc_foe.c::foe_file" ref="a2896ae544c74758f24d85208eba3477b" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">foe_writefile_cfg_t* <a class="el" href="esc__foe_8c.html#a2896ae544c74758f24d85208eba3477b">foe_file</a><code> [static]</code></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Pointer to current file configuration item used by FoE. </p>
</div>
</div>
<a class="anchor" id="a1f2c07c0dfd2d9a88c27b47abf1651af"></a><!-- doxytag: member="esc_foe.c::foe_file_name" ref="a1f2c07c0dfd2d9a88c27b47abf1651af" args="[FOE_FN_MAX+1]" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">char <a class="el" href="esc__foe_8c.html#a1f2c07c0dfd2d9a88c27b47abf1651af">foe_file_name</a>[FOE_FN_MAX+1]</td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Variable holding current filename read at FOE Open. </p>
</div>
</div>
<a class="anchor" id="ab37a5f7aab01e0690365e1c73c56b496"></a><!-- doxytag: member="esc_foe.c::foe_files" ref="ab37a5f7aab01e0690365e1c73c56b496" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">foe_writefile_cfg_t* <a class="el" href="esc__foe_8c.html#ab37a5f7aab01e0690365e1c73c56b496">foe_files</a><code> [static]</code></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Collection of files possible to receive by FoE. Structure i allocated and filled by the application defining what preferences it require. </p>
</div>
</div>
<a class="anchor" id="adcd7d70e05228c39934e5605bc705839"></a><!-- doxytag: member="esc_foe.c::FOEvar" ref="adcd7d70e05228c39934e5605bc705839" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="struct__FOEvar.html">_FOEvar</a> <a class="el" href="esc__foe_8c.html#adcd7d70e05228c39934e5605bc705839">FOEvar</a><code> [static]</code></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Main FoE status data array. Structure gets filled with current status variables during FoE usage. </p>
</div>
</div>
</div>
<hr class="footer"/><address class="footer"><small>Generated on Wed Jul 10 2013 11:14:19 for SOES by&#160;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
</body>
</html>

View File

@ -0,0 +1,158 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>SOES: esc_foe.h File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<!-- Generated by Doxygen 1.7.4 -->
<div id="top">
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">SOES&#160;<span id="projectnumber">v1.0.0</span></div>
</td>
</tr>
</tbody>
</table>
</div>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
<li><a href="globals.html"><span>Globals</span></a></li>
</ul>
</div>
</div>
<div class="header">
<div class="summary">
<a href="#nested-classes">Data Structures</a> &#124;
<a href="#define-members">Defines</a> &#124;
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">esc_foe.h File Reference</div> </div>
</div>
<div class="contents">
<p>Headerfile for <a class="el" href="esc__foe_8c.html" title="File over EtherCAT (FoE) module.">esc_foe.c</a>.
<a href="#details">More...</a></p>
<table class="memberdecls">
<tr><td colspan="2"><h2><a name="nested-classes"></a>
Data Structures</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structfoe__writefile__cfg.html">foe_writefile_cfg_t</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structfoe__cfg__t.html">foe_cfg_t</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__FOEvar.html">_FOEvar</a></td></tr>
<tr><td colspan="2"><h2><a name="define-members"></a>
Defines</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="esc__foe_8h.html#a67c78bb265f195309e12db00ead5e50e">FOE_FN_MAX</a>&#160;&#160;&#160;15</td></tr>
<tr><td colspan="2"><h2><a name="func-members"></a>
Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="esc__foe_8h.html#a0b138231b97d90990427644659e92e0c">FOE_config</a> (<a class="el" href="structfoe__cfg__t.html">foe_cfg_t</a> *cfg, foe_writefile_cfg_t *cfg_files)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="esc__foe_8h.html#a0fc65c1e2994bf93b40bdf2bcdbad8a0">FOE_init</a> (void)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="esc__foe_8h.html#a57ace265be44ccc2a0af313d007261b2">ESC_foeprocess</a> (void)</td></tr>
</table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><p>Headerfile for <a class="el" href="esc__foe_8c.html" title="File over EtherCAT (FoE) module.">esc_foe.c</a>. </p>
</div><hr/><h2>Define Documentation</h2>
<a class="anchor" id="a67c78bb265f195309e12db00ead5e50e"></a><!-- doxytag: member="esc_foe.h::FOE_FN_MAX" ref="a67c78bb265f195309e12db00ead5e50e" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define FOE_FN_MAX&#160;&#160;&#160;15</td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Maximum number of characters allowed in a file name. </p>
</div>
</div>
<hr/><h2>Function Documentation</h2>
<a class="anchor" id="a57ace265be44ccc2a0af313d007261b2"></a><!-- doxytag: member="esc_foe.h::ESC_foeprocess" ref="a57ace265be44ccc2a0af313d007261b2" args="(void)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void ESC_foeprocess </td>
<td>(</td>
<td class="paramtype">void&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Main FoE function checking the status on current mailbox buffers carrying data, distributing the mailboxes to appropriate FOE functions depending on requested opcode. On Error an FoE Error or FoE Abort will be sent. </p>
</div>
</div>
<a class="anchor" id="a0b138231b97d90990427644659e92e0c"></a><!-- doxytag: member="esc_foe.h::FOE_config" ref="a0b138231b97d90990427644659e92e0c" args="(foe_cfg_t *cfg, foe_writefile_cfg_t *cfg_files)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void FOE_config </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structfoe__cfg__t.html">foe_cfg_t</a> *&#160;</td>
<td class="paramname"><em>cfg</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">foe_writefile_cfg_t *&#160;</td>
<td class="paramname"><em>cfg_files</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Function copying the application configuration variable to the FoE module local pointer variable.</p>
<dl><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">cfg</td><td>= Pointer to by the Application static declared configuration variable holding application specific details. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">cfg_files</td><td>= Pointer to by the Application static declared configuration variable holding file specific details for files to be handled by FoE </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="a0fc65c1e2994bf93b40bdf2bcdbad8a0"></a><!-- doxytag: member="esc_foe.h::FOE_init" ref="a0fc65c1e2994bf93b40bdf2bcdbad8a0" args="(void)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void FOE_init </td>
<td>(</td>
<td class="paramtype">void&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Initialize by clearing all current status variables. </p>
</div>
</div>
</div>
<hr class="footer"/><address class="footer"><small>Generated on Wed Jul 10 2013 11:14:19 for SOES by&#160;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
</body>
</html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

View File

@ -0,0 +1,55 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>SOES: File List</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<!-- Generated by Doxygen 1.7.4 -->
<div id="top">
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">SOES&#160;<span id="projectnumber">v1.0.0</span></div>
</td>
</tr>
</tbody>
</table>
</div>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li class="current"><a href="files.html"><span>File&#160;List</span></a></li>
<li><a href="globals.html"><span>Globals</span></a></li>
</ul>
</div>
</div>
<div class="header">
<div class="headertitle">
<div class="title">File List</div> </div>
</div>
<div class="contents">
<div class="textblock">Here is a list of all files with brief descriptions:</div><table>
<tr><td class="indexkey"><a class="el" href="esc_8c.html">esc.c</a></td><td class="indexvalue">Base EtherCAT functions for handling the Data Link Layer and Malilboxes </td></tr>
<tr><td class="indexkey"><a class="el" href="esc_8h.html">esc.h</a></td><td class="indexvalue">Headerfile for <a class="el" href="esc_8h.html" title="Headerfile for esc.h.">esc.h</a> </td></tr>
<tr><td class="indexkey"><a class="el" href="esc__coe_8c.html">esc_coe.c</a></td><td class="indexvalue">CAN over EtherCAT (CoE) module </td></tr>
<tr><td class="indexkey"><a class="el" href="esc__coe_8h.html">esc_coe.h</a></td><td class="indexvalue">Headerfile for <a class="el" href="esc__coe_8c.html" title="CAN over EtherCAT (CoE) module.">esc_coe.c</a> </td></tr>
<tr><td class="indexkey"><a class="el" href="esc__foe_8c.html">esc_foe.c</a></td><td class="indexvalue">File over EtherCAT (FoE) module </td></tr>
<tr><td class="indexkey"><a class="el" href="esc__foe_8h.html">esc_foe.h</a></td><td class="indexvalue">Headerfile for <a class="el" href="esc__foe_8c.html" title="File over EtherCAT (FoE) module.">esc_foe.c</a> </td></tr>
</table>
</div>
<hr class="footer"/><address class="footer"><small>Generated on Wed Jul 10 2013 11:14:19 for SOES by&#160;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
</body>
</html>

View File

@ -0,0 +1,488 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>SOES: Data Fields</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<!-- Generated by Doxygen 1.7.4 -->
<div id="top">
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">SOES&#160;<span id="projectnumber">v1.0.0</span></div>
</td>
</tr>
</tbody>
</table>
</div>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
<li class="current"><a href="functions.html"><span>Data&#160;Fields</span></a></li>
</ul>
</div>
<div id="navrow3" class="tabs2">
<ul class="tablist">
<li class="current"><a href="functions.html"><span>All</span></a></li>
<li><a href="functions_vars.html"><span>Variables</span></a></li>
</ul>
</div>
<div id="navrow4" class="tabs3">
<ul class="tablist">
<li><a href="#index_a"><span>a</span></a></li>
<li><a href="#index_b"><span>b</span></a></li>
<li><a href="#index_c"><span>c</span></a></li>
<li><a href="#index_d"><span>d</span></a></li>
<li><a href="#index_e"><span>e</span></a></li>
<li><a href="#index_f"><span>f</span></a></li>
<li><a href="#index_h"><span>h</span></a></li>
<li><a href="#index_i"><span>i</span></a></li>
<li><a href="#index_l"><span>l</span></a></li>
<li><a href="#index_m"><span>m</span></a></li>
<li><a href="#index_n"><span>n</span></a></li>
<li><a href="#index_o"><span>o</span></a></li>
<li><a href="#index_p"><span>p</span></a></li>
<li><a href="#index_r"><span>r</span></a></li>
<li><a href="#index_s"><span>s</span></a></li>
<li><a href="#index_t"><span>t</span></a></li>
<li><a href="#index_v"><span>v</span></a></li>
<li><a href="#index_w"><span>w</span></a></li>
<li><a href="#index_x"><span>x</span></a></li>
</ul>
</div>
</div>
<div class="contents">
<div class="textblock">Here is a list of all struct and union fields with links to the structures/unions they belong to:</div>
<h3><a class="anchor" id="index_a"></a>- a -</h3><ul>
<li>access
: <a class="el" href="struct__COEentdesc.html#af16eefb3b0fa7b4528de598390e77c91">_COEentdesc</a>
</li>
<li>ActESC
: <a class="el" href="struct__ESCsm2.html#a8e5f56f83d43ba8a5ca4f469600fe691">_ESCsm2</a>
</li>
<li>ActPDI
: <a class="el" href="struct__ESCsm2.html#aa68da3b0d48988b2b1aab05eae62f1ca">_ESCsm2</a>
</li>
<li>address
: <a class="el" href="struct__ESCvar.html#a29b5e7d971f4219fb68790ed99796542">_ESCvar</a>
, <a class="el" href="struct__MBXh.html#aab4618ebf62f7308f2399c5c26c21f3c">_MBXh</a>
</li>
<li>address_offset
: <a class="el" href="structfoe__writefile__cfg.html#a618c137fd3ced50fae00c20df1459ea2">foe_writefile_cfg_t</a>
</li>
<li>ALcontrol
: <a class="el" href="struct__ESCvar.html#a8c4b2abcdb5a0fecffe1cc2b15fef233">_ESCvar</a>
</li>
<li>ALerror
: <a class="el" href="struct__ESCvar.html#ac54d4be6bca396a4df60139b8bf3cf8f">_ESCvar</a>
</li>
<li>ALevent
: <a class="el" href="struct__ESCvar.html#a447ec4716c0a1139f9987ea6df3ae364">_ESCvar</a>
</li>
<li>ALstatus
: <a class="el" href="struct__ESCvar.html#acd205a5c7f82b724686f0794f06a12cd">_ESCvar</a>
</li>
</ul>
<h3><a class="anchor" id="index_b"></a>- b -</h3><ul>
<li>b
: <a class="el" href="struct__MBX.html#a95c59a2b4fb554921b248c1d71650ae9">_MBX</a>
</li>
<li>bitlength
: <a class="el" href="struct__COEentdesc.html#aa10554ede93edb58e1af4330d5946721">_COEentdesc</a>
</li>
<li>buffer_size
: <a class="el" href="structfoe__cfg__t.html#a12e068a6428f1cf89d3516d104a905dd">foe_cfg_t</a>
</li>
<li>BUFstat
: <a class="el" href="struct__ESCsm.html#aa401fcd22f75190996baf3f5d3849c52">_ESCsm</a>
</li>
</ul>
<h3><a class="anchor" id="index_c"></a>- c -</h3><ul>
<li>channel
: <a class="el" href="struct__MBXh.html#a47c1de4ebddd723048f518215820e943">_MBXh</a>
</li>
<li>coeheader
: <a class="el" href="struct__COEsdo.html#aca7fbf12670a85be7eee10c1a60d3708">_COEsdo</a>
, <a class="el" href="struct__COEentdesc.html#ad707dc3d22f9446de009c086ec4c23a8">_COEentdesc</a>
, <a class="el" href="struct__COEobjdesc.html#a66f6811b85400c6e30e34a97e09c37cf">_COEobjdesc</a>
</li>
<li>command
: <a class="el" href="struct__COEsdo.html#a9cb2e709d939cf28d7252ac82c2b76f0">_COEsdo</a>
</li>
<li>Command
: <a class="el" href="struct__ESCsm2.html#a094841d390369ac83198e749a2e1e516">_ESCsm2</a>
, <a class="el" href="structPACKED.html#a5bc1de5b9fed2f9783a59cf59393dfb4">PACKED</a>
</li>
</ul>
<h3><a class="anchor" id="index_d"></a>- d -</h3><ul>
<li>data
: <a class="el" href="struct__ESCvar.html#a4b079cc77d95616d46207f4df8b0b8ab">_ESCvar</a>
, <a class="el" href="struct__FOE.html#a29b0e7414e530d96d00f520509eac062">_FOE</a>
</li>
<li>datatype
: <a class="el" href="struct__COEentdesc.html#ad36a95e3313048d2f557d44d7b52a440">_COEentdesc</a>
, <a class="el" href="struct__COEobjdesc.html#afb3ab0cb93a5a6a272b5c3718d4dc787">_COEobjdesc</a>
</li>
<li>dest_start_address
: <a class="el" href="structfoe__writefile__cfg.html#a0540fe2ce25a5d05ad5a0faa8e3e8f60">foe_writefile_cfg_t</a>
</li>
<li>detail
: <a class="el" href="struct__MBXerr.html#a9dfeb42029bd1911d0520eaafa39077c">_MBXerr</a>
</li>
<li>Direction
: <a class="el" href="struct__ESCsm.html#a2a38260671e765535a7f8a8ffc675cf0">_ESCsm</a>
</li>
<li>DLstatus
: <a class="el" href="struct__ESCvar.html#aa8a709bebf153046f21e9731a7bf4061">_ESCvar</a>
</li>
</ul>
<h3><a class="anchor" id="index_e"></a>- e -</h3><ul>
<li>EClatchEC
: <a class="el" href="struct__ESCsm.html#a1142ddd67c99114deaf4d615bad45225">_ESCsm</a>
</li>
<li>EClatchPDI
: <a class="el" href="struct__ESCsm.html#ae764769deb71c654680c47812b81478b">_ESCsm</a>
</li>
<li>ECr4
: <a class="el" href="struct__ESCsm.html#a92579f435f0bcea436fcff6256c29271">_ESCsm</a>
</li>
<li>ECrep
: <a class="el" href="struct__ESCsm.html#a19ae319008aaf0ff9bfbbb5750fbb071">_ESCsm</a>
</li>
<li>ECsm
: <a class="el" href="struct__ESCsm.html#a52c170357a84cbecd4a6ca430becbb48">_ESCsm</a>
</li>
<li>empty_write
: <a class="el" href="structfoe__cfg__t.html#a846f4765e3b5973542e18e25665a4a98">foe_cfg_t</a>
</li>
<li>entries
: <a class="el" href="struct__ESCvar.html#a8870109e8d4762523c68d1abe6aed98b">_ESCvar</a>
</li>
<li>errorcode
: <a class="el" href="struct__FOEh.html#a09f68c2b2186cc69c29cdf5992123d04">_FOEh</a>
</li>
<li>errortext
: <a class="el" href="struct__FOE.html#a2b075dac0e654173a8a176ca66b994e5">_FOE</a>
</li>
</ul>
<h3><a class="anchor" id="index_f"></a>- f -</h3><ul>
<li>fbuffer
: <a class="el" href="structfoe__cfg__t.html#a401e481b06a1c7e3fcb30a02ad7ddafb">foe_cfg_t</a>
</li>
<li>fbufposition
: <a class="el" href="struct__FOEvar.html#a93424b33ce821e832e87e9def6110b80">_FOEvar</a>
</li>
<li>fend
: <a class="el" href="struct__FOEvar.html#ae8bc3908d8c6367c09e61f36608bfd6f">_FOEvar</a>
</li>
<li>filename
: <a class="el" href="struct__FOE.html#a0195a23740d2c5eb13db325e425ef7fb">_FOE</a>
</li>
<li>filepass
: <a class="el" href="structfoe__writefile__cfg.html#a552cccd0564b95ee7c9a72f32537b84d">foe_writefile_cfg_t</a>
</li>
<li>files
: <a class="el" href="structfoe__cfg__t.html#af7d4da24697018ed33e17a6c12d91ed9">foe_cfg_t</a>
</li>
<li>foeheader
: <a class="el" href="struct__FOE.html#a92927f1dd9f2d1a0def047dad6f05291">_FOE</a>
</li>
<li>foepacket
: <a class="el" href="struct__FOEvar.html#a3cf8f0410e145df74477abffd247fe1c">_FOEvar</a>
</li>
<li>foestate
: <a class="el" href="struct__FOEvar.html#a7cd8b5dd833995750c1494a12a4d356b">_FOEvar</a>
</li>
<li>fposition
: <a class="el" href="struct__FOEvar.html#aecd38c519340765cb3ccd29f09df0a0d">_FOEvar</a>
</li>
<li>fprevposition
: <a class="el" href="struct__FOEvar.html#a35472bd493585a758e6b71405fe9ba17">_FOEvar</a>
</li>
<li>fragmentsleft
: <a class="el" href="struct__INFOh.html#a8e6f96bce98babed33ee909d3f9fa434">_INFOh</a>
</li>
<li>frags
: <a class="el" href="struct__ESCvar.html#a740f00899fd371583c689f9d12dcea1d">_ESCvar</a>
</li>
<li>fragsleft
: <a class="el" href="struct__ESCvar.html#a1c75b6f18f34e0c775346732333ede41">_ESCvar</a>
</li>
</ul>
<h3><a class="anchor" id="index_h"></a>- h -</h3><ul>
<li>header
: <a class="el" href="struct__MBX.html#a92da7ab0e40ad17537bbc3c65200e19e">_MBX</a>
</li>
</ul>
<h3><a class="anchor" id="index_i"></a>- i -</h3><ul>
<li>incomplete
: <a class="el" href="struct__INFOh.html#af5172750f2a16371a7c79b37fc241171">_INFOh</a>
</li>
<li>index
: <a class="el" href="struct__COEsdo.html#ae9db28dca9457aba985e278572c892be">_COEsdo</a>
, <a class="el" href="struct__COEentdesc.html#a9926b99b1841e1b4fcc21c06afe911b5">_COEentdesc</a>
, <a class="el" href="struct__COEobjdesc.html#af155e3691e6ab01f08651f6577367862">_COEobjdesc</a>
</li>
<li>infoheader
: <a class="el" href="struct__COEobjdesc.html#a83f15bc450966195e9ceb793404ab6f9">_COEobjdesc</a>
, <a class="el" href="struct__COEentdesc.html#af9813d1d72c1953ab59b72ac8a64c882">_COEentdesc</a>
</li>
<li>IntECAT
: <a class="el" href="struct__ESCsm.html#a3bc7f8294dcbd0650efb22ec234b5cdd">_ESCsm</a>
</li>
<li>IntPDI
: <a class="el" href="struct__ESCsm.html#a86de443264b6c812505a7ff6461568e6">_ESCsm</a>
</li>
<li>IntR
: <a class="el" href="struct__ESCsm.html#a9f5f34ef5ae9949f6a4e0a90d08e395c">_ESCsm</a>
</li>
<li>IntW
: <a class="el" href="struct__ESCsm.html#aa62cae92c924bcc63e17b80a0bb0926e">_ESCsm</a>
</li>
</ul>
<h3><a class="anchor" id="index_l"></a>- l -</h3><ul>
<li>Length
: <a class="el" href="struct__ESCsm.html#a8003bdc816a364e24a1693c018df3b47">_ESCsm</a>
</li>
<li>length
: <a class="el" href="struct__MBXh.html#a23fa0c0531f49f871f48fd5547374e7d">_MBXh</a>
</li>
<li>Length
: <a class="el" href="structPACKED.html#a86c8b1d0f5d9bd5bacb15a6e627a9e4c">PACKED</a>
, <a class="el" href="struct__ESCsm2.html#a7cc427908eb382b7e03ea5ee084f9ee0">_ESCsm2</a>
</li>
</ul>
<h3><a class="anchor" id="index_m"></a>- m -</h3><ul>
<li>max_data
: <a class="el" href="structfoe__writefile__cfg.html#abc50f654a889f18a6da69cbc1212af37">foe_writefile_cfg_t</a>
</li>
<li>maxsub
: <a class="el" href="struct__COEobjdesc.html#aa3fe231eb5ebfa480c267574b830377c">_COEobjdesc</a>
</li>
<li>mbxbackup
: <a class="el" href="struct__ESCvar.html#acc6e1182b67f7ffa0f1f17981da7f6b1">_ESCvar</a>
</li>
<li>mbxcnt
: <a class="el" href="struct__ESCvar.html#a4e5f68587ca73c4a039e30a91df956c3">_ESCvar</a>
, <a class="el" href="struct__MBXh.html#a7f0d06da301a93a3d6b1e39dd2d603f1">_MBXh</a>
</li>
<li>mbxfree
: <a class="el" href="struct__ESCvar.html#a3640c80a3c60af326bcda0163bdb4012">_ESCvar</a>
</li>
<li>mbxheader
: <a class="el" href="struct__FOE.html#afb56753679ee44f8aab71c3d3b4e9ce7">_FOE</a>
, <a class="el" href="struct__COEsdo.html#a781b8a2d1ace34e6f29c2c05dfa73c11">_COEsdo</a>
, <a class="el" href="struct__COEobjdesc.html#acb9f94d0452e85d91838a288d21f4637">_COEobjdesc</a>
, <a class="el" href="struct__COEentdesc.html#aa337554d4b84eafe48138c3b62a353a5">_COEentdesc</a>
, <a class="el" href="struct__MBXerr.html#a9e087b40669ee82d3e507d5278c1a579">_MBXerr</a>
</li>
<li>mbxincnt
: <a class="el" href="struct__ESCvar.html#a17ba68cd90eebc3488193b984045a096">_ESCvar</a>
</li>
<li>mbxoutpost
: <a class="el" href="struct__ESCvar.html#ac0edd9d5ced367abbb4b6104aa36858e">_ESCvar</a>
</li>
<li>MBXstat
: <a class="el" href="struct__ESCsm.html#a1ccc59aaae460d4b4c38ce0892b8094c">_ESCsm</a>
</li>
<li>mbxtype
: <a class="el" href="struct__MBXh.html#a29fc7a797bf6596b371c65692c70cc10">_MBXh</a>
</li>
<li>Mode
: <a class="el" href="struct__ESCsm.html#adf54b58f41c9d3113c458ae07fd6b56b">_ESCsm</a>
</li>
</ul>
<h3><a class="anchor" id="index_n"></a>- n -</h3><ul>
<li>n_files
: <a class="el" href="structfoe__cfg__t.html#a04948966334af92b549a8f668357e52e">foe_cfg_t</a>
</li>
<li>name
: <a class="el" href="struct__COEobjdesc.html#a74ff339af6ac5bcfc189c17042f549ac">_COEobjdesc</a>
, <a class="el" href="structfoe__writefile__cfg.html#aa3b65a0c7d505e8095a59c57e5266be9">foe_writefile_cfg_t</a>
, <a class="el" href="struct__COEentdesc.html#ac226840dce511a98ab15cbf3cd709971">_COEentdesc</a>
</li>
<li>numberservice
: <a class="el" href="struct__COEh.html#a3b1eba362f9485bb0d8f272ec54fcdf7">_COEh</a>
</li>
</ul>
<h3><a class="anchor" id="index_o"></a>- o -</h3><ul>
<li>objectcode
: <a class="el" href="struct__COEobjdesc.html#ab959145dfe36e0200f983457efcb9390">_COEobjdesc</a>
</li>
<li>opcode
: <a class="el" href="struct__FOEh.html#a1dc38d9fc4bd6bd202bbead6630471c6">_FOEh</a>
, <a class="el" href="struct__INFOh.html#ac582a27132709f715ce942146281898f">_INFOh</a>
</li>
</ul>
<h3><a class="anchor" id="index_p"></a>- p -</h3><ul>
<li>packetnumber
: <a class="el" href="struct__FOEh.html#ae885a18138ceeb3eaef109d13c836f06">_FOEh</a>
</li>
<li>password
: <a class="el" href="struct__FOEh.html#a7ac59232250f163ba21a99e1b7066752">_FOEh</a>
</li>
<li>PDIr5
: <a class="el" href="struct__ESCsm.html#a573bf09f39c49795ab0eae814e1a8b35">_ESCsm</a>
</li>
<li>PDIrep
: <a class="el" href="struct__ESCsm.html#ac126f621094cdada5c410634f480fdb0">_ESCsm</a>
</li>
<li>PDIsm
: <a class="el" href="struct__ESCsm.html#ab136105ac0c70a04be18a9bb815d9d80">_ESCsm</a>
</li>
<li>post_state_change_hook
: <a class="el" href="structesc__cfg__t.html#ac5227ece0a8d4d2b95a3dd030336a847">esc_cfg_t</a>
</li>
<li>pre_state_change_hook
: <a class="el" href="structesc__cfg__t.html#a4a534a3f5ef5344306b255ff45669643">esc_cfg_t</a>
</li>
<li>PrevTime
: <a class="el" href="struct__ESCvar.html#a7242f87f3dd71be3e13f1167f3697641">_ESCvar</a>
</li>
<li>priority
: <a class="el" href="struct__MBXh.html#af9dbadeb7d90c0f4af33fda64f3c6b38">_MBXh</a>
</li>
<li>PSA
: <a class="el" href="struct__ESCsm2.html#a18727ed17b2fe927ba964944566ae8da">_ESCsm2</a>
, <a class="el" href="structPACKED.html#ab1dbbcde88af6ced573913592b0528b0">PACKED</a>
, <a class="el" href="struct__ESCsm.html#a466f44438611c5197a7978acc9e68798">_ESCsm</a>
</li>
</ul>
<h3><a class="anchor" id="index_r"></a>- r -</h3><ul>
<li>R1
: <a class="el" href="struct__ESCsm.html#ac9aaf54c7f5ec7e092f8e216f48ecbb6">_ESCsm</a>
</li>
<li>r1
: <a class="el" href="struct__ESCvar.html#a58137c85242f763855c28d4a1c991e9b">_ESCvar</a>
</li>
<li>r2
: <a class="el" href="struct__ESCvar.html#ad03e09bb5ff9649cbfd633c34b35770d">_ESCvar</a>
</li>
<li>R2
: <a class="el" href="struct__ESCsm.html#a7a567624fd5b72fa3f81dd33fe47e779">_ESCsm</a>
</li>
<li>R3
: <a class="el" href="struct__ESCsm.html#a51d65080a9c6065637cfb6d9eac0d27e">_ESCsm</a>
</li>
<li>reserved
: <a class="el" href="struct__INFOh.html#a0fc05ec7d78bea0aa31e96527e97fe78">_INFOh</a>
, <a class="el" href="struct__FOEh.html#aba457a6ff296584bb71fb1d65c2c568b">_FOEh</a>
</li>
</ul>
<h3><a class="anchor" id="index_s"></a>- s -</h3><ul>
<li>segmented
: <a class="el" href="struct__ESCvar.html#a43ff8dcfc5b893e89aeca5515b7e31fd">_ESCvar</a>
</li>
<li>size
: <a class="el" href="struct__COEsdo.html#a68c400884b8968e2c74d95dce331ae1a">_COEsdo</a>
</li>
<li>SM
: <a class="el" href="struct__ESCvar.html#aa0440fbb03b39c75a89c7cbe2138542e">_ESCvar</a>
</li>
<li>SMtestresult
: <a class="el" href="struct__ESCvar.html#aa62c9ece342bdbe02aedd8d533689702">_ESCvar</a>
</li>
<li>state
: <a class="el" href="struct__MBXcontrol.html#aaea88930e7b526c2edae1a5db4ad74af">_MBXcontrol</a>
</li>
<li>Status
: <a class="el" href="struct__ESCsm2.html#a645052f703a7c5de791dfd3b33713030">_ESCsm2</a>
</li>
<li>subindex
: <a class="el" href="struct__COEentdesc.html#a02fa16ca34dfb22498daad91f60495ae">_COEentdesc</a>
, <a class="el" href="struct__COEsdo.html#a683561582fc9dc08ca1ac60dd800a8ad">_COEsdo</a>
</li>
</ul>
<h3><a class="anchor" id="index_t"></a>- t -</h3><ul>
<li>temp
: <a class="el" href="struct__ESCvar.html#a5ab78b00bc4d17491b1917e5b26147fa">_ESCvar</a>
</li>
<li>Time
: <a class="el" href="struct__ESCvar.html#ac435e669f2d950b9c8ba9d5599dc87e6">_ESCvar</a>
</li>
<li>toggle
: <a class="el" href="struct__ESCvar.html#a8d3a4784b75a09867be316c5a65a9df1">_ESCvar</a>
</li>
<li>txcue
: <a class="el" href="struct__ESCvar.html#aa5287d8f17145114fd1fdc9cbda0d399">_ESCvar</a>
</li>
<li>type
: <a class="el" href="struct__MBXerr.html#a4a4fe590383e828172a8309c01de035f">_MBXerr</a>
</li>
</ul>
<h3><a class="anchor" id="index_v"></a>- v -</h3><ul>
<li>valueinfo
: <a class="el" href="struct__COEentdesc.html#a3f6fee236c37e4bc02c1856b09e0aad7">_COEentdesc</a>
</li>
</ul>
<h3><a class="anchor" id="index_w"></a>- w -</h3><ul>
<li>wdcnt
: <a class="el" href="struct__ESCvar.html#a3a67a2c7ed5f9ecb4457adce98377e57">_ESCvar</a>
</li>
<li>write_function
: <a class="el" href="structfoe__writefile__cfg.html#a2038f0388460a911097d063806a5162a">foe_writefile_cfg_t</a>
</li>
<li>WTE
: <a class="el" href="struct__ESCsm.html#a27b50f6e1266f5a5129ca0fab0242c87">_ESCsm</a>
</li>
</ul>
<h3><a class="anchor" id="index_x"></a>- x -</h3><ul>
<li>xoe
: <a class="el" href="struct__ESCvar.html#a8925acf2e71f6e04d423dd1a6a18ab03">_ESCvar</a>
</li>
</ul>
</div>
<hr class="footer"/><address class="footer"><small>Generated on Wed Jul 10 2013 11:14:19 for SOES by&#160;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
</body>
</html>

View File

@ -0,0 +1,488 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>SOES: Data Fields - Variables</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<!-- Generated by Doxygen 1.7.4 -->
<div id="top">
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">SOES&#160;<span id="projectnumber">v1.0.0</span></div>
</td>
</tr>
</tbody>
</table>
</div>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
<li class="current"><a href="functions.html"><span>Data&#160;Fields</span></a></li>
</ul>
</div>
<div id="navrow3" class="tabs2">
<ul class="tablist">
<li><a href="functions.html"><span>All</span></a></li>
<li class="current"><a href="functions_vars.html"><span>Variables</span></a></li>
</ul>
</div>
<div id="navrow4" class="tabs3">
<ul class="tablist">
<li><a href="#index_a"><span>a</span></a></li>
<li><a href="#index_b"><span>b</span></a></li>
<li><a href="#index_c"><span>c</span></a></li>
<li><a href="#index_d"><span>d</span></a></li>
<li><a href="#index_e"><span>e</span></a></li>
<li><a href="#index_f"><span>f</span></a></li>
<li><a href="#index_h"><span>h</span></a></li>
<li><a href="#index_i"><span>i</span></a></li>
<li><a href="#index_l"><span>l</span></a></li>
<li><a href="#index_m"><span>m</span></a></li>
<li><a href="#index_n"><span>n</span></a></li>
<li><a href="#index_o"><span>o</span></a></li>
<li><a href="#index_p"><span>p</span></a></li>
<li><a href="#index_r"><span>r</span></a></li>
<li><a href="#index_s"><span>s</span></a></li>
<li><a href="#index_t"><span>t</span></a></li>
<li><a href="#index_v"><span>v</span></a></li>
<li><a href="#index_w"><span>w</span></a></li>
<li><a href="#index_x"><span>x</span></a></li>
</ul>
</div>
</div>
<div class="contents">
&#160;
<h3><a class="anchor" id="index_a"></a>- a -</h3><ul>
<li>access
: <a class="el" href="struct__COEentdesc.html#af16eefb3b0fa7b4528de598390e77c91">_COEentdesc</a>
</li>
<li>ActESC
: <a class="el" href="struct__ESCsm2.html#a8e5f56f83d43ba8a5ca4f469600fe691">_ESCsm2</a>
</li>
<li>ActPDI
: <a class="el" href="struct__ESCsm2.html#aa68da3b0d48988b2b1aab05eae62f1ca">_ESCsm2</a>
</li>
<li>address
: <a class="el" href="struct__ESCvar.html#a29b5e7d971f4219fb68790ed99796542">_ESCvar</a>
, <a class="el" href="struct__MBXh.html#aab4618ebf62f7308f2399c5c26c21f3c">_MBXh</a>
</li>
<li>address_offset
: <a class="el" href="structfoe__writefile__cfg.html#a618c137fd3ced50fae00c20df1459ea2">foe_writefile_cfg_t</a>
</li>
<li>ALcontrol
: <a class="el" href="struct__ESCvar.html#a8c4b2abcdb5a0fecffe1cc2b15fef233">_ESCvar</a>
</li>
<li>ALerror
: <a class="el" href="struct__ESCvar.html#ac54d4be6bca396a4df60139b8bf3cf8f">_ESCvar</a>
</li>
<li>ALevent
: <a class="el" href="struct__ESCvar.html#a447ec4716c0a1139f9987ea6df3ae364">_ESCvar</a>
</li>
<li>ALstatus
: <a class="el" href="struct__ESCvar.html#acd205a5c7f82b724686f0794f06a12cd">_ESCvar</a>
</li>
</ul>
<h3><a class="anchor" id="index_b"></a>- b -</h3><ul>
<li>b
: <a class="el" href="struct__MBX.html#a95c59a2b4fb554921b248c1d71650ae9">_MBX</a>
</li>
<li>bitlength
: <a class="el" href="struct__COEentdesc.html#aa10554ede93edb58e1af4330d5946721">_COEentdesc</a>
</li>
<li>buffer_size
: <a class="el" href="structfoe__cfg__t.html#a12e068a6428f1cf89d3516d104a905dd">foe_cfg_t</a>
</li>
<li>BUFstat
: <a class="el" href="struct__ESCsm.html#aa401fcd22f75190996baf3f5d3849c52">_ESCsm</a>
</li>
</ul>
<h3><a class="anchor" id="index_c"></a>- c -</h3><ul>
<li>channel
: <a class="el" href="struct__MBXh.html#a47c1de4ebddd723048f518215820e943">_MBXh</a>
</li>
<li>coeheader
: <a class="el" href="struct__COEsdo.html#aca7fbf12670a85be7eee10c1a60d3708">_COEsdo</a>
, <a class="el" href="struct__COEentdesc.html#ad707dc3d22f9446de009c086ec4c23a8">_COEentdesc</a>
, <a class="el" href="struct__COEobjdesc.html#a66f6811b85400c6e30e34a97e09c37cf">_COEobjdesc</a>
</li>
<li>command
: <a class="el" href="struct__COEsdo.html#a9cb2e709d939cf28d7252ac82c2b76f0">_COEsdo</a>
</li>
<li>Command
: <a class="el" href="struct__ESCsm2.html#a094841d390369ac83198e749a2e1e516">_ESCsm2</a>
, <a class="el" href="structPACKED.html#a5bc1de5b9fed2f9783a59cf59393dfb4">PACKED</a>
</li>
</ul>
<h3><a class="anchor" id="index_d"></a>- d -</h3><ul>
<li>data
: <a class="el" href="struct__ESCvar.html#a4b079cc77d95616d46207f4df8b0b8ab">_ESCvar</a>
, <a class="el" href="struct__FOE.html#a29b0e7414e530d96d00f520509eac062">_FOE</a>
</li>
<li>datatype
: <a class="el" href="struct__COEentdesc.html#ad36a95e3313048d2f557d44d7b52a440">_COEentdesc</a>
, <a class="el" href="struct__COEobjdesc.html#afb3ab0cb93a5a6a272b5c3718d4dc787">_COEobjdesc</a>
</li>
<li>dest_start_address
: <a class="el" href="structfoe__writefile__cfg.html#a0540fe2ce25a5d05ad5a0faa8e3e8f60">foe_writefile_cfg_t</a>
</li>
<li>detail
: <a class="el" href="struct__MBXerr.html#a9dfeb42029bd1911d0520eaafa39077c">_MBXerr</a>
</li>
<li>Direction
: <a class="el" href="struct__ESCsm.html#a2a38260671e765535a7f8a8ffc675cf0">_ESCsm</a>
</li>
<li>DLstatus
: <a class="el" href="struct__ESCvar.html#aa8a709bebf153046f21e9731a7bf4061">_ESCvar</a>
</li>
</ul>
<h3><a class="anchor" id="index_e"></a>- e -</h3><ul>
<li>EClatchEC
: <a class="el" href="struct__ESCsm.html#a1142ddd67c99114deaf4d615bad45225">_ESCsm</a>
</li>
<li>EClatchPDI
: <a class="el" href="struct__ESCsm.html#ae764769deb71c654680c47812b81478b">_ESCsm</a>
</li>
<li>ECr4
: <a class="el" href="struct__ESCsm.html#a92579f435f0bcea436fcff6256c29271">_ESCsm</a>
</li>
<li>ECrep
: <a class="el" href="struct__ESCsm.html#a19ae319008aaf0ff9bfbbb5750fbb071">_ESCsm</a>
</li>
<li>ECsm
: <a class="el" href="struct__ESCsm.html#a52c170357a84cbecd4a6ca430becbb48">_ESCsm</a>
</li>
<li>empty_write
: <a class="el" href="structfoe__cfg__t.html#a846f4765e3b5973542e18e25665a4a98">foe_cfg_t</a>
</li>
<li>entries
: <a class="el" href="struct__ESCvar.html#a8870109e8d4762523c68d1abe6aed98b">_ESCvar</a>
</li>
<li>errorcode
: <a class="el" href="struct__FOEh.html#a09f68c2b2186cc69c29cdf5992123d04">_FOEh</a>
</li>
<li>errortext
: <a class="el" href="struct__FOE.html#a2b075dac0e654173a8a176ca66b994e5">_FOE</a>
</li>
</ul>
<h3><a class="anchor" id="index_f"></a>- f -</h3><ul>
<li>fbuffer
: <a class="el" href="structfoe__cfg__t.html#a401e481b06a1c7e3fcb30a02ad7ddafb">foe_cfg_t</a>
</li>
<li>fbufposition
: <a class="el" href="struct__FOEvar.html#a93424b33ce821e832e87e9def6110b80">_FOEvar</a>
</li>
<li>fend
: <a class="el" href="struct__FOEvar.html#ae8bc3908d8c6367c09e61f36608bfd6f">_FOEvar</a>
</li>
<li>filename
: <a class="el" href="struct__FOE.html#a0195a23740d2c5eb13db325e425ef7fb">_FOE</a>
</li>
<li>filepass
: <a class="el" href="structfoe__writefile__cfg.html#a552cccd0564b95ee7c9a72f32537b84d">foe_writefile_cfg_t</a>
</li>
<li>files
: <a class="el" href="structfoe__cfg__t.html#af7d4da24697018ed33e17a6c12d91ed9">foe_cfg_t</a>
</li>
<li>foeheader
: <a class="el" href="struct__FOE.html#a92927f1dd9f2d1a0def047dad6f05291">_FOE</a>
</li>
<li>foepacket
: <a class="el" href="struct__FOEvar.html#a3cf8f0410e145df74477abffd247fe1c">_FOEvar</a>
</li>
<li>foestate
: <a class="el" href="struct__FOEvar.html#a7cd8b5dd833995750c1494a12a4d356b">_FOEvar</a>
</li>
<li>fposition
: <a class="el" href="struct__FOEvar.html#aecd38c519340765cb3ccd29f09df0a0d">_FOEvar</a>
</li>
<li>fprevposition
: <a class="el" href="struct__FOEvar.html#a35472bd493585a758e6b71405fe9ba17">_FOEvar</a>
</li>
<li>fragmentsleft
: <a class="el" href="struct__INFOh.html#a8e6f96bce98babed33ee909d3f9fa434">_INFOh</a>
</li>
<li>frags
: <a class="el" href="struct__ESCvar.html#a740f00899fd371583c689f9d12dcea1d">_ESCvar</a>
</li>
<li>fragsleft
: <a class="el" href="struct__ESCvar.html#a1c75b6f18f34e0c775346732333ede41">_ESCvar</a>
</li>
</ul>
<h3><a class="anchor" id="index_h"></a>- h -</h3><ul>
<li>header
: <a class="el" href="struct__MBX.html#a92da7ab0e40ad17537bbc3c65200e19e">_MBX</a>
</li>
</ul>
<h3><a class="anchor" id="index_i"></a>- i -</h3><ul>
<li>incomplete
: <a class="el" href="struct__INFOh.html#af5172750f2a16371a7c79b37fc241171">_INFOh</a>
</li>
<li>index
: <a class="el" href="struct__COEsdo.html#ae9db28dca9457aba985e278572c892be">_COEsdo</a>
, <a class="el" href="struct__COEentdesc.html#a9926b99b1841e1b4fcc21c06afe911b5">_COEentdesc</a>
, <a class="el" href="struct__COEobjdesc.html#af155e3691e6ab01f08651f6577367862">_COEobjdesc</a>
</li>
<li>infoheader
: <a class="el" href="struct__COEobjdesc.html#a83f15bc450966195e9ceb793404ab6f9">_COEobjdesc</a>
, <a class="el" href="struct__COEentdesc.html#af9813d1d72c1953ab59b72ac8a64c882">_COEentdesc</a>
</li>
<li>IntECAT
: <a class="el" href="struct__ESCsm.html#a3bc7f8294dcbd0650efb22ec234b5cdd">_ESCsm</a>
</li>
<li>IntPDI
: <a class="el" href="struct__ESCsm.html#a86de443264b6c812505a7ff6461568e6">_ESCsm</a>
</li>
<li>IntR
: <a class="el" href="struct__ESCsm.html#a9f5f34ef5ae9949f6a4e0a90d08e395c">_ESCsm</a>
</li>
<li>IntW
: <a class="el" href="struct__ESCsm.html#aa62cae92c924bcc63e17b80a0bb0926e">_ESCsm</a>
</li>
</ul>
<h3><a class="anchor" id="index_l"></a>- l -</h3><ul>
<li>Length
: <a class="el" href="struct__ESCsm.html#a8003bdc816a364e24a1693c018df3b47">_ESCsm</a>
</li>
<li>length
: <a class="el" href="struct__MBXh.html#a23fa0c0531f49f871f48fd5547374e7d">_MBXh</a>
</li>
<li>Length
: <a class="el" href="structPACKED.html#a86c8b1d0f5d9bd5bacb15a6e627a9e4c">PACKED</a>
, <a class="el" href="struct__ESCsm2.html#a7cc427908eb382b7e03ea5ee084f9ee0">_ESCsm2</a>
</li>
</ul>
<h3><a class="anchor" id="index_m"></a>- m -</h3><ul>
<li>max_data
: <a class="el" href="structfoe__writefile__cfg.html#abc50f654a889f18a6da69cbc1212af37">foe_writefile_cfg_t</a>
</li>
<li>maxsub
: <a class="el" href="struct__COEobjdesc.html#aa3fe231eb5ebfa480c267574b830377c">_COEobjdesc</a>
</li>
<li>mbxbackup
: <a class="el" href="struct__ESCvar.html#acc6e1182b67f7ffa0f1f17981da7f6b1">_ESCvar</a>
</li>
<li>mbxcnt
: <a class="el" href="struct__ESCvar.html#a4e5f68587ca73c4a039e30a91df956c3">_ESCvar</a>
, <a class="el" href="struct__MBXh.html#a7f0d06da301a93a3d6b1e39dd2d603f1">_MBXh</a>
</li>
<li>mbxfree
: <a class="el" href="struct__ESCvar.html#a3640c80a3c60af326bcda0163bdb4012">_ESCvar</a>
</li>
<li>mbxheader
: <a class="el" href="struct__FOE.html#afb56753679ee44f8aab71c3d3b4e9ce7">_FOE</a>
, <a class="el" href="struct__COEsdo.html#a781b8a2d1ace34e6f29c2c05dfa73c11">_COEsdo</a>
, <a class="el" href="struct__COEobjdesc.html#acb9f94d0452e85d91838a288d21f4637">_COEobjdesc</a>
, <a class="el" href="struct__COEentdesc.html#aa337554d4b84eafe48138c3b62a353a5">_COEentdesc</a>
, <a class="el" href="struct__MBXerr.html#a9e087b40669ee82d3e507d5278c1a579">_MBXerr</a>
</li>
<li>mbxincnt
: <a class="el" href="struct__ESCvar.html#a17ba68cd90eebc3488193b984045a096">_ESCvar</a>
</li>
<li>mbxoutpost
: <a class="el" href="struct__ESCvar.html#ac0edd9d5ced367abbb4b6104aa36858e">_ESCvar</a>
</li>
<li>MBXstat
: <a class="el" href="struct__ESCsm.html#a1ccc59aaae460d4b4c38ce0892b8094c">_ESCsm</a>
</li>
<li>mbxtype
: <a class="el" href="struct__MBXh.html#a29fc7a797bf6596b371c65692c70cc10">_MBXh</a>
</li>
<li>Mode
: <a class="el" href="struct__ESCsm.html#adf54b58f41c9d3113c458ae07fd6b56b">_ESCsm</a>
</li>
</ul>
<h3><a class="anchor" id="index_n"></a>- n -</h3><ul>
<li>n_files
: <a class="el" href="structfoe__cfg__t.html#a04948966334af92b549a8f668357e52e">foe_cfg_t</a>
</li>
<li>name
: <a class="el" href="struct__COEobjdesc.html#a74ff339af6ac5bcfc189c17042f549ac">_COEobjdesc</a>
, <a class="el" href="structfoe__writefile__cfg.html#aa3b65a0c7d505e8095a59c57e5266be9">foe_writefile_cfg_t</a>
, <a class="el" href="struct__COEentdesc.html#ac226840dce511a98ab15cbf3cd709971">_COEentdesc</a>
</li>
<li>numberservice
: <a class="el" href="struct__COEh.html#a3b1eba362f9485bb0d8f272ec54fcdf7">_COEh</a>
</li>
</ul>
<h3><a class="anchor" id="index_o"></a>- o -</h3><ul>
<li>objectcode
: <a class="el" href="struct__COEobjdesc.html#ab959145dfe36e0200f983457efcb9390">_COEobjdesc</a>
</li>
<li>opcode
: <a class="el" href="struct__FOEh.html#a1dc38d9fc4bd6bd202bbead6630471c6">_FOEh</a>
, <a class="el" href="struct__INFOh.html#ac582a27132709f715ce942146281898f">_INFOh</a>
</li>
</ul>
<h3><a class="anchor" id="index_p"></a>- p -</h3><ul>
<li>packetnumber
: <a class="el" href="struct__FOEh.html#ae885a18138ceeb3eaef109d13c836f06">_FOEh</a>
</li>
<li>password
: <a class="el" href="struct__FOEh.html#a7ac59232250f163ba21a99e1b7066752">_FOEh</a>
</li>
<li>PDIr5
: <a class="el" href="struct__ESCsm.html#a573bf09f39c49795ab0eae814e1a8b35">_ESCsm</a>
</li>
<li>PDIrep
: <a class="el" href="struct__ESCsm.html#ac126f621094cdada5c410634f480fdb0">_ESCsm</a>
</li>
<li>PDIsm
: <a class="el" href="struct__ESCsm.html#ab136105ac0c70a04be18a9bb815d9d80">_ESCsm</a>
</li>
<li>post_state_change_hook
: <a class="el" href="structesc__cfg__t.html#ac5227ece0a8d4d2b95a3dd030336a847">esc_cfg_t</a>
</li>
<li>pre_state_change_hook
: <a class="el" href="structesc__cfg__t.html#a4a534a3f5ef5344306b255ff45669643">esc_cfg_t</a>
</li>
<li>PrevTime
: <a class="el" href="struct__ESCvar.html#a7242f87f3dd71be3e13f1167f3697641">_ESCvar</a>
</li>
<li>priority
: <a class="el" href="struct__MBXh.html#af9dbadeb7d90c0f4af33fda64f3c6b38">_MBXh</a>
</li>
<li>PSA
: <a class="el" href="struct__ESCsm2.html#a18727ed17b2fe927ba964944566ae8da">_ESCsm2</a>
, <a class="el" href="structPACKED.html#ab1dbbcde88af6ced573913592b0528b0">PACKED</a>
, <a class="el" href="struct__ESCsm.html#a466f44438611c5197a7978acc9e68798">_ESCsm</a>
</li>
</ul>
<h3><a class="anchor" id="index_r"></a>- r -</h3><ul>
<li>R1
: <a class="el" href="struct__ESCsm.html#ac9aaf54c7f5ec7e092f8e216f48ecbb6">_ESCsm</a>
</li>
<li>r1
: <a class="el" href="struct__ESCvar.html#a58137c85242f763855c28d4a1c991e9b">_ESCvar</a>
</li>
<li>r2
: <a class="el" href="struct__ESCvar.html#ad03e09bb5ff9649cbfd633c34b35770d">_ESCvar</a>
</li>
<li>R2
: <a class="el" href="struct__ESCsm.html#a7a567624fd5b72fa3f81dd33fe47e779">_ESCsm</a>
</li>
<li>R3
: <a class="el" href="struct__ESCsm.html#a51d65080a9c6065637cfb6d9eac0d27e">_ESCsm</a>
</li>
<li>reserved
: <a class="el" href="struct__INFOh.html#a0fc05ec7d78bea0aa31e96527e97fe78">_INFOh</a>
, <a class="el" href="struct__FOEh.html#aba457a6ff296584bb71fb1d65c2c568b">_FOEh</a>
</li>
</ul>
<h3><a class="anchor" id="index_s"></a>- s -</h3><ul>
<li>segmented
: <a class="el" href="struct__ESCvar.html#a43ff8dcfc5b893e89aeca5515b7e31fd">_ESCvar</a>
</li>
<li>size
: <a class="el" href="struct__COEsdo.html#a68c400884b8968e2c74d95dce331ae1a">_COEsdo</a>
</li>
<li>SM
: <a class="el" href="struct__ESCvar.html#aa0440fbb03b39c75a89c7cbe2138542e">_ESCvar</a>
</li>
<li>SMtestresult
: <a class="el" href="struct__ESCvar.html#aa62c9ece342bdbe02aedd8d533689702">_ESCvar</a>
</li>
<li>state
: <a class="el" href="struct__MBXcontrol.html#aaea88930e7b526c2edae1a5db4ad74af">_MBXcontrol</a>
</li>
<li>Status
: <a class="el" href="struct__ESCsm2.html#a645052f703a7c5de791dfd3b33713030">_ESCsm2</a>
</li>
<li>subindex
: <a class="el" href="struct__COEentdesc.html#a02fa16ca34dfb22498daad91f60495ae">_COEentdesc</a>
, <a class="el" href="struct__COEsdo.html#a683561582fc9dc08ca1ac60dd800a8ad">_COEsdo</a>
</li>
</ul>
<h3><a class="anchor" id="index_t"></a>- t -</h3><ul>
<li>temp
: <a class="el" href="struct__ESCvar.html#a5ab78b00bc4d17491b1917e5b26147fa">_ESCvar</a>
</li>
<li>Time
: <a class="el" href="struct__ESCvar.html#ac435e669f2d950b9c8ba9d5599dc87e6">_ESCvar</a>
</li>
<li>toggle
: <a class="el" href="struct__ESCvar.html#a8d3a4784b75a09867be316c5a65a9df1">_ESCvar</a>
</li>
<li>txcue
: <a class="el" href="struct__ESCvar.html#aa5287d8f17145114fd1fdc9cbda0d399">_ESCvar</a>
</li>
<li>type
: <a class="el" href="struct__MBXerr.html#a4a4fe590383e828172a8309c01de035f">_MBXerr</a>
</li>
</ul>
<h3><a class="anchor" id="index_v"></a>- v -</h3><ul>
<li>valueinfo
: <a class="el" href="struct__COEentdesc.html#a3f6fee236c37e4bc02c1856b09e0aad7">_COEentdesc</a>
</li>
</ul>
<h3><a class="anchor" id="index_w"></a>- w -</h3><ul>
<li>wdcnt
: <a class="el" href="struct__ESCvar.html#a3a67a2c7ed5f9ecb4457adce98377e57">_ESCvar</a>
</li>
<li>write_function
: <a class="el" href="structfoe__writefile__cfg.html#a2038f0388460a911097d063806a5162a">foe_writefile_cfg_t</a>
</li>
<li>WTE
: <a class="el" href="struct__ESCsm.html#a27b50f6e1266f5a5129ca0fab0242c87">_ESCsm</a>
</li>
</ul>
<h3><a class="anchor" id="index_x"></a>- x -</h3><ul>
<li>xoe
: <a class="el" href="struct__ESCvar.html#a8925acf2e71f6e04d423dd1a6a18ab03">_ESCvar</a>
</li>
</ul>
</div>
<hr class="footer"/><address class="footer"><small>Generated on Wed Jul 10 2013 11:14:19 for SOES by&#160;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
</body>
</html>

View File

@ -0,0 +1,77 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>SOES: Globals</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<!-- Generated by Doxygen 1.7.4 -->
<div id="top">
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">SOES&#160;<span id="projectnumber">v1.0.0</span></div>
</td>
</tr>
</tbody>
</table>
</div>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
<li class="current"><a href="globals.html"><span>Globals</span></a></li>
</ul>
</div>
<div id="navrow3" class="tabs2">
<ul class="tablist">
<li class="current"><a href="globals.html"><span>All</span></a></li>
<li><a href="globals_func.html"><span>Functions</span></a></li>
<li><a href="globals_vars.html"><span>Variables</span></a></li>
<li><a href="globals_type.html"><span>Typedefs</span></a></li>
<li><a href="globals_defs.html"><span>Defines</span></a></li>
</ul>
</div>
<div id="navrow4" class="tabs3">
<ul class="tablist">
<li class="current"><a href="globals.html#index__"><span>_</span></a></li>
<li><a href="globals_0x61.html#index_a"><span>a</span></a></li>
<li><a href="globals_0x62.html#index_b"><span>b</span></a></li>
<li><a href="globals_0x63.html#index_c"><span>c</span></a></li>
<li><a href="globals_0x64.html#index_d"><span>d</span></a></li>
<li><a href="globals_0x65.html#index_e"><span>e</span></a></li>
<li><a href="globals_0x66.html#index_f"><span>f</span></a></li>
<li><a href="globals_0x69.html#index_i"><span>i</span></a></li>
<li><a href="globals_0x6d.html#index_m"><span>m</span></a></li>
<li><a href="globals_0x6f.html#index_o"><span>o</span></a></li>
<li><a href="globals_0x70.html#index_p"><span>p</span></a></li>
<li><a href="globals_0x72.html#index_r"><span>r</span></a></li>
<li><a href="globals_0x73.html#index_s"><span>s</span></a></li>
<li><a href="globals_0x74.html#index_t"><span>t</span></a></li>
</ul>
</div>
</div>
<div class="contents">
<div class="textblock">Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:</div>
<h3><a class="anchor" id="index__"></a>- _ -</h3><ul>
<li>_ESCsmCompact
: <a class="el" href="esc_8h.html#a09e1340543bc3c816eb0df8650bc3cd4">esc.h</a>
</li>
</ul>
</div>
<hr class="footer"/><address class="footer"><small>Generated on Wed Jul 10 2013 11:14:19 for SOES by&#160;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
</body>
</html>

View File

@ -0,0 +1,137 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>SOES: Globals</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<!-- Generated by Doxygen 1.7.4 -->
<div id="top">
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">SOES&#160;<span id="projectnumber">v1.0.0</span></div>
</td>
</tr>
</tbody>
</table>
</div>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
<li class="current"><a href="globals.html"><span>Globals</span></a></li>
</ul>
</div>
<div id="navrow3" class="tabs2">
<ul class="tablist">
<li class="current"><a href="globals.html"><span>All</span></a></li>
<li><a href="globals_func.html"><span>Functions</span></a></li>
<li><a href="globals_vars.html"><span>Variables</span></a></li>
<li><a href="globals_type.html"><span>Typedefs</span></a></li>
<li><a href="globals_defs.html"><span>Defines</span></a></li>
</ul>
</div>
<div id="navrow4" class="tabs3">
<ul class="tablist">
<li><a href="globals.html#index__"><span>_</span></a></li>
<li class="current"><a href="globals_0x61.html#index_a"><span>a</span></a></li>
<li><a href="globals_0x62.html#index_b"><span>b</span></a></li>
<li><a href="globals_0x63.html#index_c"><span>c</span></a></li>
<li><a href="globals_0x64.html#index_d"><span>d</span></a></li>
<li><a href="globals_0x65.html#index_e"><span>e</span></a></li>
<li><a href="globals_0x66.html#index_f"><span>f</span></a></li>
<li><a href="globals_0x69.html#index_i"><span>i</span></a></li>
<li><a href="globals_0x6d.html#index_m"><span>m</span></a></li>
<li><a href="globals_0x6f.html#index_o"><span>o</span></a></li>
<li><a href="globals_0x70.html#index_p"><span>p</span></a></li>
<li><a href="globals_0x72.html#index_r"><span>r</span></a></li>
<li><a href="globals_0x73.html#index_s"><span>s</span></a></li>
<li><a href="globals_0x74.html#index_t"><span>t</span></a></li>
</ul>
</div>
</div>
<div class="contents">
<div class="textblock">Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:</div>
<h3><a class="anchor" id="index_a"></a>- a -</h3><ul>
<li>ABORT_GENERALERROR
: <a class="el" href="esc_8h.html#a72b3ab3339c084e75e639f7bddd18eea">esc.h</a>
</li>
<li>ABORT_NOOBJECT
: <a class="el" href="esc_8h.html#a166ee02623b168a5f5cde28e02b43d0f">esc.h</a>
</li>
<li>ABORT_NOSUBINDEX
: <a class="el" href="esc_8h.html#a85f73c8655c5d2616c40db61e7e4c36a">esc.h</a>
</li>
<li>ABORT_NOTINTHISSTATE
: <a class="el" href="esc_8h.html#a8919b8ab139d91da21a9994a5ae3bb96">esc.h</a>
</li>
<li>ABORT_NOTOGGLE
: <a class="el" href="esc_8h.html#a6c8f7d428b599b3d835f45d45498c86e">esc.h</a>
</li>
<li>ABORT_READONLY
: <a class="el" href="esc_8h.html#ad7151fdcb2dab4aa1653c859a1671588">esc.h</a>
</li>
<li>ABORT_TYPEMISMATCH
: <a class="el" href="esc_8h.html#a067dfe5f8b8ca9639f064e594f8c2155">esc.h</a>
</li>
<li>ABORT_UNKNOWN
: <a class="el" href="esc_8h.html#ab3d9d0e74944a0993aa270249381caf1">esc.h</a>
</li>
<li>ABORT_UNSUPPORTED
: <a class="el" href="esc_8h.html#aa8afc583ec83efee984c114bfbbf1677">esc.h</a>
</li>
<li>ABORT_WRITEONLY
: <a class="el" href="esc_8h.html#acafba2c1ed851196a97132621bb16d80">esc.h</a>
</li>
<li>ALERR_BOOTNOTSUPPORTED
: <a class="el" href="esc_8h.html#a69aebecbb142d532c812ccb00253e07c">esc.h</a>
</li>
<li>ALERR_INVALIDBOOTMBXCONFIG
: <a class="el" href="esc_8h.html#ae5c154c2c824e3d5de37d4692e71cdbc">esc.h</a>
</li>
<li>ALERR_INVALIDINPUTSM
: <a class="el" href="esc_8h.html#a575f38a4aa535c38b299f55b618da2e6">esc.h</a>
</li>
<li>ALERR_INVALIDMBXCONFIG
: <a class="el" href="esc_8h.html#a4cbeb58c1755ac24791048c8307214ec">esc.h</a>
</li>
<li>ALERR_INVALIDOUTPUTSM
: <a class="el" href="esc_8h.html#a58fa34c244c581fa44a7d700510d4064">esc.h</a>
</li>
<li>ALERR_INVALIDSMCONFIG
: <a class="el" href="esc_8h.html#a70edcc8367c0f0e947bac693dd8630d8">esc.h</a>
</li>
<li>ALERR_INVALIDSTATECHANGE
: <a class="el" href="esc_8h.html#a89d368e1bf0bb4665bed6f206f0dbdd0">esc.h</a>
</li>
<li>ALERR_NONE
: <a class="el" href="esc_8h.html#acd028c8cb5d08a99cc31bc2ee46c97fd">esc.h</a>
</li>
<li>ALERR_UNKNOWNSTATE
: <a class="el" href="esc_8h.html#ae74a70a2fea3e108e3d59d33ceaac55e">esc.h</a>
</li>
<li>ALERR_WATCHDOG
: <a class="el" href="esc_8h.html#af236abe4b811bcebfb6556e3ddd85a20">esc.h</a>
</li>
<li>APP_safeoutput()
: <a class="el" href="esc_8h.html#a4a701826beb05687a0d9a5036de3c37c">esc.h</a>
</li>
</ul>
</div>
<hr class="footer"/><address class="footer"><small>Generated on Wed Jul 10 2013 11:14:19 for SOES by&#160;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
</body>
</html>

View File

@ -0,0 +1,92 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>SOES: Globals</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<!-- Generated by Doxygen 1.7.4 -->
<div id="top">
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">SOES&#160;<span id="projectnumber">v1.0.0</span></div>
</td>
</tr>
</tbody>
</table>
</div>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
<li class="current"><a href="globals.html"><span>Globals</span></a></li>
</ul>
</div>
<div id="navrow3" class="tabs2">
<ul class="tablist">
<li class="current"><a href="globals.html"><span>All</span></a></li>
<li><a href="globals_func.html"><span>Functions</span></a></li>
<li><a href="globals_vars.html"><span>Variables</span></a></li>
<li><a href="globals_type.html"><span>Typedefs</span></a></li>
<li><a href="globals_defs.html"><span>Defines</span></a></li>
</ul>
</div>
<div id="navrow4" class="tabs3">
<ul class="tablist">
<li><a href="globals.html#index__"><span>_</span></a></li>
<li><a href="globals_0x61.html#index_a"><span>a</span></a></li>
<li class="current"><a href="globals_0x62.html#index_b"><span>b</span></a></li>
<li><a href="globals_0x63.html#index_c"><span>c</span></a></li>
<li><a href="globals_0x64.html#index_d"><span>d</span></a></li>
<li><a href="globals_0x65.html#index_e"><span>e</span></a></li>
<li><a href="globals_0x66.html#index_f"><span>f</span></a></li>
<li><a href="globals_0x69.html#index_i"><span>i</span></a></li>
<li><a href="globals_0x6d.html#index_m"><span>m</span></a></li>
<li><a href="globals_0x6f.html#index_o"><span>o</span></a></li>
<li><a href="globals_0x70.html#index_p"><span>p</span></a></li>
<li><a href="globals_0x72.html#index_r"><span>r</span></a></li>
<li><a href="globals_0x73.html#index_s"><span>s</span></a></li>
<li><a href="globals_0x74.html#index_t"><span>t</span></a></li>
</ul>
</div>
</div>
<div class="contents">
<div class="textblock">Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:</div>
<h3><a class="anchor" id="index_b"></a>- b -</h3><ul>
<li>BITS2BYTES
: <a class="el" href="esc__coe_8c.html#ab8f17f5a016592c2d41887a2f29581d8">esc_coe.c</a>
</li>
<li>BOOT_TO_BOOT
: <a class="el" href="esc_8h.html#a71a8de171e52be3ed7a0b977a8b9bd80">esc.h</a>
</li>
<li>BOOT_TO_INIT
: <a class="el" href="esc_8h.html#a5a4651be521f0e624ddb6251b47a5076">esc.h</a>
</li>
<li>BOOT_TO_OP
: <a class="el" href="esc_8h.html#af7dbe10bc52668804918d3584af71136">esc.h</a>
</li>
<li>BOOT_TO_PREOP
: <a class="el" href="esc_8h.html#a9ac5f7bab9e65f8ee9f5603bdbdbc9fc">esc.h</a>
</li>
<li>BOOT_TO_SAFEOP
: <a class="el" href="esc_8h.html#a0b2cce836864319b4596ddba668177e1">esc.h</a>
</li>
</ul>
</div>
<hr class="footer"/><address class="footer"><small>Generated on Wed Jul 10 2013 11:14:19 for SOES by&#160;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
</body>
</html>

View File

@ -0,0 +1,161 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>SOES: Globals</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<!-- Generated by Doxygen 1.7.4 -->
<div id="top">
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">SOES&#160;<span id="projectnumber">v1.0.0</span></div>
</td>
</tr>
</tbody>
</table>
</div>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
<li class="current"><a href="globals.html"><span>Globals</span></a></li>
</ul>
</div>
<div id="navrow3" class="tabs2">
<ul class="tablist">
<li class="current"><a href="globals.html"><span>All</span></a></li>
<li><a href="globals_func.html"><span>Functions</span></a></li>
<li><a href="globals_vars.html"><span>Variables</span></a></li>
<li><a href="globals_type.html"><span>Typedefs</span></a></li>
<li><a href="globals_defs.html"><span>Defines</span></a></li>
</ul>
</div>
<div id="navrow4" class="tabs3">
<ul class="tablist">
<li><a href="globals.html#index__"><span>_</span></a></li>
<li><a href="globals_0x61.html#index_a"><span>a</span></a></li>
<li><a href="globals_0x62.html#index_b"><span>b</span></a></li>
<li class="current"><a href="globals_0x63.html#index_c"><span>c</span></a></li>
<li><a href="globals_0x64.html#index_d"><span>d</span></a></li>
<li><a href="globals_0x65.html#index_e"><span>e</span></a></li>
<li><a href="globals_0x66.html#index_f"><span>f</span></a></li>
<li><a href="globals_0x69.html#index_i"><span>i</span></a></li>
<li><a href="globals_0x6d.html#index_m"><span>m</span></a></li>
<li><a href="globals_0x6f.html#index_o"><span>o</span></a></li>
<li><a href="globals_0x70.html#index_p"><span>p</span></a></li>
<li><a href="globals_0x72.html#index_r"><span>r</span></a></li>
<li><a href="globals_0x73.html#index_s"><span>s</span></a></li>
<li><a href="globals_0x74.html#index_t"><span>t</span></a></li>
</ul>
</div>
</div>
<div class="contents">
<div class="textblock">Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:</div>
<h3><a class="anchor" id="index_c"></a>- c -</h3><ul>
<li>COE_COMMAND_DOWNLOADRESPONSE
: <a class="el" href="esc_8h.html#ab73ff393768292c1892f7bb623a2a37e">esc.h</a>
</li>
<li>COE_COMMAND_LASTSEGMENTBIT
: <a class="el" href="esc_8h.html#a8f6635c0b1c9f2b42b75e21d3b362795">esc.h</a>
</li>
<li>COE_COMMAND_SDOABORT
: <a class="el" href="esc_8h.html#aef144f1f15c1bbdcc50cf5bd65740b11">esc.h</a>
</li>
<li>COE_COMMAND_UPLOADREQUEST
: <a class="el" href="esc_8h.html#a9426b11868288c205b284f334e4ba2fd">esc.h</a>
</li>
<li>COE_COMMAND_UPLOADRESPONSE
: <a class="el" href="esc_8h.html#afddfe7399f6e81e0b7cb5c9f8ae83a18">esc.h</a>
</li>
<li>COE_COMMAND_UPLOADSEGMENT
: <a class="el" href="esc_8h.html#a959114e6d973218c488ed1509283de9a">esc.h</a>
</li>
<li>COE_COMMAND_UPLOADSEGREQ
: <a class="el" href="esc_8h.html#affd87f7663af1365d61ff496d3b51c05">esc.h</a>
</li>
<li>COE_COMPLETEACCESS
: <a class="el" href="esc_8h.html#aa07a650eac47dd5c58377197f8c783bd">esc.h</a>
</li>
<li>COE_DEFAULTLENGTH
: <a class="el" href="esc_8h.html#a5319e365611192dad7143baf5585cfeb">esc.h</a>
</li>
<li>COE_ENTRYDESCRIPTIONRESPONSE
: <a class="el" href="esc_8h.html#afd42e8f24b196c986d4c59a6245a7a8f">esc.h</a>
</li>
<li>COE_EXPEDITED_INDICATOR
: <a class="el" href="esc_8h.html#ac3346bc58bfe96039bde1ae225f1945b">esc.h</a>
</li>
<li>COE_GETODLISTRESPONSE
: <a class="el" href="esc_8h.html#a83499f6b9802116f65f4e4e2eb8f044d">esc.h</a>
</li>
<li>COE_GETODRESPONSE
: <a class="el" href="esc_8h.html#adce1074d091645fd0c07f8ab6f174bcc">esc.h</a>
</li>
<li>COE_HEADERSIZE
: <a class="el" href="esc_8h.html#aca6c6f5a2d27f203118c9463b6013bf9">esc.h</a>
</li>
<li>COE_INFOERROR
: <a class="el" href="esc_8h.html#ac800b26f189c3568f12b3a488d9b8829">esc.h</a>
</li>
<li>COE_SDOINFORMATION
: <a class="el" href="esc_8h.html#a2e0381f78a35988eed32bfaafa7da0db">esc.h</a>
</li>
<li>COE_SDOREQUEST
: <a class="el" href="esc_8h.html#acd619b42d3a5df1b5e54be471590f993">esc.h</a>
</li>
<li>COE_SDORESPONSE
: <a class="el" href="esc_8h.html#a285db8ac5aaaa653cb2006a5cd7fb16e">esc.h</a>
</li>
<li>COE_SEGMENTHEADERSIZE
: <a class="el" href="esc_8h.html#acd4b23a53287d08129af57a840a346bf">esc.h</a>
</li>
<li>COE_SIZE_INDICATOR
: <a class="el" href="esc_8h.html#a0d6902986079809c20df56afc2821214">esc.h</a>
</li>
<li>COE_TOGGLEBIT
: <a class="el" href="esc_8h.html#a0d1b521a117b4398bffee7c135b7d049">esc.h</a>
</li>
<li>COE_VALUEINFO_ACCESS
: <a class="el" href="esc_8h.html#acb7f46ca5f0bb5d4a8fae50b74170dc8">esc.h</a>
</li>
<li>COE_VALUEINFO_DEFAULT
: <a class="el" href="esc_8h.html#aff07e27a4aad8cc336f6c2f7be927bd8">esc.h</a>
</li>
<li>COE_VALUEINFO_MAPPABLE
: <a class="el" href="esc_8h.html#a2f61908f0b1d4587c9d17edc06d1744b">esc.h</a>
</li>
<li>COE_VALUEINFO_MAXIMUM
: <a class="el" href="esc_8h.html#a7126e2f3f30f5568acafe663fdab4bed">esc.h</a>
</li>
<li>COE_VALUEINFO_MINIMUM
: <a class="el" href="esc_8h.html#ad2acfa93c9eb8b29d2c79162b0442505">esc.h</a>
</li>
<li>COE_VALUEINFO_OBJECT
: <a class="el" href="esc_8h.html#a52ba8abae9ae6634bf618e03c96eb112">esc.h</a>
</li>
<li>COE_VALUEINFO_TYPE
: <a class="el" href="esc_8h.html#a4b11e887fabe353ffb52d2074f62a7e9">esc.h</a>
</li>
<li>copy2mbx()
: <a class="el" href="esc__coe_8c.html#a3efad71f0e21192002ef60437575f70b">esc_coe.c</a>
</li>
</ul>
</div>
<hr class="footer"/><address class="footer"><small>Generated on Wed Jul 10 2013 11:14:19 for SOES by&#160;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
</body>
</html>

View File

@ -0,0 +1,80 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>SOES: Globals</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<!-- Generated by Doxygen 1.7.4 -->
<div id="top">
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">SOES&#160;<span id="projectnumber">v1.0.0</span></div>
</td>
</tr>
</tbody>
</table>
</div>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
<li class="current"><a href="globals.html"><span>Globals</span></a></li>
</ul>
</div>
<div id="navrow3" class="tabs2">
<ul class="tablist">
<li class="current"><a href="globals.html"><span>All</span></a></li>
<li><a href="globals_func.html"><span>Functions</span></a></li>
<li><a href="globals_vars.html"><span>Variables</span></a></li>
<li><a href="globals_type.html"><span>Typedefs</span></a></li>
<li><a href="globals_defs.html"><span>Defines</span></a></li>
</ul>
</div>
<div id="navrow4" class="tabs3">
<ul class="tablist">
<li><a href="globals.html#index__"><span>_</span></a></li>
<li><a href="globals_0x61.html#index_a"><span>a</span></a></li>
<li><a href="globals_0x62.html#index_b"><span>b</span></a></li>
<li><a href="globals_0x63.html#index_c"><span>c</span></a></li>
<li class="current"><a href="globals_0x64.html#index_d"><span>d</span></a></li>
<li><a href="globals_0x65.html#index_e"><span>e</span></a></li>
<li><a href="globals_0x66.html#index_f"><span>f</span></a></li>
<li><a href="globals_0x69.html#index_i"><span>i</span></a></li>
<li><a href="globals_0x6d.html#index_m"><span>m</span></a></li>
<li><a href="globals_0x6f.html#index_o"><span>o</span></a></li>
<li><a href="globals_0x70.html#index_p"><span>p</span></a></li>
<li><a href="globals_0x72.html#index_r"><span>r</span></a></li>
<li><a href="globals_0x73.html#index_s"><span>s</span></a></li>
<li><a href="globals_0x74.html#index_t"><span>t</span></a></li>
</ul>
</div>
</div>
<div class="contents">
<div class="textblock">Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:</div>
<h3><a class="anchor" id="index_d"></a>- d -</h3><ul>
<li>DEBUG_ASSERT
: <a class="el" href="esc__foe_8c.html#a40eaa99769ad24d7b1f0d91276497e96">esc_foe.c</a>
</li>
<li>DPRINT
: <a class="el" href="esc__foe_8c.html#a57a35bfd7d13bdfab37a48171286ecee">esc_foe.c</a>
</li>
</ul>
</div>
<hr class="footer"/><address class="footer"><small>Generated on Wed Jul 10 2013 11:14:19 for SOES by&#160;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
</body>
</html>

View File

@ -0,0 +1,292 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>SOES: Globals</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<!-- Generated by Doxygen 1.7.4 -->
<div id="top">
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">SOES&#160;<span id="projectnumber">v1.0.0</span></div>
</td>
</tr>
</tbody>
</table>
</div>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
<li class="current"><a href="globals.html"><span>Globals</span></a></li>
</ul>
</div>
<div id="navrow3" class="tabs2">
<ul class="tablist">
<li class="current"><a href="globals.html"><span>All</span></a></li>
<li><a href="globals_func.html"><span>Functions</span></a></li>
<li><a href="globals_vars.html"><span>Variables</span></a></li>
<li><a href="globals_type.html"><span>Typedefs</span></a></li>
<li><a href="globals_defs.html"><span>Defines</span></a></li>
</ul>
</div>
<div id="navrow4" class="tabs3">
<ul class="tablist">
<li><a href="globals.html#index__"><span>_</span></a></li>
<li><a href="globals_0x61.html#index_a"><span>a</span></a></li>
<li><a href="globals_0x62.html#index_b"><span>b</span></a></li>
<li><a href="globals_0x63.html#index_c"><span>c</span></a></li>
<li><a href="globals_0x64.html#index_d"><span>d</span></a></li>
<li class="current"><a href="globals_0x65.html#index_e"><span>e</span></a></li>
<li><a href="globals_0x66.html#index_f"><span>f</span></a></li>
<li><a href="globals_0x69.html#index_i"><span>i</span></a></li>
<li><a href="globals_0x6d.html#index_m"><span>m</span></a></li>
<li><a href="globals_0x6f.html#index_o"><span>o</span></a></li>
<li><a href="globals_0x70.html#index_p"><span>p</span></a></li>
<li><a href="globals_0x72.html#index_r"><span>r</span></a></li>
<li><a href="globals_0x73.html#index_s"><span>s</span></a></li>
<li><a href="globals_0x74.html#index_t"><span>t</span></a></li>
</ul>
</div>
</div>
<div class="contents">
<div class="textblock">Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:</div>
<h3><a class="anchor" id="index_e"></a>- e -</h3><ul>
<li>EC_LITTLE_ENDIAN
: <a class="el" href="esc_8h.html#ae8a12ace1e2e389a36528f93599f65cf">esc.h</a>
</li>
<li>ESC_ackmbxread()
: <a class="el" href="esc_8c.html#a3833c0b62cdc0b62ee929154e9744fcc">esc.c</a>
</li>
<li>ESC_address()
: <a class="el" href="esc_8c.html#a152dee1d6c0bce00aa029d833e147380">esc.c</a>
</li>
<li>ESC_ALerror()
: <a class="el" href="esc_8c.html#ae49fff6e6440edd2c55a077d724b898c">esc.c</a>
, <a class="el" href="esc_8h.html#ae49fff6e6440edd2c55a077d724b898c">esc.h</a>
</li>
<li>ESC_ALevent()
: <a class="el" href="esc_8h.html#a5786bd4c441fafac35331fa755730f84">esc.h</a>
</li>
<li>ESC_ALstatus()
: <a class="el" href="esc_8h.html#a9794dd94da984eb6bfb88879aabf4e3d">esc.h</a>
, <a class="el" href="esc_8c.html#a9794dd94da984eb6bfb88879aabf4e3d">esc.c</a>
</li>
<li>esc_cfg
: <a class="el" href="esc_8c.html#a23be27590c28284bdca777f918b40d09">esc.c</a>
</li>
<li>ESC_checkmbx()
: <a class="el" href="esc_8c.html#aeee5a004e7e70410ceb89c26537a2ccf">esc.c</a>
</li>
<li>ESC_checkmbxboot()
: <a class="el" href="esc_8c.html#a5cd0a7feb7e50e42fcdb71e6a28799ab">esc.c</a>
</li>
<li>ESC_checkSM23()
: <a class="el" href="esc_8c.html#a24ef310d3626f86db81293553d0a6c88">esc.c</a>
</li>
<li>ESC_claimbuffer()
: <a class="el" href="esc_8c.html#a9cdac6a8b19f5a033267973c6b97e501">esc.c</a>
, <a class="el" href="esc_8h.html#a9cdac6a8b19f5a033267973c6b97e501">esc.h</a>
</li>
<li>ESC_coeprocess()
: <a class="el" href="esc__coe_8h.html#a71c76794b7e4ed125cc9cda0e8508ccd">esc_coe.h</a>
, <a class="el" href="esc__coe_8c.html#a71c76794b7e4ed125cc9cda0e8508ccd">esc_coe.c</a>
</li>
<li>ESC_config()
: <a class="el" href="esc_8c.html#a5ddaf0c8fd9944f21be30480125b6736">esc.c</a>
, <a class="el" href="esc_8h.html#a5ddaf0c8fd9944f21be30480125b6736">esc.h</a>
</li>
<li>ESC_foeprocess()
: <a class="el" href="esc__foe_8c.html#a57ace265be44ccc2a0af313d007261b2">esc_foe.c</a>
, <a class="el" href="esc__foe_8h.html#a57ace265be44ccc2a0af313d007261b2">esc_foe.h</a>
</li>
<li>ESC_init()
: <a class="el" href="esc_8h.html#a1e57480c1f1963ef43315a2da703af69">esc.h</a>
</li>
<li>ESC_mbxprocess()
: <a class="el" href="esc_8c.html#ae75d37a1bdce82374c3b262f18945cb3">esc.c</a>
, <a class="el" href="esc_8h.html#ae75d37a1bdce82374c3b262f18945cb3">esc.h</a>
</li>
<li>ESC_objecthandler()
: <a class="el" href="esc__coe_8h.html#a414bacd094d9023838a396174a695f8d">esc_coe.h</a>
</li>
<li>ESC_outreqbuffer()
: <a class="el" href="esc_8c.html#ab5fb5800733c7419cad42f030860b966">esc.c</a>
</li>
<li>ESC_pre_objecthandler()
: <a class="el" href="esc__coe_8c.html#a5da3e5d510d17ad992a2db811f522b54">esc_coe.c</a>
</li>
<li>ESC_read()
: <a class="el" href="esc_8h.html#a2664adef01c5c5f228f8512fcae3eb57">esc.h</a>
</li>
<li>ESC_readmbx()
: <a class="el" href="esc_8c.html#a268c2208d13c00552cc25c7c823c78b3">esc.c</a>
</li>
<li>ESC_SMack()
: <a class="el" href="esc_8c.html#ad4f4c1dd0c961f827f8f1d578fed087d">esc.c</a>
</li>
<li>ESC_SMdisable()
: <a class="el" href="esc_8c.html#af318524ace0e280d9e87afc9f73b57fa">esc.c</a>
</li>
<li>ESC_SMenable()
: <a class="el" href="esc_8c.html#a20ec7aa0e6d89492dc4562b9c4657f6f">esc.c</a>
</li>
<li>ESC_SMstatus()
: <a class="el" href="esc_8c.html#ad419b1ac3abaf24fa53d55ede4810ce7">esc.c</a>
, <a class="el" href="esc_8h.html#ad419b1ac3abaf24fa53d55ede4810ce7">esc.h</a>
</li>
<li>ESC_SMwritepdi()
: <a class="el" href="esc_8c.html#a602dae15b9286e4ab4716fb85f8f3c58">esc.c</a>
</li>
<li>ESC_startinput()
: <a class="el" href="esc_8c.html#a7e667a53ef89c4a27578e26e2479d05d">esc.c</a>
, <a class="el" href="esc_8h.html#a7e667a53ef89c4a27578e26e2479d05d">esc.h</a>
</li>
<li>ESC_startmbx()
: <a class="el" href="esc_8c.html#afc72202bfde332668a10d54e3b56083b">esc.c</a>
, <a class="el" href="esc_8h.html#afc72202bfde332668a10d54e3b56083b">esc.h</a>
</li>
<li>ESC_startmbxboot()
: <a class="el" href="esc_8c.html#a99dd26de7272793bd6ffe56af9316fbe">esc.c</a>
</li>
<li>ESC_startoutput()
: <a class="el" href="esc_8c.html#a5e77a7172bd88586c08829b6d5977016">esc.c</a>
, <a class="el" href="esc_8h.html#a5e77a7172bd88586c08829b6d5977016">esc.h</a>
</li>
<li>ESC_state()
: <a class="el" href="esc_8c.html#a1f4da4aa96dc469b218abf33ff857130">esc.c</a>
, <a class="el" href="esc_8h.html#a1f4da4aa96dc469b218abf33ff857130">esc.h</a>
</li>
<li>ESC_stopinput()
: <a class="el" href="esc_8c.html#a81ea48b9683662e8bed01fbb77826236">esc.c</a>
, <a class="el" href="esc_8h.html#a81ea48b9683662e8bed01fbb77826236">esc.h</a>
</li>
<li>ESC_stopmbx()
: <a class="el" href="esc_8h.html#af114806603011938e35ae366d115d90f">esc.h</a>
, <a class="el" href="esc_8c.html#af114806603011938e35ae366d115d90f">esc.c</a>
</li>
<li>ESC_stopoutput()
: <a class="el" href="esc_8c.html#aea60761cf8862550e8901aa996069f8d">esc.c</a>
, <a class="el" href="esc_8h.html#aea60761cf8862550e8901aa996069f8d">esc.h</a>
</li>
<li>ESC_WDstatus()
: <a class="el" href="esc_8c.html#a86d7576d9f8b1e63ad8ad2a6cf991c50">esc.c</a>
, <a class="el" href="esc_8h.html#a86d7576d9f8b1e63ad8ad2a6cf991c50">esc.h</a>
</li>
<li>ESC_write()
: <a class="el" href="esc_8h.html#a1e2ef25b8a36c48016abd5ff20166d9f">esc.h</a>
</li>
<li>ESC_writembx()
: <a class="el" href="esc_8c.html#add404335229e458ca751345aa701f3ce">esc.c</a>
</li>
<li>ESC_xoeprocess()
: <a class="el" href="esc_8h.html#aa783bb45ace470b98607ce7c4af0460f">esc.h</a>
, <a class="el" href="esc_8c.html#aa783bb45ace470b98607ce7c4af0460f">esc.c</a>
</li>
<li>ESCboot
: <a class="el" href="esc_8h.html#a5746b1d1d83a04e648109c32af64b77f">esc.h</a>
</li>
<li>ESCerror
: <a class="el" href="esc_8h.html#abc139331f4812b302e34bb3709ff915b">esc.h</a>
</li>
<li>ESCinit
: <a class="el" href="esc_8h.html#abbfee5404d9c373b5dd4145d7468a17a">esc.h</a>
</li>
<li>ESCop
: <a class="el" href="esc_8h.html#a546a780a2b3d23e5b505ecc4e2f855f6">esc.h</a>
</li>
<li>ESCpreop
: <a class="el" href="esc_8h.html#ada92568faae26305d3e752c0b08e8b2c">esc.h</a>
</li>
<li>ESCREG_ADDRESS
: <a class="el" href="esc_8h.html#af858302749f10b8120dc065835583772">esc.h</a>
</li>
<li>ESCREG_AL_ALLBUTINITMASK
: <a class="el" href="esc_8h.html#a4e0391bdc5b778c69a6bd0ba7c4a5451">esc.h</a>
</li>
<li>ESCREG_AL_ERRACKMASK
: <a class="el" href="esc_8h.html#acb2f8af966e88ca7f9eb479fafa044f8">esc.h</a>
</li>
<li>ESCREG_AL_STATEMASK
: <a class="el" href="esc_8h.html#a93bf8f0acd6e2c106b4bbd07d4f72be7">esc.h</a>
</li>
<li>ESCREG_ALCONTROL
: <a class="el" href="esc_8h.html#a6c2c6e4d13ec0b4212f31d0a99bc8dce">esc.h</a>
</li>
<li>ESCREG_ALERROR
: <a class="el" href="esc_8h.html#a9b3baa9a43aaec1ee7dafaaa2968f4a9">esc.h</a>
</li>
<li>ESCREG_ALEVENT_CONTROL
: <a class="el" href="esc_8h.html#a909893b47343a19f6ac077b3d7616983">esc.h</a>
</li>
<li>ESCREG_ALEVENT_SM2
: <a class="el" href="esc_8h.html#a7f4270f5e37d8e797a3033523e0f84d0">esc.h</a>
</li>
<li>ESCREG_ALEVENT_SM3
: <a class="el" href="esc_8h.html#af027c2de0f06af73a3358ee6ae6d0879">esc.h</a>
</li>
<li>ESCREG_ALEVENT_SM_MASK
: <a class="el" href="esc_8h.html#a97a40d09c42c6bc43b020660e1bbbfbf">esc.h</a>
</li>
<li>ESCREG_ALEVENT_SMCHANGE
: <a class="el" href="esc_8h.html#accde7f95cb5cb142c029ce48de2cb159">esc.h</a>
</li>
<li>ESCREG_ALSTATUS
: <a class="el" href="esc_8h.html#aeba405861a1361254f077961dc961faa">esc.h</a>
</li>
<li>ESCREG_DLSTATUS
: <a class="el" href="esc_8h.html#a7307fb7c3f7d54c7a44910f7100574cf">esc.h</a>
</li>
<li>ESCREG_LOCALTIME
: <a class="el" href="esc_8h.html#a6da09b045593c131194d037cf180af6e">esc.h</a>
</li>
<li>ESCREG_SM0
: <a class="el" href="esc_8h.html#adc86f932b632df06d8edebe7e2f4425e">esc.h</a>
</li>
<li>ESCREG_SM0PDI
: <a class="el" href="esc_8h.html#a794f17b8e194f6caa1d4621c5d39255a">esc.h</a>
</li>
<li>ESCREG_SM0STATUS
: <a class="el" href="esc_8h.html#a0b5666ebc41cd0a36da767ee23a864a7">esc.h</a>
</li>
<li>ESCREG_SM1
: <a class="el" href="esc_8h.html#a1980a4a2097e0b992c4075daace62bca">esc.h</a>
</li>
<li>ESCREG_SM2
: <a class="el" href="esc_8h.html#a32da75a5a12ce65cce68994ec39d3169">esc.h</a>
</li>
<li>ESCREG_SM3
: <a class="el" href="esc_8h.html#a5655115f6c92776da28142322b6f006d">esc.h</a>
</li>
<li>ESCREG_SMENABLE_BIT
: <a class="el" href="esc_8h.html#a196d729aa8d41edec776de5bd4be89e5">esc.h</a>
</li>
<li>ESCREG_WDSTATUS
: <a class="el" href="esc_8h.html#a4ec3b5c5de3d23c9c4f358fe81b0b0e1">esc.h</a>
</li>
<li>ESCsafeop
: <a class="el" href="esc_8h.html#a8badc20d57f274700ff6786013f4dba8">esc.h</a>
</li>
<li>ESCvar
: <a class="el" href="esc_8h.html#ad2be96a7ede58a01fd408ed9ad4e0970">esc.h</a>
</li>
</ul>
</div>
<hr class="footer"/><address class="footer"><small>Generated on Wed Jul 10 2013 11:14:19 for SOES by&#160;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
</body>
</html>

View File

@ -0,0 +1,202 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>SOES: Globals</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<!-- Generated by Doxygen 1.7.4 -->
<div id="top">
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">SOES&#160;<span id="projectnumber">v1.0.0</span></div>
</td>
</tr>
</tbody>
</table>
</div>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
<li class="current"><a href="globals.html"><span>Globals</span></a></li>
</ul>
</div>
<div id="navrow3" class="tabs2">
<ul class="tablist">
<li class="current"><a href="globals.html"><span>All</span></a></li>
<li><a href="globals_func.html"><span>Functions</span></a></li>
<li><a href="globals_vars.html"><span>Variables</span></a></li>
<li><a href="globals_type.html"><span>Typedefs</span></a></li>
<li><a href="globals_defs.html"><span>Defines</span></a></li>
</ul>
</div>
<div id="navrow4" class="tabs3">
<ul class="tablist">
<li><a href="globals.html#index__"><span>_</span></a></li>
<li><a href="globals_0x61.html#index_a"><span>a</span></a></li>
<li><a href="globals_0x62.html#index_b"><span>b</span></a></li>
<li><a href="globals_0x63.html#index_c"><span>c</span></a></li>
<li><a href="globals_0x64.html#index_d"><span>d</span></a></li>
<li><a href="globals_0x65.html#index_e"><span>e</span></a></li>
<li class="current"><a href="globals_0x66.html#index_f"><span>f</span></a></li>
<li><a href="globals_0x69.html#index_i"><span>i</span></a></li>
<li><a href="globals_0x6d.html#index_m"><span>m</span></a></li>
<li><a href="globals_0x6f.html#index_o"><span>o</span></a></li>
<li><a href="globals_0x70.html#index_p"><span>p</span></a></li>
<li><a href="globals_0x72.html#index_r"><span>r</span></a></li>
<li><a href="globals_0x73.html#index_s"><span>s</span></a></li>
<li><a href="globals_0x74.html#index_t"><span>t</span></a></li>
</ul>
</div>
</div>
<div class="contents">
<div class="textblock">Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:</div>
<h3><a class="anchor" id="index_f"></a>- f -</h3><ul>
<li>FLASHSTORE
: <a class="el" href="esc_8h.html#af31f651275638bf31941470751b421c6">esc.h</a>
</li>
<li>FOE_abort()
: <a class="el" href="esc__foe_8c.html#a3dc61a42f1df1418e1b713b4ef6124c3">esc_foe.c</a>
</li>
<li>foe_cfg
: <a class="el" href="esc__foe_8c.html#a7cc484767f3b463b2a72365d9c761a1f">esc_foe.c</a>
</li>
<li>FOE_config()
: <a class="el" href="esc__foe_8c.html#a0b138231b97d90990427644659e92e0c">esc_foe.c</a>
, <a class="el" href="esc__foe_8h.html#a0b138231b97d90990427644659e92e0c">esc_foe.h</a>
</li>
<li>FOE_data()
: <a class="el" href="esc__foe_8c.html#af0f447cb34aefab559845633acba7eea">esc_foe.c</a>
</li>
<li>FOE_DATA_SIZE
: <a class="el" href="esc_8h.html#aad1577291bfede477e855eb225808fa6">esc.h</a>
</li>
<li>FOE_ERR_ACCESS
: <a class="el" href="esc_8h.html#af6aa86bf5876dce22c27145fc3b4c3e4">esc.h</a>
</li>
<li>FOE_ERR_BOOTSTRAPONLY
: <a class="el" href="esc_8h.html#aac239ebc90aafb116ada298dbe37cb4b">esc.h</a>
</li>
<li>FOE_ERR_DISKFULL
: <a class="el" href="esc_8h.html#a227007dcf966d4e1cb8f91574f21c333">esc.h</a>
</li>
<li>FOE_ERR_EXISTS
: <a class="el" href="esc_8h.html#ac8abb61ae737d6c855d1a590791df059">esc.h</a>
</li>
<li>FOE_ERR_ILLEGAL
: <a class="el" href="esc_8h.html#ae3e84a35fd77becdbdf46ca762d4f94e">esc.h</a>
</li>
<li>FOE_ERR_NORIGHTS
: <a class="el" href="esc_8h.html#a9017179963e1d043ff71e97f753e07b4">esc.h</a>
</li>
<li>FOE_ERR_NOTDEFINED
: <a class="el" href="esc_8h.html#a06373aff527b3f6b230029e8a72c1cd1">esc.h</a>
</li>
<li>FOE_ERR_NOTFOUND
: <a class="el" href="esc_8h.html#aed84ce411cd38db2eb6f151d33d7cd97">esc.h</a>
</li>
<li>FOE_ERR_NOTINBOOTSTRAP
: <a class="el" href="esc_8h.html#a36f57991ad32f5f35f6ffc7a6bcf428c">esc.h</a>
</li>
<li>FOE_ERR_NOUSER
: <a class="el" href="esc_8h.html#af605d0658d90555d88490fb50715066b">esc.h</a>
</li>
<li>FOE_ERR_PACKETNO
: <a class="el" href="esc_8h.html#a470eade54f8c95e56984d4420326a4e6">esc.h</a>
</li>
<li>FOE_ERR_PROGERROR
: <a class="el" href="esc_8h.html#a944d3a218af6c84d4dbc0ded77a0d794">esc.h</a>
</li>
<li>FOE_error()
: <a class="el" href="esc__foe_8c.html#a50fcf09f71a9f45ebc806ebdf109a275">esc_foe.c</a>
</li>
<li>FOE_fclose()
: <a class="el" href="esc__foe_8c.html#ada27a980ed9be4adb6e9e72a80bac0e6">esc_foe.c</a>
</li>
<li>foe_file
: <a class="el" href="esc__foe_8c.html#a2896ae544c74758f24d85208eba3477b">esc_foe.c</a>
</li>
<li>foe_file_name
: <a class="el" href="esc__foe_8c.html#a1f2c07c0dfd2d9a88c27b47abf1651af">esc_foe.c</a>
</li>
<li>foe_files
: <a class="el" href="esc__foe_8c.html#ab37a5f7aab01e0690365e1c73c56b496">esc_foe.c</a>
</li>
<li>FOE_FN_MAX
: <a class="el" href="esc__foe_8h.html#a67c78bb265f195309e12db00ead5e50e">esc_foe.h</a>
</li>
<li>FOE_fopen()
: <a class="el" href="esc__foe_8c.html#a1068bb4cb4200dd0a12a01fa875a4d4b">esc_foe.c</a>
</li>
<li>FOE_fwrite()
: <a class="el" href="esc__foe_8c.html#a2fe564ee56395c2ad9b3e294046ab11a">esc_foe.c</a>
</li>
<li>FOE_init()
: <a class="el" href="esc__foe_8c.html#ab759787663f3dbf3eefc2d7d4ebb7a48">esc_foe.c</a>
, <a class="el" href="esc__foe_8h.html#a0fc65c1e2994bf93b40bdf2bcdbad8a0">esc_foe.h</a>
</li>
<li>FOE_OP_ACK
: <a class="el" href="esc_8h.html#ac6d56fb0f16b09380051a58c1826616f">esc.h</a>
</li>
<li>FOE_OP_BUSY
: <a class="el" href="esc_8h.html#a921d4d62f090469344a749c3e945dc88">esc.h</a>
</li>
<li>FOE_OP_DATA
: <a class="el" href="esc_8h.html#a2b5b2ab115e3d73af94848aa46459ce6">esc.h</a>
</li>
<li>FOE_OP_ERR
: <a class="el" href="esc_8h.html#a7b3c449d99dcd3befc5bf8590de4e107">esc.h</a>
</li>
<li>FOE_OP_RRQ
: <a class="el" href="esc_8h.html#a02a8b28b5100417cd3b185183db73e38">esc.h</a>
</li>
<li>FOE_OP_WRQ
: <a class="el" href="esc_8h.html#a58a8805b89cbf790086c1dcaf6e48b77">esc.h</a>
</li>
<li>FOE_read()
: <a class="el" href="esc__foe_8c.html#a429078d3edbb532b67f887adb0ec59de">esc_foe.c</a>
</li>
<li>FOE_READY
: <a class="el" href="esc_8h.html#ab15832bb164f30431ca7e1a3ba031893">esc.h</a>
</li>
<li>FOE_send_ack()
: <a class="el" href="esc__foe_8c.html#a2d6c4bf6859f6b1ebd6a0b63fca21420">esc_foe.c</a>
</li>
<li>FOE_WAIT_FOR_ACK
: <a class="el" href="esc_8h.html#a3e9a1af6dfb29fc8f293cac2e4d89a5f">esc.h</a>
</li>
<li>FOE_WAIT_FOR_DATA
: <a class="el" href="esc_8h.html#a4ac54aada257b32f0c3f78e96ce401cd">esc.h</a>
</li>
<li>FOE_WAIT_FOR_FINAL_ACK
: <a class="el" href="esc_8h.html#a6e2733c766c24bc20405520e443279cb">esc.h</a>
</li>
<li>FOE_write()
: <a class="el" href="esc__foe_8c.html#af0f456ea750b97416b704ade6d074a4d">esc_foe.c</a>
</li>
<li>FOEHSIZE
: <a class="el" href="esc_8h.html#a0885e1187b3189c48c4686b4278917b3">esc.h</a>
</li>
<li>FOEvar
: <a class="el" href="esc__foe_8c.html#adcd7d70e05228c39934e5605bc705839">esc_foe.c</a>
</li>
</ul>
</div>
<hr class="footer"/><address class="footer"><small>Generated on Wed Jul 10 2013 11:14:19 for SOES by&#160;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
</body>
</html>

View File

@ -0,0 +1,89 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>SOES: Globals</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<!-- Generated by Doxygen 1.7.4 -->
<div id="top">
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">SOES&#160;<span id="projectnumber">v1.0.0</span></div>
</td>
</tr>
</tbody>
</table>
</div>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
<li class="current"><a href="globals.html"><span>Globals</span></a></li>
</ul>
</div>
<div id="navrow3" class="tabs2">
<ul class="tablist">
<li class="current"><a href="globals.html"><span>All</span></a></li>
<li><a href="globals_func.html"><span>Functions</span></a></li>
<li><a href="globals_vars.html"><span>Variables</span></a></li>
<li><a href="globals_type.html"><span>Typedefs</span></a></li>
<li><a href="globals_defs.html"><span>Defines</span></a></li>
</ul>
</div>
<div id="navrow4" class="tabs3">
<ul class="tablist">
<li><a href="globals.html#index__"><span>_</span></a></li>
<li><a href="globals_0x61.html#index_a"><span>a</span></a></li>
<li><a href="globals_0x62.html#index_b"><span>b</span></a></li>
<li><a href="globals_0x63.html#index_c"><span>c</span></a></li>
<li><a href="globals_0x64.html#index_d"><span>d</span></a></li>
<li><a href="globals_0x65.html#index_e"><span>e</span></a></li>
<li><a href="globals_0x66.html#index_f"><span>f</span></a></li>
<li class="current"><a href="globals_0x69.html#index_i"><span>i</span></a></li>
<li><a href="globals_0x6d.html#index_m"><span>m</span></a></li>
<li><a href="globals_0x6f.html#index_o"><span>o</span></a></li>
<li><a href="globals_0x70.html#index_p"><span>p</span></a></li>
<li><a href="globals_0x72.html#index_r"><span>r</span></a></li>
<li><a href="globals_0x73.html#index_s"><span>s</span></a></li>
<li><a href="globals_0x74.html#index_t"><span>t</span></a></li>
</ul>
</div>
</div>
<div class="contents">
<div class="textblock">Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:</div>
<h3><a class="anchor" id="index_i"></a>- i -</h3><ul>
<li>INIT_TO_BOOT
: <a class="el" href="esc_8h.html#a5039b686bb3df7080272745f55f41cb3">esc.h</a>
</li>
<li>INIT_TO_INIT
: <a class="el" href="esc_8h.html#a2323870fc24ae47966f121a9ce446646">esc.h</a>
</li>
<li>INIT_TO_OP
: <a class="el" href="esc_8h.html#a72a2ee850c5fe200f6bddd6a42025d58">esc.h</a>
</li>
<li>INIT_TO_PREOP
: <a class="el" href="esc_8h.html#ad4689d505d83fd7be19822b783df000f">esc.h</a>
</li>
<li>INIT_TO_SAFEOP
: <a class="el" href="esc_8h.html#a4d23a22a89529755a847c0921f7652a8">esc.h</a>
</li>
</ul>
</div>
<hr class="footer"/><address class="footer"><small>Generated on Wed Jul 10 2013 11:14:19 for SOES by&#160;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
</body>
</html>

View File

@ -0,0 +1,225 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>SOES: Globals</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<!-- Generated by Doxygen 1.7.4 -->
<div id="top">
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">SOES&#160;<span id="projectnumber">v1.0.0</span></div>
</td>
</tr>
</tbody>
</table>
</div>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
<li class="current"><a href="globals.html"><span>Globals</span></a></li>
</ul>
</div>
<div id="navrow3" class="tabs2">
<ul class="tablist">
<li class="current"><a href="globals.html"><span>All</span></a></li>
<li><a href="globals_func.html"><span>Functions</span></a></li>
<li><a href="globals_vars.html"><span>Variables</span></a></li>
<li><a href="globals_type.html"><span>Typedefs</span></a></li>
<li><a href="globals_defs.html"><span>Defines</span></a></li>
</ul>
</div>
<div id="navrow4" class="tabs3">
<ul class="tablist">
<li><a href="globals.html#index__"><span>_</span></a></li>
<li><a href="globals_0x61.html#index_a"><span>a</span></a></li>
<li><a href="globals_0x62.html#index_b"><span>b</span></a></li>
<li><a href="globals_0x63.html#index_c"><span>c</span></a></li>
<li><a href="globals_0x64.html#index_d"><span>d</span></a></li>
<li><a href="globals_0x65.html#index_e"><span>e</span></a></li>
<li><a href="globals_0x66.html#index_f"><span>f</span></a></li>
<li><a href="globals_0x69.html#index_i"><span>i</span></a></li>
<li class="current"><a href="globals_0x6d.html#index_m"><span>m</span></a></li>
<li><a href="globals_0x6f.html#index_o"><span>o</span></a></li>
<li><a href="globals_0x70.html#index_p"><span>p</span></a></li>
<li><a href="globals_0x72.html#index_r"><span>r</span></a></li>
<li><a href="globals_0x73.html#index_s"><span>s</span></a></li>
<li><a href="globals_0x74.html#index_t"><span>t</span></a></li>
</ul>
</div>
</div>
<div class="contents">
<div class="textblock">Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:</div>
<h3><a class="anchor" id="index_m"></a>- m -</h3><ul>
<li>MBX
: <a class="el" href="esc_8h.html#aa67a8233cd88c97533e5012b1378dfef">esc.h</a>
</li>
<li>MBX0_sma
: <a class="el" href="esc_8h.html#a1fc72d483d679affb26b6de7306e02e4">esc.h</a>
</li>
<li>MBX0_sma_b
: <a class="el" href="esc_8h.html#ae0883caf4dc1308cb7c74bc3c36360b4">esc.h</a>
</li>
<li>MBX0_smc
: <a class="el" href="esc_8h.html#a3407425a415a4978f2caff2981248483">esc.h</a>
</li>
<li>MBX0_smc_b
: <a class="el" href="esc_8h.html#a6d19c656693d0cf87e8dca848057ae5e">esc.h</a>
</li>
<li>MBX0_sme
: <a class="el" href="esc_8h.html#a114074289d89d425c6bd71d6d879e5b3">esc.h</a>
</li>
<li>MBX0_sme_b
: <a class="el" href="esc_8h.html#a74271876fc78960344edb529b1ed0f71">esc.h</a>
</li>
<li>MBX0_sml
: <a class="el" href="esc_8h.html#ae35a58e352efe3fd11a16a432170d4a9">esc.h</a>
</li>
<li>MBX0_sml_b
: <a class="el" href="esc_8h.html#a3a0c81041a9427add2763a13992bfabc">esc.h</a>
</li>
<li>MBX1_sma
: <a class="el" href="esc_8h.html#a3830e505211174ddb24286c95662c765">esc.h</a>
</li>
<li>MBX1_sma_b
: <a class="el" href="esc_8h.html#a743f3584b2a5e9a9d5404455c9551c3a">esc.h</a>
</li>
<li>MBX1_smc
: <a class="el" href="esc_8h.html#a4c6d0f372ea71aebbd29ee5b0cc0f898">esc.h</a>
</li>
<li>MBX1_smc_b
: <a class="el" href="esc_8h.html#ab3731259a310206413169f51d161abaa">esc.h</a>
</li>
<li>MBX1_sme
: <a class="el" href="esc_8h.html#a122f2379f8de7a4152530278b495da5f">esc.h</a>
</li>
<li>MBX1_sme_b
: <a class="el" href="esc_8h.html#aa4a9a671960f93b266e35fd038105e9b">esc.h</a>
</li>
<li>MBX1_sml
: <a class="el" href="esc_8h.html#ad37a787b9229f01e41880c81fc3f72f6">esc.h</a>
</li>
<li>MBX1_sml_b
: <a class="el" href="esc_8h.html#ae881c26f1fcdfbeab976ea381fcec75a">esc.h</a>
</li>
<li>MBX_error()
: <a class="el" href="esc_8c.html#ad4d3079177cc7d1bd78862b5a5cb7fe7">esc.c</a>
, <a class="el" href="esc_8h.html#ad4d3079177cc7d1bd78862b5a5cb7fe7">esc.h</a>
</li>
<li>MBXAOE
: <a class="el" href="esc_8h.html#a1108b8c4519c13347c50476443c11a80">esc.h</a>
</li>
<li>MBXBUFFERS
: <a class="el" href="esc_8h.html#aa5c05a3b5f1d48b9c75aac6215c85509">esc.h</a>
</li>
<li>MBXCOE
: <a class="el" href="esc_8h.html#a9048f75f44616b4eed531df067a6fe22">esc.h</a>
</li>
<li>MBXcontrol
: <a class="el" href="esc_8h.html#acf236a0860a3dfe60eef84b9b561fb6a">esc.h</a>
</li>
<li>MBXDSIZE
: <a class="el" href="esc_8h.html#a6e1259fd404ab4a6b7765dd764afe579">esc.h</a>
</li>
<li>MBXED
: <a class="el" href="esc_8h.html#afb0a99f8c9e4f66d47a3a691f12de2f9">esc.h</a>
</li>
<li>MBXEOE
: <a class="el" href="esc_8h.html#a14c2d4d58a4b0c16fece5965c0e72685">esc.h</a>
</li>
<li>MBXERR
: <a class="el" href="esc_8h.html#aa8d6ce8d220d23e210ee474f5f53668f">esc.h</a>
</li>
<li>MBXERR_INVALIDCHANNEL
: <a class="el" href="esc_8h.html#a65ed4b8f0d039ebd3a8f906b69bcd4be">esc.h</a>
</li>
<li>MBXERR_INVALIDHEADER
: <a class="el" href="esc_8h.html#ac3a686f811b9f5df89c630c22983b4e3">esc.h</a>
</li>
<li>MBXERR_INVALIDSIZE
: <a class="el" href="esc_8h.html#ade87044216e1dec43a5545aad87088ab">esc.h</a>
</li>
<li>MBXERR_NOMOREMEMORY
: <a class="el" href="esc_8h.html#acb75d2eb8cd4ffb384c17e952bfcb100">esc.h</a>
</li>
<li>MBXERR_SERVICENOTSUPPORTED
: <a class="el" href="esc_8h.html#a428d601668cf6ee6b99e89a01305ee91">esc.h</a>
</li>
<li>MBXERR_SIZETOOSHORT
: <a class="el" href="esc_8h.html#a39ec5f9bfd9ae9719db5b0529264b1f1">esc.h</a>
</li>
<li>MBXERR_SYNTAX
: <a class="el" href="esc_8h.html#ab3949a3831dbfd83db73ad544b42478c">esc.h</a>
</li>
<li>MBXERR_UNSUPPORTEDPROTOCOL
: <a class="el" href="esc_8h.html#a526ed7f4a94867c0e1928d4d31b77300">esc.h</a>
</li>
<li>MBXFOE
: <a class="el" href="esc_8h.html#a38c85bcc6c02ed29545969e6e6694b46">esc.h</a>
</li>
<li>MBXHSIZE
: <a class="el" href="esc_8h.html#aba3e1870cdaa25f38dbd0f4a78850c20">esc.h</a>
</li>
<li>MBXOD
: <a class="el" href="esc_8h.html#aa77a684de1e9f22844407f92d883e6e2">esc.h</a>
</li>
<li>MBXODL
: <a class="el" href="esc_8h.html#afebd6de0c3047054771d9dc5e1905e13">esc.h</a>
</li>
<li>MBXrun
: <a class="el" href="esc_8h.html#a2344849fecea0bea00b4d94c763b9b39">esc.h</a>
</li>
<li>MBXSED
: <a class="el" href="esc_8h.html#ab138e47789ff5e7a97700be433455806">esc.h</a>
</li>
<li>MBXSEU
: <a class="el" href="esc_8h.html#a0852a238da1145e62c4a7abbfb12d138">esc.h</a>
</li>
<li>MBXSIZE
: <a class="el" href="esc_8h.html#a93629ee62f8570fe7b774aedaaec28a3">esc.h</a>
</li>
<li>MBXSIZEBOOT
: <a class="el" href="esc_8h.html#a0a86a18947975d14d6f339137757eb47">esc.h</a>
</li>
<li>MBXstate_again
: <a class="el" href="esc_8h.html#afc269434a70d7c608058614c780fec2a">esc.h</a>
</li>
<li>MBXstate_backup
: <a class="el" href="esc_8h.html#abfc4ac36c581dad82e9aadbd720a38cb">esc.h</a>
</li>
<li>MBXstate_idle
: <a class="el" href="esc_8h.html#ae4fcb97be2cbc2e3a4c7c3e1066337eb">esc.h</a>
</li>
<li>MBXstate_inclaim
: <a class="el" href="esc_8h.html#a50c52f6463c0cea69eee10704dacf2fa">esc.h</a>
</li>
<li>MBXstate_outclaim
: <a class="el" href="esc_8h.html#a96f83f5db66329027a7385bbc30d5b12">esc.h</a>
</li>
<li>MBXstate_outpost
: <a class="el" href="esc_8h.html#afbc14b29e366d67997366241ebb50137">esc.h</a>
</li>
<li>MBXstate_outreq
: <a class="el" href="esc_8h.html#aaeeb4d2e52ca12771e1a019d9810f56f">esc.h</a>
</li>
</ul>
</div>
<hr class="footer"/><address class="footer"><small>Generated on Wed Jul 10 2013 11:14:19 for SOES by&#160;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
</body>
</html>

View File

@ -0,0 +1,92 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>SOES: Globals</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<!-- Generated by Doxygen 1.7.4 -->
<div id="top">
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">SOES&#160;<span id="projectnumber">v1.0.0</span></div>
</td>
</tr>
</tbody>
</table>
</div>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
<li class="current"><a href="globals.html"><span>Globals</span></a></li>
</ul>
</div>
<div id="navrow3" class="tabs2">
<ul class="tablist">
<li class="current"><a href="globals.html"><span>All</span></a></li>
<li><a href="globals_func.html"><span>Functions</span></a></li>
<li><a href="globals_vars.html"><span>Variables</span></a></li>
<li><a href="globals_type.html"><span>Typedefs</span></a></li>
<li><a href="globals_defs.html"><span>Defines</span></a></li>
</ul>
</div>
<div id="navrow4" class="tabs3">
<ul class="tablist">
<li><a href="globals.html#index__"><span>_</span></a></li>
<li><a href="globals_0x61.html#index_a"><span>a</span></a></li>
<li><a href="globals_0x62.html#index_b"><span>b</span></a></li>
<li><a href="globals_0x63.html#index_c"><span>c</span></a></li>
<li><a href="globals_0x64.html#index_d"><span>d</span></a></li>
<li><a href="globals_0x65.html#index_e"><span>e</span></a></li>
<li><a href="globals_0x66.html#index_f"><span>f</span></a></li>
<li><a href="globals_0x69.html#index_i"><span>i</span></a></li>
<li><a href="globals_0x6d.html#index_m"><span>m</span></a></li>
<li class="current"><a href="globals_0x6f.html#index_o"><span>o</span></a></li>
<li><a href="globals_0x70.html#index_p"><span>p</span></a></li>
<li><a href="globals_0x72.html#index_r"><span>r</span></a></li>
<li><a href="globals_0x73.html#index_s"><span>s</span></a></li>
<li><a href="globals_0x74.html#index_t"><span>t</span></a></li>
</ul>
</div>
</div>
<div class="contents">
<div class="textblock">Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:</div>
<h3><a class="anchor" id="index_o"></a>- o -</h3><ul>
<li>ODLISTSIZE
: <a class="el" href="esc__coe_8c.html#aa9a3a80105cd78cb4e2ed2833926abe4">esc_coe.c</a>
</li>
<li>OP_TO_BOOT
: <a class="el" href="esc_8h.html#ab0e6d1fafe9d6f6f96be961ed0c1f409">esc.h</a>
</li>
<li>OP_TO_INIT
: <a class="el" href="esc_8h.html#a745e8ca4f2b6bc540894179a1eb2de8e">esc.h</a>
</li>
<li>OP_TO_OP
: <a class="el" href="esc_8h.html#aefa9259dc71793e99584bda819cdd404">esc.h</a>
</li>
<li>OP_TO_PREOP
: <a class="el" href="esc_8h.html#a757cc6f0071299719b25c08ffb0b85ea">esc.h</a>
</li>
<li>OP_TO_SAFEOP
: <a class="el" href="esc_8h.html#a9a4a22bc5ac9653bc363617446b213e1">esc.h</a>
</li>
</ul>
</div>
<hr class="footer"/><address class="footer"><small>Generated on Wed Jul 10 2013 11:14:19 for SOES by&#160;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
</body>
</html>

View File

@ -0,0 +1,92 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>SOES: Globals</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<!-- Generated by Doxygen 1.7.4 -->
<div id="top">
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">SOES&#160;<span id="projectnumber">v1.0.0</span></div>
</td>
</tr>
</tbody>
</table>
</div>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
<li class="current"><a href="globals.html"><span>Globals</span></a></li>
</ul>
</div>
<div id="navrow3" class="tabs2">
<ul class="tablist">
<li class="current"><a href="globals.html"><span>All</span></a></li>
<li><a href="globals_func.html"><span>Functions</span></a></li>
<li><a href="globals_vars.html"><span>Variables</span></a></li>
<li><a href="globals_type.html"><span>Typedefs</span></a></li>
<li><a href="globals_defs.html"><span>Defines</span></a></li>
</ul>
</div>
<div id="navrow4" class="tabs3">
<ul class="tablist">
<li><a href="globals.html#index__"><span>_</span></a></li>
<li><a href="globals_0x61.html#index_a"><span>a</span></a></li>
<li><a href="globals_0x62.html#index_b"><span>b</span></a></li>
<li><a href="globals_0x63.html#index_c"><span>c</span></a></li>
<li><a href="globals_0x64.html#index_d"><span>d</span></a></li>
<li><a href="globals_0x65.html#index_e"><span>e</span></a></li>
<li><a href="globals_0x66.html#index_f"><span>f</span></a></li>
<li><a href="globals_0x69.html#index_i"><span>i</span></a></li>
<li><a href="globals_0x6d.html#index_m"><span>m</span></a></li>
<li><a href="globals_0x6f.html#index_o"><span>o</span></a></li>
<li class="current"><a href="globals_0x70.html#index_p"><span>p</span></a></li>
<li><a href="globals_0x72.html#index_r"><span>r</span></a></li>
<li><a href="globals_0x73.html#index_s"><span>s</span></a></li>
<li><a href="globals_0x74.html#index_t"><span>t</span></a></li>
</ul>
</div>
</div>
<div class="contents">
<div class="textblock">Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:</div>
<h3><a class="anchor" id="index_p"></a>- p -</h3><ul>
<li>PACKED
: <a class="el" href="esc_8h.html#a36d525cf4d116b2fe4ecc00222b256f1">esc.h</a>
</li>
<li>PREOP_TO_BOOT
: <a class="el" href="esc_8h.html#a8ba16d3592cce0a185b4fd8693a6cfa8">esc.h</a>
</li>
<li>PREOP_TO_INIT
: <a class="el" href="esc_8h.html#a95904ec2b4ba4844e38d3466e751d96c">esc.h</a>
</li>
<li>PREOP_TO_OP
: <a class="el" href="esc_8h.html#abb3520b9938cf6e6e32a48d923455ce7">esc.h</a>
</li>
<li>PREOP_TO_PREOP
: <a class="el" href="esc_8h.html#aa4a2a3bdd32c1e10ec55631de220be98">esc.h</a>
</li>
<li>PREOP_TO_SAFEOP
: <a class="el" href="esc_8h.html#acfca93862f91d05b914058ed35c59146">esc.h</a>
</li>
</ul>
</div>
<hr class="footer"/><address class="footer"><small>Generated on Wed Jul 10 2013 11:14:19 for SOES by&#160;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
</body>
</html>

View File

@ -0,0 +1,77 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>SOES: Globals</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<!-- Generated by Doxygen 1.7.4 -->
<div id="top">
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">SOES&#160;<span id="projectnumber">v1.0.0</span></div>
</td>
</tr>
</tbody>
</table>
</div>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
<li class="current"><a href="globals.html"><span>Globals</span></a></li>
</ul>
</div>
<div id="navrow3" class="tabs2">
<ul class="tablist">
<li class="current"><a href="globals.html"><span>All</span></a></li>
<li><a href="globals_func.html"><span>Functions</span></a></li>
<li><a href="globals_vars.html"><span>Variables</span></a></li>
<li><a href="globals_type.html"><span>Typedefs</span></a></li>
<li><a href="globals_defs.html"><span>Defines</span></a></li>
</ul>
</div>
<div id="navrow4" class="tabs3">
<ul class="tablist">
<li><a href="globals.html#index__"><span>_</span></a></li>
<li><a href="globals_0x61.html#index_a"><span>a</span></a></li>
<li><a href="globals_0x62.html#index_b"><span>b</span></a></li>
<li><a href="globals_0x63.html#index_c"><span>c</span></a></li>
<li><a href="globals_0x64.html#index_d"><span>d</span></a></li>
<li><a href="globals_0x65.html#index_e"><span>e</span></a></li>
<li><a href="globals_0x66.html#index_f"><span>f</span></a></li>
<li><a href="globals_0x69.html#index_i"><span>i</span></a></li>
<li><a href="globals_0x6d.html#index_m"><span>m</span></a></li>
<li><a href="globals_0x6f.html#index_o"><span>o</span></a></li>
<li><a href="globals_0x70.html#index_p"><span>p</span></a></li>
<li class="current"><a href="globals_0x72.html#index_r"><span>r</span></a></li>
<li><a href="globals_0x73.html#index_s"><span>s</span></a></li>
<li><a href="globals_0x74.html#index_t"><span>t</span></a></li>
</ul>
</div>
</div>
<div class="contents">
<div class="textblock">Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:</div>
<h3><a class="anchor" id="index_r"></a>- r -</h3><ul>
<li>rxpdoitems
: <a class="el" href="esc__coe_8c.html#a8bf6e1739ce6b8147f92dc36162b9e54">esc_coe.c</a>
</li>
</ul>
</div>
<hr class="footer"/><address class="footer"><small>Generated on Wed Jul 10 2013 11:14:19 for SOES by&#160;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
</body>
</html>

View File

@ -0,0 +1,166 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>SOES: Globals</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<!-- Generated by Doxygen 1.7.4 -->
<div id="top">
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">SOES&#160;<span id="projectnumber">v1.0.0</span></div>
</td>
</tr>
</tbody>
</table>
</div>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
<li class="current"><a href="globals.html"><span>Globals</span></a></li>
</ul>
</div>
<div id="navrow3" class="tabs2">
<ul class="tablist">
<li class="current"><a href="globals.html"><span>All</span></a></li>
<li><a href="globals_func.html"><span>Functions</span></a></li>
<li><a href="globals_vars.html"><span>Variables</span></a></li>
<li><a href="globals_type.html"><span>Typedefs</span></a></li>
<li><a href="globals_defs.html"><span>Defines</span></a></li>
</ul>
</div>
<div id="navrow4" class="tabs3">
<ul class="tablist">
<li><a href="globals.html#index__"><span>_</span></a></li>
<li><a href="globals_0x61.html#index_a"><span>a</span></a></li>
<li><a href="globals_0x62.html#index_b"><span>b</span></a></li>
<li><a href="globals_0x63.html#index_c"><span>c</span></a></li>
<li><a href="globals_0x64.html#index_d"><span>d</span></a></li>
<li><a href="globals_0x65.html#index_e"><span>e</span></a></li>
<li><a href="globals_0x66.html#index_f"><span>f</span></a></li>
<li><a href="globals_0x69.html#index_i"><span>i</span></a></li>
<li><a href="globals_0x6d.html#index_m"><span>m</span></a></li>
<li><a href="globals_0x6f.html#index_o"><span>o</span></a></li>
<li><a href="globals_0x70.html#index_p"><span>p</span></a></li>
<li><a href="globals_0x72.html#index_r"><span>r</span></a></li>
<li class="current"><a href="globals_0x73.html#index_s"><span>s</span></a></li>
<li><a href="globals_0x74.html#index_t"><span>t</span></a></li>
</ul>
</div>
</div>
<div class="contents">
<div class="textblock">Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:</div>
<h3><a class="anchor" id="index_s"></a>- s -</h3><ul>
<li>SAFEOP_TO_BOOT
: <a class="el" href="esc_8h.html#adae2d047beaea69cdfbda3633cd7b67d">esc.h</a>
</li>
<li>SAFEOP_TO_INIT
: <a class="el" href="esc_8h.html#a2f0d8c21a302aa5e7c9e266d1a6bb3c2">esc.h</a>
</li>
<li>SAFEOP_TO_OP
: <a class="el" href="esc_8h.html#ae0c664dceeb07c530e4e84d1db4f4a81">esc.h</a>
</li>
<li>SAFEOP_TO_PREOP
: <a class="el" href="esc_8h.html#a93232f0345f5cc7d2f13c13ba5d84405">esc.h</a>
</li>
<li>SAFEOP_TO_SAFEOP
: <a class="el" href="esc_8h.html#a27c5a979b039774b338011aae6055c81">esc.h</a>
</li>
<li>SDO_abort()
: <a class="el" href="esc__coe_8c.html#ac8b791201457bff244ff36c4c5c85860">esc_coe.c</a>
</li>
<li>SDO_download()
: <a class="el" href="esc__coe_8c.html#ae8c1c5930a2cc7a27375fa97acdb8df4">esc_coe.c</a>
</li>
<li>SDO_findobject()
: <a class="el" href="esc__coe_8c.html#ae69df2a29e9017aab128508585ad6171">esc_coe.c</a>
</li>
<li>SDO_findsubindex()
: <a class="el" href="esc__coe_8c.html#a1fc8fd4ba74a85d5b4ca7ff7dc842edf">esc_coe.c</a>
</li>
<li>SDO_geted()
: <a class="el" href="esc__coe_8c.html#a10a864197441d3da0fbd0623521e3d26">esc_coe.c</a>
</li>
<li>SDO_getod()
: <a class="el" href="esc__coe_8c.html#acc7684bb6a1155dab1891514c264f12d">esc_coe.c</a>
</li>
<li>SDO_getodlist()
: <a class="el" href="esc__coe_8c.html#ac43a13f88e3705c3f4ef40b8b9c2b431">esc_coe.c</a>
</li>
<li>SDO_getodlistcont()
: <a class="el" href="esc__coe_8c.html#a362076e63fae0dd33b426f5c99d9a010">esc_coe.c</a>
</li>
<li>SDO_infoerror()
: <a class="el" href="esc__coe_8c.html#a4c5b3d7b4930375a4a87727629d1cfe7">esc_coe.c</a>
</li>
<li>SDO_upload()
: <a class="el" href="esc__coe_8c.html#acc25f2ec413f5473f199ab5b9b8f4005">esc_coe.c</a>
</li>
<li>SDO_uploadsegment()
: <a class="el" href="esc__coe_8c.html#a3655db85e86eee991facef9492fcc246">esc_coe.c</a>
</li>
<li>sizeRXPDO()
: <a class="el" href="esc__coe_8c.html#a836e3ff62cd9bba1ca2a5f5481104ba9">esc_coe.c</a>
, <a class="el" href="esc__coe_8h.html#a836e3ff62cd9bba1ca2a5f5481104ba9">esc_coe.h</a>
</li>
<li>sizeTXPDO()
: <a class="el" href="esc__coe_8h.html#a5d1fb9538a28be98ec8ee762140ada35">esc_coe.h</a>
, <a class="el" href="esc__coe_8c.html#a5d1fb9538a28be98ec8ee762140ada35">esc_coe.c</a>
</li>
<li>SM2_act
: <a class="el" href="esc_8h.html#a9a5cb376c34a957384011f8743d31264">esc.h</a>
</li>
<li>SM2_sma
: <a class="el" href="esc_8h.html#a17b011cd3b4d2c7aaa4d97a3f9140d9e">esc.h</a>
</li>
<li>SM2_smc
: <a class="el" href="esc_8h.html#a313b352bf90ca987dd892b4c8009ae40">esc.h</a>
</li>
<li>SM2_sml
: <a class="el" href="esc_8h.html#a8381cf08815e916991c9e9f07faecf90">esc.h</a>
</li>
<li>SM3_act
: <a class="el" href="esc_8h.html#a68753b72b245e6836824d6cfde328523">esc.h</a>
</li>
<li>SM3_sma
: <a class="el" href="esc_8h.html#a115f471e25ada517dc92451cbf921416">esc.h</a>
</li>
<li>SM3_smc
: <a class="el" href="esc_8h.html#acb907422389b6cc5ed659faa00e4ce43">esc.h</a>
</li>
<li>SM3_sml
: <a class="el" href="esc_8h.html#ab08e40af06cd134cb90dd192accbb15c">esc.h</a>
</li>
<li>SMRESULT_ERRSM0
: <a class="el" href="esc_8h.html#a01dacbd4a37e2f509bed1f124350250d">esc.h</a>
</li>
<li>SMRESULT_ERRSM1
: <a class="el" href="esc_8h.html#add381e67ac4cbcc3b0dc392cfd808ce7">esc.h</a>
</li>
<li>SMRESULT_ERRSM2
: <a class="el" href="esc_8h.html#ae14352616d4432ca089b751bf360d14b">esc.h</a>
</li>
<li>SMRESULT_ERRSM3
: <a class="el" href="esc_8h.html#a4aef510c53555fdcfb827041c4af8668">esc.h</a>
</li>
</ul>
</div>
<hr class="footer"/><address class="footer"><small>Generated on Wed Jul 10 2013 11:14:19 for SOES by&#160;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
</body>
</html>

View File

@ -0,0 +1,77 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>SOES: Globals</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<!-- Generated by Doxygen 1.7.4 -->
<div id="top">
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">SOES&#160;<span id="projectnumber">v1.0.0</span></div>
</td>
</tr>
</tbody>
</table>
</div>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
<li class="current"><a href="globals.html"><span>Globals</span></a></li>
</ul>
</div>
<div id="navrow3" class="tabs2">
<ul class="tablist">
<li class="current"><a href="globals.html"><span>All</span></a></li>
<li><a href="globals_func.html"><span>Functions</span></a></li>
<li><a href="globals_vars.html"><span>Variables</span></a></li>
<li><a href="globals_type.html"><span>Typedefs</span></a></li>
<li><a href="globals_defs.html"><span>Defines</span></a></li>
</ul>
</div>
<div id="navrow4" class="tabs3">
<ul class="tablist">
<li><a href="globals.html#index__"><span>_</span></a></li>
<li><a href="globals_0x61.html#index_a"><span>a</span></a></li>
<li><a href="globals_0x62.html#index_b"><span>b</span></a></li>
<li><a href="globals_0x63.html#index_c"><span>c</span></a></li>
<li><a href="globals_0x64.html#index_d"><span>d</span></a></li>
<li><a href="globals_0x65.html#index_e"><span>e</span></a></li>
<li><a href="globals_0x66.html#index_f"><span>f</span></a></li>
<li><a href="globals_0x69.html#index_i"><span>i</span></a></li>
<li><a href="globals_0x6d.html#index_m"><span>m</span></a></li>
<li><a href="globals_0x6f.html#index_o"><span>o</span></a></li>
<li><a href="globals_0x70.html#index_p"><span>p</span></a></li>
<li><a href="globals_0x72.html#index_r"><span>r</span></a></li>
<li><a href="globals_0x73.html#index_s"><span>s</span></a></li>
<li class="current"><a href="globals_0x74.html#index_t"><span>t</span></a></li>
</ul>
</div>
</div>
<div class="contents">
<div class="textblock">Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:</div>
<h3><a class="anchor" id="index_t"></a>- t -</h3><ul>
<li>txpdoitems
: <a class="el" href="esc__coe_8c.html#a5ddbd167b7b79d375b2ce53e2b536347">esc_coe.c</a>
</li>
</ul>
</div>
<hr class="footer"/><address class="footer"><small>Generated on Wed Jul 10 2013 11:14:19 for SOES by&#160;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
</body>
</html>

View File

@ -0,0 +1,678 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>SOES: Globals</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<!-- Generated by Doxygen 1.7.4 -->
<div id="top">
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">SOES&#160;<span id="projectnumber">v1.0.0</span></div>
</td>
</tr>
</tbody>
</table>
</div>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
<li class="current"><a href="globals.html"><span>Globals</span></a></li>
</ul>
</div>
<div id="navrow3" class="tabs2">
<ul class="tablist">
<li><a href="globals.html"><span>All</span></a></li>
<li><a href="globals_func.html"><span>Functions</span></a></li>
<li><a href="globals_vars.html"><span>Variables</span></a></li>
<li><a href="globals_type.html"><span>Typedefs</span></a></li>
<li class="current"><a href="globals_defs.html"><span>Defines</span></a></li>
</ul>
</div>
<div id="navrow4" class="tabs3">
<ul class="tablist">
<li><a href="#index_a"><span>a</span></a></li>
<li><a href="#index_b"><span>b</span></a></li>
<li><a href="#index_c"><span>c</span></a></li>
<li><a href="#index_d"><span>d</span></a></li>
<li><a href="#index_e"><span>e</span></a></li>
<li><a href="#index_f"><span>f</span></a></li>
<li><a href="#index_i"><span>i</span></a></li>
<li><a href="#index_m"><span>m</span></a></li>
<li><a href="#index_o"><span>o</span></a></li>
<li><a href="#index_p"><span>p</span></a></li>
<li><a href="#index_s"><span>s</span></a></li>
</ul>
</div>
</div>
<div class="contents">
&#160;
<h3><a class="anchor" id="index_a"></a>- a -</h3><ul>
<li>ABORT_GENERALERROR
: <a class="el" href="esc_8h.html#a72b3ab3339c084e75e639f7bddd18eea">esc.h</a>
</li>
<li>ABORT_NOOBJECT
: <a class="el" href="esc_8h.html#a166ee02623b168a5f5cde28e02b43d0f">esc.h</a>
</li>
<li>ABORT_NOSUBINDEX
: <a class="el" href="esc_8h.html#a85f73c8655c5d2616c40db61e7e4c36a">esc.h</a>
</li>
<li>ABORT_NOTINTHISSTATE
: <a class="el" href="esc_8h.html#a8919b8ab139d91da21a9994a5ae3bb96">esc.h</a>
</li>
<li>ABORT_NOTOGGLE
: <a class="el" href="esc_8h.html#a6c8f7d428b599b3d835f45d45498c86e">esc.h</a>
</li>
<li>ABORT_READONLY
: <a class="el" href="esc_8h.html#ad7151fdcb2dab4aa1653c859a1671588">esc.h</a>
</li>
<li>ABORT_TYPEMISMATCH
: <a class="el" href="esc_8h.html#a067dfe5f8b8ca9639f064e594f8c2155">esc.h</a>
</li>
<li>ABORT_UNKNOWN
: <a class="el" href="esc_8h.html#ab3d9d0e74944a0993aa270249381caf1">esc.h</a>
</li>
<li>ABORT_UNSUPPORTED
: <a class="el" href="esc_8h.html#aa8afc583ec83efee984c114bfbbf1677">esc.h</a>
</li>
<li>ABORT_WRITEONLY
: <a class="el" href="esc_8h.html#acafba2c1ed851196a97132621bb16d80">esc.h</a>
</li>
<li>ALERR_BOOTNOTSUPPORTED
: <a class="el" href="esc_8h.html#a69aebecbb142d532c812ccb00253e07c">esc.h</a>
</li>
<li>ALERR_INVALIDBOOTMBXCONFIG
: <a class="el" href="esc_8h.html#ae5c154c2c824e3d5de37d4692e71cdbc">esc.h</a>
</li>
<li>ALERR_INVALIDINPUTSM
: <a class="el" href="esc_8h.html#a575f38a4aa535c38b299f55b618da2e6">esc.h</a>
</li>
<li>ALERR_INVALIDMBXCONFIG
: <a class="el" href="esc_8h.html#a4cbeb58c1755ac24791048c8307214ec">esc.h</a>
</li>
<li>ALERR_INVALIDOUTPUTSM
: <a class="el" href="esc_8h.html#a58fa34c244c581fa44a7d700510d4064">esc.h</a>
</li>
<li>ALERR_INVALIDSMCONFIG
: <a class="el" href="esc_8h.html#a70edcc8367c0f0e947bac693dd8630d8">esc.h</a>
</li>
<li>ALERR_INVALIDSTATECHANGE
: <a class="el" href="esc_8h.html#a89d368e1bf0bb4665bed6f206f0dbdd0">esc.h</a>
</li>
<li>ALERR_NONE
: <a class="el" href="esc_8h.html#acd028c8cb5d08a99cc31bc2ee46c97fd">esc.h</a>
</li>
<li>ALERR_UNKNOWNSTATE
: <a class="el" href="esc_8h.html#ae74a70a2fea3e108e3d59d33ceaac55e">esc.h</a>
</li>
<li>ALERR_WATCHDOG
: <a class="el" href="esc_8h.html#af236abe4b811bcebfb6556e3ddd85a20">esc.h</a>
</li>
</ul>
<h3><a class="anchor" id="index_b"></a>- b -</h3><ul>
<li>BITS2BYTES
: <a class="el" href="esc__coe_8c.html#ab8f17f5a016592c2d41887a2f29581d8">esc_coe.c</a>
</li>
<li>BOOT_TO_BOOT
: <a class="el" href="esc_8h.html#a71a8de171e52be3ed7a0b977a8b9bd80">esc.h</a>
</li>
<li>BOOT_TO_INIT
: <a class="el" href="esc_8h.html#a5a4651be521f0e624ddb6251b47a5076">esc.h</a>
</li>
<li>BOOT_TO_OP
: <a class="el" href="esc_8h.html#af7dbe10bc52668804918d3584af71136">esc.h</a>
</li>
<li>BOOT_TO_PREOP
: <a class="el" href="esc_8h.html#a9ac5f7bab9e65f8ee9f5603bdbdbc9fc">esc.h</a>
</li>
<li>BOOT_TO_SAFEOP
: <a class="el" href="esc_8h.html#a0b2cce836864319b4596ddba668177e1">esc.h</a>
</li>
</ul>
<h3><a class="anchor" id="index_c"></a>- c -</h3><ul>
<li>COE_COMMAND_DOWNLOADRESPONSE
: <a class="el" href="esc_8h.html#ab73ff393768292c1892f7bb623a2a37e">esc.h</a>
</li>
<li>COE_COMMAND_LASTSEGMENTBIT
: <a class="el" href="esc_8h.html#a8f6635c0b1c9f2b42b75e21d3b362795">esc.h</a>
</li>
<li>COE_COMMAND_SDOABORT
: <a class="el" href="esc_8h.html#aef144f1f15c1bbdcc50cf5bd65740b11">esc.h</a>
</li>
<li>COE_COMMAND_UPLOADREQUEST
: <a class="el" href="esc_8h.html#a9426b11868288c205b284f334e4ba2fd">esc.h</a>
</li>
<li>COE_COMMAND_UPLOADRESPONSE
: <a class="el" href="esc_8h.html#afddfe7399f6e81e0b7cb5c9f8ae83a18">esc.h</a>
</li>
<li>COE_COMMAND_UPLOADSEGMENT
: <a class="el" href="esc_8h.html#a959114e6d973218c488ed1509283de9a">esc.h</a>
</li>
<li>COE_COMMAND_UPLOADSEGREQ
: <a class="el" href="esc_8h.html#affd87f7663af1365d61ff496d3b51c05">esc.h</a>
</li>
<li>COE_COMPLETEACCESS
: <a class="el" href="esc_8h.html#aa07a650eac47dd5c58377197f8c783bd">esc.h</a>
</li>
<li>COE_DEFAULTLENGTH
: <a class="el" href="esc_8h.html#a5319e365611192dad7143baf5585cfeb">esc.h</a>
</li>
<li>COE_ENTRYDESCRIPTIONRESPONSE
: <a class="el" href="esc_8h.html#afd42e8f24b196c986d4c59a6245a7a8f">esc.h</a>
</li>
<li>COE_EXPEDITED_INDICATOR
: <a class="el" href="esc_8h.html#ac3346bc58bfe96039bde1ae225f1945b">esc.h</a>
</li>
<li>COE_GETODLISTRESPONSE
: <a class="el" href="esc_8h.html#a83499f6b9802116f65f4e4e2eb8f044d">esc.h</a>
</li>
<li>COE_GETODRESPONSE
: <a class="el" href="esc_8h.html#adce1074d091645fd0c07f8ab6f174bcc">esc.h</a>
</li>
<li>COE_HEADERSIZE
: <a class="el" href="esc_8h.html#aca6c6f5a2d27f203118c9463b6013bf9">esc.h</a>
</li>
<li>COE_INFOERROR
: <a class="el" href="esc_8h.html#ac800b26f189c3568f12b3a488d9b8829">esc.h</a>
</li>
<li>COE_SDOINFORMATION
: <a class="el" href="esc_8h.html#a2e0381f78a35988eed32bfaafa7da0db">esc.h</a>
</li>
<li>COE_SDOREQUEST
: <a class="el" href="esc_8h.html#acd619b42d3a5df1b5e54be471590f993">esc.h</a>
</li>
<li>COE_SDORESPONSE
: <a class="el" href="esc_8h.html#a285db8ac5aaaa653cb2006a5cd7fb16e">esc.h</a>
</li>
<li>COE_SEGMENTHEADERSIZE
: <a class="el" href="esc_8h.html#acd4b23a53287d08129af57a840a346bf">esc.h</a>
</li>
<li>COE_SIZE_INDICATOR
: <a class="el" href="esc_8h.html#a0d6902986079809c20df56afc2821214">esc.h</a>
</li>
<li>COE_TOGGLEBIT
: <a class="el" href="esc_8h.html#a0d1b521a117b4398bffee7c135b7d049">esc.h</a>
</li>
<li>COE_VALUEINFO_ACCESS
: <a class="el" href="esc_8h.html#acb7f46ca5f0bb5d4a8fae50b74170dc8">esc.h</a>
</li>
<li>COE_VALUEINFO_DEFAULT
: <a class="el" href="esc_8h.html#aff07e27a4aad8cc336f6c2f7be927bd8">esc.h</a>
</li>
<li>COE_VALUEINFO_MAPPABLE
: <a class="el" href="esc_8h.html#a2f61908f0b1d4587c9d17edc06d1744b">esc.h</a>
</li>
<li>COE_VALUEINFO_MAXIMUM
: <a class="el" href="esc_8h.html#a7126e2f3f30f5568acafe663fdab4bed">esc.h</a>
</li>
<li>COE_VALUEINFO_MINIMUM
: <a class="el" href="esc_8h.html#ad2acfa93c9eb8b29d2c79162b0442505">esc.h</a>
</li>
<li>COE_VALUEINFO_OBJECT
: <a class="el" href="esc_8h.html#a52ba8abae9ae6634bf618e03c96eb112">esc.h</a>
</li>
<li>COE_VALUEINFO_TYPE
: <a class="el" href="esc_8h.html#a4b11e887fabe353ffb52d2074f62a7e9">esc.h</a>
</li>
</ul>
<h3><a class="anchor" id="index_d"></a>- d -</h3><ul>
<li>DEBUG_ASSERT
: <a class="el" href="esc__foe_8c.html#a40eaa99769ad24d7b1f0d91276497e96">esc_foe.c</a>
</li>
<li>DPRINT
: <a class="el" href="esc__foe_8c.html#a57a35bfd7d13bdfab37a48171286ecee">esc_foe.c</a>
</li>
</ul>
<h3><a class="anchor" id="index_e"></a>- e -</h3><ul>
<li>EC_LITTLE_ENDIAN
: <a class="el" href="esc_8h.html#ae8a12ace1e2e389a36528f93599f65cf">esc.h</a>
</li>
<li>ESCboot
: <a class="el" href="esc_8h.html#a5746b1d1d83a04e648109c32af64b77f">esc.h</a>
</li>
<li>ESCerror
: <a class="el" href="esc_8h.html#abc139331f4812b302e34bb3709ff915b">esc.h</a>
</li>
<li>ESCinit
: <a class="el" href="esc_8h.html#abbfee5404d9c373b5dd4145d7468a17a">esc.h</a>
</li>
<li>ESCop
: <a class="el" href="esc_8h.html#a546a780a2b3d23e5b505ecc4e2f855f6">esc.h</a>
</li>
<li>ESCpreop
: <a class="el" href="esc_8h.html#ada92568faae26305d3e752c0b08e8b2c">esc.h</a>
</li>
<li>ESCREG_ADDRESS
: <a class="el" href="esc_8h.html#af858302749f10b8120dc065835583772">esc.h</a>
</li>
<li>ESCREG_AL_ALLBUTINITMASK
: <a class="el" href="esc_8h.html#a4e0391bdc5b778c69a6bd0ba7c4a5451">esc.h</a>
</li>
<li>ESCREG_AL_ERRACKMASK
: <a class="el" href="esc_8h.html#acb2f8af966e88ca7f9eb479fafa044f8">esc.h</a>
</li>
<li>ESCREG_AL_STATEMASK
: <a class="el" href="esc_8h.html#a93bf8f0acd6e2c106b4bbd07d4f72be7">esc.h</a>
</li>
<li>ESCREG_ALCONTROL
: <a class="el" href="esc_8h.html#a6c2c6e4d13ec0b4212f31d0a99bc8dce">esc.h</a>
</li>
<li>ESCREG_ALERROR
: <a class="el" href="esc_8h.html#a9b3baa9a43aaec1ee7dafaaa2968f4a9">esc.h</a>
</li>
<li>ESCREG_ALEVENT_CONTROL
: <a class="el" href="esc_8h.html#a909893b47343a19f6ac077b3d7616983">esc.h</a>
</li>
<li>ESCREG_ALEVENT_SM2
: <a class="el" href="esc_8h.html#a7f4270f5e37d8e797a3033523e0f84d0">esc.h</a>
</li>
<li>ESCREG_ALEVENT_SM3
: <a class="el" href="esc_8h.html#af027c2de0f06af73a3358ee6ae6d0879">esc.h</a>
</li>
<li>ESCREG_ALEVENT_SM_MASK
: <a class="el" href="esc_8h.html#a97a40d09c42c6bc43b020660e1bbbfbf">esc.h</a>
</li>
<li>ESCREG_ALEVENT_SMCHANGE
: <a class="el" href="esc_8h.html#accde7f95cb5cb142c029ce48de2cb159">esc.h</a>
</li>
<li>ESCREG_ALSTATUS
: <a class="el" href="esc_8h.html#aeba405861a1361254f077961dc961faa">esc.h</a>
</li>
<li>ESCREG_DLSTATUS
: <a class="el" href="esc_8h.html#a7307fb7c3f7d54c7a44910f7100574cf">esc.h</a>
</li>
<li>ESCREG_LOCALTIME
: <a class="el" href="esc_8h.html#a6da09b045593c131194d037cf180af6e">esc.h</a>
</li>
<li>ESCREG_SM0
: <a class="el" href="esc_8h.html#adc86f932b632df06d8edebe7e2f4425e">esc.h</a>
</li>
<li>ESCREG_SM0PDI
: <a class="el" href="esc_8h.html#a794f17b8e194f6caa1d4621c5d39255a">esc.h</a>
</li>
<li>ESCREG_SM0STATUS
: <a class="el" href="esc_8h.html#a0b5666ebc41cd0a36da767ee23a864a7">esc.h</a>
</li>
<li>ESCREG_SM1
: <a class="el" href="esc_8h.html#a1980a4a2097e0b992c4075daace62bca">esc.h</a>
</li>
<li>ESCREG_SM2
: <a class="el" href="esc_8h.html#a32da75a5a12ce65cce68994ec39d3169">esc.h</a>
</li>
<li>ESCREG_SM3
: <a class="el" href="esc_8h.html#a5655115f6c92776da28142322b6f006d">esc.h</a>
</li>
<li>ESCREG_SMENABLE_BIT
: <a class="el" href="esc_8h.html#a196d729aa8d41edec776de5bd4be89e5">esc.h</a>
</li>
<li>ESCREG_WDSTATUS
: <a class="el" href="esc_8h.html#a4ec3b5c5de3d23c9c4f358fe81b0b0e1">esc.h</a>
</li>
<li>ESCsafeop
: <a class="el" href="esc_8h.html#a8badc20d57f274700ff6786013f4dba8">esc.h</a>
</li>
</ul>
<h3><a class="anchor" id="index_f"></a>- f -</h3><ul>
<li>FLASHSTORE
: <a class="el" href="esc_8h.html#af31f651275638bf31941470751b421c6">esc.h</a>
</li>
<li>FOE_DATA_SIZE
: <a class="el" href="esc_8h.html#aad1577291bfede477e855eb225808fa6">esc.h</a>
</li>
<li>FOE_ERR_ACCESS
: <a class="el" href="esc_8h.html#af6aa86bf5876dce22c27145fc3b4c3e4">esc.h</a>
</li>
<li>FOE_ERR_BOOTSTRAPONLY
: <a class="el" href="esc_8h.html#aac239ebc90aafb116ada298dbe37cb4b">esc.h</a>
</li>
<li>FOE_ERR_DISKFULL
: <a class="el" href="esc_8h.html#a227007dcf966d4e1cb8f91574f21c333">esc.h</a>
</li>
<li>FOE_ERR_EXISTS
: <a class="el" href="esc_8h.html#ac8abb61ae737d6c855d1a590791df059">esc.h</a>
</li>
<li>FOE_ERR_ILLEGAL
: <a class="el" href="esc_8h.html#ae3e84a35fd77becdbdf46ca762d4f94e">esc.h</a>
</li>
<li>FOE_ERR_NORIGHTS
: <a class="el" href="esc_8h.html#a9017179963e1d043ff71e97f753e07b4">esc.h</a>
</li>
<li>FOE_ERR_NOTDEFINED
: <a class="el" href="esc_8h.html#a06373aff527b3f6b230029e8a72c1cd1">esc.h</a>
</li>
<li>FOE_ERR_NOTFOUND
: <a class="el" href="esc_8h.html#aed84ce411cd38db2eb6f151d33d7cd97">esc.h</a>
</li>
<li>FOE_ERR_NOTINBOOTSTRAP
: <a class="el" href="esc_8h.html#a36f57991ad32f5f35f6ffc7a6bcf428c">esc.h</a>
</li>
<li>FOE_ERR_NOUSER
: <a class="el" href="esc_8h.html#af605d0658d90555d88490fb50715066b">esc.h</a>
</li>
<li>FOE_ERR_PACKETNO
: <a class="el" href="esc_8h.html#a470eade54f8c95e56984d4420326a4e6">esc.h</a>
</li>
<li>FOE_ERR_PROGERROR
: <a class="el" href="esc_8h.html#a944d3a218af6c84d4dbc0ded77a0d794">esc.h</a>
</li>
<li>FOE_FN_MAX
: <a class="el" href="esc__foe_8h.html#a67c78bb265f195309e12db00ead5e50e">esc_foe.h</a>
</li>
<li>FOE_OP_ACK
: <a class="el" href="esc_8h.html#ac6d56fb0f16b09380051a58c1826616f">esc.h</a>
</li>
<li>FOE_OP_BUSY
: <a class="el" href="esc_8h.html#a921d4d62f090469344a749c3e945dc88">esc.h</a>
</li>
<li>FOE_OP_DATA
: <a class="el" href="esc_8h.html#a2b5b2ab115e3d73af94848aa46459ce6">esc.h</a>
</li>
<li>FOE_OP_ERR
: <a class="el" href="esc_8h.html#a7b3c449d99dcd3befc5bf8590de4e107">esc.h</a>
</li>
<li>FOE_OP_RRQ
: <a class="el" href="esc_8h.html#a02a8b28b5100417cd3b185183db73e38">esc.h</a>
</li>
<li>FOE_OP_WRQ
: <a class="el" href="esc_8h.html#a58a8805b89cbf790086c1dcaf6e48b77">esc.h</a>
</li>
<li>FOE_READY
: <a class="el" href="esc_8h.html#ab15832bb164f30431ca7e1a3ba031893">esc.h</a>
</li>
<li>FOE_WAIT_FOR_ACK
: <a class="el" href="esc_8h.html#a3e9a1af6dfb29fc8f293cac2e4d89a5f">esc.h</a>
</li>
<li>FOE_WAIT_FOR_DATA
: <a class="el" href="esc_8h.html#a4ac54aada257b32f0c3f78e96ce401cd">esc.h</a>
</li>
<li>FOE_WAIT_FOR_FINAL_ACK
: <a class="el" href="esc_8h.html#a6e2733c766c24bc20405520e443279cb">esc.h</a>
</li>
<li>FOEHSIZE
: <a class="el" href="esc_8h.html#a0885e1187b3189c48c4686b4278917b3">esc.h</a>
</li>
</ul>
<h3><a class="anchor" id="index_i"></a>- i -</h3><ul>
<li>INIT_TO_BOOT
: <a class="el" href="esc_8h.html#a5039b686bb3df7080272745f55f41cb3">esc.h</a>
</li>
<li>INIT_TO_INIT
: <a class="el" href="esc_8h.html#a2323870fc24ae47966f121a9ce446646">esc.h</a>
</li>
<li>INIT_TO_OP
: <a class="el" href="esc_8h.html#a72a2ee850c5fe200f6bddd6a42025d58">esc.h</a>
</li>
<li>INIT_TO_PREOP
: <a class="el" href="esc_8h.html#ad4689d505d83fd7be19822b783df000f">esc.h</a>
</li>
<li>INIT_TO_SAFEOP
: <a class="el" href="esc_8h.html#a4d23a22a89529755a847c0921f7652a8">esc.h</a>
</li>
</ul>
<h3><a class="anchor" id="index_m"></a>- m -</h3><ul>
<li>MBX0_sma
: <a class="el" href="esc_8h.html#a1fc72d483d679affb26b6de7306e02e4">esc.h</a>
</li>
<li>MBX0_sma_b
: <a class="el" href="esc_8h.html#ae0883caf4dc1308cb7c74bc3c36360b4">esc.h</a>
</li>
<li>MBX0_smc
: <a class="el" href="esc_8h.html#a3407425a415a4978f2caff2981248483">esc.h</a>
</li>
<li>MBX0_smc_b
: <a class="el" href="esc_8h.html#a6d19c656693d0cf87e8dca848057ae5e">esc.h</a>
</li>
<li>MBX0_sme
: <a class="el" href="esc_8h.html#a114074289d89d425c6bd71d6d879e5b3">esc.h</a>
</li>
<li>MBX0_sme_b
: <a class="el" href="esc_8h.html#a74271876fc78960344edb529b1ed0f71">esc.h</a>
</li>
<li>MBX0_sml
: <a class="el" href="esc_8h.html#ae35a58e352efe3fd11a16a432170d4a9">esc.h</a>
</li>
<li>MBX0_sml_b
: <a class="el" href="esc_8h.html#a3a0c81041a9427add2763a13992bfabc">esc.h</a>
</li>
<li>MBX1_sma
: <a class="el" href="esc_8h.html#a3830e505211174ddb24286c95662c765">esc.h</a>
</li>
<li>MBX1_sma_b
: <a class="el" href="esc_8h.html#a743f3584b2a5e9a9d5404455c9551c3a">esc.h</a>
</li>
<li>MBX1_smc
: <a class="el" href="esc_8h.html#a4c6d0f372ea71aebbd29ee5b0cc0f898">esc.h</a>
</li>
<li>MBX1_smc_b
: <a class="el" href="esc_8h.html#ab3731259a310206413169f51d161abaa">esc.h</a>
</li>
<li>MBX1_sme
: <a class="el" href="esc_8h.html#a122f2379f8de7a4152530278b495da5f">esc.h</a>
</li>
<li>MBX1_sme_b
: <a class="el" href="esc_8h.html#aa4a9a671960f93b266e35fd038105e9b">esc.h</a>
</li>
<li>MBX1_sml
: <a class="el" href="esc_8h.html#ad37a787b9229f01e41880c81fc3f72f6">esc.h</a>
</li>
<li>MBX1_sml_b
: <a class="el" href="esc_8h.html#ae881c26f1fcdfbeab976ea381fcec75a">esc.h</a>
</li>
<li>MBXAOE
: <a class="el" href="esc_8h.html#a1108b8c4519c13347c50476443c11a80">esc.h</a>
</li>
<li>MBXBUFFERS
: <a class="el" href="esc_8h.html#aa5c05a3b5f1d48b9c75aac6215c85509">esc.h</a>
</li>
<li>MBXCOE
: <a class="el" href="esc_8h.html#a9048f75f44616b4eed531df067a6fe22">esc.h</a>
</li>
<li>MBXDSIZE
: <a class="el" href="esc_8h.html#a6e1259fd404ab4a6b7765dd764afe579">esc.h</a>
</li>
<li>MBXED
: <a class="el" href="esc_8h.html#afb0a99f8c9e4f66d47a3a691f12de2f9">esc.h</a>
</li>
<li>MBXEOE
: <a class="el" href="esc_8h.html#a14c2d4d58a4b0c16fece5965c0e72685">esc.h</a>
</li>
<li>MBXERR
: <a class="el" href="esc_8h.html#aa8d6ce8d220d23e210ee474f5f53668f">esc.h</a>
</li>
<li>MBXERR_INVALIDCHANNEL
: <a class="el" href="esc_8h.html#a65ed4b8f0d039ebd3a8f906b69bcd4be">esc.h</a>
</li>
<li>MBXERR_INVALIDHEADER
: <a class="el" href="esc_8h.html#ac3a686f811b9f5df89c630c22983b4e3">esc.h</a>
</li>
<li>MBXERR_INVALIDSIZE
: <a class="el" href="esc_8h.html#ade87044216e1dec43a5545aad87088ab">esc.h</a>
</li>
<li>MBXERR_NOMOREMEMORY
: <a class="el" href="esc_8h.html#acb75d2eb8cd4ffb384c17e952bfcb100">esc.h</a>
</li>
<li>MBXERR_SERVICENOTSUPPORTED
: <a class="el" href="esc_8h.html#a428d601668cf6ee6b99e89a01305ee91">esc.h</a>
</li>
<li>MBXERR_SIZETOOSHORT
: <a class="el" href="esc_8h.html#a39ec5f9bfd9ae9719db5b0529264b1f1">esc.h</a>
</li>
<li>MBXERR_SYNTAX
: <a class="el" href="esc_8h.html#ab3949a3831dbfd83db73ad544b42478c">esc.h</a>
</li>
<li>MBXERR_UNSUPPORTEDPROTOCOL
: <a class="el" href="esc_8h.html#a526ed7f4a94867c0e1928d4d31b77300">esc.h</a>
</li>
<li>MBXFOE
: <a class="el" href="esc_8h.html#a38c85bcc6c02ed29545969e6e6694b46">esc.h</a>
</li>
<li>MBXHSIZE
: <a class="el" href="esc_8h.html#aba3e1870cdaa25f38dbd0f4a78850c20">esc.h</a>
</li>
<li>MBXOD
: <a class="el" href="esc_8h.html#aa77a684de1e9f22844407f92d883e6e2">esc.h</a>
</li>
<li>MBXODL
: <a class="el" href="esc_8h.html#afebd6de0c3047054771d9dc5e1905e13">esc.h</a>
</li>
<li>MBXSED
: <a class="el" href="esc_8h.html#ab138e47789ff5e7a97700be433455806">esc.h</a>
</li>
<li>MBXSEU
: <a class="el" href="esc_8h.html#a0852a238da1145e62c4a7abbfb12d138">esc.h</a>
</li>
<li>MBXSIZE
: <a class="el" href="esc_8h.html#a93629ee62f8570fe7b774aedaaec28a3">esc.h</a>
</li>
<li>MBXSIZEBOOT
: <a class="el" href="esc_8h.html#a0a86a18947975d14d6f339137757eb47">esc.h</a>
</li>
<li>MBXstate_again
: <a class="el" href="esc_8h.html#afc269434a70d7c608058614c780fec2a">esc.h</a>
</li>
<li>MBXstate_backup
: <a class="el" href="esc_8h.html#abfc4ac36c581dad82e9aadbd720a38cb">esc.h</a>
</li>
<li>MBXstate_idle
: <a class="el" href="esc_8h.html#ae4fcb97be2cbc2e3a4c7c3e1066337eb">esc.h</a>
</li>
<li>MBXstate_inclaim
: <a class="el" href="esc_8h.html#a50c52f6463c0cea69eee10704dacf2fa">esc.h</a>
</li>
<li>MBXstate_outclaim
: <a class="el" href="esc_8h.html#a96f83f5db66329027a7385bbc30d5b12">esc.h</a>
</li>
<li>MBXstate_outpost
: <a class="el" href="esc_8h.html#afbc14b29e366d67997366241ebb50137">esc.h</a>
</li>
<li>MBXstate_outreq
: <a class="el" href="esc_8h.html#aaeeb4d2e52ca12771e1a019d9810f56f">esc.h</a>
</li>
</ul>
<h3><a class="anchor" id="index_o"></a>- o -</h3><ul>
<li>ODLISTSIZE
: <a class="el" href="esc__coe_8c.html#aa9a3a80105cd78cb4e2ed2833926abe4">esc_coe.c</a>
</li>
<li>OP_TO_BOOT
: <a class="el" href="esc_8h.html#ab0e6d1fafe9d6f6f96be961ed0c1f409">esc.h</a>
</li>
<li>OP_TO_INIT
: <a class="el" href="esc_8h.html#a745e8ca4f2b6bc540894179a1eb2de8e">esc.h</a>
</li>
<li>OP_TO_OP
: <a class="el" href="esc_8h.html#aefa9259dc71793e99584bda819cdd404">esc.h</a>
</li>
<li>OP_TO_PREOP
: <a class="el" href="esc_8h.html#a757cc6f0071299719b25c08ffb0b85ea">esc.h</a>
</li>
<li>OP_TO_SAFEOP
: <a class="el" href="esc_8h.html#a9a4a22bc5ac9653bc363617446b213e1">esc.h</a>
</li>
</ul>
<h3><a class="anchor" id="index_p"></a>- p -</h3><ul>
<li>PACKED
: <a class="el" href="esc_8h.html#a36d525cf4d116b2fe4ecc00222b256f1">esc.h</a>
</li>
<li>PREOP_TO_BOOT
: <a class="el" href="esc_8h.html#a8ba16d3592cce0a185b4fd8693a6cfa8">esc.h</a>
</li>
<li>PREOP_TO_INIT
: <a class="el" href="esc_8h.html#a95904ec2b4ba4844e38d3466e751d96c">esc.h</a>
</li>
<li>PREOP_TO_OP
: <a class="el" href="esc_8h.html#abb3520b9938cf6e6e32a48d923455ce7">esc.h</a>
</li>
<li>PREOP_TO_PREOP
: <a class="el" href="esc_8h.html#aa4a2a3bdd32c1e10ec55631de220be98">esc.h</a>
</li>
<li>PREOP_TO_SAFEOP
: <a class="el" href="esc_8h.html#acfca93862f91d05b914058ed35c59146">esc.h</a>
</li>
</ul>
<h3><a class="anchor" id="index_s"></a>- s -</h3><ul>
<li>SAFEOP_TO_BOOT
: <a class="el" href="esc_8h.html#adae2d047beaea69cdfbda3633cd7b67d">esc.h</a>
</li>
<li>SAFEOP_TO_INIT
: <a class="el" href="esc_8h.html#a2f0d8c21a302aa5e7c9e266d1a6bb3c2">esc.h</a>
</li>
<li>SAFEOP_TO_OP
: <a class="el" href="esc_8h.html#ae0c664dceeb07c530e4e84d1db4f4a81">esc.h</a>
</li>
<li>SAFEOP_TO_PREOP
: <a class="el" href="esc_8h.html#a93232f0345f5cc7d2f13c13ba5d84405">esc.h</a>
</li>
<li>SAFEOP_TO_SAFEOP
: <a class="el" href="esc_8h.html#a27c5a979b039774b338011aae6055c81">esc.h</a>
</li>
<li>SM2_act
: <a class="el" href="esc_8h.html#a9a5cb376c34a957384011f8743d31264">esc.h</a>
</li>
<li>SM2_sma
: <a class="el" href="esc_8h.html#a17b011cd3b4d2c7aaa4d97a3f9140d9e">esc.h</a>
</li>
<li>SM2_smc
: <a class="el" href="esc_8h.html#a313b352bf90ca987dd892b4c8009ae40">esc.h</a>
</li>
<li>SM3_act
: <a class="el" href="esc_8h.html#a68753b72b245e6836824d6cfde328523">esc.h</a>
</li>
<li>SM3_sma
: <a class="el" href="esc_8h.html#a115f471e25ada517dc92451cbf921416">esc.h</a>
</li>
<li>SM3_smc
: <a class="el" href="esc_8h.html#acb907422389b6cc5ed659faa00e4ce43">esc.h</a>
</li>
<li>SMRESULT_ERRSM0
: <a class="el" href="esc_8h.html#a01dacbd4a37e2f509bed1f124350250d">esc.h</a>
</li>
<li>SMRESULT_ERRSM1
: <a class="el" href="esc_8h.html#add381e67ac4cbcc3b0dc392cfd808ce7">esc.h</a>
</li>
<li>SMRESULT_ERRSM2
: <a class="el" href="esc_8h.html#ae14352616d4432ca089b751bf360d14b">esc.h</a>
</li>
<li>SMRESULT_ERRSM3
: <a class="el" href="esc_8h.html#a4aef510c53555fdcfb827041c4af8668">esc.h</a>
</li>
</ul>
</div>
<hr class="footer"/><address class="footer"><small>Generated on Wed Jul 10 2013 11:14:19 for SOES by&#160;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
</body>
</html>

View File

@ -0,0 +1,297 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>SOES: Globals</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<!-- Generated by Doxygen 1.7.4 -->
<div id="top">
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">SOES&#160;<span id="projectnumber">v1.0.0</span></div>
</td>
</tr>
</tbody>
</table>
</div>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
<li class="current"><a href="globals.html"><span>Globals</span></a></li>
</ul>
</div>
<div id="navrow3" class="tabs2">
<ul class="tablist">
<li><a href="globals.html"><span>All</span></a></li>
<li class="current"><a href="globals_func.html"><span>Functions</span></a></li>
<li><a href="globals_vars.html"><span>Variables</span></a></li>
<li><a href="globals_type.html"><span>Typedefs</span></a></li>
<li><a href="globals_defs.html"><span>Defines</span></a></li>
</ul>
</div>
<div id="navrow4" class="tabs3">
<ul class="tablist">
<li><a href="#index_a"><span>a</span></a></li>
<li><a href="#index_c"><span>c</span></a></li>
<li><a href="#index_e"><span>e</span></a></li>
<li><a href="#index_f"><span>f</span></a></li>
<li><a href="#index_m"><span>m</span></a></li>
<li><a href="#index_s"><span>s</span></a></li>
</ul>
</div>
</div>
<div class="contents">
&#160;
<h3><a class="anchor" id="index_a"></a>- a -</h3><ul>
<li>APP_safeoutput()
: <a class="el" href="esc_8h.html#a4a701826beb05687a0d9a5036de3c37c">esc.h</a>
</li>
</ul>
<h3><a class="anchor" id="index_c"></a>- c -</h3><ul>
<li>copy2mbx()
: <a class="el" href="esc__coe_8c.html#a3efad71f0e21192002ef60437575f70b">esc_coe.c</a>
</li>
</ul>
<h3><a class="anchor" id="index_e"></a>- e -</h3><ul>
<li>ESC_ackmbxread()
: <a class="el" href="esc_8c.html#a3833c0b62cdc0b62ee929154e9744fcc">esc.c</a>
</li>
<li>ESC_address()
: <a class="el" href="esc_8c.html#a152dee1d6c0bce00aa029d833e147380">esc.c</a>
</li>
<li>ESC_ALerror()
: <a class="el" href="esc_8h.html#ae49fff6e6440edd2c55a077d724b898c">esc.h</a>
, <a class="el" href="esc_8c.html#ae49fff6e6440edd2c55a077d724b898c">esc.c</a>
</li>
<li>ESC_ALevent()
: <a class="el" href="esc_8h.html#a5786bd4c441fafac35331fa755730f84">esc.h</a>
</li>
<li>ESC_ALstatus()
: <a class="el" href="esc_8c.html#a9794dd94da984eb6bfb88879aabf4e3d">esc.c</a>
, <a class="el" href="esc_8h.html#a9794dd94da984eb6bfb88879aabf4e3d">esc.h</a>
</li>
<li>ESC_checkmbx()
: <a class="el" href="esc_8c.html#aeee5a004e7e70410ceb89c26537a2ccf">esc.c</a>
</li>
<li>ESC_checkmbxboot()
: <a class="el" href="esc_8c.html#a5cd0a7feb7e50e42fcdb71e6a28799ab">esc.c</a>
</li>
<li>ESC_checkSM23()
: <a class="el" href="esc_8c.html#a24ef310d3626f86db81293553d0a6c88">esc.c</a>
</li>
<li>ESC_claimbuffer()
: <a class="el" href="esc_8c.html#a9cdac6a8b19f5a033267973c6b97e501">esc.c</a>
, <a class="el" href="esc_8h.html#a9cdac6a8b19f5a033267973c6b97e501">esc.h</a>
</li>
<li>ESC_coeprocess()
: <a class="el" href="esc__coe_8c.html#a71c76794b7e4ed125cc9cda0e8508ccd">esc_coe.c</a>
, <a class="el" href="esc__coe_8h.html#a71c76794b7e4ed125cc9cda0e8508ccd">esc_coe.h</a>
</li>
<li>ESC_config()
: <a class="el" href="esc_8h.html#a5ddaf0c8fd9944f21be30480125b6736">esc.h</a>
, <a class="el" href="esc_8c.html#a5ddaf0c8fd9944f21be30480125b6736">esc.c</a>
</li>
<li>ESC_foeprocess()
: <a class="el" href="esc__foe_8c.html#a57ace265be44ccc2a0af313d007261b2">esc_foe.c</a>
, <a class="el" href="esc__foe_8h.html#a57ace265be44ccc2a0af313d007261b2">esc_foe.h</a>
</li>
<li>ESC_init()
: <a class="el" href="esc_8h.html#a1e57480c1f1963ef43315a2da703af69">esc.h</a>
</li>
<li>ESC_mbxprocess()
: <a class="el" href="esc_8c.html#ae75d37a1bdce82374c3b262f18945cb3">esc.c</a>
, <a class="el" href="esc_8h.html#ae75d37a1bdce82374c3b262f18945cb3">esc.h</a>
</li>
<li>ESC_objecthandler()
: <a class="el" href="esc__coe_8h.html#a414bacd094d9023838a396174a695f8d">esc_coe.h</a>
</li>
<li>ESC_outreqbuffer()
: <a class="el" href="esc_8c.html#ab5fb5800733c7419cad42f030860b966">esc.c</a>
</li>
<li>ESC_pre_objecthandler()
: <a class="el" href="esc__coe_8c.html#a5da3e5d510d17ad992a2db811f522b54">esc_coe.c</a>
</li>
<li>ESC_read()
: <a class="el" href="esc_8h.html#a2664adef01c5c5f228f8512fcae3eb57">esc.h</a>
</li>
<li>ESC_readmbx()
: <a class="el" href="esc_8c.html#a268c2208d13c00552cc25c7c823c78b3">esc.c</a>
</li>
<li>ESC_SMack()
: <a class="el" href="esc_8c.html#ad4f4c1dd0c961f827f8f1d578fed087d">esc.c</a>
</li>
<li>ESC_SMdisable()
: <a class="el" href="esc_8c.html#af318524ace0e280d9e87afc9f73b57fa">esc.c</a>
</li>
<li>ESC_SMenable()
: <a class="el" href="esc_8c.html#a20ec7aa0e6d89492dc4562b9c4657f6f">esc.c</a>
</li>
<li>ESC_SMstatus()
: <a class="el" href="esc_8h.html#ad419b1ac3abaf24fa53d55ede4810ce7">esc.h</a>
, <a class="el" href="esc_8c.html#ad419b1ac3abaf24fa53d55ede4810ce7">esc.c</a>
</li>
<li>ESC_SMwritepdi()
: <a class="el" href="esc_8c.html#a602dae15b9286e4ab4716fb85f8f3c58">esc.c</a>
</li>
<li>ESC_startinput()
: <a class="el" href="esc_8c.html#a7e667a53ef89c4a27578e26e2479d05d">esc.c</a>
, <a class="el" href="esc_8h.html#a7e667a53ef89c4a27578e26e2479d05d">esc.h</a>
</li>
<li>ESC_startmbx()
: <a class="el" href="esc_8h.html#afc72202bfde332668a10d54e3b56083b">esc.h</a>
, <a class="el" href="esc_8c.html#afc72202bfde332668a10d54e3b56083b">esc.c</a>
</li>
<li>ESC_startmbxboot()
: <a class="el" href="esc_8c.html#a99dd26de7272793bd6ffe56af9316fbe">esc.c</a>
</li>
<li>ESC_startoutput()
: <a class="el" href="esc_8c.html#a5e77a7172bd88586c08829b6d5977016">esc.c</a>
, <a class="el" href="esc_8h.html#a5e77a7172bd88586c08829b6d5977016">esc.h</a>
</li>
<li>ESC_state()
: <a class="el" href="esc_8c.html#a1f4da4aa96dc469b218abf33ff857130">esc.c</a>
, <a class="el" href="esc_8h.html#a1f4da4aa96dc469b218abf33ff857130">esc.h</a>
</li>
<li>ESC_stopinput()
: <a class="el" href="esc_8c.html#a81ea48b9683662e8bed01fbb77826236">esc.c</a>
, <a class="el" href="esc_8h.html#a81ea48b9683662e8bed01fbb77826236">esc.h</a>
</li>
<li>ESC_stopmbx()
: <a class="el" href="esc_8c.html#af114806603011938e35ae366d115d90f">esc.c</a>
, <a class="el" href="esc_8h.html#af114806603011938e35ae366d115d90f">esc.h</a>
</li>
<li>ESC_stopoutput()
: <a class="el" href="esc_8h.html#aea60761cf8862550e8901aa996069f8d">esc.h</a>
, <a class="el" href="esc_8c.html#aea60761cf8862550e8901aa996069f8d">esc.c</a>
</li>
<li>ESC_WDstatus()
: <a class="el" href="esc_8c.html#a86d7576d9f8b1e63ad8ad2a6cf991c50">esc.c</a>
, <a class="el" href="esc_8h.html#a86d7576d9f8b1e63ad8ad2a6cf991c50">esc.h</a>
</li>
<li>ESC_write()
: <a class="el" href="esc_8h.html#a1e2ef25b8a36c48016abd5ff20166d9f">esc.h</a>
</li>
<li>ESC_writembx()
: <a class="el" href="esc_8c.html#add404335229e458ca751345aa701f3ce">esc.c</a>
</li>
<li>ESC_xoeprocess()
: <a class="el" href="esc_8c.html#aa783bb45ace470b98607ce7c4af0460f">esc.c</a>
, <a class="el" href="esc_8h.html#aa783bb45ace470b98607ce7c4af0460f">esc.h</a>
</li>
</ul>
<h3><a class="anchor" id="index_f"></a>- f -</h3><ul>
<li>FOE_abort()
: <a class="el" href="esc__foe_8c.html#a3dc61a42f1df1418e1b713b4ef6124c3">esc_foe.c</a>
</li>
<li>FOE_config()
: <a class="el" href="esc__foe_8c.html#a0b138231b97d90990427644659e92e0c">esc_foe.c</a>
, <a class="el" href="esc__foe_8h.html#a0b138231b97d90990427644659e92e0c">esc_foe.h</a>
</li>
<li>FOE_data()
: <a class="el" href="esc__foe_8c.html#af0f447cb34aefab559845633acba7eea">esc_foe.c</a>
</li>
<li>FOE_error()
: <a class="el" href="esc__foe_8c.html#a50fcf09f71a9f45ebc806ebdf109a275">esc_foe.c</a>
</li>
<li>FOE_fclose()
: <a class="el" href="esc__foe_8c.html#ada27a980ed9be4adb6e9e72a80bac0e6">esc_foe.c</a>
</li>
<li>FOE_fopen()
: <a class="el" href="esc__foe_8c.html#a1068bb4cb4200dd0a12a01fa875a4d4b">esc_foe.c</a>
</li>
<li>FOE_fwrite()
: <a class="el" href="esc__foe_8c.html#a2fe564ee56395c2ad9b3e294046ab11a">esc_foe.c</a>
</li>
<li>FOE_init()
: <a class="el" href="esc__foe_8c.html#ab759787663f3dbf3eefc2d7d4ebb7a48">esc_foe.c</a>
, <a class="el" href="esc__foe_8h.html#a0fc65c1e2994bf93b40bdf2bcdbad8a0">esc_foe.h</a>
</li>
<li>FOE_read()
: <a class="el" href="esc__foe_8c.html#a429078d3edbb532b67f887adb0ec59de">esc_foe.c</a>
</li>
<li>FOE_send_ack()
: <a class="el" href="esc__foe_8c.html#a2d6c4bf6859f6b1ebd6a0b63fca21420">esc_foe.c</a>
</li>
<li>FOE_write()
: <a class="el" href="esc__foe_8c.html#af0f456ea750b97416b704ade6d074a4d">esc_foe.c</a>
</li>
</ul>
<h3><a class="anchor" id="index_m"></a>- m -</h3><ul>
<li>MBX_error()
: <a class="el" href="esc_8c.html#ad4d3079177cc7d1bd78862b5a5cb7fe7">esc.c</a>
, <a class="el" href="esc_8h.html#ad4d3079177cc7d1bd78862b5a5cb7fe7">esc.h</a>
</li>
</ul>
<h3><a class="anchor" id="index_s"></a>- s -</h3><ul>
<li>SDO_abort()
: <a class="el" href="esc__coe_8c.html#ac8b791201457bff244ff36c4c5c85860">esc_coe.c</a>
</li>
<li>SDO_download()
: <a class="el" href="esc__coe_8c.html#ae8c1c5930a2cc7a27375fa97acdb8df4">esc_coe.c</a>
</li>
<li>SDO_findobject()
: <a class="el" href="esc__coe_8c.html#ae69df2a29e9017aab128508585ad6171">esc_coe.c</a>
</li>
<li>SDO_findsubindex()
: <a class="el" href="esc__coe_8c.html#a1fc8fd4ba74a85d5b4ca7ff7dc842edf">esc_coe.c</a>
</li>
<li>SDO_geted()
: <a class="el" href="esc__coe_8c.html#a10a864197441d3da0fbd0623521e3d26">esc_coe.c</a>
</li>
<li>SDO_getod()
: <a class="el" href="esc__coe_8c.html#acc7684bb6a1155dab1891514c264f12d">esc_coe.c</a>
</li>
<li>SDO_getodlist()
: <a class="el" href="esc__coe_8c.html#ac43a13f88e3705c3f4ef40b8b9c2b431">esc_coe.c</a>
</li>
<li>SDO_getodlistcont()
: <a class="el" href="esc__coe_8c.html#a362076e63fae0dd33b426f5c99d9a010">esc_coe.c</a>
</li>
<li>SDO_infoerror()
: <a class="el" href="esc__coe_8c.html#a4c5b3d7b4930375a4a87727629d1cfe7">esc_coe.c</a>
</li>
<li>SDO_upload()
: <a class="el" href="esc__coe_8c.html#acc25f2ec413f5473f199ab5b9b8f4005">esc_coe.c</a>
</li>
<li>SDO_uploadsegment()
: <a class="el" href="esc__coe_8c.html#a3655db85e86eee991facef9492fcc246">esc_coe.c</a>
</li>
<li>sizeRXPDO()
: <a class="el" href="esc__coe_8h.html#a836e3ff62cd9bba1ca2a5f5481104ba9">esc_coe.h</a>
, <a class="el" href="esc__coe_8c.html#a836e3ff62cd9bba1ca2a5f5481104ba9">esc_coe.c</a>
</li>
<li>sizeTXPDO()
: <a class="el" href="esc__coe_8c.html#a5d1fb9538a28be98ec8ee762140ada35">esc_coe.c</a>
, <a class="el" href="esc__coe_8h.html#a5d1fb9538a28be98ec8ee762140ada35">esc_coe.h</a>
</li>
</ul>
</div>
<hr class="footer"/><address class="footer"><small>Generated on Wed Jul 10 2013 11:14:19 for SOES by&#160;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
</body>
</html>

View File

@ -0,0 +1,57 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>SOES: Globals</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<!-- Generated by Doxygen 1.7.4 -->
<div id="top">
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">SOES&#160;<span id="projectnumber">v1.0.0</span></div>
</td>
</tr>
</tbody>
</table>
</div>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
<li class="current"><a href="globals.html"><span>Globals</span></a></li>
</ul>
</div>
<div id="navrow3" class="tabs2">
<ul class="tablist">
<li><a href="globals.html"><span>All</span></a></li>
<li><a href="globals_func.html"><span>Functions</span></a></li>
<li><a href="globals_vars.html"><span>Variables</span></a></li>
<li class="current"><a href="globals_type.html"><span>Typedefs</span></a></li>
<li><a href="globals_defs.html"><span>Defines</span></a></li>
</ul>
</div>
</div>
<div class="contents">
&#160;<ul>
<li>_ESCsmCompact
: <a class="el" href="esc_8h.html#a09e1340543bc3c816eb0df8650bc3cd4">esc.h</a>
</li>
</ul>
</div>
<hr class="footer"/><address class="footer"><small>Generated on Wed Jul 10 2013 11:14:19 for SOES by&#160;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
</body>
</html>

View File

@ -0,0 +1,96 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>SOES: Globals</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<!-- Generated by Doxygen 1.7.4 -->
<div id="top">
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">SOES&#160;<span id="projectnumber">v1.0.0</span></div>
</td>
</tr>
</tbody>
</table>
</div>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
<li class="current"><a href="globals.html"><span>Globals</span></a></li>
</ul>
</div>
<div id="navrow3" class="tabs2">
<ul class="tablist">
<li><a href="globals.html"><span>All</span></a></li>
<li><a href="globals_func.html"><span>Functions</span></a></li>
<li class="current"><a href="globals_vars.html"><span>Variables</span></a></li>
<li><a href="globals_type.html"><span>Typedefs</span></a></li>
<li><a href="globals_defs.html"><span>Defines</span></a></li>
</ul>
</div>
</div>
<div class="contents">
&#160;<ul>
<li>esc_cfg
: <a class="el" href="esc_8c.html#a23be27590c28284bdca777f918b40d09">esc.c</a>
</li>
<li>ESCvar
: <a class="el" href="esc_8h.html#ad2be96a7ede58a01fd408ed9ad4e0970">esc.h</a>
</li>
<li>foe_cfg
: <a class="el" href="esc__foe_8c.html#a7cc484767f3b463b2a72365d9c761a1f">esc_foe.c</a>
</li>
<li>foe_file
: <a class="el" href="esc__foe_8c.html#a2896ae544c74758f24d85208eba3477b">esc_foe.c</a>
</li>
<li>foe_file_name
: <a class="el" href="esc__foe_8c.html#a1f2c07c0dfd2d9a88c27b47abf1651af">esc_foe.c</a>
</li>
<li>foe_files
: <a class="el" href="esc__foe_8c.html#ab37a5f7aab01e0690365e1c73c56b496">esc_foe.c</a>
</li>
<li>FOEvar
: <a class="el" href="esc__foe_8c.html#adcd7d70e05228c39934e5605bc705839">esc_foe.c</a>
</li>
<li>MBX
: <a class="el" href="esc_8h.html#aa67a8233cd88c97533e5012b1378dfef">esc.h</a>
</li>
<li>MBXcontrol
: <a class="el" href="esc_8h.html#acf236a0860a3dfe60eef84b9b561fb6a">esc.h</a>
</li>
<li>MBXrun
: <a class="el" href="esc_8h.html#a2344849fecea0bea00b4d94c763b9b39">esc.h</a>
</li>
<li>rxpdoitems
: <a class="el" href="esc__coe_8c.html#a8bf6e1739ce6b8147f92dc36162b9e54">esc_coe.c</a>
</li>
<li>SM2_sml
: <a class="el" href="esc_8h.html#a8381cf08815e916991c9e9f07faecf90">esc.h</a>
</li>
<li>SM3_sml
: <a class="el" href="esc_8h.html#ab08e40af06cd134cb90dd192accbb15c">esc.h</a>
</li>
<li>txpdoitems
: <a class="el" href="esc__coe_8c.html#a5ddbd167b7b79d375b2ce53e2b536347">esc_coe.c</a>
</li>
</ul>
</div>
<hr class="footer"/><address class="footer"><small>Generated on Wed Jul 10 2013 11:14:19 for SOES by&#160;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
</body>
</html>

View File

@ -0,0 +1,71 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>SOES: Simple Open EtherCAT Slave or SOES</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<!-- Generated by Doxygen 1.7.4 -->
<div id="top">
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">SOES&#160;<span id="projectnumber">v1.0.0</span></div>
</td>
</tr>
</tbody>
</table>
</div>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li class="current"><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
</div>
<div class="header">
<div class="headertitle">
<div class="title">Simple Open EtherCAT Slave or SOES </div> </div>
</div>
<div class="contents">
<div class="textblock"><h2><a class="anchor" id="start"></a>
Tutorial</h2>
<p>For a tutorial on SOES See <a class="el" href="tutorial_8txt.html">tutorial.txt</a></p>
<h2><a class="anchor" id="overview"></a>
Overview</h2>
<p>SOES is an EtherCAT slave stack written in c. Its purpose is to learn and to use. All users are invited to study the source to get an understanding how an EtherCAT slave function</p>
<p>Features as of 1.0.0 :</p>
<ul>
<li>Address offset based HAL for easy ESC read/write access via any interface</li>
<li>Mailbox with data link layer</li>
<li>CoE</li>
<li>Object dictionary</li>
<li>SDO read and write for all sizes including segmented transfers</li>
<li>Easy portable C-code suited for embedded applications</li>
<li>Fixed PDO mapping</li>
<li>FoE with bootstrap template</li>
<li>Support for Little and Big endian targets.</li>
<li>Polling for interrupts</li>
</ul>
<h2><a class="anchor" id="legal"></a>
Legal notice</h2>
<p>SOES Simple Open EtherCAT Slave <br/>
Copyright (C) 2007-2013 Arthur Ketels <br/>
Copyright (C) 2012-2013 rt-labs <br/>
</p>
<p>SOES is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License version 2 as published by the Free Software Foundation.</p>
<p>SOES is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.</p>
<p>As a special exception, if other files instantiate templates or use macros or inline functions from this file, or you compile this file and link it with other works to produce a work based on this file, this file does not by itself cause the resulting work to be covered by the GNU General Public License. However the source code for this file must still be made available in accordance with section (3) of the GNU General Public License.</p>
<p>This exception does not invalidate any other reasons why a work based on this file might be covered by the GNU General Public License.</p>
<p>The EtherCAT Technology, the trade name and logo "EtherCAT" are the intellectual property of, and protected by Beckhoff Automation GmbH. </p>
</div></div>
<hr class="footer"/><address class="footer"><small>Generated on Wed Jul 10 2013 11:14:19 for SOES by&#160;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
</body>
</html>

54
soes/doc/html/jquery.js vendored 100644

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 159 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 97 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 118 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

View File

@ -0,0 +1,49 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>SOES: soes.dox File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<!-- Generated by Doxygen 1.7.4 -->
<div id="top">
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">SOES&#160;<span id="projectnumber">v1.0.0</span></div>
</td>
</tr>
</tbody>
</table>
</div>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
<li><a href="globals.html"><span>Globals</span></a></li>
</ul>
</div>
</div>
<div class="header">
<div class="headertitle">
<div class="title">soes.dox File Reference</div> </div>
</div>
<div class="contents">
<table class="memberdecls">
</table>
</div>
<hr class="footer"/><address class="footer"><small>Generated on Wed Jul 10 2013 11:14:19 for SOES by&#160;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
</body>
</html>

View File

@ -0,0 +1,101 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>SOES: PACKED Struct Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<!-- Generated by Doxygen 1.7.4 -->
<div id="top">
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">SOES&#160;<span id="projectnumber">v1.0.0</span></div>
</td>
</tr>
</tbody>
</table>
</div>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
<li><a href="functions.html"><span>Data&#160;Fields</span></a></li>
</ul>
</div>
</div>
<div class="header">
<div class="summary">
<a href="#pub-attribs">Data Fields</a> </div>
<div class="headertitle">
<div class="title">PACKED Struct Reference</div> </div>
</div>
<div class="contents">
<!-- doxytag: class="PACKED" -->
<p><code>#include &lt;esc.h&gt;</code></p>
<table class="memberdecls">
<tr><td colspan="2"><h2><a name="pub-attribs"></a>
Data Fields</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">uint16&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structPACKED.html#ab1dbbcde88af6ced573913592b0528b0">PSA</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">uint16&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structPACKED.html#a86c8b1d0f5d9bd5bacb15a6e627a9e4c">Length</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">uint8&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structPACKED.html#a5bc1de5b9fed2f9783a59cf59393dfb4">Command</a></td></tr>
</table>
<hr/><h2>Field Documentation</h2>
<a class="anchor" id="a5bc1de5b9fed2f9783a59cf59393dfb4"></a><!-- doxytag: member="PACKED::Command" ref="a5bc1de5b9fed2f9783a59cf59393dfb4" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint8 <a class="el" href="structPACKED.html#a5bc1de5b9fed2f9783a59cf59393dfb4">PACKED::Command</a></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<a class="anchor" id="a86c8b1d0f5d9bd5bacb15a6e627a9e4c"></a><!-- doxytag: member="PACKED::Length" ref="a86c8b1d0f5d9bd5bacb15a6e627a9e4c" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint16 <a class="el" href="structPACKED.html#a86c8b1d0f5d9bd5bacb15a6e627a9e4c">PACKED::Length</a></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<a class="anchor" id="ab1dbbcde88af6ced573913592b0528b0"></a><!-- doxytag: member="PACKED::PSA" ref="ab1dbbcde88af6ced573913592b0528b0" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint16 <a class="el" href="structPACKED.html#ab1dbbcde88af6ced573913592b0528b0">PACKED::PSA</a></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<hr/>The documentation for this struct was generated from the following file:<ul>
<li><a class="el" href="esc_8h.html">esc.h</a></li>
</ul>
</div>
<hr class="footer"/><address class="footer"><small>Generated on Wed Jul 10 2013 11:14:19 for SOES by&#160;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
</body>
</html>

View File

@ -0,0 +1,199 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>SOES: _COEentdesc Struct Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<!-- Generated by Doxygen 1.7.4 -->
<div id="top">
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">SOES&#160;<span id="projectnumber">v1.0.0</span></div>
</td>
</tr>
</tbody>
</table>
</div>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
<li><a href="functions.html"><span>Data&#160;Fields</span></a></li>
</ul>
</div>
</div>
<div class="header">
<div class="summary">
<a href="#pub-attribs">Data Fields</a> </div>
<div class="headertitle">
<div class="title">_COEentdesc Struct Reference</div> </div>
</div>
<div class="contents">
<!-- doxytag: class="_COEentdesc" -->
<p><code>#include &lt;esc.h&gt;</code></p>
<table class="memberdecls">
<tr><td colspan="2"><h2><a name="pub-attribs"></a>
Data Fields</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="struct__MBXh.html">_MBXh</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__COEentdesc.html#aa337554d4b84eafe48138c3b62a353a5">mbxheader</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="struct__COEh.html">_COEh</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__COEentdesc.html#ad707dc3d22f9446de009c086ec4c23a8">coeheader</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="struct__INFOh.html">_INFOh</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__COEentdesc.html#af9813d1d72c1953ab59b72ac8a64c882">infoheader</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">uint16&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__COEentdesc.html#a9926b99b1841e1b4fcc21c06afe911b5">index</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">uint8&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__COEentdesc.html#a02fa16ca34dfb22498daad91f60495ae">subindex</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">uint8&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__COEentdesc.html#a3f6fee236c37e4bc02c1856b09e0aad7">valueinfo</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">uint16&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__COEentdesc.html#ad36a95e3313048d2f557d44d7b52a440">datatype</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">uint16&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__COEentdesc.html#aa10554ede93edb58e1af4330d5946721">bitlength</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">uint16&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__COEentdesc.html#af16eefb3b0fa7b4528de598390e77c91">access</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">char&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__COEentdesc.html#ac226840dce511a98ab15cbf3cd709971">name</a></td></tr>
</table>
<hr/><h2>Field Documentation</h2>
<a class="anchor" id="af16eefb3b0fa7b4528de598390e77c91"></a><!-- doxytag: member="_COEentdesc::access" ref="af16eefb3b0fa7b4528de598390e77c91" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint16 <a class="el" href="struct__COEentdesc.html#af16eefb3b0fa7b4528de598390e77c91">_COEentdesc::access</a></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<a class="anchor" id="aa10554ede93edb58e1af4330d5946721"></a><!-- doxytag: member="_COEentdesc::bitlength" ref="aa10554ede93edb58e1af4330d5946721" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint16 <a class="el" href="struct__COEentdesc.html#aa10554ede93edb58e1af4330d5946721">_COEentdesc::bitlength</a></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<a class="anchor" id="ad707dc3d22f9446de009c086ec4c23a8"></a><!-- doxytag: member="_COEentdesc::coeheader" ref="ad707dc3d22f9446de009c086ec4c23a8" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="struct__COEh.html">_COEh</a> <a class="el" href="struct__COEentdesc.html#ad707dc3d22f9446de009c086ec4c23a8">_COEentdesc::coeheader</a></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<a class="anchor" id="ad36a95e3313048d2f557d44d7b52a440"></a><!-- doxytag: member="_COEentdesc::datatype" ref="ad36a95e3313048d2f557d44d7b52a440" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint16 <a class="el" href="struct__COEentdesc.html#ad36a95e3313048d2f557d44d7b52a440">_COEentdesc::datatype</a></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<a class="anchor" id="a9926b99b1841e1b4fcc21c06afe911b5"></a><!-- doxytag: member="_COEentdesc::index" ref="a9926b99b1841e1b4fcc21c06afe911b5" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint16 <a class="el" href="struct__COEentdesc.html#a9926b99b1841e1b4fcc21c06afe911b5">_COEentdesc::index</a></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<a class="anchor" id="af9813d1d72c1953ab59b72ac8a64c882"></a><!-- doxytag: member="_COEentdesc::infoheader" ref="af9813d1d72c1953ab59b72ac8a64c882" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="struct__INFOh.html">_INFOh</a> <a class="el" href="struct__COEentdesc.html#af9813d1d72c1953ab59b72ac8a64c882">_COEentdesc::infoheader</a></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<a class="anchor" id="aa337554d4b84eafe48138c3b62a353a5"></a><!-- doxytag: member="_COEentdesc::mbxheader" ref="aa337554d4b84eafe48138c3b62a353a5" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="struct__MBXh.html">_MBXh</a> <a class="el" href="struct__COEentdesc.html#aa337554d4b84eafe48138c3b62a353a5">_COEentdesc::mbxheader</a></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<a class="anchor" id="ac226840dce511a98ab15cbf3cd709971"></a><!-- doxytag: member="_COEentdesc::name" ref="ac226840dce511a98ab15cbf3cd709971" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">char <a class="el" href="struct__COEentdesc.html#ac226840dce511a98ab15cbf3cd709971">_COEentdesc::name</a></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<a class="anchor" id="a02fa16ca34dfb22498daad91f60495ae"></a><!-- doxytag: member="_COEentdesc::subindex" ref="a02fa16ca34dfb22498daad91f60495ae" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint8 <a class="el" href="struct__COEentdesc.html#a02fa16ca34dfb22498daad91f60495ae">_COEentdesc::subindex</a></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<a class="anchor" id="a3f6fee236c37e4bc02c1856b09e0aad7"></a><!-- doxytag: member="_COEentdesc::valueinfo" ref="a3f6fee236c37e4bc02c1856b09e0aad7" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint8 <a class="el" href="struct__COEentdesc.html#a3f6fee236c37e4bc02c1856b09e0aad7">_COEentdesc::valueinfo</a></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<hr/>The documentation for this struct was generated from the following file:<ul>
<li><a class="el" href="esc_8h.html">esc.h</a></li>
</ul>
</div>
<hr class="footer"/><address class="footer"><small>Generated on Wed Jul 10 2013 11:14:19 for SOES by&#160;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
</body>
</html>

View File

@ -0,0 +1,73 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>SOES: _COEh Struct Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<!-- Generated by Doxygen 1.7.4 -->
<div id="top">
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">SOES&#160;<span id="projectnumber">v1.0.0</span></div>
</td>
</tr>
</tbody>
</table>
</div>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
<li><a href="functions.html"><span>Data&#160;Fields</span></a></li>
</ul>
</div>
</div>
<div class="header">
<div class="summary">
<a href="#pub-attribs">Data Fields</a> </div>
<div class="headertitle">
<div class="title">_COEh Struct Reference</div> </div>
</div>
<div class="contents">
<!-- doxytag: class="_COEh" -->
<p><code>#include &lt;esc.h&gt;</code></p>
<table class="memberdecls">
<tr><td colspan="2"><h2><a name="pub-attribs"></a>
Data Fields</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">uint16&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__COEh.html#a3b1eba362f9485bb0d8f272ec54fcdf7">numberservice</a></td></tr>
</table>
<hr/><h2>Field Documentation</h2>
<a class="anchor" id="a3b1eba362f9485bb0d8f272ec54fcdf7"></a><!-- doxytag: member="_COEh::numberservice" ref="a3b1eba362f9485bb0d8f272ec54fcdf7" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint16 <a class="el" href="struct__COEh.html#a3b1eba362f9485bb0d8f272ec54fcdf7">_COEh::numberservice</a></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<hr/>The documentation for this struct was generated from the following file:<ul>
<li><a class="el" href="esc_8h.html">esc.h</a></li>
</ul>
</div>
<hr class="footer"/><address class="footer"><small>Generated on Wed Jul 10 2013 11:14:19 for SOES by&#160;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
</body>
</html>

View File

@ -0,0 +1,171 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>SOES: _COEobjdesc Struct Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<!-- Generated by Doxygen 1.7.4 -->
<div id="top">
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">SOES&#160;<span id="projectnumber">v1.0.0</span></div>
</td>
</tr>
</tbody>
</table>
</div>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
<li><a href="functions.html"><span>Data&#160;Fields</span></a></li>
</ul>
</div>
</div>
<div class="header">
<div class="summary">
<a href="#pub-attribs">Data Fields</a> </div>
<div class="headertitle">
<div class="title">_COEobjdesc Struct Reference</div> </div>
</div>
<div class="contents">
<!-- doxytag: class="_COEobjdesc" -->
<p><code>#include &lt;esc.h&gt;</code></p>
<table class="memberdecls">
<tr><td colspan="2"><h2><a name="pub-attribs"></a>
Data Fields</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="struct__MBXh.html">_MBXh</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__COEobjdesc.html#acb9f94d0452e85d91838a288d21f4637">mbxheader</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="struct__COEh.html">_COEh</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__COEobjdesc.html#a66f6811b85400c6e30e34a97e09c37cf">coeheader</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="struct__INFOh.html">_INFOh</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__COEobjdesc.html#a83f15bc450966195e9ceb793404ab6f9">infoheader</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">uint16&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__COEobjdesc.html#af155e3691e6ab01f08651f6577367862">index</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">uint16&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__COEobjdesc.html#afb3ab0cb93a5a6a272b5c3718d4dc787">datatype</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">uint8&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__COEobjdesc.html#aa3fe231eb5ebfa480c267574b830377c">maxsub</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">uint8&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__COEobjdesc.html#ab959145dfe36e0200f983457efcb9390">objectcode</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">char&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__COEobjdesc.html#a74ff339af6ac5bcfc189c17042f549ac">name</a></td></tr>
</table>
<hr/><h2>Field Documentation</h2>
<a class="anchor" id="a66f6811b85400c6e30e34a97e09c37cf"></a><!-- doxytag: member="_COEobjdesc::coeheader" ref="a66f6811b85400c6e30e34a97e09c37cf" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="struct__COEh.html">_COEh</a> <a class="el" href="struct__COEobjdesc.html#a66f6811b85400c6e30e34a97e09c37cf">_COEobjdesc::coeheader</a></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<a class="anchor" id="afb3ab0cb93a5a6a272b5c3718d4dc787"></a><!-- doxytag: member="_COEobjdesc::datatype" ref="afb3ab0cb93a5a6a272b5c3718d4dc787" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint16 <a class="el" href="struct__COEobjdesc.html#afb3ab0cb93a5a6a272b5c3718d4dc787">_COEobjdesc::datatype</a></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<a class="anchor" id="af155e3691e6ab01f08651f6577367862"></a><!-- doxytag: member="_COEobjdesc::index" ref="af155e3691e6ab01f08651f6577367862" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint16 <a class="el" href="struct__COEobjdesc.html#af155e3691e6ab01f08651f6577367862">_COEobjdesc::index</a></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<a class="anchor" id="a83f15bc450966195e9ceb793404ab6f9"></a><!-- doxytag: member="_COEobjdesc::infoheader" ref="a83f15bc450966195e9ceb793404ab6f9" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="struct__INFOh.html">_INFOh</a> <a class="el" href="struct__COEobjdesc.html#a83f15bc450966195e9ceb793404ab6f9">_COEobjdesc::infoheader</a></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<a class="anchor" id="aa3fe231eb5ebfa480c267574b830377c"></a><!-- doxytag: member="_COEobjdesc::maxsub" ref="aa3fe231eb5ebfa480c267574b830377c" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint8 <a class="el" href="struct__COEobjdesc.html#aa3fe231eb5ebfa480c267574b830377c">_COEobjdesc::maxsub</a></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<a class="anchor" id="acb9f94d0452e85d91838a288d21f4637"></a><!-- doxytag: member="_COEobjdesc::mbxheader" ref="acb9f94d0452e85d91838a288d21f4637" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="struct__MBXh.html">_MBXh</a> <a class="el" href="struct__COEobjdesc.html#acb9f94d0452e85d91838a288d21f4637">_COEobjdesc::mbxheader</a></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<a class="anchor" id="a74ff339af6ac5bcfc189c17042f549ac"></a><!-- doxytag: member="_COEobjdesc::name" ref="a74ff339af6ac5bcfc189c17042f549ac" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">char <a class="el" href="struct__COEobjdesc.html#a74ff339af6ac5bcfc189c17042f549ac">_COEobjdesc::name</a></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<a class="anchor" id="ab959145dfe36e0200f983457efcb9390"></a><!-- doxytag: member="_COEobjdesc::objectcode" ref="ab959145dfe36e0200f983457efcb9390" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint8 <a class="el" href="struct__COEobjdesc.html#ab959145dfe36e0200f983457efcb9390">_COEobjdesc::objectcode</a></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<hr/>The documentation for this struct was generated from the following file:<ul>
<li><a class="el" href="esc_8h.html">esc.h</a></li>
</ul>
</div>
<hr class="footer"/><address class="footer"><small>Generated on Wed Jul 10 2013 11:14:19 for SOES by&#160;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
</body>
</html>

View File

@ -0,0 +1,143 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>SOES: _COEsdo Struct Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<!-- Generated by Doxygen 1.7.4 -->
<div id="top">
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">SOES&#160;<span id="projectnumber">v1.0.0</span></div>
</td>
</tr>
</tbody>
</table>
</div>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
<li><a href="functions.html"><span>Data&#160;Fields</span></a></li>
</ul>
</div>
</div>
<div class="header">
<div class="summary">
<a href="#pub-attribs">Data Fields</a> </div>
<div class="headertitle">
<div class="title">_COEsdo Struct Reference</div> </div>
</div>
<div class="contents">
<!-- doxytag: class="_COEsdo" -->
<p><code>#include &lt;esc.h&gt;</code></p>
<table class="memberdecls">
<tr><td colspan="2"><h2><a name="pub-attribs"></a>
Data Fields</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="struct__MBXh.html">_MBXh</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__COEsdo.html#a781b8a2d1ace34e6f29c2c05dfa73c11">mbxheader</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="struct__COEh.html">_COEh</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__COEsdo.html#aca7fbf12670a85be7eee10c1a60d3708">coeheader</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">uint8&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__COEsdo.html#a9cb2e709d939cf28d7252ac82c2b76f0">command</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">uint16&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__COEsdo.html#ae9db28dca9457aba985e278572c892be">index</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">uint8&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__COEsdo.html#a683561582fc9dc08ca1ac60dd800a8ad">subindex</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">uint32&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__COEsdo.html#a68c400884b8968e2c74d95dce331ae1a">size</a></td></tr>
</table>
<hr/><h2>Field Documentation</h2>
<a class="anchor" id="aca7fbf12670a85be7eee10c1a60d3708"></a><!-- doxytag: member="_COEsdo::coeheader" ref="aca7fbf12670a85be7eee10c1a60d3708" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="struct__COEh.html">_COEh</a> <a class="el" href="struct__COEsdo.html#aca7fbf12670a85be7eee10c1a60d3708">_COEsdo::coeheader</a></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<a class="anchor" id="a9cb2e709d939cf28d7252ac82c2b76f0"></a><!-- doxytag: member="_COEsdo::command" ref="a9cb2e709d939cf28d7252ac82c2b76f0" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint8 <a class="el" href="struct__COEsdo.html#a9cb2e709d939cf28d7252ac82c2b76f0">_COEsdo::command</a></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<a class="anchor" id="ae9db28dca9457aba985e278572c892be"></a><!-- doxytag: member="_COEsdo::index" ref="ae9db28dca9457aba985e278572c892be" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint16 <a class="el" href="struct__COEsdo.html#ae9db28dca9457aba985e278572c892be">_COEsdo::index</a></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<a class="anchor" id="a781b8a2d1ace34e6f29c2c05dfa73c11"></a><!-- doxytag: member="_COEsdo::mbxheader" ref="a781b8a2d1ace34e6f29c2c05dfa73c11" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="struct__MBXh.html">_MBXh</a> <a class="el" href="struct__COEsdo.html#a781b8a2d1ace34e6f29c2c05dfa73c11">_COEsdo::mbxheader</a></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<a class="anchor" id="a68c400884b8968e2c74d95dce331ae1a"></a><!-- doxytag: member="_COEsdo::size" ref="a68c400884b8968e2c74d95dce331ae1a" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint32 <a class="el" href="struct__COEsdo.html#a68c400884b8968e2c74d95dce331ae1a">_COEsdo::size</a></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<a class="anchor" id="a683561582fc9dc08ca1ac60dd800a8ad"></a><!-- doxytag: member="_COEsdo::subindex" ref="a683561582fc9dc08ca1ac60dd800a8ad" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint8 <a class="el" href="struct__COEsdo.html#a683561582fc9dc08ca1ac60dd800a8ad">_COEsdo::subindex</a></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<hr/>The documentation for this struct was generated from the following file:<ul>
<li><a class="el" href="esc_8h.html">esc.h</a></li>
</ul>
</div>
<hr class="footer"/><address class="footer"><small>Generated on Wed Jul 10 2013 11:14:19 for SOES by&#160;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
</body>
</html>

View File

@ -0,0 +1,367 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>SOES: _ESCsm Struct Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<!-- Generated by Doxygen 1.7.4 -->
<div id="top">
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">SOES&#160;<span id="projectnumber">v1.0.0</span></div>
</td>
</tr>
</tbody>
</table>
</div>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
<li><a href="functions.html"><span>Data&#160;Fields</span></a></li>
</ul>
</div>
</div>
<div class="header">
<div class="summary">
<a href="#pub-attribs">Data Fields</a> </div>
<div class="headertitle">
<div class="title">_ESCsm Struct Reference</div> </div>
</div>
<div class="contents">
<!-- doxytag: class="_ESCsm" -->
<p><code>#include &lt;esc.h&gt;</code></p>
<table class="memberdecls">
<tr><td colspan="2"><h2><a name="pub-attribs"></a>
Data Fields</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">uint16&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__ESCsm.html#a466f44438611c5197a7978acc9e68798">PSA</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">uint16&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__ESCsm.html#a8003bdc816a364e24a1693c018df3b47">Length</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">uint8&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__ESCsm.html#adf54b58f41c9d3113c458ae07fd6b56b">Mode</a>:2</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">uint8&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__ESCsm.html#a2a38260671e765535a7f8a8ffc675cf0">Direction</a>:2</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">uint8&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__ESCsm.html#a3bc7f8294dcbd0650efb22ec234b5cdd">IntECAT</a>:1</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">uint8&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__ESCsm.html#a86de443264b6c812505a7ff6461568e6">IntPDI</a>:1</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">uint8&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__ESCsm.html#a27b50f6e1266f5a5129ca0fab0242c87">WTE</a>:1</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">uint8&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__ESCsm.html#ac9aaf54c7f5ec7e092f8e216f48ecbb6">R1</a>:1</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">uint8&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__ESCsm.html#aa62cae92c924bcc63e17b80a0bb0926e">IntW</a>:1</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">uint8&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__ESCsm.html#a9f5f34ef5ae9949f6a4e0a90d08e395c">IntR</a>:1</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">uint8&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__ESCsm.html#a7a567624fd5b72fa3f81dd33fe47e779">R2</a>:1</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">uint8&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__ESCsm.html#a1ccc59aaae460d4b4c38ce0892b8094c">MBXstat</a>:1</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">uint8&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__ESCsm.html#aa401fcd22f75190996baf3f5d3849c52">BUFstat</a>:2</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">uint8&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__ESCsm.html#a51d65080a9c6065637cfb6d9eac0d27e">R3</a>:2</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">uint8&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__ESCsm.html#a52c170357a84cbecd4a6ca430becbb48">ECsm</a>:1</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">uint8&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__ESCsm.html#a19ae319008aaf0ff9bfbbb5750fbb071">ECrep</a>:1</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">uint8&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__ESCsm.html#a92579f435f0bcea436fcff6256c29271">ECr4</a>:4</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">uint8&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__ESCsm.html#a1142ddd67c99114deaf4d615bad45225">EClatchEC</a>:1</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">uint8&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__ESCsm.html#ae764769deb71c654680c47812b81478b">EClatchPDI</a>:1</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">uint8&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__ESCsm.html#ab136105ac0c70a04be18a9bb815d9d80">PDIsm</a>:1</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">uint8&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__ESCsm.html#ac126f621094cdada5c410634f480fdb0">PDIrep</a>:1</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">uint8&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__ESCsm.html#a573bf09f39c49795ab0eae814e1a8b35">PDIr5</a>:6</td></tr>
</table>
<hr/><h2>Field Documentation</h2>
<a class="anchor" id="aa401fcd22f75190996baf3f5d3849c52"></a><!-- doxytag: member="_ESCsm::BUFstat" ref="aa401fcd22f75190996baf3f5d3849c52" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint8 <a class="el" href="struct__ESCsm.html#aa401fcd22f75190996baf3f5d3849c52">_ESCsm::BUFstat</a></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<a class="anchor" id="a2a38260671e765535a7f8a8ffc675cf0"></a><!-- doxytag: member="_ESCsm::Direction" ref="a2a38260671e765535a7f8a8ffc675cf0" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint8 <a class="el" href="struct__ESCsm.html#a2a38260671e765535a7f8a8ffc675cf0">_ESCsm::Direction</a></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<a class="anchor" id="a1142ddd67c99114deaf4d615bad45225"></a><!-- doxytag: member="_ESCsm::EClatchEC" ref="a1142ddd67c99114deaf4d615bad45225" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint8 <a class="el" href="struct__ESCsm.html#a1142ddd67c99114deaf4d615bad45225">_ESCsm::EClatchEC</a></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<a class="anchor" id="ae764769deb71c654680c47812b81478b"></a><!-- doxytag: member="_ESCsm::EClatchPDI" ref="ae764769deb71c654680c47812b81478b" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint8 <a class="el" href="struct__ESCsm.html#ae764769deb71c654680c47812b81478b">_ESCsm::EClatchPDI</a></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<a class="anchor" id="a92579f435f0bcea436fcff6256c29271"></a><!-- doxytag: member="_ESCsm::ECr4" ref="a92579f435f0bcea436fcff6256c29271" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint8 <a class="el" href="struct__ESCsm.html#a92579f435f0bcea436fcff6256c29271">_ESCsm::ECr4</a></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<a class="anchor" id="a19ae319008aaf0ff9bfbbb5750fbb071"></a><!-- doxytag: member="_ESCsm::ECrep" ref="a19ae319008aaf0ff9bfbbb5750fbb071" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint8 <a class="el" href="struct__ESCsm.html#a19ae319008aaf0ff9bfbbb5750fbb071">_ESCsm::ECrep</a></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<a class="anchor" id="a52c170357a84cbecd4a6ca430becbb48"></a><!-- doxytag: member="_ESCsm::ECsm" ref="a52c170357a84cbecd4a6ca430becbb48" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint8 <a class="el" href="struct__ESCsm.html#a52c170357a84cbecd4a6ca430becbb48">_ESCsm::ECsm</a></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<a class="anchor" id="a3bc7f8294dcbd0650efb22ec234b5cdd"></a><!-- doxytag: member="_ESCsm::IntECAT" ref="a3bc7f8294dcbd0650efb22ec234b5cdd" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint8 <a class="el" href="struct__ESCsm.html#a3bc7f8294dcbd0650efb22ec234b5cdd">_ESCsm::IntECAT</a></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<a class="anchor" id="a86de443264b6c812505a7ff6461568e6"></a><!-- doxytag: member="_ESCsm::IntPDI" ref="a86de443264b6c812505a7ff6461568e6" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint8 <a class="el" href="struct__ESCsm.html#a86de443264b6c812505a7ff6461568e6">_ESCsm::IntPDI</a></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<a class="anchor" id="a9f5f34ef5ae9949f6a4e0a90d08e395c"></a><!-- doxytag: member="_ESCsm::IntR" ref="a9f5f34ef5ae9949f6a4e0a90d08e395c" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint8 <a class="el" href="struct__ESCsm.html#a9f5f34ef5ae9949f6a4e0a90d08e395c">_ESCsm::IntR</a></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<a class="anchor" id="aa62cae92c924bcc63e17b80a0bb0926e"></a><!-- doxytag: member="_ESCsm::IntW" ref="aa62cae92c924bcc63e17b80a0bb0926e" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint8 <a class="el" href="struct__ESCsm.html#aa62cae92c924bcc63e17b80a0bb0926e">_ESCsm::IntW</a></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<a class="anchor" id="a8003bdc816a364e24a1693c018df3b47"></a><!-- doxytag: member="_ESCsm::Length" ref="a8003bdc816a364e24a1693c018df3b47" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint16 <a class="el" href="struct__ESCsm.html#a8003bdc816a364e24a1693c018df3b47">_ESCsm::Length</a></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<a class="anchor" id="a1ccc59aaae460d4b4c38ce0892b8094c"></a><!-- doxytag: member="_ESCsm::MBXstat" ref="a1ccc59aaae460d4b4c38ce0892b8094c" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint8 <a class="el" href="struct__ESCsm.html#a1ccc59aaae460d4b4c38ce0892b8094c">_ESCsm::MBXstat</a></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<a class="anchor" id="adf54b58f41c9d3113c458ae07fd6b56b"></a><!-- doxytag: member="_ESCsm::Mode" ref="adf54b58f41c9d3113c458ae07fd6b56b" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint8 <a class="el" href="struct__ESCsm.html#adf54b58f41c9d3113c458ae07fd6b56b">_ESCsm::Mode</a></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<a class="anchor" id="a573bf09f39c49795ab0eae814e1a8b35"></a><!-- doxytag: member="_ESCsm::PDIr5" ref="a573bf09f39c49795ab0eae814e1a8b35" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint8 <a class="el" href="struct__ESCsm.html#a573bf09f39c49795ab0eae814e1a8b35">_ESCsm::PDIr5</a></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<a class="anchor" id="ac126f621094cdada5c410634f480fdb0"></a><!-- doxytag: member="_ESCsm::PDIrep" ref="ac126f621094cdada5c410634f480fdb0" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint8 <a class="el" href="struct__ESCsm.html#ac126f621094cdada5c410634f480fdb0">_ESCsm::PDIrep</a></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<a class="anchor" id="ab136105ac0c70a04be18a9bb815d9d80"></a><!-- doxytag: member="_ESCsm::PDIsm" ref="ab136105ac0c70a04be18a9bb815d9d80" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint8 <a class="el" href="struct__ESCsm.html#ab136105ac0c70a04be18a9bb815d9d80">_ESCsm::PDIsm</a></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<a class="anchor" id="a466f44438611c5197a7978acc9e68798"></a><!-- doxytag: member="_ESCsm::PSA" ref="a466f44438611c5197a7978acc9e68798" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint16 <a class="el" href="struct__ESCsm.html#a466f44438611c5197a7978acc9e68798">_ESCsm::PSA</a></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<a class="anchor" id="ac9aaf54c7f5ec7e092f8e216f48ecbb6"></a><!-- doxytag: member="_ESCsm::R1" ref="ac9aaf54c7f5ec7e092f8e216f48ecbb6" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint8 <a class="el" href="struct__ESCsm.html#ac9aaf54c7f5ec7e092f8e216f48ecbb6">_ESCsm::R1</a></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<a class="anchor" id="a7a567624fd5b72fa3f81dd33fe47e779"></a><!-- doxytag: member="_ESCsm::R2" ref="a7a567624fd5b72fa3f81dd33fe47e779" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint8 <a class="el" href="struct__ESCsm.html#a7a567624fd5b72fa3f81dd33fe47e779">_ESCsm::R2</a></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<a class="anchor" id="a51d65080a9c6065637cfb6d9eac0d27e"></a><!-- doxytag: member="_ESCsm::R3" ref="a51d65080a9c6065637cfb6d9eac0d27e" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint8 <a class="el" href="struct__ESCsm.html#a51d65080a9c6065637cfb6d9eac0d27e">_ESCsm::R3</a></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<a class="anchor" id="a27b50f6e1266f5a5129ca0fab0242c87"></a><!-- doxytag: member="_ESCsm::WTE" ref="a27b50f6e1266f5a5129ca0fab0242c87" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint8 <a class="el" href="struct__ESCsm.html#a27b50f6e1266f5a5129ca0fab0242c87">_ESCsm::WTE</a></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<hr/>The documentation for this struct was generated from the following file:<ul>
<li><a class="el" href="esc_8h.html">esc.h</a></li>
</ul>
</div>
<hr class="footer"/><address class="footer"><small>Generated on Wed Jul 10 2013 11:14:19 for SOES by&#160;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
</body>
</html>

View File

@ -0,0 +1,143 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>SOES: _ESCsm2 Struct Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<!-- Generated by Doxygen 1.7.4 -->
<div id="top">
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">SOES&#160;<span id="projectnumber">v1.0.0</span></div>
</td>
</tr>
</tbody>
</table>
</div>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
<li><a href="functions.html"><span>Data&#160;Fields</span></a></li>
</ul>
</div>
</div>
<div class="header">
<div class="summary">
<a href="#pub-attribs">Data Fields</a> </div>
<div class="headertitle">
<div class="title">_ESCsm2 Struct Reference</div> </div>
</div>
<div class="contents">
<!-- doxytag: class="_ESCsm2" -->
<p><code>#include &lt;esc.h&gt;</code></p>
<table class="memberdecls">
<tr><td colspan="2"><h2><a name="pub-attribs"></a>
Data Fields</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">uint16&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__ESCsm2.html#a18727ed17b2fe927ba964944566ae8da">PSA</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">uint16&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__ESCsm2.html#a7cc427908eb382b7e03ea5ee084f9ee0">Length</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">uint8&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__ESCsm2.html#a094841d390369ac83198e749a2e1e516">Command</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">uint8&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__ESCsm2.html#a645052f703a7c5de791dfd3b33713030">Status</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">uint8&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__ESCsm2.html#a8e5f56f83d43ba8a5ca4f469600fe691">ActESC</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">uint8&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__ESCsm2.html#aa68da3b0d48988b2b1aab05eae62f1ca">ActPDI</a></td></tr>
</table>
<hr/><h2>Field Documentation</h2>
<a class="anchor" id="a8e5f56f83d43ba8a5ca4f469600fe691"></a><!-- doxytag: member="_ESCsm2::ActESC" ref="a8e5f56f83d43ba8a5ca4f469600fe691" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint8 <a class="el" href="struct__ESCsm2.html#a8e5f56f83d43ba8a5ca4f469600fe691">_ESCsm2::ActESC</a></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<a class="anchor" id="aa68da3b0d48988b2b1aab05eae62f1ca"></a><!-- doxytag: member="_ESCsm2::ActPDI" ref="aa68da3b0d48988b2b1aab05eae62f1ca" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint8 <a class="el" href="struct__ESCsm2.html#aa68da3b0d48988b2b1aab05eae62f1ca">_ESCsm2::ActPDI</a></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<a class="anchor" id="a094841d390369ac83198e749a2e1e516"></a><!-- doxytag: member="_ESCsm2::Command" ref="a094841d390369ac83198e749a2e1e516" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint8 <a class="el" href="struct__ESCsm2.html#a094841d390369ac83198e749a2e1e516">_ESCsm2::Command</a></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<a class="anchor" id="a7cc427908eb382b7e03ea5ee084f9ee0"></a><!-- doxytag: member="_ESCsm2::Length" ref="a7cc427908eb382b7e03ea5ee084f9ee0" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint16 <a class="el" href="struct__ESCsm2.html#a7cc427908eb382b7e03ea5ee084f9ee0">_ESCsm2::Length</a></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<a class="anchor" id="a18727ed17b2fe927ba964944566ae8da"></a><!-- doxytag: member="_ESCsm2::PSA" ref="a18727ed17b2fe927ba964944566ae8da" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint16 <a class="el" href="struct__ESCsm2.html#a18727ed17b2fe927ba964944566ae8da">_ESCsm2::PSA</a></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<a class="anchor" id="a645052f703a7c5de791dfd3b33713030"></a><!-- doxytag: member="_ESCsm2::Status" ref="a645052f703a7c5de791dfd3b33713030" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint8 <a class="el" href="struct__ESCsm2.html#a645052f703a7c5de791dfd3b33713030">_ESCsm2::Status</a></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<hr/>The documentation for this struct was generated from the following file:<ul>
<li><a class="el" href="esc_8h.html">esc.h</a></li>
</ul>
</div>
<hr class="footer"/><address class="footer"><small>Generated on Wed Jul 10 2013 11:14:19 for SOES by&#160;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
</body>
</html>

View File

@ -0,0 +1,437 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>SOES: _ESCvar Struct Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<!-- Generated by Doxygen 1.7.4 -->
<div id="top">
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">SOES&#160;<span id="projectnumber">v1.0.0</span></div>
</td>
</tr>
</tbody>
</table>
</div>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
<li><a href="functions.html"><span>Data&#160;Fields</span></a></li>
</ul>
</div>
</div>
<div class="header">
<div class="summary">
<a href="#pub-attribs">Data Fields</a> </div>
<div class="headertitle">
<div class="title">_ESCvar Struct Reference</div> </div>
</div>
<div class="contents">
<!-- doxytag: class="_ESCvar" -->
<p><code>#include &lt;esc.h&gt;</code></p>
<table class="memberdecls">
<tr><td colspan="2"><h2><a name="pub-attribs"></a>
Data Fields</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">uint16&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__ESCvar.html#a447ec4716c0a1139f9987ea6df3ae364">ALevent</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">uint16&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__ESCvar.html#acd205a5c7f82b724686f0794f06a12cd">ALstatus</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">uint16&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__ESCvar.html#a8c4b2abcdb5a0fecffe1cc2b15fef233">ALcontrol</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">uint16&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__ESCvar.html#ac54d4be6bca396a4df60139b8bf3cf8f">ALerror</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">uint16&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__ESCvar.html#aa8a709bebf153046f21e9731a7bf4061">DLstatus</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">uint16&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__ESCvar.html#a29b5e7d971f4219fb68790ed99796542">address</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">uint8&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__ESCvar.html#a4e5f68587ca73c4a039e30a91df956c3">mbxcnt</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">uint8&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__ESCvar.html#a17ba68cd90eebc3488193b984045a096">mbxincnt</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">uint8&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__ESCvar.html#ac0edd9d5ced367abbb4b6104aa36858e">mbxoutpost</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">uint8&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__ESCvar.html#acc6e1182b67f7ffa0f1f17981da7f6b1">mbxbackup</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">uint8&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__ESCvar.html#a8925acf2e71f6e04d423dd1a6a18ab03">xoe</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">uint8&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__ESCvar.html#aa5287d8f17145114fd1fdc9cbda0d399">txcue</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">uint8&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__ESCvar.html#a3640c80a3c60af326bcda0163bdb4012">mbxfree</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">uint8&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__ESCvar.html#a43ff8dcfc5b893e89aeca5515b7e31fd">segmented</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__ESCvar.html#a4b079cc77d95616d46207f4df8b0b8ab">data</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">uint16&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__ESCvar.html#a8870109e8d4762523c68d1abe6aed98b">entries</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">uint16&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__ESCvar.html#a740f00899fd371583c689f9d12dcea1d">frags</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">uint16&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__ESCvar.html#a1c75b6f18f34e0c775346732333ede41">fragsleft</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">uint8&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__ESCvar.html#a58137c85242f763855c28d4a1c991e9b">r1</a>:1</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">uint8&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__ESCvar.html#a8d3a4784b75a09867be316c5a65a9df1">toggle</a>:1</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">uint8&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__ESCvar.html#ad03e09bb5ff9649cbfd633c34b35770d">r2</a>:6</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">uint8&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__ESCvar.html#aa62c9ece342bdbe02aedd8d533689702">SMtestresult</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int16&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__ESCvar.html#a5ab78b00bc4d17491b1917e5b26147fa">temp</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">uint16&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__ESCvar.html#a3a67a2c7ed5f9ecb4457adce98377e57">wdcnt</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">uint32&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__ESCvar.html#a7242f87f3dd71be3e13f1167f3697641">PrevTime</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">uint32&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__ESCvar.html#ac435e669f2d950b9c8ba9d5599dc87e6">Time</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="struct__ESCsm.html">_ESCsm</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__ESCvar.html#aa0440fbb03b39c75a89c7cbe2138542e">SM</a> [4]</td></tr>
</table>
<hr/><h2>Field Documentation</h2>
<a class="anchor" id="a29b5e7d971f4219fb68790ed99796542"></a><!-- doxytag: member="_ESCvar::address" ref="a29b5e7d971f4219fb68790ed99796542" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint16 <a class="el" href="struct__ESCvar.html#a29b5e7d971f4219fb68790ed99796542">_ESCvar::address</a></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<a class="anchor" id="a8c4b2abcdb5a0fecffe1cc2b15fef233"></a><!-- doxytag: member="_ESCvar::ALcontrol" ref="a8c4b2abcdb5a0fecffe1cc2b15fef233" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint16 <a class="el" href="struct__ESCvar.html#a8c4b2abcdb5a0fecffe1cc2b15fef233">_ESCvar::ALcontrol</a></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<a class="anchor" id="ac54d4be6bca396a4df60139b8bf3cf8f"></a><!-- doxytag: member="_ESCvar::ALerror" ref="ac54d4be6bca396a4df60139b8bf3cf8f" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint16 <a class="el" href="struct__ESCvar.html#ac54d4be6bca396a4df60139b8bf3cf8f">_ESCvar::ALerror</a></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<a class="anchor" id="a447ec4716c0a1139f9987ea6df3ae364"></a><!-- doxytag: member="_ESCvar::ALevent" ref="a447ec4716c0a1139f9987ea6df3ae364" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint16 <a class="el" href="struct__ESCvar.html#a447ec4716c0a1139f9987ea6df3ae364">_ESCvar::ALevent</a></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<a class="anchor" id="acd205a5c7f82b724686f0794f06a12cd"></a><!-- doxytag: member="_ESCvar::ALstatus" ref="acd205a5c7f82b724686f0794f06a12cd" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint16 <a class="el" href="struct__ESCvar.html#acd205a5c7f82b724686f0794f06a12cd">_ESCvar::ALstatus</a></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<a class="anchor" id="a4b079cc77d95616d46207f4df8b0b8ab"></a><!-- doxytag: member="_ESCvar::data" ref="a4b079cc77d95616d46207f4df8b0b8ab" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void* <a class="el" href="struct__ESCvar.html#a4b079cc77d95616d46207f4df8b0b8ab">_ESCvar::data</a></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<a class="anchor" id="aa8a709bebf153046f21e9731a7bf4061"></a><!-- doxytag: member="_ESCvar::DLstatus" ref="aa8a709bebf153046f21e9731a7bf4061" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint16 <a class="el" href="struct__ESCvar.html#aa8a709bebf153046f21e9731a7bf4061">_ESCvar::DLstatus</a></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<a class="anchor" id="a8870109e8d4762523c68d1abe6aed98b"></a><!-- doxytag: member="_ESCvar::entries" ref="a8870109e8d4762523c68d1abe6aed98b" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint16 <a class="el" href="struct__ESCvar.html#a8870109e8d4762523c68d1abe6aed98b">_ESCvar::entries</a></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<a class="anchor" id="a740f00899fd371583c689f9d12dcea1d"></a><!-- doxytag: member="_ESCvar::frags" ref="a740f00899fd371583c689f9d12dcea1d" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint16 <a class="el" href="struct__ESCvar.html#a740f00899fd371583c689f9d12dcea1d">_ESCvar::frags</a></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<a class="anchor" id="a1c75b6f18f34e0c775346732333ede41"></a><!-- doxytag: member="_ESCvar::fragsleft" ref="a1c75b6f18f34e0c775346732333ede41" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint16 <a class="el" href="struct__ESCvar.html#a1c75b6f18f34e0c775346732333ede41">_ESCvar::fragsleft</a></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<a class="anchor" id="acc6e1182b67f7ffa0f1f17981da7f6b1"></a><!-- doxytag: member="_ESCvar::mbxbackup" ref="acc6e1182b67f7ffa0f1f17981da7f6b1" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint8 <a class="el" href="struct__ESCvar.html#acc6e1182b67f7ffa0f1f17981da7f6b1">_ESCvar::mbxbackup</a></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<a class="anchor" id="a4e5f68587ca73c4a039e30a91df956c3"></a><!-- doxytag: member="_ESCvar::mbxcnt" ref="a4e5f68587ca73c4a039e30a91df956c3" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint8 <a class="el" href="struct__ESCvar.html#a4e5f68587ca73c4a039e30a91df956c3">_ESCvar::mbxcnt</a></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<a class="anchor" id="a3640c80a3c60af326bcda0163bdb4012"></a><!-- doxytag: member="_ESCvar::mbxfree" ref="a3640c80a3c60af326bcda0163bdb4012" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint8 <a class="el" href="struct__ESCvar.html#a3640c80a3c60af326bcda0163bdb4012">_ESCvar::mbxfree</a></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<a class="anchor" id="a17ba68cd90eebc3488193b984045a096"></a><!-- doxytag: member="_ESCvar::mbxincnt" ref="a17ba68cd90eebc3488193b984045a096" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint8 <a class="el" href="struct__ESCvar.html#a17ba68cd90eebc3488193b984045a096">_ESCvar::mbxincnt</a></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<a class="anchor" id="ac0edd9d5ced367abbb4b6104aa36858e"></a><!-- doxytag: member="_ESCvar::mbxoutpost" ref="ac0edd9d5ced367abbb4b6104aa36858e" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint8 <a class="el" href="struct__ESCvar.html#ac0edd9d5ced367abbb4b6104aa36858e">_ESCvar::mbxoutpost</a></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<a class="anchor" id="a7242f87f3dd71be3e13f1167f3697641"></a><!-- doxytag: member="_ESCvar::PrevTime" ref="a7242f87f3dd71be3e13f1167f3697641" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint32 <a class="el" href="struct__ESCvar.html#a7242f87f3dd71be3e13f1167f3697641">_ESCvar::PrevTime</a></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<a class="anchor" id="a58137c85242f763855c28d4a1c991e9b"></a><!-- doxytag: member="_ESCvar::r1" ref="a58137c85242f763855c28d4a1c991e9b" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint8 <a class="el" href="struct__ESCvar.html#a58137c85242f763855c28d4a1c991e9b">_ESCvar::r1</a></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<a class="anchor" id="ad03e09bb5ff9649cbfd633c34b35770d"></a><!-- doxytag: member="_ESCvar::r2" ref="ad03e09bb5ff9649cbfd633c34b35770d" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint8 <a class="el" href="struct__ESCvar.html#ad03e09bb5ff9649cbfd633c34b35770d">_ESCvar::r2</a></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<a class="anchor" id="a43ff8dcfc5b893e89aeca5515b7e31fd"></a><!-- doxytag: member="_ESCvar::segmented" ref="a43ff8dcfc5b893e89aeca5515b7e31fd" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint8 <a class="el" href="struct__ESCvar.html#a43ff8dcfc5b893e89aeca5515b7e31fd">_ESCvar::segmented</a></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<a class="anchor" id="aa0440fbb03b39c75a89c7cbe2138542e"></a><!-- doxytag: member="_ESCvar::SM" ref="aa0440fbb03b39c75a89c7cbe2138542e" args="[4]" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="struct__ESCsm.html">_ESCsm</a> <a class="el" href="struct__ESCvar.html#aa0440fbb03b39c75a89c7cbe2138542e">_ESCvar::SM</a>[4]</td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<a class="anchor" id="aa62c9ece342bdbe02aedd8d533689702"></a><!-- doxytag: member="_ESCvar::SMtestresult" ref="aa62c9ece342bdbe02aedd8d533689702" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint8 <a class="el" href="struct__ESCvar.html#aa62c9ece342bdbe02aedd8d533689702">_ESCvar::SMtestresult</a></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<a class="anchor" id="a5ab78b00bc4d17491b1917e5b26147fa"></a><!-- doxytag: member="_ESCvar::temp" ref="a5ab78b00bc4d17491b1917e5b26147fa" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int16 <a class="el" href="struct__ESCvar.html#a5ab78b00bc4d17491b1917e5b26147fa">_ESCvar::temp</a></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<a class="anchor" id="ac435e669f2d950b9c8ba9d5599dc87e6"></a><!-- doxytag: member="_ESCvar::Time" ref="ac435e669f2d950b9c8ba9d5599dc87e6" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint32 <a class="el" href="struct__ESCvar.html#ac435e669f2d950b9c8ba9d5599dc87e6">_ESCvar::Time</a></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<a class="anchor" id="a8d3a4784b75a09867be316c5a65a9df1"></a><!-- doxytag: member="_ESCvar::toggle" ref="a8d3a4784b75a09867be316c5a65a9df1" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint8 <a class="el" href="struct__ESCvar.html#a8d3a4784b75a09867be316c5a65a9df1">_ESCvar::toggle</a></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<a class="anchor" id="aa5287d8f17145114fd1fdc9cbda0d399"></a><!-- doxytag: member="_ESCvar::txcue" ref="aa5287d8f17145114fd1fdc9cbda0d399" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint8 <a class="el" href="struct__ESCvar.html#aa5287d8f17145114fd1fdc9cbda0d399">_ESCvar::txcue</a></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<a class="anchor" id="a3a67a2c7ed5f9ecb4457adce98377e57"></a><!-- doxytag: member="_ESCvar::wdcnt" ref="a3a67a2c7ed5f9ecb4457adce98377e57" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint16 <a class="el" href="struct__ESCvar.html#a3a67a2c7ed5f9ecb4457adce98377e57">_ESCvar::wdcnt</a></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<a class="anchor" id="a8925acf2e71f6e04d423dd1a6a18ab03"></a><!-- doxytag: member="_ESCvar::xoe" ref="a8925acf2e71f6e04d423dd1a6a18ab03" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint8 <a class="el" href="struct__ESCvar.html#a8925acf2e71f6e04d423dd1a6a18ab03">_ESCvar::xoe</a></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<hr/>The documentation for this struct was generated from the following file:<ul>
<li><a class="el" href="esc_8h.html">esc.h</a></li>
</ul>
</div>
<hr class="footer"/><address class="footer"><small>Generated on Wed Jul 10 2013 11:14:19 for SOES by&#160;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
</body>
</html>

View File

@ -0,0 +1,144 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>SOES: _FOE Struct Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<!-- Generated by Doxygen 1.7.4 -->
<div id="top">
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">SOES&#160;<span id="projectnumber">v1.0.0</span></div>
</td>
</tr>
</tbody>
</table>
</div>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
<li><a href="functions.html"><span>Data&#160;Fields</span></a></li>
</ul>
</div>
</div>
<div class="header">
<div class="summary">
<a href="#pub-attribs">Data Fields</a> </div>
<div class="headertitle">
<div class="title">_FOE Struct Reference</div> </div>
</div>
<div class="contents">
<!-- doxytag: class="_FOE" -->
<p><code>#include &lt;esc.h&gt;</code></p>
<table class="memberdecls">
<tr><td colspan="2"><h2><a name="pub-attribs"></a>
Data Fields</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="struct__MBXh.html">_MBXh</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__FOE.html#afb56753679ee44f8aab71c3d3b4e9ce7">mbxheader</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="struct__FOEh.html">_FOEh</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__FOE.html#a92927f1dd9f2d1a0def047dad6f05291">foeheader</a></td></tr>
<tr><td class="memItemLeft" >union {</td></tr>
<tr><td class="memItemLeft" >&#160;&#160;&#160;char&#160;&#160;&#160;<a class="el" href="struct__FOE.html#a0195a23740d2c5eb13db325e425ef7fb">filename</a> [FOE_DATA_SIZE]</td></tr>
<tr><td class="memItemLeft" >&#160;&#160;&#160;uint8&#160;&#160;&#160;<a class="el" href="struct__FOE.html#a29b0e7414e530d96d00f520509eac062">data</a> [FOE_DATA_SIZE]</td></tr>
<tr><td class="memItemLeft" >&#160;&#160;&#160;char&#160;&#160;&#160;<a class="el" href="struct__FOE.html#a2b075dac0e654173a8a176ca66b994e5">errortext</a> [FOE_DATA_SIZE]</td></tr>
<tr><td class="memItemLeft" valign="top">};&#160;</td><td class="memItemRight" valign="bottom"></td></tr>
</table>
<hr/><h2>Field Documentation</h2>
<a class="anchor" id="a8fa09968719057c3d9c9db5730ce1b61"></a><!-- doxytag: member="_FOE::@3" ref="a8fa09968719057c3d9c9db5730ce1b61" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">union { ... } </td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<a class="anchor" id="a29b0e7414e530d96d00f520509eac062"></a><!-- doxytag: member="_FOE::data" ref="a29b0e7414e530d96d00f520509eac062" args="[FOE_DATA_SIZE]" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint8 <a class="el" href="struct__FOE.html#a29b0e7414e530d96d00f520509eac062">_FOE::data</a>[FOE_DATA_SIZE]</td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<a class="anchor" id="a2b075dac0e654173a8a176ca66b994e5"></a><!-- doxytag: member="_FOE::errortext" ref="a2b075dac0e654173a8a176ca66b994e5" args="[FOE_DATA_SIZE]" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">char <a class="el" href="struct__FOE.html#a2b075dac0e654173a8a176ca66b994e5">_FOE::errortext</a>[FOE_DATA_SIZE]</td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<a class="anchor" id="a0195a23740d2c5eb13db325e425ef7fb"></a><!-- doxytag: member="_FOE::filename" ref="a0195a23740d2c5eb13db325e425ef7fb" args="[FOE_DATA_SIZE]" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">char <a class="el" href="struct__FOE.html#a0195a23740d2c5eb13db325e425ef7fb">_FOE::filename</a>[FOE_DATA_SIZE]</td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<a class="anchor" id="a92927f1dd9f2d1a0def047dad6f05291"></a><!-- doxytag: member="_FOE::foeheader" ref="a92927f1dd9f2d1a0def047dad6f05291" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="struct__FOEh.html">_FOEh</a> <a class="el" href="struct__FOE.html#a92927f1dd9f2d1a0def047dad6f05291">_FOE::foeheader</a></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<a class="anchor" id="afb56753679ee44f8aab71c3d3b4e9ce7"></a><!-- doxytag: member="_FOE::mbxheader" ref="afb56753679ee44f8aab71c3d3b4e9ce7" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="struct__MBXh.html">_MBXh</a> <a class="el" href="struct__FOE.html#afb56753679ee44f8aab71c3d3b4e9ce7">_FOE::mbxheader</a></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<hr/>The documentation for this struct was generated from the following file:<ul>
<li><a class="el" href="esc_8h.html">esc.h</a></li>
</ul>
</div>
<hr class="footer"/><address class="footer"><small>Generated on Wed Jul 10 2013 11:14:19 for SOES by&#160;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
</body>
</html>

View File

@ -0,0 +1,144 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>SOES: _FOEh Struct Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<!-- Generated by Doxygen 1.7.4 -->
<div id="top">
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">SOES&#160;<span id="projectnumber">v1.0.0</span></div>
</td>
</tr>
</tbody>
</table>
</div>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
<li><a href="functions.html"><span>Data&#160;Fields</span></a></li>
</ul>
</div>
</div>
<div class="header">
<div class="summary">
<a href="#pub-attribs">Data Fields</a> </div>
<div class="headertitle">
<div class="title">_FOEh Struct Reference</div> </div>
</div>
<div class="contents">
<!-- doxytag: class="_FOEh" -->
<p><code>#include &lt;esc.h&gt;</code></p>
<table class="memberdecls">
<tr><td colspan="2"><h2><a name="pub-attribs"></a>
Data Fields</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">uint8&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__FOEh.html#a1dc38d9fc4bd6bd202bbead6630471c6">opcode</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">uint8&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__FOEh.html#aba457a6ff296584bb71fb1d65c2c568b">reserved</a></td></tr>
<tr><td class="memItemLeft" >union {</td></tr>
<tr><td class="memItemLeft" >&#160;&#160;&#160;uint32&#160;&#160;&#160;<a class="el" href="struct__FOEh.html#a7ac59232250f163ba21a99e1b7066752">password</a></td></tr>
<tr><td class="memItemLeft" >&#160;&#160;&#160;uint32&#160;&#160;&#160;<a class="el" href="struct__FOEh.html#ae885a18138ceeb3eaef109d13c836f06">packetnumber</a></td></tr>
<tr><td class="memItemLeft" >&#160;&#160;&#160;uint32&#160;&#160;&#160;<a class="el" href="struct__FOEh.html#a09f68c2b2186cc69c29cdf5992123d04">errorcode</a></td></tr>
<tr><td class="memItemLeft" valign="top">};&#160;</td><td class="memItemRight" valign="bottom"></td></tr>
</table>
<hr/><h2>Field Documentation</h2>
<a class="anchor" id="a0fb68ba185403c212fe34034a82dd026"></a><!-- doxytag: member="_FOEh::@1" ref="a0fb68ba185403c212fe34034a82dd026" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">union { ... } </td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<a class="anchor" id="a09f68c2b2186cc69c29cdf5992123d04"></a><!-- doxytag: member="_FOEh::errorcode" ref="a09f68c2b2186cc69c29cdf5992123d04" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint32 <a class="el" href="struct__FOEh.html#a09f68c2b2186cc69c29cdf5992123d04">_FOEh::errorcode</a></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<a class="anchor" id="a1dc38d9fc4bd6bd202bbead6630471c6"></a><!-- doxytag: member="_FOEh::opcode" ref="a1dc38d9fc4bd6bd202bbead6630471c6" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint8 <a class="el" href="struct__FOEh.html#a1dc38d9fc4bd6bd202bbead6630471c6">_FOEh::opcode</a></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<a class="anchor" id="ae885a18138ceeb3eaef109d13c836f06"></a><!-- doxytag: member="_FOEh::packetnumber" ref="ae885a18138ceeb3eaef109d13c836f06" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint32 <a class="el" href="struct__FOEh.html#ae885a18138ceeb3eaef109d13c836f06">_FOEh::packetnumber</a></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<a class="anchor" id="a7ac59232250f163ba21a99e1b7066752"></a><!-- doxytag: member="_FOEh::password" ref="a7ac59232250f163ba21a99e1b7066752" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint32 <a class="el" href="struct__FOEh.html#a7ac59232250f163ba21a99e1b7066752">_FOEh::password</a></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<a class="anchor" id="aba457a6ff296584bb71fb1d65c2c568b"></a><!-- doxytag: member="_FOEh::reserved" ref="aba457a6ff296584bb71fb1d65c2c568b" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint8 <a class="el" href="struct__FOEh.html#aba457a6ff296584bb71fb1d65c2c568b">_FOEh::reserved</a></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<hr/>The documentation for this struct was generated from the following file:<ul>
<li><a class="el" href="esc_8h.html">esc.h</a></li>
</ul>
</div>
<hr class="footer"/><address class="footer"><small>Generated on Wed Jul 10 2013 11:14:19 for SOES by&#160;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
</body>
</html>

View File

@ -0,0 +1,149 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>SOES: _FOEvar Struct Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<!-- Generated by Doxygen 1.7.4 -->
<div id="top">
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">SOES&#160;<span id="projectnumber">v1.0.0</span></div>
</td>
</tr>
</tbody>
</table>
</div>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
<li><a href="functions.html"><span>Data&#160;Fields</span></a></li>
</ul>
</div>
</div>
<div class="header">
<div class="summary">
<a href="#pub-attribs">Data Fields</a> </div>
<div class="headertitle">
<div class="title">_FOEvar Struct Reference</div> </div>
</div>
<div class="contents">
<!-- doxytag: class="_FOEvar" -->
<p><code>#include &lt;esc_foe.h&gt;</code></p>
<table class="memberdecls">
<tr><td colspan="2"><h2><a name="pub-attribs"></a>
Data Fields</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">uint8&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__FOEvar.html#a7cd8b5dd833995750c1494a12a4d356b">foestate</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">uint16&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__FOEvar.html#a93424b33ce821e832e87e9def6110b80">fbufposition</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">uint32&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__FOEvar.html#a3cf8f0410e145df74477abffd247fe1c">foepacket</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">uint32&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__FOEvar.html#aecd38c519340765cb3ccd29f09df0a0d">fposition</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">uint32&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__FOEvar.html#a35472bd493585a758e6b71405fe9ba17">fprevposition</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">uint32&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__FOEvar.html#ae8bc3908d8c6367c09e61f36608bfd6f">fend</a></td></tr>
</table>
<hr/><h2>Field Documentation</h2>
<a class="anchor" id="a93424b33ce821e832e87e9def6110b80"></a><!-- doxytag: member="_FOEvar::fbufposition" ref="a93424b33ce821e832e87e9def6110b80" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint16 <a class="el" href="struct__FOEvar.html#a93424b33ce821e832e87e9def6110b80">_FOEvar::fbufposition</a></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Current file buffer position, evaluated against foe file buffer size when to flush </p>
</div>
</div>
<a class="anchor" id="ae8bc3908d8c6367c09e61f36608bfd6f"></a><!-- doxytag: member="_FOEvar::fend" ref="ae8bc3908d8c6367c09e61f36608bfd6f" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint32 <a class="el" href="struct__FOEvar.html#ae8bc3908d8c6367c09e61f36608bfd6f">_FOEvar::fend</a></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>End position of allocated disk space for FoE requested file </p>
</div>
</div>
<a class="anchor" id="a3cf8f0410e145df74477abffd247fe1c"></a><!-- doxytag: member="_FOEvar::foepacket" ref="a3cf8f0410e145df74477abffd247fe1c" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint32 <a class="el" href="struct__FOEvar.html#a3cf8f0410e145df74477abffd247fe1c">_FOEvar::foepacket</a></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Frame number in read or write sequence </p>
</div>
</div>
<a class="anchor" id="a7cd8b5dd833995750c1494a12a4d356b"></a><!-- doxytag: member="_FOEvar::foestate" ref="a7cd8b5dd833995750c1494a12a4d356b" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint8 <a class="el" href="struct__FOEvar.html#a7cd8b5dd833995750c1494a12a4d356b">_FOEvar::foestate</a></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Current FoE state, ex. Waiting for ACK, Waiting for DATA </p>
</div>
</div>
<a class="anchor" id="aecd38c519340765cb3ccd29f09df0a0d"></a><!-- doxytag: member="_FOEvar::fposition" ref="aecd38c519340765cb3ccd29f09df0a0d" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint32 <a class="el" href="struct__FOEvar.html#aecd38c519340765cb3ccd29f09df0a0d">_FOEvar::fposition</a></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Current position in file to be handled by FoE request </p>
</div>
</div>
<a class="anchor" id="a35472bd493585a758e6b71405fe9ba17"></a><!-- doxytag: member="_FOEvar::fprevposition" ref="a35472bd493585a758e6b71405fe9ba17" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint32 <a class="el" href="struct__FOEvar.html#a35472bd493585a758e6b71405fe9ba17">_FOEvar::fprevposition</a></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Previous position in file to be handled by FoE request </p>
</div>
</div>
<hr/>The documentation for this struct was generated from the following file:<ul>
<li><a class="el" href="esc__foe_8h.html">esc_foe.h</a></li>
</ul>
</div>
<hr class="footer"/><address class="footer"><small>Generated on Wed Jul 10 2013 11:14:19 for SOES by&#160;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
</body>
</html>

View File

@ -0,0 +1,115 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>SOES: _INFOh Struct Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<!-- Generated by Doxygen 1.7.4 -->
<div id="top">
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">SOES&#160;<span id="projectnumber">v1.0.0</span></div>
</td>
</tr>
</tbody>
</table>
</div>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
<li><a href="functions.html"><span>Data&#160;Fields</span></a></li>
</ul>
</div>
</div>
<div class="header">
<div class="summary">
<a href="#pub-attribs">Data Fields</a> </div>
<div class="headertitle">
<div class="title">_INFOh Struct Reference</div> </div>
</div>
<div class="contents">
<!-- doxytag: class="_INFOh" -->
<p><code>#include &lt;esc.h&gt;</code></p>
<table class="memberdecls">
<tr><td colspan="2"><h2><a name="pub-attribs"></a>
Data Fields</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">uint8&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__INFOh.html#ac582a27132709f715ce942146281898f">opcode</a>:7</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">uint8&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__INFOh.html#af5172750f2a16371a7c79b37fc241171">incomplete</a>:1</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">uint8&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__INFOh.html#a0fc05ec7d78bea0aa31e96527e97fe78">reserved</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">uint16&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__INFOh.html#a8e6f96bce98babed33ee909d3f9fa434">fragmentsleft</a></td></tr>
</table>
<hr/><h2>Field Documentation</h2>
<a class="anchor" id="a8e6f96bce98babed33ee909d3f9fa434"></a><!-- doxytag: member="_INFOh::fragmentsleft" ref="a8e6f96bce98babed33ee909d3f9fa434" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint16 <a class="el" href="struct__INFOh.html#a8e6f96bce98babed33ee909d3f9fa434">_INFOh::fragmentsleft</a></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<a class="anchor" id="af5172750f2a16371a7c79b37fc241171"></a><!-- doxytag: member="_INFOh::incomplete" ref="af5172750f2a16371a7c79b37fc241171" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint8 <a class="el" href="struct__INFOh.html#af5172750f2a16371a7c79b37fc241171">_INFOh::incomplete</a></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<a class="anchor" id="ac582a27132709f715ce942146281898f"></a><!-- doxytag: member="_INFOh::opcode" ref="ac582a27132709f715ce942146281898f" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint8 <a class="el" href="struct__INFOh.html#ac582a27132709f715ce942146281898f">_INFOh::opcode</a></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<a class="anchor" id="a0fc05ec7d78bea0aa31e96527e97fe78"></a><!-- doxytag: member="_INFOh::reserved" ref="a0fc05ec7d78bea0aa31e96527e97fe78" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint8 <a class="el" href="struct__INFOh.html#a0fc05ec7d78bea0aa31e96527e97fe78">_INFOh::reserved</a></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<hr/>The documentation for this struct was generated from the following file:<ul>
<li><a class="el" href="esc_8h.html">esc.h</a></li>
</ul>
</div>
<hr class="footer"/><address class="footer"><small>Generated on Wed Jul 10 2013 11:14:19 for SOES by&#160;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
</body>
</html>

View File

@ -0,0 +1,87 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>SOES: _MBX Struct Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<!-- Generated by Doxygen 1.7.4 -->
<div id="top">
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">SOES&#160;<span id="projectnumber">v1.0.0</span></div>
</td>
</tr>
</tbody>
</table>
</div>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
<li><a href="functions.html"><span>Data&#160;Fields</span></a></li>
</ul>
</div>
</div>
<div class="header">
<div class="summary">
<a href="#pub-attribs">Data Fields</a> </div>
<div class="headertitle">
<div class="title">_MBX Struct Reference</div> </div>
</div>
<div class="contents">
<!-- doxytag: class="_MBX" -->
<p><code>#include &lt;esc.h&gt;</code></p>
<table class="memberdecls">
<tr><td colspan="2"><h2><a name="pub-attribs"></a>
Data Fields</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="struct__MBXh.html">_MBXh</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__MBX.html#a92da7ab0e40ad17537bbc3c65200e19e">header</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">uint8&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__MBX.html#a95c59a2b4fb554921b248c1d71650ae9">b</a> [MBXDSIZE]</td></tr>
</table>
<hr/><h2>Field Documentation</h2>
<a class="anchor" id="a95c59a2b4fb554921b248c1d71650ae9"></a><!-- doxytag: member="_MBX::b" ref="a95c59a2b4fb554921b248c1d71650ae9" args="[MBXDSIZE]" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint8 <a class="el" href="struct__MBX.html#a95c59a2b4fb554921b248c1d71650ae9">_MBX::b</a>[MBXDSIZE]</td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<a class="anchor" id="a92da7ab0e40ad17537bbc3c65200e19e"></a><!-- doxytag: member="_MBX::header" ref="a92da7ab0e40ad17537bbc3c65200e19e" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="struct__MBXh.html">_MBXh</a> <a class="el" href="struct__MBX.html#a92da7ab0e40ad17537bbc3c65200e19e">_MBX::header</a></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<hr/>The documentation for this struct was generated from the following file:<ul>
<li><a class="el" href="esc_8h.html">esc.h</a></li>
</ul>
</div>
<hr class="footer"/><address class="footer"><small>Generated on Wed Jul 10 2013 11:14:19 for SOES by&#160;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
</body>
</html>

View File

@ -0,0 +1,73 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>SOES: _MBXcontrol Struct Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<!-- Generated by Doxygen 1.7.4 -->
<div id="top">
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">SOES&#160;<span id="projectnumber">v1.0.0</span></div>
</td>
</tr>
</tbody>
</table>
</div>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
<li><a href="functions.html"><span>Data&#160;Fields</span></a></li>
</ul>
</div>
</div>
<div class="header">
<div class="summary">
<a href="#pub-attribs">Data Fields</a> </div>
<div class="headertitle">
<div class="title">_MBXcontrol Struct Reference</div> </div>
</div>
<div class="contents">
<!-- doxytag: class="_MBXcontrol" -->
<p><code>#include &lt;esc.h&gt;</code></p>
<table class="memberdecls">
<tr><td colspan="2"><h2><a name="pub-attribs"></a>
Data Fields</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">uint8&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__MBXcontrol.html#aaea88930e7b526c2edae1a5db4ad74af">state</a></td></tr>
</table>
<hr/><h2>Field Documentation</h2>
<a class="anchor" id="aaea88930e7b526c2edae1a5db4ad74af"></a><!-- doxytag: member="_MBXcontrol::state" ref="aaea88930e7b526c2edae1a5db4ad74af" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint8 <a class="el" href="struct__MBXcontrol.html#aaea88930e7b526c2edae1a5db4ad74af">_MBXcontrol::state</a></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<hr/>The documentation for this struct was generated from the following file:<ul>
<li><a class="el" href="esc_8h.html">esc.h</a></li>
</ul>
</div>
<hr class="footer"/><address class="footer"><small>Generated on Wed Jul 10 2013 11:14:19 for SOES by&#160;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
</body>
</html>

View File

@ -0,0 +1,101 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>SOES: _MBXerr Struct Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<!-- Generated by Doxygen 1.7.4 -->
<div id="top">
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">SOES&#160;<span id="projectnumber">v1.0.0</span></div>
</td>
</tr>
</tbody>
</table>
</div>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
<li><a href="functions.html"><span>Data&#160;Fields</span></a></li>
</ul>
</div>
</div>
<div class="header">
<div class="summary">
<a href="#pub-attribs">Data Fields</a> </div>
<div class="headertitle">
<div class="title">_MBXerr Struct Reference</div> </div>
</div>
<div class="contents">
<!-- doxytag: class="_MBXerr" -->
<p><code>#include &lt;esc.h&gt;</code></p>
<table class="memberdecls">
<tr><td colspan="2"><h2><a name="pub-attribs"></a>
Data Fields</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="struct__MBXh.html">_MBXh</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__MBXerr.html#a9e087b40669ee82d3e507d5278c1a579">mbxheader</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">uint16&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__MBXerr.html#a4a4fe590383e828172a8309c01de035f">type</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">uint16&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__MBXerr.html#a9dfeb42029bd1911d0520eaafa39077c">detail</a></td></tr>
</table>
<hr/><h2>Field Documentation</h2>
<a class="anchor" id="a9dfeb42029bd1911d0520eaafa39077c"></a><!-- doxytag: member="_MBXerr::detail" ref="a9dfeb42029bd1911d0520eaafa39077c" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint16 <a class="el" href="struct__MBXerr.html#a9dfeb42029bd1911d0520eaafa39077c">_MBXerr::detail</a></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<a class="anchor" id="a9e087b40669ee82d3e507d5278c1a579"></a><!-- doxytag: member="_MBXerr::mbxheader" ref="a9e087b40669ee82d3e507d5278c1a579" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="struct__MBXh.html">_MBXh</a> <a class="el" href="struct__MBXerr.html#a9e087b40669ee82d3e507d5278c1a579">_MBXerr::mbxheader</a></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<a class="anchor" id="a4a4fe590383e828172a8309c01de035f"></a><!-- doxytag: member="_MBXerr::type" ref="a4a4fe590383e828172a8309c01de035f" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint16 <a class="el" href="struct__MBXerr.html#a4a4fe590383e828172a8309c01de035f">_MBXerr::type</a></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<hr/>The documentation for this struct was generated from the following file:<ul>
<li><a class="el" href="esc_8h.html">esc.h</a></li>
</ul>
</div>
<hr class="footer"/><address class="footer"><small>Generated on Wed Jul 10 2013 11:14:19 for SOES by&#160;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
</body>
</html>

View File

@ -0,0 +1,143 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>SOES: _MBXh Struct Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<!-- Generated by Doxygen 1.7.4 -->
<div id="top">
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">SOES&#160;<span id="projectnumber">v1.0.0</span></div>
</td>
</tr>
</tbody>
</table>
</div>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
<li><a href="functions.html"><span>Data&#160;Fields</span></a></li>
</ul>
</div>
</div>
<div class="header">
<div class="summary">
<a href="#pub-attribs">Data Fields</a> </div>
<div class="headertitle">
<div class="title">_MBXh Struct Reference</div> </div>
</div>
<div class="contents">
<!-- doxytag: class="_MBXh" -->
<p><code>#include &lt;esc.h&gt;</code></p>
<table class="memberdecls">
<tr><td colspan="2"><h2><a name="pub-attribs"></a>
Data Fields</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">uint16&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__MBXh.html#a23fa0c0531f49f871f48fd5547374e7d">length</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">uint16&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__MBXh.html#aab4618ebf62f7308f2399c5c26c21f3c">address</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">uint8&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__MBXh.html#a47c1de4ebddd723048f518215820e943">channel</a>:6</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">uint8&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__MBXh.html#af9dbadeb7d90c0f4af33fda64f3c6b38">priority</a>:2</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">uint8&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__MBXh.html#a29fc7a797bf6596b371c65692c70cc10">mbxtype</a>:4</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">uint8&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__MBXh.html#a7f0d06da301a93a3d6b1e39dd2d603f1">mbxcnt</a>:4</td></tr>
</table>
<hr/><h2>Field Documentation</h2>
<a class="anchor" id="aab4618ebf62f7308f2399c5c26c21f3c"></a><!-- doxytag: member="_MBXh::address" ref="aab4618ebf62f7308f2399c5c26c21f3c" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint16 <a class="el" href="struct__MBXh.html#aab4618ebf62f7308f2399c5c26c21f3c">_MBXh::address</a></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<a class="anchor" id="a47c1de4ebddd723048f518215820e943"></a><!-- doxytag: member="_MBXh::channel" ref="a47c1de4ebddd723048f518215820e943" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint8 <a class="el" href="struct__MBXh.html#a47c1de4ebddd723048f518215820e943">_MBXh::channel</a></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<a class="anchor" id="a23fa0c0531f49f871f48fd5547374e7d"></a><!-- doxytag: member="_MBXh::length" ref="a23fa0c0531f49f871f48fd5547374e7d" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint16 <a class="el" href="struct__MBXh.html#a23fa0c0531f49f871f48fd5547374e7d">_MBXh::length</a></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<a class="anchor" id="a7f0d06da301a93a3d6b1e39dd2d603f1"></a><!-- doxytag: member="_MBXh::mbxcnt" ref="a7f0d06da301a93a3d6b1e39dd2d603f1" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint8 <a class="el" href="struct__MBXh.html#a7f0d06da301a93a3d6b1e39dd2d603f1">_MBXh::mbxcnt</a></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<a class="anchor" id="a29fc7a797bf6596b371c65692c70cc10"></a><!-- doxytag: member="_MBXh::mbxtype" ref="a29fc7a797bf6596b371c65692c70cc10" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint8 <a class="el" href="struct__MBXh.html#a29fc7a797bf6596b371c65692c70cc10">_MBXh::mbxtype</a></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<a class="anchor" id="af9dbadeb7d90c0f4af33fda64f3c6b38"></a><!-- doxytag: member="_MBXh::priority" ref="af9dbadeb7d90c0f4af33fda64f3c6b38" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint8 <a class="el" href="struct__MBXh.html#af9dbadeb7d90c0f4af33fda64f3c6b38">_MBXh::priority</a></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<hr/>The documentation for this struct was generated from the following file:<ul>
<li><a class="el" href="esc_8h.html">esc.h</a></li>
</ul>
</div>
<hr class="footer"/><address class="footer"><small>Generated on Wed Jul 10 2013 11:14:19 for SOES by&#160;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
</body>
</html>

View File

@ -0,0 +1,87 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>SOES: esc_cfg_t Struct Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<!-- Generated by Doxygen 1.7.4 -->
<div id="top">
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">SOES&#160;<span id="projectnumber">v1.0.0</span></div>
</td>
</tr>
</tbody>
</table>
</div>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
<li><a href="functions.html"><span>Data&#160;Fields</span></a></li>
</ul>
</div>
</div>
<div class="header">
<div class="summary">
<a href="#pub-attribs">Data Fields</a> </div>
<div class="headertitle">
<div class="title">esc_cfg_t Struct Reference</div> </div>
</div>
<div class="contents">
<!-- doxytag: class="esc_cfg_t" -->
<p><code>#include &lt;esc.h&gt;</code></p>
<table class="memberdecls">
<tr><td colspan="2"><h2><a name="pub-attribs"></a>
Data Fields</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structesc__cfg__t.html#a4a534a3f5ef5344306b255ff45669643">pre_state_change_hook</a> )(uint8 *as, uint8 *an)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structesc__cfg__t.html#ac5227ece0a8d4d2b95a3dd030336a847">post_state_change_hook</a> )(uint8 *as, uint8 *an)</td></tr>
</table>
<hr/><h2>Field Documentation</h2>
<a class="anchor" id="ac5227ece0a8d4d2b95a3dd030336a847"></a><!-- doxytag: member="esc_cfg_t::post_state_change_hook" ref="ac5227ece0a8d4d2b95a3dd030336a847" args=")(uint8 *as, uint8 *an)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void(* <a class="el" href="structesc__cfg__t.html#ac5227ece0a8d4d2b95a3dd030336a847">esc_cfg_t::post_state_change_hook</a>)(uint8 *as, uint8 *an)</td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<a class="anchor" id="a4a534a3f5ef5344306b255ff45669643"></a><!-- doxytag: member="esc_cfg_t::pre_state_change_hook" ref="a4a534a3f5ef5344306b255ff45669643" args=")(uint8 *as, uint8 *an)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void(* <a class="el" href="structesc__cfg__t.html#a4a534a3f5ef5344306b255ff45669643">esc_cfg_t::pre_state_change_hook</a>)(uint8 *as, uint8 *an)</td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<hr/>The documentation for this struct was generated from the following file:<ul>
<li><a class="el" href="esc_8h.html">esc.h</a></li>
</ul>
</div>
<hr class="footer"/><address class="footer"><small>Generated on Wed Jul 10 2013 11:14:19 for SOES by&#160;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
</body>
</html>

View File

@ -0,0 +1,134 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>SOES: foe_cfg_t Struct Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<!-- Generated by Doxygen 1.7.4 -->
<div id="top">
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">SOES&#160;<span id="projectnumber">v1.0.0</span></div>
</td>
</tr>
</tbody>
</table>
</div>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
<li><a href="functions.html"><span>Data&#160;Fields</span></a></li>
</ul>
</div>
</div>
<div class="header">
<div class="summary">
<a href="#pub-attribs">Data Fields</a> </div>
<div class="headertitle">
<div class="title">foe_cfg_t Struct Reference</div> </div>
</div>
<div class="contents">
<!-- doxytag: class="foe_cfg_t" -->
<p><code>#include &lt;esc_foe.h&gt;</code></p>
<table class="memberdecls">
<tr><td colspan="2"><h2><a name="pub-attribs"></a>
Data Fields</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">uint8 *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structfoe__cfg__t.html#a401e481b06a1c7e3fcb30a02ad7ddafb">fbuffer</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">uint8&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structfoe__cfg__t.html#a846f4765e3b5973542e18e25665a4a98">empty_write</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">uint32&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structfoe__cfg__t.html#a12e068a6428f1cf89d3516d104a905dd">buffer_size</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">uint32&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structfoe__cfg__t.html#a04948966334af92b549a8f668357e52e">n_files</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">foe_writefile_cfg_t *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structfoe__cfg__t.html#af7d4da24697018ed33e17a6c12d91ed9">files</a></td></tr>
</table>
<hr/><h2>Field Documentation</h2>
<a class="anchor" id="a12e068a6428f1cf89d3516d104a905dd"></a><!-- doxytag: member="foe_cfg_t::buffer_size" ref="a12e068a6428f1cf89d3516d104a905dd" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint32 <a class="el" href="structfoe__cfg__t.html#a12e068a6428f1cf89d3516d104a905dd">foe_cfg_t::buffer_size</a></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Buffer size before we flush to destination </p>
</div>
</div>
<a class="anchor" id="a846f4765e3b5973542e18e25665a4a98"></a><!-- doxytag: member="foe_cfg_t::empty_write" ref="a846f4765e3b5973542e18e25665a4a98" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint8 <a class="el" href="structfoe__cfg__t.html#a846f4765e3b5973542e18e25665a4a98">foe_cfg_t::empty_write</a></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Write this to fill-up, ex. 0xFF for "non write" </p>
</div>
</div>
<a class="anchor" id="a401e481b06a1c7e3fcb30a02ad7ddafb"></a><!-- doxytag: member="foe_cfg_t::fbuffer" ref="a401e481b06a1c7e3fcb30a02ad7ddafb" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint8* <a class="el" href="structfoe__cfg__t.html#a401e481b06a1c7e3fcb30a02ad7ddafb">foe_cfg_t::fbuffer</a></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Allocate static in caller func to fit buffer_size </p>
</div>
</div>
<a class="anchor" id="af7d4da24697018ed33e17a6c12d91ed9"></a><!-- doxytag: member="foe_cfg_t::files" ref="af7d4da24697018ed33e17a6c12d91ed9" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">foe_writefile_cfg_t* <a class="el" href="structfoe__cfg__t.html#af7d4da24697018ed33e17a6c12d91ed9">foe_cfg_t::files</a></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Pointer to files configured to be used by FoE </p>
</div>
</div>
<a class="anchor" id="a04948966334af92b549a8f668357e52e"></a><!-- doxytag: member="foe_cfg_t::n_files" ref="a04948966334af92b549a8f668357e52e" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint32 <a class="el" href="structfoe__cfg__t.html#a04948966334af92b549a8f668357e52e">foe_cfg_t::n_files</a></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Number of files used in firmware update </p>
</div>
</div>
<hr/>The documentation for this struct was generated from the following file:<ul>
<li><a class="el" href="esc__foe_8h.html">esc_foe.h</a></li>
</ul>
</div>
<hr class="footer"/><address class="footer"><small>Generated on Wed Jul 10 2013 11:14:19 for SOES by&#160;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
</body>
</html>

View File

@ -0,0 +1,147 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>SOES: foe_writefile_cfg_t Struct Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<!-- Generated by Doxygen 1.7.4 -->
<div id="top">
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">SOES&#160;<span id="projectnumber">v1.0.0</span></div>
</td>
</tr>
</tbody>
</table>
</div>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
<li><a href="functions.html"><span>Data&#160;Fields</span></a></li>
</ul>
</div>
</div>
<div class="header">
<div class="summary">
<a href="#pub-attribs">Data Fields</a> </div>
<div class="headertitle">
<div class="title">foe_writefile_cfg_t Struct Reference</div> </div>
</div>
<div class="contents">
<!-- doxytag: class="foe_writefile_cfg" -->
<p><code>#include &lt;esc_foe.h&gt;</code></p>
<table class="memberdecls">
<tr><td colspan="2"><h2><a name="pub-attribs"></a>
Data Fields</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structfoe__writefile__cfg.html#aa3b65a0c7d505e8095a59c57e5266be9">name</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">uint32&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structfoe__writefile__cfg.html#abc50f654a889f18a6da69cbc1212af37">max_data</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">uint32&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structfoe__writefile__cfg.html#a0540fe2ce25a5d05ad5a0faa8e3e8f60">dest_start_address</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">uint32&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structfoe__writefile__cfg.html#a618c137fd3ced50fae00c20df1459ea2">address_offset</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">uint32&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structfoe__writefile__cfg.html#a552cccd0564b95ee7c9a72f32537b84d">filepass</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">uint32(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structfoe__writefile__cfg.html#a2038f0388460a911097d063806a5162a">write_function</a> )(foe_writefile_cfg_t *self, uint8 *data)</td></tr>
</table>
<hr/><h2>Field Documentation</h2>
<a class="anchor" id="a618c137fd3ced50fae00c20df1459ea2"></a><!-- doxytag: member="foe_writefile_cfg::address_offset" ref="a618c137fd3ced50fae00c20df1459ea2" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint32 foe_writefile_cfg_t::address_offset</td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Current address during write of file </p>
</div>
</div>
<a class="anchor" id="a0540fe2ce25a5d05ad5a0faa8e3e8f60"></a><!-- doxytag: member="foe_writefile_cfg::dest_start_address" ref="a0540fe2ce25a5d05ad5a0faa8e3e8f60" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint32 foe_writefile_cfg_t::dest_start_address</td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Where to store the data initially </p>
</div>
</div>
<a class="anchor" id="a552cccd0564b95ee7c9a72f32537b84d"></a><!-- doxytag: member="foe_writefile_cfg::filepass" ref="a552cccd0564b95ee7c9a72f32537b84d" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint32 foe_writefile_cfg_t::filepass</td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<a class="anchor" id="abc50f654a889f18a6da69cbc1212af37"></a><!-- doxytag: member="foe_writefile_cfg::max_data" ref="abc50f654a889f18a6da69cbc1212af37" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint32 foe_writefile_cfg_t::max_data</td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Size of file,sizeof data we can recv </p>
</div>
</div>
<a class="anchor" id="aa3b65a0c7d505e8095a59c57e5266be9"></a><!-- doxytag: member="foe_writefile_cfg::name" ref="aa3b65a0c7d505e8095a59c57e5266be9" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">const char* foe_writefile_cfg_t::name</td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Name of file to receive from master </p>
</div>
</div>
<a class="anchor" id="a2038f0388460a911097d063806a5162a"></a><!-- doxytag: member="foe_writefile_cfg::write_function" ref="a2038f0388460a911097d063806a5162a" args=")(foe_writefile_cfg_t *self, uint8 *data)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint32(* foe_writefile_cfg_t::write_function)(foe_writefile_cfg_t *self, uint8 *data)</td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<hr/>The documentation for this struct was generated from the following file:<ul>
<li><a class="el" href="esc__foe_8h.html">esc_foe.h</a></li>
</ul>
</div>
<hr class="footer"/><address class="footer"><small>Generated on Wed Jul 10 2013 11:14:19 for SOES by&#160;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
</body>
</html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 140 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 178 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 192 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 189 B

View File

@ -0,0 +1,59 @@
.tabs, .tabs2, .tabs3 {
background-image: url('tab_b.png');
width: 100%;
z-index: 101;
font-size: 13px;
}
.tabs2 {
font-size: 10px;
}
.tabs3 {
font-size: 9px;
}
.tablist {
margin: 0;
padding: 0;
display: table;
}
.tablist li {
float: left;
display: table-cell;
background-image: url('tab_b.png');
line-height: 36px;
list-style: none;
}
.tablist a {
display: block;
padding: 0 20px;
font-weight: bold;
background-image:url('tab_s.png');
background-repeat:no-repeat;
background-position:right;
color: #283A5D;
text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);
text-decoration: none;
outline: none;
}
.tabs3 .tablist a {
padding: 0 10px;
}
.tablist a:hover {
background-image: url('tab_h.png');
background-repeat:repeat-x;
color: #fff;
text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0);
text-decoration: none;
}
.tablist li.current a {
background-image: url('tab_a.png');
background-repeat:repeat-x;
color: #fff;
text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0);
}

View File

@ -0,0 +1,423 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>SOES: tutorial.txt File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<!-- Generated by Doxygen 1.7.4 -->
<div id="top">
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">SOES&#160;<span id="projectnumber">v1.0.0</span></div>
</td>
</tr>
</tbody>
</table>
</div>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
<li><a href="globals.html"><span>Globals</span></a></li>
</ul>
</div>
</div>
<div class="header">
<div class="headertitle">
<div class="title">tutorial.txt File Reference</div> </div>
</div>
<div class="contents">
<table class="memberdecls">
</table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><h2><a class="anchor" id="general"></a>
General</h2>
<p>The SOES is a library that provides the Micro Controller user application with the means to access the EtherCAT fieldbus communication environment:</p>
<ul>
<li>EtherCAT State Machine</li>
<li>Mailbox Interfaces</li>
<li>Protocols<ul>
<li>CoE</li>
<li>FoE + bootstrap template</li>
</ul>
</li>
</ul>
<p>Support for mailbox and protocols are typical examples when you need a slave stack to control the Application Layer of EtherCAT. The PDI used for such applications is either SPI or some Micro Controller Interface</p>
<p>The following sections show some basic examples on how to get the SOES up and running, as well as a lightweight example on howto design your slave. Since all code is local to the application or global variables, it is possible to tweak and optimize when possible.</p>
<p>Our target Application:</p>
<ul>
<li>Inputs 40bit<ul>
<li>One button 8bit</li>
<li>One encoder value 32bit</li>
</ul>
</li>
<li>Outputs 8bit<ul>
<li>LED 8bit</li>
</ul>
</li>
<li>Parameters<ul>
<li>Encoder settings</li>
</ul>
</li>
<li>Slave commands<ul>
<li>Reset counter</li>
</ul>
</li>
</ul>
<p>Now to translate and implement on top of SOES.</p>
<p>First look on the start up code. This example shows how to add a main function that will be called by startup code. In this example main's only purpose is to spawn two new tasks. One that executes SOES and one that control the ERROR LED. Some ESCs provided a pin for the RUN LED, some even for the ERROR LED, if it don't you can control them from the slave Micro Controller. We'll focus on the "soes" task.</p>
<div class="fragment"><pre class="fragment"><span class="keywordtype">int</span> main (<span class="keywordtype">void</span>)
{
rprintp (<span class="stringliteral">&quot;SOES (Simple Open EtherCAT Slave)\nsoes test\n&quot;</span>);
<span class="comment">/* task_spawn (&quot;led_run&quot;, led_error, 15, 512, NULL); /</span>
<span class="comment"> task_spawn (&quot;led_error&quot;, led_error, 15, 512, NULL);</span>
<span class="comment"> task_spawn (&quot;soes&quot;, soes, 9, 1024, NULL);</span>
<span class="comment"></span>
<span class="comment"> return (0);</span>
<span class="comment">}</span>
</pre></div><h2><a class="anchor" id="configuration"></a>
Configuration</h2>
<p>The function soes is our EtherCAT slave device and can be split in 3 parts. Hardware Init, Software Init and Application loop. We will start with the Hardware Init.</p>
<ul>
<li>Hardware Init<ul>
<li>esc_reset, special function used for ESC reset if no Physical EEPROM used. This is local to the Application not part of the generic ESC handling.</li>
<li>ESC_init, initialise SPI communication or similar</li>
<li>Wait for ESC is started, waiting for SPI to be up and running, we'll query the ESC register DL status if EEPROM loaded OK and PDI operational, eg. SPI OK.</li>
</ul>
</li>
</ul>
<div class="fragment"><pre class="fragment"><span class="keywordtype">void</span> soes (<span class="keywordtype">void</span> *arg)
{
TXPDOsize = <a class="code" href="esc_8h.html#ab08e40af06cd134cb90dd192accbb15c">SM3_sml</a> = <a class="code" href="esc__coe_8c.html#a5d1fb9538a28be98ec8ee762140ada35">sizeTXPDO</a> ();
RXPDOsize = <a class="code" href="esc_8h.html#a8381cf08815e916991c9e9f07faecf90">SM2_sml</a> = <a class="code" href="esc__coe_8c.html#a836e3ff62cd9bba1ca2a5f5481104ba9">sizeRXPDO</a> ();
esc_reset ();
<a class="code" href="esc_8h.html#a1e57480c1f1963ef43315a2da703af69">ESC_init</a> ((<span class="keywordtype">void</span> *)spi_name);
task_delay (tick_from_ms (200));
<span class="comment">// wait until ESC is started up</span>
<span class="keywordflow">while</span> ((<a class="code" href="esc_8h.html#ad2be96a7ede58a01fd408ed9ad4e0970">ESCvar</a>.<a class="code" href="struct__ESCvar.html#aa8a709bebf153046f21e9731a7bf4061">DLstatus</a> &amp; 0x0001) == 0)
{
<a class="code" href="esc_8h.html#a2664adef01c5c5f228f8512fcae3eb57">ESC_read</a> (<a class="code" href="esc_8h.html#a7307fb7c3f7d54c7a44910f7100574cf">ESCREG_DLSTATUS</a>, (<span class="keywordtype">void</span> *) &amp;<a class="code" href="esc_8h.html#ad2be96a7ede58a01fd408ed9ad4e0970">ESCvar</a>.<a class="code" href="struct__ESCvar.html#aa8a709bebf153046f21e9731a7bf4061">DLstatus</a>,
sizeof (<a class="code" href="esc_8h.html#ad2be96a7ede58a01fd408ed9ad4e0970">ESCvar</a>.<a class="code" href="struct__ESCvar.html#aa8a709bebf153046f21e9731a7bf4061">DLstatus</a>), (<span class="keywordtype">void</span> *) &amp;<a class="code" href="esc_8h.html#ad2be96a7ede58a01fd408ed9ad4e0970">ESCvar</a>.<a class="code" href="struct__ESCvar.html#a447ec4716c0a1139f9987ea6df3ae364">ALevent</a>);
<a class="code" href="esc_8h.html#ad2be96a7ede58a01fd408ed9ad4e0970">ESCvar</a>.<a class="code" href="struct__ESCvar.html#aa8a709bebf153046f21e9731a7bf4061">DLstatus</a> = etohs (<a class="code" href="esc_8h.html#ad2be96a7ede58a01fd408ed9ad4e0970">ESCvar</a>.<a class="code" href="struct__ESCvar.html#aa8a709bebf153046f21e9731a7bf4061">DLstatus</a>);
}
<span class="comment">// reset ESC to init state</span>
<a class="code" href="esc_8c.html#a9794dd94da984eb6bfb88879aabf4e3d">ESC_ALstatus</a> (<a class="code" href="esc_8h.html#abbfee5404d9c373b5dd4145d7468a17a">ESCinit</a>);
...
}
</pre></div><ul>
<li>Software Init<ul>
<li>Reset the slave into Init state by writing AL Status register.</li>
<li>Clear Errors by writing AL Status Code register.</li>
<li>Stop the Application Layer, basically we disable the SyncManagers that implicitly block the data exchange.</li>
</ul>
</li>
</ul>
<div class="fragment"><pre class="fragment"><span class="keywordtype">void</span> soes (<span class="keywordtype">void</span> *arg)
{
...
<span class="keywordflow">while</span> ((<a class="code" href="esc_8h.html#ad2be96a7ede58a01fd408ed9ad4e0970">ESCvar</a>.<a class="code" href="struct__ESCvar.html#aa8a709bebf153046f21e9731a7bf4061">DLstatus</a> &amp; 0x0001) == 0)
{
<a class="code" href="esc_8h.html#a2664adef01c5c5f228f8512fcae3eb57">ESC_read</a> (<a class="code" href="esc_8h.html#a7307fb7c3f7d54c7a44910f7100574cf">ESCREG_DLSTATUS</a>, (<span class="keywordtype">void</span> *) &amp;<a class="code" href="esc_8h.html#ad2be96a7ede58a01fd408ed9ad4e0970">ESCvar</a>.<a class="code" href="struct__ESCvar.html#aa8a709bebf153046f21e9731a7bf4061">DLstatus</a>,
sizeof (<a class="code" href="esc_8h.html#ad2be96a7ede58a01fd408ed9ad4e0970">ESCvar</a>.<a class="code" href="struct__ESCvar.html#aa8a709bebf153046f21e9731a7bf4061">DLstatus</a>), (<span class="keywordtype">void</span> *) &amp;<a class="code" href="esc_8h.html#ad2be96a7ede58a01fd408ed9ad4e0970">ESCvar</a>.<a class="code" href="struct__ESCvar.html#a447ec4716c0a1139f9987ea6df3ae364">ALevent</a>);
<a class="code" href="esc_8h.html#ad2be96a7ede58a01fd408ed9ad4e0970">ESCvar</a>.<a class="code" href="struct__ESCvar.html#aa8a709bebf153046f21e9731a7bf4061">DLstatus</a> = etohs (<a class="code" href="esc_8h.html#ad2be96a7ede58a01fd408ed9ad4e0970">ESCvar</a>.<a class="code" href="struct__ESCvar.html#aa8a709bebf153046f21e9731a7bf4061">DLstatus</a>);
}
<span class="comment">// reset ESC to init state</span>
<a class="code" href="esc_8c.html#a9794dd94da984eb6bfb88879aabf4e3d">ESC_ALstatus</a> (<a class="code" href="esc_8h.html#abbfee5404d9c373b5dd4145d7468a17a">ESCinit</a>);
<a class="code" href="esc_8c.html#ae49fff6e6440edd2c55a077d724b898c">ESC_ALerror</a> (<a class="code" href="esc_8h.html#acd028c8cb5d08a99cc31bc2ee46c97fd">ALERR_NONE</a>);
<a class="code" href="esc_8c.html#af114806603011938e35ae366d115d90f">ESC_stopmbx</a> ();
<a class="code" href="esc_8c.html#a81ea48b9683662e8bed01fbb77826236">ESC_stopinput</a> ();
<a class="code" href="esc_8c.html#aea60761cf8862550e8901aa996069f8d">ESC_stopoutput</a> ();
<span class="comment">// application run loop</span>
<span class="keywordflow">while</span> (1)
...
}
</pre></div><ul>
<li>Application loop<ul>
<li>ALevent handling, ALevent hold information on changes in ALControl or SyncManagers. ALControl for state changes and SyncManagers for changes written by EtherCAT in local memory mapped to active SyncManagers</li>
<li>ESC_state for state handling, such as state step up or down with correct error and acknowledge response.</li>
<li>Mailbox handler, generic support of mailboxes used by all Application Layer protocols.</li>
<li>On mailbox actions we'll also check if we need to use a specific protocol handler to handle the incoming or outgoing Mailbox data.</li>
</ul>
</li>
</ul>
<p>Up until the now we're using the SOES protocol stack without any application specific calls. Next up we'll look at the application Code, here named DIG_process ().</p>
<div class="fragment"><pre class="fragment"><span class="keywordtype">void</span> soes (<span class="keywordtype">void</span> *arg)
{
...
<span class="comment">// application run loop</span>
<span class="keywordflow">while</span> (1)
{
<span class="keywordflow">if</span>((<a class="code" href="esc_8h.html#ad2be96a7ede58a01fd408ed9ad4e0970">ESCvar</a>.<a class="code" href="struct__ESCvar.html#acd205a5c7f82b724686f0794f06a12cd">ALstatus</a> &amp; 0x0f) == <a class="code" href="esc_8h.html#abbfee5404d9c373b5dd4145d7468a17a">ESCinit</a>)
{
txpdomap = DEFAULTTXPDOMAP;
rxpdomap = DEFAULTRXPDOMAP;
<a class="code" href="esc__coe_8c.html#a5ddbd167b7b79d375b2ce53e2b536347">txpdoitems</a> = DEFAULTTXPDOITEMS;
<a class="code" href="esc__coe_8c.html#a8bf6e1739ce6b8147f92dc36162b9e54">rxpdoitems</a> = DEFAULTTXPDOITEMS;
}
<a class="code" href="esc_8h.html#a2664adef01c5c5f228f8512fcae3eb57">ESC_read</a> (<a class="code" href="esc_8h.html#a6da09b045593c131194d037cf180af6e">ESCREG_LOCALTIME</a>, (<span class="keywordtype">void</span> *) &amp;<a class="code" href="esc_8h.html#ad2be96a7ede58a01fd408ed9ad4e0970">ESCvar</a>.<a class="code" href="struct__ESCvar.html#ac435e669f2d950b9c8ba9d5599dc87e6">Time</a>, sizeof (<a class="code" href="esc_8h.html#ad2be96a7ede58a01fd408ed9ad4e0970">ESCvar</a>.<a class="code" href="struct__ESCvar.html#ac435e669f2d950b9c8ba9d5599dc87e6">Time</a>),
(<span class="keywordtype">void</span> *) &amp;<a class="code" href="esc_8h.html#ad2be96a7ede58a01fd408ed9ad4e0970">ESCvar</a>.<a class="code" href="struct__ESCvar.html#a447ec4716c0a1139f9987ea6df3ae364">ALevent</a>);
<a class="code" href="esc_8h.html#ad2be96a7ede58a01fd408ed9ad4e0970">ESCvar</a>.<a class="code" href="struct__ESCvar.html#ac435e669f2d950b9c8ba9d5599dc87e6">Time</a> = etohl (<a class="code" href="esc_8h.html#ad2be96a7ede58a01fd408ed9ad4e0970">ESCvar</a>.<a class="code" href="struct__ESCvar.html#ac435e669f2d950b9c8ba9d5599dc87e6">Time</a>);
<a class="code" href="esc_8h.html#a5786bd4c441fafac35331fa755730f84">ESC_ALevent</a>();
<a class="code" href="esc_8c.html#a1f4da4aa96dc469b218abf33ff857130">ESC_state</a> ();
<span class="keywordflow">if</span> (<a class="code" href="esc_8c.html#ae75d37a1bdce82374c3b262f18945cb3">ESC_mbxprocess</a> ())
{
<a class="code" href="esc__coe_8c.html#a71c76794b7e4ed125cc9cda0e8508ccd">ESC_coeprocess</a> ();
<a class="code" href="esc__foe_8c.html#a57ace265be44ccc2a0af313d007261b2">ESC_foeprocess</a> ();
<a class="code" href="esc_8c.html#aa783bb45ace470b98607ce7c4af0460f">ESC_xoeprocess</a> ();
}
DIG_process ();
};
}
</pre></div><h2><a class="anchor" id="application"></a>
Application</h2>
<p>The function DIG_process is the User part of the application and could be joined by more cyclic User functions for executing other parts of the application. The example code can be split in 2 parts</p>
<ul>
<li>Outputs<ul>
<li>Start by evaluating if we're in a state supporting update of outputs, eg. Operational state.</li>
<li>If we're in OP we can read the current PDO data in the 3-buffer SyncManager mapped to the output SM, the default is SyncManager2, we read the ESC RAM address of SM2 and store it at the local address of the local variable Wb.LED. We'll read RXPDOsize bytes to trigger a complete SyncManager read.</li>
<li>After local variables have been refreshed we basically write the local PDO variables to the User application, ex. a GPIO.</li>
<li>Basically this is the API of the SOES toward the User Application.</li>
<li>This function also include a watchdog mechanism, if triggered it will shutdown the outputs and trigger a state changes to safe operational. AlError is updated with cause of error to inform the Master.</li>
</ul>
</li>
</ul>
<div class="fragment"><pre class="fragment"><span class="keywordtype">void</span> RXPDO_update (<span class="keywordtype">void</span>)
{
<a class="code" href="esc_8h.html#a2664adef01c5c5f228f8512fcae3eb57">ESC_read</a> (<a class="code" href="esc_8h.html#a17b011cd3b4d2c7aaa4d97a3f9140d9e">SM2_sma</a>, &amp;Wb.LED, RXPDOsize, (<span class="keywordtype">void</span> *) &amp;<a class="code" href="esc_8h.html#ad2be96a7ede58a01fd408ed9ad4e0970">ESCvar</a>.<a class="code" href="struct__ESCvar.html#a447ec4716c0a1139f9987ea6df3ae364">ALevent</a>);
}
<span class="keywordtype">void</span> DIG_process (<span class="keywordtype">void</span>)
{
<span class="keywordflow">if</span> (App.state &amp; APPSTATE_OUTPUT)
{
<span class="keywordflow">if</span> (<a class="code" href="esc_8h.html#ad2be96a7ede58a01fd408ed9ad4e0970">ESCvar</a>.<a class="code" href="struct__ESCvar.html#a447ec4716c0a1139f9987ea6df3ae364">ALevent</a> &amp; <a class="code" href="esc_8h.html#a7f4270f5e37d8e797a3033523e0f84d0">ESCREG_ALEVENT_SM2</a>) <span class="comment">// SM2 trigger ?</span>
{
RXPDO_update ();
reset_wd ();
gpio_set(GPIO_LED, Wb.LED &amp; BIT(0));
}
<span class="keywordflow">if</span> (!wd_cnt)
{
<a class="code" href="esc_8c.html#aea60761cf8862550e8901aa996069f8d">ESC_stopoutput</a> ();
<span class="comment">// watchdog, invalid outputs</span>
<a class="code" href="esc_8c.html#ae49fff6e6440edd2c55a077d724b898c">ESC_ALerror</a> (<a class="code" href="esc_8h.html#af236abe4b811bcebfb6556e3ddd85a20">ALERR_WATCHDOG</a>);
<span class="comment">// goto safe-op with error bit set</span>
<a class="code" href="esc_8c.html#a9794dd94da984eb6bfb88879aabf4e3d">ESC_ALstatus</a> (<a class="code" href="esc_8h.html#a8badc20d57f274700ff6786013f4dba8">ESCsafeop</a> | <a class="code" href="esc_8h.html#abc139331f4812b302e34bb3709ff915b">ESCerror</a>);
wd_trigger = 1;
}
}
<span class="keywordflow">else</span>
{
reset_wd ();
}
...
}
</pre></div><ul>
<li>Inputs<ul>
<li>Is handled a bit simpler than outputs but in reverse order, the slave will continue update the inputs in state Safe Operational.</li>
<li>Here we first read User application data from ex. GPIO and then write to local PDO variables.</li>
<li>After the local variables have been refreshed we write those to the current PDO data 3-buffer SyncManager mapped to the input SM, the default is SyncManager3. This way we update the ESC RAM address with User Application data accessed by the EtherCAT master.</li>
</ul>
</li>
</ul>
<div class="fragment"><pre class="fragment"><span class="keywordtype">void</span> TXPDO_update (<span class="keywordtype">void</span>)
{
<a class="code" href="esc_8h.html#a1e2ef25b8a36c48016abd5ff20166d9f">ESC_write</a> (<a class="code" href="esc_8h.html#a115f471e25ada517dc92451cbf921416">SM3_sma</a>, &amp;Rb.button, TXPDOsize, (<span class="keywordtype">void</span> *) &amp;<a class="code" href="esc_8h.html#ad2be96a7ede58a01fd408ed9ad4e0970">ESCvar</a>.<a class="code" href="struct__ESCvar.html#a447ec4716c0a1139f9987ea6df3ae364">ALevent</a>);
}
<span class="keywordtype">void</span> DIG_process (<span class="keywordtype">void</span>)
{
...
Rb.button = gpio_get(GPIO_WAKEUP);
Cb.reset_counter++;
Rb.encoder = Cb.reset_counter;
TXPDO_update ();
}
</pre></div><h2><a class="anchor" id="ApplicationdataProcessdata"></a>
ApplicationdataProcessdata</h2>
<p>To run application data through EtherCAT processdata we need to describe for the fieldbus what data we have and will read/write. For this we have 3 objects, the ESI file, SII-EEPROM and CoE Object Dictionary. The first 2 are mandatory and the third is a very convenient way of describing complex slaves.</p>
<p>Our strategy is to keep the ESI file and the SII-EEPROM as thin as possible to avoid duplication of data that need to be maintained. Both will hold the bare minimum of mandatory + optional data to pass CTT. Optional data will be included to tell EtherCAT that detailed information can be retrieved via CoE from the OD stored in the slave it self.</p>
<h2><a class="anchor" id="SII-EEPROM"></a>
SII-EEPROM</h2>
<p>Snapshot from SII information matrix from EtherCAT communication slides.</p>
<div class="image">
<img src="sii_pdo.png" alt="sii_pdo.png"/>
<div class="caption">
Our target slave is Fixed PDO and OD</div></div>
<h2><a class="anchor" id="ESI-file"></a>
ESI-file</h2>
<p>Snapshot from ESI tree from EtherCAT communication slides.</p>
<div class="image">
<img src="esi_pdo.png" alt="esi_pdo.png"/>
<div class="caption">
mandatory and optional ESI data</div></div>
<p>To briefly give a hint what are describe in the ESI and SII we're listing a set of included elements marked M for mandatory and O for optional.</p>
<div class="fragment"><pre class="fragment"> - Vendor (M) , Describes the identity.
- Id (M), Hex, EtherCAT Vendor ID, OD 1018.01
- Name (M), NameType, Expedient vendor name
- Descriptions (M), Describes the EtherCAT device(s) using elements.
- Groups (M), Similar devices can be assigned to one group.
- Group (M), One group groups similar devices with slightly different features
- Type (M), A reference handle corresponding to the GroupType value in Description:Devices:Device:Group
- Name (M), Name for this group show by a configuration tool
- Devices (M), Element devices may describe one or several devices with their EtherCAT features such as SyncManagers, FMMUs and Dictionaries
- Device (O), Holds all information about the device like syncmanagers and FMMU, <span class="keywordtype">object</span> dictionary, data types and the PDO mapping and assign description
- Device ATT: Physics (M),<span class="keywordtype">string</span>, Physics at individual ports
- Type (M), Device identity
- Type ATT:ProductCode=&quot;<span class="preprocessor">#x98123467&quot; </span>
<span class="preprocessor"></span> - Type ATT:RevisionNo=<span class="stringliteral">&quot;#x00000001&quot;</span>
- Name (M), Detailed name of device shown by a configuration tool (not used <span class="keywordflow">for</span> identification)
- GroupType (M), Reference to a group (described in element Groups) to which <span class="keyword">this</span> device should be assigned to. Name of the handle used in element Groups:Group:Type
- Fmmu (O), String to describe function, Outputs -&gt; RxPDO, Inputs -&gt; TxPDO , MBoxState -&gt; FMMU is used to poll Input Mailbox
- Sm (O), Description of SyncManager including start address and direction.
- MBoxOut Mailbox Data Master -&gt; Slave
- MBoxIn Mailbox Data Slave -&gt; Master
- Outputs Process Data Master -&gt; Slave
- Inputs Process Data Slave -&gt; master
- Sm ATT:DefaultSize=<span class="stringliteral">&quot;128&quot;</span> , Size
- Sm ATT:StartAddress=<span class="stringliteral">&quot;#x1000&quot;</span> , Start address
- Sm ATT:ControlByte=<span class="stringliteral">&quot;#x26&quot;</span> , Settings , Bit [1][0] = 10, Operation mode Mailbox, 00 Buffered 3.
- Sm ATT:Enable=<span class="stringliteral">&quot;1&quot;</span>, Enabled
- Mailbox (O), Description of available mailbox protocols
- Mailbox ATT: DataLinkLayer=<span class="stringliteral">&quot;true&quot;</span>, Support of Mailbox Data Link Layer is mandatory.
- CoE (O), Device support CoE
- CoE (O) ATT: SdoInfo=&quot;true&quot; , SDO Information Service
- CoE (O) ATT: CompleteAccess=&quot;false&quot; , SDO complete access not supported
- CoE (O) ATT: PdoUpload=&quot;true&quot;, PDO description uploaded from the slave&#39;s <span class="keywordtype">object</span> dictionary and SyncManager length calculated based on the same
- Dc (O), describes synchronization modes supported by the device.
- OpMode (O), Definition of supported operation modes
- Name (M), Internal Handle of operation mode
- Desc (O(M)), description of operation mode, recommended, Free Run (no sync), SM Synchronous, DC Synchronous
- AssignActive (M), Value of Latch and Sync Control registers
- Eeprom (O, use is mandatory)
- Data (M)
Or
- ByteSize (M), Byte Size of connected EEPROM device
- ConfigData (M), First 7 words of EEPROM, Configuration Areas
- BootStrap (O), Start address and length of mailboxes for BootStrap
</pre></div><p>So to describe the application we use CoE and Object Dictionary. The mapping between Object Dictionary and the User Application are done via local variables defined as user types. The Object Dictionary itself is stored in a matrix where all the indexes are listed. Every index then have a submatrix with its subindex.</p>
<h2><a class="anchor" id="ObjectDictionary"></a>
ObjectDictionary</h2>
<p>The Object Dictionary used as example follow the CANopen DS301 ranges.</p>
<ul>
<li>0x0000 - 0x0FFF, Data Type Area</li>
<li>0x1000 - 0x1FFF, Communication Area</li>
<li>0x2000 - 0x5FFF, Manufacture specific area</li>
<li>0x6000 - 0x6FFF, Input area</li>
<li>0x7000 - 0x7FFF, Output area</li>
<li>0x8000 - 0x8FFF, Configuration area</li>
<li>0x9000 - 0x9FFF, Information area</li>
<li>0xA000 - 0xAFFF, Diagnosis Area</li>
<li>0xB000 - 0xBFFF, Service Transfer Area</li>
<li>0xC000 - 0xEFFF, Reserved Area</li>
<li>0xF000 - 0xFFFF, Device Area</li>
</ul>
<p>RxPDO , 0x1600 - 0x17FF TxPDO , 0x1A00 - 0x1BFF</p>
<p>Example, on how the the OD index are linked. Top index, SyncManagers Communication Types. In index 0 the 0x04 indicates we have 4 SyncManagers defined. Every SyncManager is assigned a type, in index 1-4, we have standard settings SM0 = 1, SM1 = 2, SM2 = 3, SM3 = 4 from ETG 1000.6, 5.6.7.4.</p>
<ul>
<li>0, Unused</li>
<li>1, MailBox Receive, master to slave</li>
<li>2, MailBox Send, slave to master</li>
<li>3, Processdata output, master to slave</li>
<li>4, Processdata input, slave to master</li>
</ul>
<div class="fragment"><pre class="fragment">objectlist.h
<a class="code" href="esc_8h.html#af31f651275638bf31941470751b421c6">FLASHSTORE</a> _objectlist SDOobjects[] =
...
{0x1C00, OTYPE_ARRAY, 4, 0, &amp;acName1C00[0], &amp;SDO1C00[0]},
<a class="code" href="esc_8h.html#af31f651275638bf31941470751b421c6">FLASHSTORE</a> _objd SDO1C00[] =
{ {0x00, DTYPE_UNSIGNED8, 8, ATYPE_R, &amp;acNameNOE[0], 0x04, nil},
{0x01, DTYPE_UNSIGNED8, 8, ATYPE_R, &amp;acName1C00_01[0], 0x01, nil},
{0x02, DTYPE_UNSIGNED8, 8, ATYPE_R, &amp;acName1C00_02[0], 0x02, nil},
{0x03, DTYPE_UNSIGNED8, 8, ATYPE_R, &amp;acName1C00_03[0], 0x03, nil},
{0x04, DTYPE_UNSIGNED8, 8, ATYPE_R, &amp;acName1C00_04[0], 0x04, nil}
</pre></div><p>SyncManagers channels 0-31 are listed in SDO1C10-SDO1C2F. If we look at SyncManager channel 2, we see.</p>
<ul>
<li>Type 3, Processdata output, master to slave</li>
</ul>
<p>It got one RxPDO index 0x1600 connected, and the submatrix for 0x1600 link one PDO object index 0x7000 subindex 1. The output object 0x70000108 give you the index 0x7000, subindex 1 and PDO object length 1(byte).</p>
<div class="fragment"><pre class="fragment">objectlist.h
<a class="code" href="esc_8h.html#af31f651275638bf31941470751b421c6">FLASHSTORE</a> _objd SDO1C12[] =
{ {0x00, DTYPE_UNSIGNED8, 8, ATYPE_R, &amp;acNameNOE[0], 0x01, nil},
{0x01, DTYPE_UNSIGNED16, 16, ATYPE_R, &amp;acNameMO[0], 0x1600, nil}
};
<a class="code" href="esc_8h.html#af31f651275638bf31941470751b421c6">FLASHSTORE</a> _objd SDO1600[] =
{ {0x00, DTYPE_UNSIGNED8, 8, ATYPE_R, &amp;acNameNOE[0], 0x01, nil},
{0x01, DTYPE_UNSIGNED32, 32, ATYPE_R, &amp;acNameMO[0], 0x70000108, nil}
};
</pre></div><p>At PDO level we make the connection between the local application and the object dictionary. For all subindex in the PDO the last element is the address to the local variable.</p>
<div class="fragment"><pre class="fragment">objectlist.h
<a class="code" href="esc_8h.html#af31f651275638bf31941470751b421c6">FLASHSTORE</a> _objd SDO7000[] =
{ {0x00, DTYPE_UNSIGNED8, 8, ATYPE_R, &amp;acNameNOE[0], 0x01, nil},
{0x01, DTYPE_UNSIGNED8, 8, ATYPE_RW, &amp;acName7000_01[0], 0, &amp;(Wb.LED)}
};
utypes.h
<span class="keyword">typedef</span> <span class="keyword">struct</span>
{
uint8 LED;
} _Wbuffer;
</pre></div><p>Beside SyncManager to PDO mapping we also have mandatory data as</p>
<p>0x1000 Device Type 0x1018 Object Identity 0x10C0 SyncManager Communication Type, as we used as top index when figuring out our PDOs in the Object Dictionary.</p>
<p>For a complete description of the object dictionary you can get guidance by the ETG1000.6 EcatAlProtocols</p>
<p>A useful feature is the Asynchronous use of SDO parameters. In the example we have Parameter set holding an encoder scale value, just for show we also have a read only mirror value of the encoder scale. Parameters defined as a RW SDO parameter and can be written/read by SDO Download or Upload. In addition there is a ESC_objecthandler Hook on SDO Download where you can add additional logic, ex. we execute the mirror of the encoder scale value by assigning the encoder scale value to the mirror.</p>
<div class="fragment"><pre class="fragment">objectlist.h
<a class="code" href="esc_8h.html#af31f651275638bf31941470751b421c6">FLASHSTORE</a> _objd SDO7100[] =
{ {0x00, DTYPE_UNSIGNED8, 8, ATYPE_R, &amp;acNameNOE[0], 0x02, nil},
{0x01, DTYPE_UNSIGNED32, 32, ATYPE_RW, &amp;acName7100_01[0], 0, &amp;(encoder_scale)},
{0x02, DTYPE_UNSIGNED32, 32, ATYPE_R, &amp;acName7100_02[0], 0, &amp;(encoder_scale_mirror)}
};
soes.c
<span class="keywordtype">void</span> <a class="code" href="esc__coe_8h.html#a414bacd094d9023838a396174a695f8d">ESC_objecthandler</a> (uint16 index, uint8 subindex)
{
<span class="keywordflow">switch</span> (index)
{
...
<span class="keywordflow">case</span> 0x7100:
{
<span class="keywordflow">switch</span> (subindex)
{
<span class="keywordflow">case</span> 0x01:
{
encoder_scale_mirror = encoder_scale;
<span class="keywordflow">break</span>;
}
}
<span class="keywordflow">break</span>;
}
...
}
</pre></div><p> This tutorial is just one way of doing it. Enjoy and happy coding!</p>
<p>Andreas Karlsson, rt-labs AB, www.rt-labs.com </p>
</div></div>
<hr class="footer"/><address class="footer"><small>Generated on Wed Jul 10 2013 11:14:19 for SOES by&#160;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
</body>
</html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

50
soes/doc/soes.dox 100644
View File

@ -0,0 +1,50 @@
/**
* \mainpage Simple Open EtherCAT Slave or SOES
*
* \section start Tutorial
* For a tutorial on SOES See tutorial.txt
*
* \section overview Overview
* SOES is an EtherCAT slave stack written in c. Its purpose is to learn and
* to use. All users are invited to study the source to get an understanding
* how an EtherCAT slave function
*
* Features as of 1.0.0 :
* - Address offset based HAL for easy ESC read/write access via any interface
* - Mailbox with data link layer
* - CoE
* - Object dictionary
* - SDO read and write for all sizes including segmented transfers
* - Easy portable C-code suited for embedded applications
* - Fixed PDO mapping
* - FoE with bootstrap template
* - Support for Little and Big endian targets.
* - Polling for interrupts
*
* \section legal Legal notice
* SOES Simple Open EtherCAT Slave \n
* Copyright (C) 2007-2013 Arthur Ketels \n
* Copyright (C) 2012-2013 rt-labs \n
*
* SOES is free software; you can redistribute it and/or modify it under
* the terms of the GNU General Public License version 2 as published by the Free
* Software Foundation.
*
* SOES is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* for more details.
*
* As a special exception, if other files instantiate templates or use macros
* or inline functions from this file, or you compile this file and link it
* with other works to produce a work based on this file, this file does not
* by itself cause the resulting work to be covered by the GNU General Public
* License. However the source code for this file must still be made available
* in accordance with section (3) of the GNU General Public License.
*
* This exception does not invalidate any other reasons why a work based on
* this file might be covered by the GNU General Public License.
*
* The EtherCAT Technology, the trade name and logo "EtherCAT" are the intellectual
* property of, and protected by Beckhoff Automation GmbH.
*/

View File

@ -0,0 +1,479 @@
/** \file
\section general General
The SOES is a library that provides the Micro Controller user application with
the means to access the EtherCAT fieldbus communication environment:
- EtherCAT State Machine
- Mailbox Interfaces
- Protocols
- CoE
- FoE + bootstrap template
Support for mailbox and protocols are typical examples when you need a slave
stack to control the Application Layer of EtherCAT. The PDI used for such
applications is either SPI or some Micro Controller Interface
The following sections show some basic examples on how to get the SOES up
and running, as well as a lightweight example on howto design your slave.
Since all code is local to the application or global variables, it is possible
to tweak and optimize when possible.
Our target Application:
- Inputs 40bit
- One button 8bit
- One encoder value 32bit
- Outputs 8bit
- LED 8bit
- Parameters
- Encoder settings
- Slave commands
- Reset counter
Now to translate and implement on top of SOES.
First look on the start up code. This example shows how to add a
main function that will be called by startup code. In this example
main's only purpose is to spawn two new tasks. One that executes
SOES and one that control the ERROR LED. Some ESCs provided a pin
for the RUN LED, some even for the ERROR LED, if it don't you can
control them from the slave Micro Controller. We'll focus on the "soes" task.
\code
int main (void)
{
rprintp ("SOES (Simple Open EtherCAT Slave)\nsoes test\n");
/* task_spawn ("led_run", led_error, 15, 512, NULL); /
task_spawn ("led_error", led_error, 15, 512, NULL);
task_spawn ("soes", soes, 9, 1024, NULL);
return (0);
}
\endcode
\section configuration Configuration
The function soes is our EtherCAT slave device and can be split in 3 parts.
Hardware Init, Software Init and Application loop. We will start with the
Hardware Init.
- Hardware Init
- esc_reset, special function used for ESC reset if no Physical
EEPROM used. This is local to the Application not part of the generic
ESC handling.
- ESC_init, initialise SPI communication or similar
- Wait for ESC is started, waiting for SPI to be up and running,
we'll query the ESC register DL status if EEPROM loaded OK and PDI
operational, eg. SPI OK.
\code
void soes (void *arg)
{
TXPDOsize = SM3_sml = sizeTXPDO ();
RXPDOsize = SM2_sml = sizeRXPDO ();
esc_reset ();
ESC_init ((void *)spi_name);
task_delay (tick_from_ms (200));
// wait until ESC is started up
while ((ESCvar.DLstatus & 0x0001) == 0)
{
ESC_read (ESCREG_DLSTATUS, (void *) &ESCvar.DLstatus,
sizeof (ESCvar.DLstatus), (void *) &ESCvar.ALevent);
ESCvar.DLstatus = etohs (ESCvar.DLstatus);
}
// reset ESC to init state
ESC_ALstatus (ESCinit);
...
}
\endcode
- Software Init
- Reset the slave into Init state by writing AL Status register.
- Clear Errors by writing AL Status Code register.
- Stop the Application Layer, basically we disable the SyncManagers
that implicitly block the data exchange.
\code
void soes (void *arg)
{
...
while ((ESCvar.DLstatus & 0x0001) == 0)
{
ESC_read (ESCREG_DLSTATUS, (void *) &ESCvar.DLstatus,
sizeof (ESCvar.DLstatus), (void *) &ESCvar.ALevent);
ESCvar.DLstatus = etohs (ESCvar.DLstatus);
}
// reset ESC to init state
ESC_ALstatus (ESCinit);
ESC_ALerror (ALERR_NONE);
ESC_stopmbx ();
ESC_stopinput ();
ESC_stopoutput ();
// application run loop
while (1)
...
}
\endcode
- Application loop
- ALevent handling, ALevent hold information on changes in ALControl or
SyncManagers. ALControl for state changes and SyncManagers for changes written
by EtherCAT in local memory mapped to active SyncManagers
- ESC_state for state handling, such as state step up or down with correct
error and acknowledge response.
- Mailbox handler, generic support of mailboxes used by all Application Layer
protocols.
- On mailbox actions we'll also check if we need to use a specific protocol
handler to handle the incoming or outgoing Mailbox data.
Up until the now we're using the SOES protocol stack without any application specific
calls. Next up we'll look at the application Code, here named DIG_process ().
\code
void soes (void *arg)
{
...
// application run loop
while (1)
{
if((ESCvar.ALstatus & 0x0f) == ESCinit)
{
txpdomap = DEFAULTTXPDOMAP;
rxpdomap = DEFAULTRXPDOMAP;
txpdoitems = DEFAULTTXPDOITEMS;
rxpdoitems = DEFAULTTXPDOITEMS;
}
ESC_read (ESCREG_LOCALTIME, (void *) &ESCvar.Time, sizeof (ESCvar.Time),
(void *) &ESCvar.ALevent);
ESCvar.Time = etohl (ESCvar.Time);
ESC_ALevent();
ESC_state ();
if (ESC_mbxprocess ())
{
ESC_coeprocess ();
ESC_foeprocess ();
ESC_xoeprocess ();
}
DIG_process ();
};
}
\endcode
\section application Application
The function DIG_process is the User part of the application and could be joined
by more cyclic User functions for executing other parts of the application.
The example code can be split in 2 parts
- Outputs
- Start by evaluating if we're in a state supporting update of outputs, eg.
Operational state.
- If we're in OP we can read the current PDO data in the 3-buffer SyncManager
mapped to the output SM, the default is SyncManager2, we read the ESC RAM address
of SM2 and store it at the local address of the local variable Wb.LED.
We'll read RXPDOsize bytes to trigger a complete SyncManager read.
- After local variables have been refreshed we basically write the local
PDO variables to the User application, ex. a GPIO.
- Basically this is the API of the SOES toward the User Application.
- This function also include a watchdog mechanism, if triggered it will
shutdown the outputs and trigger a state changes to safe operational.
AlError is updated with cause of error to inform the Master.
\code
void RXPDO_update (void)
{
ESC_read (SM2_sma, &Wb.LED, RXPDOsize, (void *) &ESCvar.ALevent);
}
void DIG_process (void)
{
if (App.state & APPSTATE_OUTPUT)
{
if (ESCvar.ALevent & ESCREG_ALEVENT_SM2) // SM2 trigger ?
{
RXPDO_update ();
reset_wd ();
gpio_set(GPIO_LED, Wb.LED & BIT(0));
}
if (!wd_cnt)
{
ESC_stopoutput ();
// watchdog, invalid outputs
ESC_ALerror (ALERR_WATCHDOG);
// goto safe-op with error bit set
ESC_ALstatus (ESCsafeop | ESCerror);
wd_trigger = 1;
}
}
else
{
reset_wd ();
}
...
}
\endcode
- Inputs
- Is handled a bit simpler than outputs but in reverse order, the slave will
continue update the inputs in state Safe Operational.
- Here we first read User application data from ex. GPIO and then write to
local PDO variables.
- After the local variables have been refreshed we write those to the current
PDO data 3-buffer SyncManager mapped to the input SM, the default is SyncManager3.
This way we update the ESC RAM address with User Application data accessed by
the EtherCAT master.
\code
void TXPDO_update (void)
{
ESC_write (SM3_sma, &Rb.button, TXPDOsize, (void *) &ESCvar.ALevent);
}
void DIG_process (void)
{
...
Rb.button = gpio_get(GPIO_WAKEUP);
Cb.reset_counter++;
Rb.encoder = Cb.reset_counter;
TXPDO_update ();
}
\endcode
\section ApplicationdataProcessdata ApplicationdataProcessdata
To run application data through EtherCAT processdata we need to describe for
the fieldbus what data we have and will read/write. For this we have 3 objects,
the ESI file, SII-EEPROM and CoE Object Dictionary. The first 2 are mandatory
and the third is a very convenient way of describing complex slaves.
Our strategy is to keep the ESI file and the SII-EEPROM as thin as possible to
avoid duplication of data that need to be maintained. Both will hold the bare
minimum of mandatory + optional data to pass CTT. Optional data will be
included to tell EtherCAT that detailed information can be retrieved via CoE
from the OD stored in the slave it self.
\section SII-EEPROM SII-EEPROM
Snapshot from SII information matrix from EtherCAT communication slides.
\image html sii_pdo.png "Our target slave is Fixed PDO and OD"
\image latex sii_pdo.png "Our target slave is Fixed PDO and OD" width=15cm
\section ESI-file ESI-file
Snapshot from ESI tree from EtherCAT communication slides.
\image html esi_pdo.png "mandatory and optional ESI data"
\image latex esi_pdo.png "mandatory and optional ESI data" width=15cm
To briefly give a hint what are describe in the ESI and SII we're listing
a set of included elements marked M for mandatory and O for optional.
\code
- Vendor (M) , Describes the identity.
- Id (M), Hex, EtherCAT Vendor ID, OD 1018.01
- Name (M), NameType, Expedient vendor name
- Descriptions (M), Describes the EtherCAT device(s) using elements.
- Groups (M), Similar devices can be assigned to one group.
- Group (M), One group groups similar devices with slightly different features
- Type (M), A reference handle corresponding to the GroupType value in Description:Devices:Device:Group
- Name (M), Name for this group show by a configuration tool
- Devices (M), Element devices may describe one or several devices with their EtherCAT features such as SyncManagers, FMMUs and Dictionaries
- Device (O), Holds all information about the device like syncmanagers and FMMU, object dictionary, data types and the PDO mapping and assign description
- Device ATT: Physics (M),string, Physics at individual ports
- Type (M), Device identity
- Type ATT:ProductCode="#x98123467"
- Type ATT:RevisionNo="#x00000001"
- Name (M), Detailed name of device shown by a configuration tool (not used for identification)
- GroupType (M), Reference to a group (described in element Groups) to which this device should be assigned to. Name of the handle used in element Groups:Group:Type
- Fmmu (O), String to describe function, Outputs -> RxPDO, Inputs -> TxPDO , MBoxState -> FMMU is used to poll Input Mailbox
- Sm (O), Description of SyncManager including start address and direction.
- MBoxOut Mailbox Data Master -> Slave
- MBoxIn Mailbox Data Slave -> Master
- Outputs Process Data Master -> Slave
- Inputs Process Data Slave -> master
- Sm ATT:DefaultSize="128" , Size
- Sm ATT:StartAddress="#x1000" , Start address
- Sm ATT:ControlByte="#x26" , Settings , Bit [1][0] = 10, Operation mode Mailbox, 00 Buffered 3.
- Sm ATT:Enable="1", Enabled
- Mailbox (O), Description of available mailbox protocols
- Mailbox ATT: DataLinkLayer="true", Support of Mailbox Data Link Layer is mandatory.
- CoE (O), Device support CoE
- CoE (O) ATT: SdoInfo="true" , SDO Information Service
- CoE (O) ATT: CompleteAccess="false" , SDO complete access not supported
- CoE (O) ATT: PdoUpload="true", PDO description uploaded from the slave's object dictionary and SyncManager length calculated based on the same
- Dc (O), describes synchronization modes supported by the device.
- OpMode (O), Definition of supported operation modes
- Name (M), Internal Handle of operation mode
- Desc (O(M)), description of operation mode, recommended, Free Run (no sync), SM Synchronous, DC Synchronous
- AssignActive (M), Value of Latch and Sync Control registers
- Eeprom (O, use is mandatory)
- Data (M)
Or
- ByteSize (M), Byte Size of connected EEPROM device
- ConfigData (M), First 7 words of EEPROM, Configuration Areas
- BootStrap (O), Start address and length of mailboxes for BootStrap
\endcode
So to describe the application we use CoE and Object Dictionary. The mapping between
Object Dictionary and the User Application are done via local variables defined as
user types. The Object Dictionary itself is stored in a matrix where all
the indexes are listed. Every index then have a submatrix with its subindex.
\section ObjectDictionary ObjectDictionary
The Object Dictionary used as example follow the CANopen DS301 ranges.
- 0x0000 - 0x0FFF, Data Type Area
- 0x1000 - 0x1FFF, Communication Area
- 0x2000 - 0x5FFF, Manufacture specific area
- 0x6000 - 0x6FFF, Input area
- 0x7000 - 0x7FFF, Output area
- 0x8000 - 0x8FFF, Configuration area
- 0x9000 - 0x9FFF, Information area
- 0xA000 - 0xAFFF, Diagnosis Area
- 0xB000 - 0xBFFF, Service Transfer Area
- 0xC000 - 0xEFFF, Reserved Area
- 0xF000 - 0xFFFF, Device Area
RxPDO , 0x1600 - 0x17FF
TxPDO , 0x1A00 - 0x1BFF
Example, on how the the OD index are linked.
Top index, SyncManagers Communication Types. In index 0 the 0x04 indicates we have 4
SyncManagers defined. Every SyncManager is assigned a type, in index 1-4, we have standard
settings SM0 = 1, SM1 = 2, SM2 = 3, SM3 = 4 from ETG 1000.6, 5.6.7.4.
- 0, Unused
- 1, MailBox Receive, master to slave
- 2, MailBox Send, slave to master
- 3, Processdata output, master to slave
- 4, Processdata input, slave to master
\code
objectlist.h
FLASHSTORE _objectlist SDOobjects[] =
...
{0x1C00, OTYPE_ARRAY, 4, 0, &acName1C00[0], &SDO1C00[0]},
FLASHSTORE _objd SDO1C00[] =
{ {0x00, DTYPE_UNSIGNED8, 8, ATYPE_R, &acNameNOE[0], 0x04, nil},
{0x01, DTYPE_UNSIGNED8, 8, ATYPE_R, &acName1C00_01[0], 0x01, nil},
{0x02, DTYPE_UNSIGNED8, 8, ATYPE_R, &acName1C00_02[0], 0x02, nil},
{0x03, DTYPE_UNSIGNED8, 8, ATYPE_R, &acName1C00_03[0], 0x03, nil},
{0x04, DTYPE_UNSIGNED8, 8, ATYPE_R, &acName1C00_04[0], 0x04, nil}
\endcode
SyncManagers channels 0-31 are listed in SDO1C10-SDO1C2F. If we look
at SyncManager channel 2, we see.
- Type 3, Processdata output, master to slave
It got one RxPDO index 0x1600 connected, and the submatrix for 0x1600 link
one PDO object index 0x7000 subindex 1. The output object 0x70000108 give
you the index 0x7000, subindex 1 and PDO object length 1(byte).
\code
objectlist.h
FLASHSTORE _objd SDO1C12[] =
{ {0x00, DTYPE_UNSIGNED8, 8, ATYPE_R, &acNameNOE[0], 0x01, nil},
{0x01, DTYPE_UNSIGNED16, 16, ATYPE_R, &acNameMO[0], 0x1600, nil}
};
FLASHSTORE _objd SDO1600[] =
{ {0x00, DTYPE_UNSIGNED8, 8, ATYPE_R, &acNameNOE[0], 0x01, nil},
{0x01, DTYPE_UNSIGNED32, 32, ATYPE_R, &acNameMO[0], 0x70000108, nil}
};
\endcode
At PDO level we make the connection between the local application and
the object dictionary. For all subindex in the PDO the last element
is the address to the local variable.
\code
objectlist.h
FLASHSTORE _objd SDO7000[] =
{ {0x00, DTYPE_UNSIGNED8, 8, ATYPE_R, &acNameNOE[0], 0x01, nil},
{0x01, DTYPE_UNSIGNED8, 8, ATYPE_RW, &acName7000_01[0], 0, &(Wb.LED)}
};
utypes.h
typedef struct
{
uint8 LED;
} _Wbuffer;
\endcode
Beside SyncManager to PDO mapping we also have mandatory data as
0x1000 Device Type
0x1018 Object Identity
0x10C0 SyncManager Communication Type, as we used as top index when
figuring out our PDOs in the Object Dictionary.
For a complete description of the object dictionary you can get guidance
by the ETG1000.6 EcatAlProtocols
A useful feature is the Asynchronous use of SDO parameters. In the example
we have Parameter set holding an encoder scale value, just for show we also
have a read only mirror value of the encoder scale. Parameters defined as a
RW SDO parameter and can be written/read by SDO Download or Upload. In
addition there is a ESC_objecthandler Hook on SDO Download where you can
add additional logic, ex. we execute the mirror of the encoder scale value
by assigning the encoder scale value to the mirror.
\code
objectlist.h
FLASHSTORE _objd SDO7100[] =
{ {0x00, DTYPE_UNSIGNED8, 8, ATYPE_R, &acNameNOE[0], 0x02, nil},
{0x01, DTYPE_UNSIGNED32, 32, ATYPE_RW, &acName7100_01[0], 0, &(encoder_scale)},
{0x02, DTYPE_UNSIGNED32, 32, ATYPE_R, &acName7100_02[0], 0, &(encoder_scale_mirror)}
};
soes.c
void ESC_objecthandler (uint16 index, uint8 subindex)
{
switch (index)
{
...
case 0x7100:
{
switch (subindex)
{
case 0x01:
{
encoder_scale_mirror = encoder_scale;
break;
}
}
break;
}
...
}
\endcode
This tutorial is just one way of doing it.
Enjoy and happy coding!
Andreas Karlsson, rt-labs AB, www.rt-labs.com
*/

999
soes/esc.c 100644
View File

@ -0,0 +1,999 @@
/*
* SOES Simple Open EtherCAT Slave
*
* File : esc.c
* Version : 0.9.2
* Date : 22-02-2010
* Copyright (C) 2007-2013 Arthur Ketels
* Copyright (C) 2012-2013 rt-labs.
*
* SOES is free software; you can redistribute it and/or modify it under
* the terms of the GNU General Public License version 2 as published by the Free
* Software Foundation.
*
* SOES is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* for more details.
*
* As a special exception, if other files instantiate templates or use macros
* or inline functions from this file, or you compile this file and link it
* with other works to produce a work based on this file, this file does not
* by itself cause the resulting work to be covered by the GNU General Public
* License. However the source code for this file must still be made available
* in accordance with section (3) of the GNU General Public License.
*
* This exception does not invalidate any other reasons why a work based on
* this file might be covered by the GNU General Public License.
*
* The EtherCAT Technology, the trade name and logo "EtherCAT" are the intellectual
* property of, and protected by Beckhoff Automation GmbH.
*/
#include <string.h>
#include "utypes.h"
#include "esc.h"
#include "esc_coe.h"
#include "esc_foe.h"
/** \file
* \brief
* Base EtherCAT functions for handling the Data Link Layer and Malilboxes
*
*
* State machine and mailbox support.
*/
static esc_cfg_t * esc_cfg = NULL;
/** Write AL Status Code to the ESC.
*
* @param[in] errornumber = Write an by EtherCAT specified Error number register 0x134 AL Status Code
*/
void ESC_ALerror (uint16 errornumber)
{
uint16 dummy;
ESCvar.ALerror = errornumber;
dummy = htoes (errornumber);
ESC_write (ESCREG_ALERROR, &dummy, sizeof (dummy), (void *) &ESCvar.ALevent);
}
/** Write AL Status to the ESC.
*
* @param[in] status = Write current slave status to register 0x130 AL Status
* reflecting actual state and error indication if present
*/
void ESC_ALstatus (uint8 status)
{
uint16 dummy;
ESCvar.ALstatus = status;
dummy = htoes ((uint16) status);
ESC_write (ESCREG_ALSTATUS, &dummy, sizeof (dummy),
(void *) &ESCvar.ALevent);
}
/** Read SM Status register 0x805(+ offset to SyncManager n) to acknowledge a
* Sync Manager event Bit 3 in ALevent. The result is not used.
*
* @param[in] n = Read Sync Manager no. n
*/
void ESC_SMack (uint8 n)
{
uint16 dummy;
ESC_read (ESCREG_SM0STATUS + (n << 3), &dummy, 2, (void *) &ESCvar.ALevent);
}
/** Read SM Status register 0x805(+ offset to SyncManager n) and save the
* result in global variable ESCvar.SM[n].
*
* @param[in] n = Read Sync Manager no. n
*/
void ESC_SMstatus (uint8 n)
{
_ESCsm2 *sm;
uint16 temp;
sm = (_ESCsm2 *) & ESCvar.SM[n];
ESC_read (ESCREG_SM0STATUS + (n << 3), &temp, 2, (void *) &ESCvar.ALevent);
#if defined(EC_LITTLE_ENDIAN)
sm->ActESC = temp >> 8;
sm->Status = temp;
#endif
#if defined(EC_BIG_ENDIAN)
sm->ActESC = temp;
sm->Status = temp >> 8;
#endif
}
/** Write ESCvar.SM[n] data to ESC PDI control register 0x807(+ offset to SyncManager n).
*
* @param[in] n = Write to Sync Manager no. n
*/
void ESC_SMwritepdi (uint8 n)
{
_ESCsm2 *sm;
sm = (_ESCsm2 *) & ESCvar.SM[n];
ESC_write (ESCREG_SM0PDI + (n << 3), &(sm->ActPDI), 1,
(void *) &ESCvar.ALevent);
}
/** Write 0 to Bit0 in SM PDI control register 0x807(+ offset to SyncManager n) to Activate the Sync Manager n.
*
* @param[in] n = Write to Sync Manager no. n
*/
void ESC_SMenable (uint8 n)
{
_ESCsm2 *sm;
sm = (_ESCsm2 *) & ESCvar.SM[n];
sm->ActPDI &= ~ESCREG_SMENABLE_BIT;
ESC_SMwritepdi (n);
}
/** Write 1 to Bit0 in SM PDI control register 0x807(+ offset to SyncManager n) to De-activte the Sync Manager n.
*
* @param[in] n = Write to Sync Manager no. n
*/
void ESC_SMdisable (uint8 n)
{
_ESCsm2 *sm;
sm = (_ESCsm2 *) & ESCvar.SM[n];
sm->ActPDI |= ESCREG_SMENABLE_BIT;
ESC_SMwritepdi (n);
}
/** Read Configured Station Address register 0x010 assigned by the Master.
*
*/
void ESC_address (void)
{
ESC_read (ESCREG_ADDRESS, (void *) &ESCvar.address, sizeof (ESCvar.address),
(void *) &ESCvar.ALevent);
ESCvar.address = etohs (ESCvar.address);
}
/** Read Watchdog Status register 0x440. Result Bit0 0= Expired, 1= Active or disabled.
*
* @return value of register Watchdog Status.
*/
uint8 ESC_WDstatus (void)
{
uint16 wdstatus;
ESC_read (ESCREG_WDSTATUS, &wdstatus, 2, (void *) &ESCvar.ALevent);
wdstatus = etohs (wdstatus);
return (uint8) wdstatus;
}
/** Check mailbox status by reading all SyncManager 0 and 1 data. The read values
* are compared with local definitions for SM Physical Address, SM Length and SM Control.
* If we check fails we disable Mailboxes by disabling SyncManager 0 and 1 and return
* state Init with Error flag set.
*
* @param[in] state = Current state request read from ALControl 0x0120
* @return if all Mailbox values is correct we return incoming state request, otherwise
* we return state Init with Error flag set.
*/
uint8 ESC_checkmbx (uint8 state)
{
_ESCsm2 *SM;
ESC_read (ESCREG_SM0, (void *) &ESCvar.SM[0], sizeof (ESCvar.SM[0]),
(void *) &ESCvar.ALevent);
ESC_read (ESCREG_SM1, (void *) &ESCvar.SM[1], sizeof (ESCvar.SM[1]),
(void *) &ESCvar.ALevent);
SM = (_ESCsm2 *) & ESCvar.SM[0];
if ((etohs (SM->PSA) != MBX0_sma) || (etohs (SM->Length) != MBX0_sml)
|| (SM->Command != MBX0_smc) || (ESCvar.SM[0].ECsm == 0))
{
ESCvar.SMtestresult = SMRESULT_ERRSM0;
ESC_SMdisable (0);
ESC_SMdisable (1);
return (uint8) (ESCinit | ESCerror); //fail state change
}
SM = (_ESCsm2 *) & ESCvar.SM[1];
if ((etohs (SM->PSA) != MBX1_sma) || (etohs (SM->Length) != MBX1_sml)
|| (SM->Command != MBX1_smc) || (ESCvar.SM[1].ECsm == 0))
{
ESCvar.SMtestresult = SMRESULT_ERRSM1;
ESC_SMdisable (0);
ESC_SMdisable (1);
return ESCinit | ESCerror; //fail state change
}
return state;
}
/** Try to start mailboxes for current ALControl state request by enabling SyncManager 0 and 1.
* If all mailbox settings is correct we return incoming state request, otherwise
* we return state Init with Error flag set and update local ALerror with code 0x16 Invalid
* mailbox configuration.
*
* @param[in] state = Current state request read from ALControl 0x0120
* @return if all Mailbox values is correct we return incoming state, otherwise
* we return state Init with Error flag set.
*/
uint8 ESC_startmbx (uint8 state)
{
ESC_SMenable (0);
ESC_SMenable (1);
ESC_SMstatus (0);
ESC_SMstatus (1);
if ((state = ESC_checkmbx (state)) & ESCerror)
{
ESC_ALerror (ALERR_INVALIDMBXCONFIG);
MBXrun = 0;
}
else
{
ESCvar.toggle = ESCvar.SM[1].ECrep; //sync repeat request toggle state
MBXrun = 1;
}
return state;
}
/** Check boostrap mailbox status by reading all SyncManager 0 and 1 data. The read values
* are compared with local definitions for SM Physical Address, SM Length and SM Control.
* If we check fails we disable Mailboxes by disabling SyncManager 0 and 1 and return
* state Init with Error flag set.
*
* @param[in] state = Current state request read from ALControl 0x0120
* @return if all Mailbox values is correct we return incoming state request, otherwise
* we return state Init with Error flag set.
*/
uint8 ESC_checkmbxboot (uint8 state)
{
_ESCsm2 *SM;
ESC_read (ESCREG_SM0, (void *) &ESCvar.SM[0], sizeof (ESCvar.SM[0]),
(void *) &ESCvar.ALevent);
ESC_read (ESCREG_SM1, (void *) &ESCvar.SM[1], sizeof (ESCvar.SM[1]),
(void *) &ESCvar.ALevent);
SM = (_ESCsm2 *) & ESCvar.SM[0];
if ((etohs (SM->PSA) != MBX0_sma_b) || (etohs (SM->Length) != MBX0_sml_b)
|| (SM->Command != MBX0_smc_b) || (ESCvar.SM[0].ECsm == 0))
{
ESCvar.SMtestresult = SMRESULT_ERRSM0;
ESC_SMdisable (0);
ESC_SMdisable (1);
return (uint8) (ESCinit | ESCerror); //fail state change
}
SM = (_ESCsm2 *) & ESCvar.SM[1];
if ((etohs (SM->PSA) != MBX1_sma_b) || (etohs (SM->Length) != MBX1_sml_b)
|| (SM->Command != MBX1_smc_b) || (ESCvar.SM[1].ECsm == 0))
{
ESCvar.SMtestresult = SMRESULT_ERRSM1;
ESC_SMdisable (0);
ESC_SMdisable (1);
return (uint8) (ESCinit | ESCerror); //fail state change
}
return state;
}
/** Try to start bootstrap mailboxes for current ALControl state request by enabling SyncManager 0 and 1.
* If all mailbox settings is correct we return incoming state request, otherwise
* we return state Init with Error flag set and update local ALerror with code 0x16 Invalid
* mailbox configuration.
*
* @param[in] state = Current state request read from ALControl 0x0120
* @return if all Mailbox values is correct we return incoming state, otherwise
* we return state Init with Error flag set.
*/
uint8 ESC_startmbxboot (uint8 state)
{
ESC_SMenable (0);
ESC_SMenable (1);
ESC_SMstatus (0);
ESC_SMstatus (1);
if ((state = ESC_checkmbxboot (state)) & ESCerror)
{
ESC_ALerror (ALERR_INVALIDBOOTMBXCONFIG);
MBXrun = 0;
}
else
{
ESCvar.toggle = ESCvar.SM[1].ECrep; //sync repeat request toggle state
MBXrun = 1;
}
return state;
}
/** Stop mailboxes by disabling SyncManager 0 and 1. Clear local mailbox variables
* stored in ESCvar.
*/
void ESC_stopmbx (void)
{
uint8 n;
MBXrun = 0;
ESC_SMdisable (0);
ESC_SMdisable (1);
for (n = 0; n < MBXBUFFERS; n++)
{
MBXcontrol[n].state = MBXstate_idle;
}
ESCvar.mbxoutpost = 0;
ESCvar.mbxbackup = 0;
ESCvar.xoe = 0;
ESCvar.mbxfree = 1;
ESCvar.toggle = 0;
ESCvar.mbxincnt = 0;
ESCvar.segmented = 0;
ESCvar.frags = 0;
ESCvar.fragsleft = 0;
ESCvar.txcue = 0;
}
/** Read Receive mailbox and store data in local ESCvar.MBX variable.
* Combined function for bootstrap and other states. State check decides
* which one to read.
*/
void ESC_readmbx (void)
{
_MBX *MB = &MBX[0];
uint16 length;
if (ESCvar.ALstatus == ESCboot)
{
ESC_read (MBX0_sma_b, MB, MBXHSIZE, (void *) &ESCvar.ALevent);
length = etohs (MB->header.length);
if (length > (MBX0_sml_b - MBXHSIZE))
{
length = MBX0_sml_b - MBXHSIZE;
}
ESC_read (MBX0_sma_b + MBXHSIZE, &(MB->b[0]), length,
(void *) &ESCvar.ALevent);
if (length + MBXHSIZE < MBX0_sml_b)
{
ESC_read (MBX0_sme_b, &length, 1, (void *) &ESCvar.ALevent);
}
}
else
{
ESC_read (MBX0_sma, MB, MBXHSIZE, (void *) &ESCvar.ALevent);
length = etohs (MB->header.length);
if (length > (MBX0_sml - MBXHSIZE))
{
length = MBX0_sml - MBXHSIZE;
}
ESC_read (MBX0_sma + MBXHSIZE, &(MB->b[0]), length,
(void *) &ESCvar.ALevent);
if (length + MBXHSIZE < MBX0_sml)
{
ESC_read (MBX0_sme, &length, 1, (void *) &ESCvar.ALevent);
}
}
MBXcontrol[0].state = MBXstate_inclaim;
}
/** Write local mailbox buffer ESCvar.MBX[n] to Send mailbox.
* Combined function for bootstrap and other states. State check decides
* which one to write.
*
* @param[in] n = Which local mailbox buffer n to send.
*/
void ESC_writembx (uint8 n)
{
_MBX *MB = &MBX[n];
uint8 dummy = 0;
uint16 length;
length = etohs (MB->header.length);
if (ESCvar.ALstatus == ESCboot)
{
if (length > (MBX1_sml_b - MBXHSIZE))
{
length = MBX1_sml_b - MBXHSIZE;
}
ESC_write (MBX1_sma_b, MB, MBXHSIZE + length, (void *) &ESCvar.ALevent);
if (length + MBXHSIZE < MBX1_sml_b)
{
ESC_write (MBX1_sme_b, &dummy, 1, (void *) &ESCvar.ALevent);
}
}
else
{
if (length > (MBX1_sml - MBXHSIZE))
{
length = MBX1_sml - MBXHSIZE;
}
ESC_write (MBX1_sma, MB, MBXHSIZE + length, (void *) &ESCvar.ALevent);
if (length + MBXHSIZE < MBX1_sml)
{
ESC_write (MBX1_sme, &dummy, 1, (void *) &ESCvar.ALevent);
}
}
ESCvar.mbxfree = 0;
}
/** TBD
*/
void ESC_ackmbxread (void)
{
uint8 dummy = 0;
if (ESCvar.ALstatus == ESCboot)
{
ESC_write (MBX1_sma_b, &dummy, 1, (void *) &ESCvar.ALevent);
}
else
{
ESC_write (MBX1_sma, &dummy, 1, (void *) &ESCvar.ALevent);
}
ESCvar.mbxfree = 1;
}
/** Allocate and prepare a mailbox buffer. Take the first Idle buffer from the End.
* Set Mailbox control state to be used for outbox and fill the mailbox buffer with
* address master and mailbox next CNT value between 1-7.
*
* @return The index of Mailbox buffer prepared for outbox. IF no buffer is available return 0.
*/
uint8 ESC_claimbuffer (void)
{
_MBX *MB;
uint8 n = MBXBUFFERS - 1;
while ((n > 0) && (MBXcontrol[n].state))
{
n--;
}
if (n)
{
MBXcontrol[n].state = MBXstate_outclaim;
MB = &MBX[n];
ESCvar.mbxcnt = (++ESCvar.mbxcnt) & 0x07;
if (ESCvar.mbxcnt == 0)
{
ESCvar.mbxcnt = 1;
}
MB->header.address = htoes (0x0000); // destination is master
MB->header.channel = 0;
MB->header.priority = 0;
MB->header.mbxcnt = ESCvar.mbxcnt;
ESCvar.txcue++;
}
return n;
}
/** Look for any present requests for posting to the outbox.
*
* @return the index of Mailbox buffer ready to be posted.
*/
uint8 ESC_outreqbuffer (void)
{
uint8 n = MBXBUFFERS - 1;
while ((n > 0) && (MBXcontrol[n].state != MBXstate_outreq))
{
n--;
}
return n;
}
/** Allocate and prepare a mailbox buffer for sending an error message. Take the first Idle
* buffer from the end. Set Mailbox control state to be used for outbox and fill the mailbox
* buffer with error information.
*
* @param[in] n = Error number to be sent in mailbox error message.
*/
void MBX_error (uint16 error)
{
uint8 MBXout;
_MBXerr *mbxerr;
MBXout = ESC_claimbuffer ();
if (MBXout)
{
mbxerr = (_MBXerr *) & MBX[MBXout];
mbxerr->mbxheader.length = htoes ((uint16) 0x04);
mbxerr->mbxheader.mbxtype = MBXERR;
mbxerr->type = htoes ((uint16) 0x01);
mbxerr->detail = htoes (error);
MBXcontrol[MBXout].state = MBXstate_outreq;
}
}
/** Mailbox routine for implementing the low-level part of the mailbox protocol
* used by Application Layers running on-top of mailboxes. It takes care of sending
* a mailbox, re-sending a mailbox, reading a mailbox and handles a mailbox full event.
*
* @return =0 if nothing to do. =1 if something to be handled by mailbox protocols.
*/
uint8 ESC_mbxprocess (void)
{
uint8 mbxhandle = 0;
_MBX *MB = &MBX[0];
if (!MBXrun)
{
/* nothing to do */
return 0;
}
/* SM0/1 access or SMn change event */
if (ESCvar.ALevent & ESCREG_ALEVENT_SM_MASK)
{
ESC_SMstatus (0);
ESC_SMstatus (1);
}
/* outmbx read by master */
if (ESCvar.mbxoutpost && ESCvar.SM[1].IntR)
{
ESC_ackmbxread ();
/* dispose old backup */
if (ESCvar.mbxbackup)
{
MBXcontrol[ESCvar.mbxbackup].state = MBXstate_idle;
}
/* if still to do */
if (MBXcontrol[ESCvar.mbxoutpost].state == MBXstate_again)
{
ESC_writembx (ESCvar.mbxoutpost);
}
/* create new backup */
MBXcontrol[ESCvar.mbxoutpost].state = MBXstate_backup;
ESCvar.mbxbackup = ESCvar.mbxoutpost;
ESCvar.mbxoutpost = 0;
return 0;
}
/* repeat request */
if (ESCvar.SM[1].ECrep != ESCvar.toggle)
{
if (ESCvar.mbxoutpost || ESCvar.mbxbackup)
{
/* if outmbx empty */
if (!ESCvar.mbxoutpost)
{
/* use backup mbx */
ESC_writembx (ESCvar.mbxbackup);
}
else
{
/* reset mailbox */
ESC_SMdisable (1);
/* have to resend later */
MBXcontrol[ESCvar.mbxoutpost].state = MBXstate_again;
/* activate mailbox */
ESC_SMenable (1);
/* use backup mbx */
ESC_writembx (ESCvar.mbxbackup);
}
ESCvar.toggle = ESCvar.SM[1].ECrep;
ESCvar.SM[1].PDIrep = ESCvar.toggle;
ESC_SMwritepdi (1);
}
return 0;
}
/* if the outmailbox is free check if we have something to send */
if (ESCvar.txcue && (ESCvar.mbxfree || !ESCvar.SM[1].MBXstat))
{
/* check out request mbx */
mbxhandle = ESC_outreqbuffer ();
/* outmbx empty and outreq mbx available */
if (mbxhandle)
{
ESC_writembx (mbxhandle);
/* change state */
MBXcontrol[mbxhandle].state = MBXstate_outpost;
ESCvar.mbxoutpost = mbxhandle;
if (ESCvar.txcue)
{
ESCvar.txcue--;
}
}
}
/* read mailbox if full and no xoe in progress */
if (ESCvar.SM[0].MBXstat && !MBXcontrol[0].state && !ESCvar.mbxoutpost
&& !ESCvar.xoe)
{
ESC_readmbx ();
ESCvar.SM[0].MBXstat = 0;
if (etohs (MB->header.length) < 6)
{
if (etohs (MB->header.length) == 0)
{
MBX_error (MBXERR_INVALIDHEADER);
}
else
{
MBX_error (MBXERR_SIZETOOSHORT);
}
/* drop mailbox */
MBXcontrol[0].state = MBXstate_idle;
}
if ((MB->header.mbxcnt != 0) && (MB->header.mbxcnt == ESCvar.mbxincnt))
{
/* drop mailbox */
MBXcontrol[0].state = MBXstate_idle;
}
ESCvar.mbxincnt = MB->header.mbxcnt;
return 1;
}
/* ack changes in non used SM */
if (ESCvar.ALevent & ESCREG_ALEVENT_SMCHANGE)
{
ESC_SMack (4);
ESC_SMack (5);
ESC_SMack (6);
ESC_SMack (7);
}
return 0;
}
/** Handler for incorrect or unsupported mailbox data. Write error response
* in Mailbox.
*/
void ESC_xoeprocess (void)
{
_MBXh *mbh;
if (!MBXrun)
{
return;
}
if (!ESCvar.xoe && (MBXcontrol[0].state == MBXstate_inclaim))
{
mbh = (_MBXh *) & MBX[0];
if ((mbh->mbxtype == 0) || (etohs (mbh->length) == 0))
{
MBX_error (MBXERR_INVALIDHEADER);
}
else
{
MBX_error (MBXERR_UNSUPPORTEDPROTOCOL);
}
/* mailbox type not supported, drop mailbox */
MBXcontrol[0].state = MBXstate_idle;
}
}
/** Validate the values of Sync Manager 2 & 3 that the current ESC values is
* equal to configured and calculated local values.
*
* @param[in] state = Requested state.
* @return = incoming state request if every thing checks out OK. = state (PREOP | ERROR) if something isn't correct.
*/
uint8 ESC_checkSM23 (uint8 state)
{
_ESCsm2 *SM;
ESC_read (ESCREG_SM2, (void *) &ESCvar.SM[2], sizeof (ESCvar.SM[2]),
(void *) &ESCvar.ALevent);
ESC_read (ESCREG_SM3, (void *) &ESCvar.SM[3], sizeof (ESCvar.SM[3]),
(void *) &ESCvar.ALevent);
SM = (_ESCsm2 *) & ESCvar.SM[2];
if ((etohs (SM->PSA) != SM2_sma) || (etohs (SM->Length) != SM2_sml)
|| (SM->Command != SM2_smc) || !(SM->ActESC & SM2_act))
{
ESCvar.SMtestresult = SMRESULT_ERRSM2;
/* fail state change */
return (ESCpreop | ESCerror);
}
SM = (_ESCsm2 *) & ESCvar.SM[3];
if ((etohs (SM->PSA) != SM3_sma) || (etohs (SM->Length) != SM3_sml)
|| (SM->Command != SM3_smc) || !(SM->ActESC & SM3_act))
{
ESCvar.SMtestresult = SMRESULT_ERRSM3;
/* fail state change */
return (ESCpreop | ESCerror);
}
return state;
}
/** Function trying to enable start updating the process data inputs. It calls the check SM 2 & 3
* routine, based on the result from there if enables or disables the Input SyncManager, in addition
* it updates the ALStatusCode case something didn't pass the check.
*
* @param[in] state = Requested state.
* @return = state, incoming state request if every thing checks out OK. =state (PREOP | ERROR) if something isn't correct.
*/
uint8 ESC_startinput (uint8 state)
{
state = ESC_checkSM23 (state);
if (state != (ESCpreop | ESCerror))
{
ESC_SMenable (3);
App.state = APPSTATE_INPUT;
}
else
{
ESC_SMdisable (2);
ESC_SMdisable (3);
if (ESCvar.SMtestresult & SMRESULT_ERRSM3)
{
ESC_ALerror (ALERR_INVALIDINPUTSM);
}
else
{
ESC_ALerror (ALERR_INVALIDOUTPUTSM);
}
}
return state;
}
/** Unconditional stop of updating inputs by disabling Sync Manager 2 & 3.
* Set the App.state to APPSTATE_IDLE.
*
*/
void ESC_stopinput (void)
{
App.state = APPSTATE_IDLE;
ESC_SMdisable (3);
ESC_SMdisable (2);
}
/** Unconditional start of updating outputs by enabling Sync Manager 2.
* Set the App.state to APPSTATE_OUTPUT.
*
* @param[in] state = Not used.
* @return = state unchanged.
*
*/
uint8 ESC_startoutput (uint8 state)
{
ESC_SMenable (2);
App.state |= APPSTATE_OUTPUT;
return state;
}
/** Unconditional stop of updating outputs by disabling Sync Manager 2.
* Set the App.state to APPSTATE_ONPUT. Call application hook APP_safeoutput
* letting the user to set safe state values on outputs.
*
*/
void ESC_stopoutput (void)
{
App.state &= APPSTATE_INPUT;
ESC_SMdisable (2);
APP_safeoutput ();
}
/** The state handler acting on ALControl Bit(0) and SyncManager Activation BIT(4)
* events in the Al Event Request register 0x220.
*
*/
void ESC_state (void)
{
uint8 ac, an, as, ax, ax23;
uint8 handle_smchanged = 0;
/* Do we have a state change request pending */
if (ESCvar.ALevent & ESCREG_ALEVENT_CONTROL)
{
ESC_read (ESCREG_ALCONTROL, (void *) &ESCvar.ALcontrol,
sizeof (ESCvar.ALcontrol), (void *) &ESCvar.ALevent);
ESCvar.ALcontrol = etohs (ESCvar.ALcontrol);
}
/* Have at least on Sync Manager changed */
else if (ESCvar.ALevent & ESCREG_ALEVENT_SMCHANGE)
{
handle_smchanged = 1;
}
else
{
/* nothing to do */
return;
}
/* Mask state request bits + Error ACK */
ac = ESCvar.ALcontrol & ESCREG_AL_STATEMASK;
as = ESCvar.ALstatus & ESCREG_AL_STATEMASK;
an = as;
if (((ac & ESCerror) || (ac == ESCinit)))
{
/* if error bit confirmed reset */
ac &= ESCREG_AL_ERRACKMASK;
an &= ESCREG_AL_ERRACKMASK;
}
/* Enter SM changed handling for all steps but Init and Boot when Mailboxes
* is up and running
*/
if (handle_smchanged && (as & ESCREG_AL_ALLBUTINITMASK) &&
!(as == ESCboot) && MBXrun)
{
/* Validate Sync Managers, reading the Activation register will
* acknowledge the SyncManager Activation event making us enter
* this execution path.
*/
ax = ESC_checkmbx (as);
ax23 = ESC_checkSM23 (as);
if ((an & ESCerror) && !(ac & ESCerror))
{
/* if in error then stay there */
return;
}
/* Have we been forced to step down to INIT we will stop mailboxes,
* update AL Status Code and exit ESC_state
*/
if (ax == (ESCinit | ESCerror))
{
/* If we have activated Inputs and Outputs we need to disable them */
if (App.state)
{
ESC_stopoutput ();
ESC_stopinput ();
}
/* Stop mailboxes and update ALStatus code */
ESC_stopmbx ();
ESC_ALerror (ALERR_INVALIDMBXCONFIG);
MBXrun = 0;
ESC_ALstatus (ax);
return;
}
/* Have we been forced to step down to PREOP we will stop inputs
* and outputs, update AL Status Code and exit ESC_state
*/
if ((App.state) && (ax23 == (ESCpreop | ESCerror)))
{
ESC_stopoutput ();
ESC_stopinput ();
if (ESCvar.SMtestresult & SMRESULT_ERRSM3)
{
ESC_ALerror (ALERR_INVALIDINPUTSM);
}
else
{
ESC_ALerror (ALERR_INVALIDOUTPUTSM);
}
ESC_ALstatus (ax23);
return;
}
}
/* Error state not acked, leave original */
if ((an & ESCerror) && !(ac & ESCerror))
{
return;
}
/* Mask high bits ALcommand, low bits ALstatus */
as = (ac << 4) | (as & 0x0f);
/* Call post state change hook case it have been configured */
if ((esc_cfg != NULL) && esc_cfg->pre_state_change_hook)
{
esc_cfg->pre_state_change_hook (&as, &an);
}
/* Switch through the state change requested via AlControl from
* current state read in AL status
*/
switch (as)
{
case INIT_TO_INIT:
case BOOT_TO_BOOT:
case PREOP_TO_PREOP:
case OP_TO_OP:
{
break;
}
case INIT_TO_PREOP:
{
/* get station address */
ESC_address ();
an = ESC_startmbx (ac);
break;
}
case INIT_TO_BOOT:
{
/* get station address */
ESC_address ();
an = ESC_startmbxboot (ac);
break;
}
case INIT_TO_SAFEOP:
case INIT_TO_OP:
{
an = ESCinit | ESCerror;
ESC_ALerror (ALERR_INVALIDSTATECHANGE);
break;
}
case OP_TO_INIT:
{
ESC_stopoutput ();
}
case SAFEOP_TO_INIT:
{
ESC_stopinput ();
}
case PREOP_TO_INIT:
{
ESC_stopmbx ();
an = ESCinit;
break;
}
case BOOT_TO_INIT:
{
ESC_stopmbx ();
an = ESCinit;
break;
}
case PREOP_TO_BOOT:
case BOOT_TO_PREOP:
case BOOT_TO_SAFEOP:
case BOOT_TO_OP:
{
an = ESCpreop | ESCerror;
ESC_ALerror (ALERR_INVALIDSTATECHANGE);
break;
}
case PREOP_TO_SAFEOP:
case SAFEOP_TO_SAFEOP:
{
SM2_sml = sizeRXPDO ();
SM3_sml = sizeTXPDO ();
an = ESC_startinput (ac);
if (an == ac)
{
ESC_SMenable (2);
}
break;
}
case PREOP_TO_OP:
{
an = ESCpreop | ESCerror;
ESC_ALerror (ALERR_INVALIDSTATECHANGE);
break;
}
case OP_TO_PREOP:
{
ESC_stopoutput ();
}
case SAFEOP_TO_PREOP:
{
ESC_stopinput ();
an = ESCpreop;
break;
}
case SAFEOP_TO_BOOT:
{
an = ESCsafeop | ESCerror;
ESC_ALerror (ALERR_INVALIDSTATECHANGE);
break;
}
case SAFEOP_TO_OP:
{
an = ESC_startoutput (ac);
break;
}
case OP_TO_BOOT:
{
an = ESCsafeop | ESCerror;
ESC_ALerror (ALERR_INVALIDSTATECHANGE);
ESC_stopoutput ();
break;
}
case OP_TO_SAFEOP:
{
an = ESCsafeop;
ESC_stopoutput ();
break;
}
default:
{
if (an == ESCop)
{
ESC_stopoutput ();
an = ESCsafeop;
}
if (as == ESCsafeop)
{
ESC_stopinput ();
}
an |= ESCerror;
ESC_ALerror (ALERR_UNKNOWNSTATE);
break;
}
}
/* Call post state change hook case it have been configured */
if ((esc_cfg != NULL) && esc_cfg->post_state_change_hook)
{
esc_cfg->post_state_change_hook (&as, &an);
}
if (!(an & ESCerror) && (ESCvar.ALerror))
{
/* clear error */
ESC_ALerror (ALERR_NONE);
}
ESC_ALstatus (an);
}
/** Function copying the application configuration variable
* to the stack local pointer variable.
*
* @param[in] cfg = Pointer to by the Application static declared
* configuration variable holding application specific details. Ex. post- and
* pre state change hooks
*/
void ESC_config (esc_cfg_t * cfg)
{
esc_cfg = cfg;
}

532
soes/esc.h 100644
View File

@ -0,0 +1,532 @@
/*
* SOES Simple Open EtherCAT Slave
*
* File : esc.h
* Version : 0.9.2
* Date : 22-02-2010
* Copyright (C) 2007-2013 Arthur Ketels
* Copyright (C) 2012-2013 rt-labs.
*
* SOES is free software; you can redistribute it and/or modify it under
* the terms of the GNU General Public License version 2 as published by the Free
* Software Foundation.
*
* SOES is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* for more details.
*
* As a special exception, if other files instantiate templates or use macros
* or inline functions from this file, or you compile this file and link it
* with other works to produce a work based on this file, this file does not
* by itself cause the resulting work to be covered by the GNU General Public
* License. However the source code for this file must still be made available
* in accordance with section (3) of the GNU General Public License.
*
* This exception does not invalidate any other reasons why a work based on
* this file might be covered by the GNU General Public License.
*
* The EtherCAT Technology, the trade name and logo "EtherCAT" are the intellectual
* property of, and protected by Beckhoff Automation GmbH.
*/
/** \file
* \brief
* Headerfile for esc.h
*/
#ifndef __esc__
#define __esc__
/* storage modifier for data stored in flashmemory */
#define FLASHSTORE const
#define PACKED __attribute__((__packed__))
#define ESCREG_ADDRESS 0x0010
#define ESCREG_DLSTATUS 0x0110
#define ESCREG_ALCONTROL 0x0120
#define ESCREG_ALSTATUS 0x0130
#define ESCREG_ALERROR 0x0134
#define ESCREG_ALEVENT_SM_MASK 0x0310
#define ESCREG_ALEVENT_SMCHANGE 0x0010
#define ESCREG_ALEVENT_CONTROL 0x0001
#define ESCREG_ALEVENT_SM2 0x0400
#define ESCREG_ALEVENT_SM3 0x0800
#define ESCREG_WDSTATUS 0x0440
#define ESCREG_SM0 0x0800
#define ESCREG_SM0STATUS (ESCREG_SM0 + 5)
#define ESCREG_SM0PDI (ESCREG_SM0 + 7)
#define ESCREG_SM1 (ESCREG_SM0 + 0x08)
#define ESCREG_SM2 (ESCREG_SM0 + 0x10)
#define ESCREG_SM3 (ESCREG_SM0 + 0x18)
#define ESCREG_LOCALTIME 0x0910
#define ESCREG_SMENABLE_BIT 0x01
#define ESCREG_AL_STATEMASK 0x001f
#define ESCREG_AL_ALLBUTINITMASK 0x0e
#define ESCREG_AL_ERRACKMASK 0x0f
#define ESCinit 0x01
#define ESCpreop 0x02
#define ESCboot 0x03
#define ESCsafeop 0x04
#define ESCop 0x08
#define ESCerror 0x10
#define INIT_TO_INIT 0x11
#define INIT_TO_PREOP 0x21
#define INIT_TO_BOOT 0x31
#define INIT_TO_SAFEOP 0x41
#define INIT_TO_OP 0x81
#define PREOP_TO_INIT 0x12
#define PREOP_TO_PREOP 0x22
#define PREOP_TO_BOOT 0x32
#define PREOP_TO_SAFEOP 0x42
#define PREOP_TO_OP 0x82
#define BOOT_TO_INIT 0x13
#define BOOT_TO_PREOP 0x23
#define BOOT_TO_BOOT 0x33
#define BOOT_TO_SAFEOP 0x43
#define BOOT_TO_OP 0x83
#define SAFEOP_TO_INIT 0x14
#define SAFEOP_TO_PREOP 0x24
#define SAFEOP_TO_BOOT 0x34
#define SAFEOP_TO_SAFEOP 0x44
#define SAFEOP_TO_OP 0x84
#define OP_TO_INIT 0x18
#define OP_TO_PREOP 0x28
#define OP_TO_BOOT 0x38
#define OP_TO_SAFEOP 0x48
#define OP_TO_OP 0x88
#define ALERR_NONE 0x0000
#define ALERR_INVALIDSTATECHANGE 0x0011
#define ALERR_UNKNOWNSTATE 0x0012
#define ALERR_BOOTNOTSUPPORTED 0x0013
#define ALERR_INVALIDBOOTMBXCONFIG 0x0015
#define ALERR_INVALIDMBXCONFIG 0x0016
#define ALERR_INVALIDSMCONFIG 0x0017
#define ALERR_WATCHDOG 0x001B
#define ALERR_INVALIDOUTPUTSM 0x001D
#define ALERR_INVALIDINPUTSM 0x001E
#define MBXERR_SYNTAX 0x0001
#define MBXERR_UNSUPPORTEDPROTOCOL 0x0002
#define MBXERR_INVALIDCHANNEL 0x0003
#define MBXERR_SERVICENOTSUPPORTED 0x0004
#define MBXERR_INVALIDHEADER 0x0005
#define MBXERR_SIZETOOSHORT 0x0006
#define MBXERR_NOMOREMEMORY 0x0007
#define MBXERR_INVALIDSIZE 0x0008
#define ABORT_NOTOGGLE 0x05030000
#define ABORT_UNKNOWN 0x05040001
#define ABORT_UNSUPPORTED 0x06010000
#define ABORT_WRITEONLY 0x06010001
#define ABORT_READONLY 0x06010002
#define ABORT_NOOBJECT 0x06020000
#define ABORT_TYPEMISMATCH 0x06070010
#define ABORT_NOSUBINDEX 0x06090011
#define ABORT_GENERALERROR 0x08000000
#define ABORT_NOTINTHISSTATE 0x08000022
#define MBXstate_idle 0x00
#define MBXstate_inclaim 0x01
#define MBXstate_outclaim 0x02
#define MBXstate_outreq 0x03
#define MBXstate_outpost 0x04
#define MBXstate_backup 0x05
#define MBXstate_again 0x06
#define COE_DEFAULTLENGTH 0x0a
#define COE_HEADERSIZE 0x0a
#define COE_SEGMENTHEADERSIZE 0x03
#define COE_SDOREQUEST 0x02
#define COE_SDORESPONSE 0x03
#define COE_SDOINFORMATION 0x08
#define COE_COMMAND_SDOABORT 0x80
#define COE_COMMAND_UPLOADREQUEST 0x40
#define COE_COMMAND_UPLOADRESPONSE 0x40
#define COE_COMMAND_UPLOADSEGMENT 0x00
#define COE_COMMAND_UPLOADSEGREQ 0x60
#define COE_COMMAND_DOWNLOADRESPONSE 0x60
#define COE_COMMAND_LASTSEGMENTBIT 0x01
#define COE_SIZE_INDICATOR 0x01
#define COE_EXPEDITED_INDICATOR 0x02
#define COE_COMPLETEACCESS 0x10
#define COE_TOGGLEBIT 0x10
#define COE_INFOERROR 0x07
#define COE_GETODLISTRESPONSE 0x02
#define COE_GETODRESPONSE 0x04
#define COE_ENTRYDESCRIPTIONRESPONSE 0x06
#define COE_VALUEINFO_ACCESS 0x01
#define COE_VALUEINFO_OBJECT 0x02
#define COE_VALUEINFO_MAPPABLE 0x04
#define COE_VALUEINFO_TYPE 0x08
#define COE_VALUEINFO_DEFAULT 0x10
#define COE_VALUEINFO_MINIMUM 0x20
#define COE_VALUEINFO_MAXIMUM 0x40
#define MBXSIZE 0x80
#define MBXSIZEBOOT 0x80
#define MBXBUFFERS 3
#define MBX0_sma 0x1000
#define MBX0_sml MBXSIZE
#define MBX0_sme MBX0_sma+MBX0_sml-1
#define MBX0_smc 0x26
#define MBX1_sma 0x1080
#define MBX1_sml MBXSIZE
#define MBX1_sme MBX1_sma+MBX1_sml-1
#define MBX1_smc 0x22
#define MBX0_sma_b 0x1000
#define MBX0_sml_b MBXSIZEBOOT
#define MBX0_sme_b MBX0_sma_b+MBX0_sml_b-1
#define MBX0_smc_b 0x26
#define MBX1_sma_b 0x1080
#define MBX1_sml_b MBXSIZEBOOT
#define MBX1_sme_b MBX1_sma_b+MBX1_sml_b-1
#define MBX1_smc_b 0x22
#define SM2_sma 0x1100
#define SM2_smc 0x24
#define SM2_act 0x01
#define SM3_sma 0x1180
#define SM3_smc 0x20
#define SM3_act 0x01
#define MBXHSIZE sizeof(_MBXh)
#define MBXDSIZE MBXSIZE-MBXHSIZE
#define MBXERR 0x00
#define MBXAOE 0x01
#define MBXEOE 0x02
#define MBXCOE 0x03
#define MBXFOE 0x04
#define MBXODL 0x10
#define MBXOD 0x20
#define MBXED 0x30
#define MBXSEU 0x40
#define MBXSED 0x50
#define SMRESULT_ERRSM0 0x01
#define SMRESULT_ERRSM1 0x02
#define SMRESULT_ERRSM2 0x04
#define SMRESULT_ERRSM3 0x08
#define FOE_ERR_NOTDEFINED 0x8000
#define FOE_ERR_NOTFOUND 0x8001
#define FOE_ERR_ACCESS 0x8002
#define FOE_ERR_DISKFULL 0x8003
#define FOE_ERR_ILLEGAL 0x8004
#define FOE_ERR_PACKETNO 0x8005
#define FOE_ERR_EXISTS 0x8006
#define FOE_ERR_NOUSER 0x8007
#define FOE_ERR_BOOTSTRAPONLY 0x8008
#define FOE_ERR_NOTINBOOTSTRAP 0x8009
#define FOE_ERR_NORIGHTS 0x800A
#define FOE_ERR_PROGERROR 0x800B
#define FOE_OP_RRQ 1
#define FOE_OP_WRQ 2
#define FOE_OP_DATA 3
#define FOE_OP_ACK 4
#define FOE_OP_ERR 5
#define FOE_OP_BUSY 6
#define FOE_READY 0
#define FOE_WAIT_FOR_ACK 1
#define FOE_WAIT_FOR_FINAL_ACK 2
#define FOE_WAIT_FOR_DATA 3
#define EC_LITTLE_ENDIAN
// Attention! this struct is always little-endian
typedef struct PACKED
{
uint16 PSA;
uint16 Length;
#if defined(EC_LITTLE_ENDIAN)
uint8 Mode:2;
uint8 Direction:2;
uint8 IntECAT:1;
uint8 IntPDI:1;
uint8 WTE:1;
uint8 R1:1;
uint8 IntW:1;
uint8 IntR:1;
uint8 R2:1;
uint8 MBXstat:1;
uint8 BUFstat:2;
uint8 R3:2;
uint8 ECsm:1;
uint8 ECrep:1;
uint8 ECr4:4;
uint8 EClatchEC:1;
uint8 EClatchPDI:1;
uint8 PDIsm:1;
uint8 PDIrep:1;
uint8 PDIr5:6;
#endif
#if defined(EC_BIG_ENDIAN)
uint8 R1:1;
uint8 WTE:1;
uint8 IntPDI:1;
uint8 IntECAT:1;
uint8 Direction:2;
uint8 Mode:2;
uint8 R3:2;
uint8 BUFstat:2;
uint8 MBXstat:1;
uint8 R2:1;
uint8 IntR:1;
uint8 IntW:1;
uint8 EClatchPDI:1;
uint8 EClatchEC:1;
uint8 ECr4:4;
uint8 ECrep:1;
uint8 ECsm:1;
uint8 PDIr5:6;
uint8 PDIrep:1;
uint8 PDIsm:1;
#endif
} _ESCsm;
/* Attention! this struct is always little-endian */
typedef struct PACKED
{
uint16 PSA;
uint16 Length;
uint8 Command;
uint8 Status;
uint8 ActESC;
uint8 ActPDI;
} _ESCsm2;
typedef FLASHSTORE struct PACKED
{
uint16 PSA;
uint16 Length;
uint8 Command;
} _ESCsmCompact;
typedef struct PACKED
{
uint16 ALevent;
uint16 ALstatus;
uint16 ALcontrol;
uint16 ALerror;
uint16 DLstatus;
uint16 address;
uint8 mbxcnt;
uint8 mbxincnt;
uint8 mbxoutpost;
uint8 mbxbackup;
uint8 xoe;
uint8 txcue;
uint8 mbxfree;
uint8 segmented;
void *data;
uint16 entries;
uint16 frags;
uint16 fragsleft;
#if defined(EC_LITTLE_ENDIAN)
uint8 r1:1;
uint8 toggle:1;
uint8 r2:6;
#endif
#if defined(EC_BIG_ENDIAN)
uint8 r2:6;
uint8 toggle:1;
uint8 r1:1;
#endif
uint8 SMtestresult;
int16 temp;
uint16 wdcnt;
uint32 PrevTime;
uint32 Time;
_ESCsm SM[4];
} _ESCvar;
typedef struct PACKED
{
uint16 length;
uint16 address;
#if defined(EC_LITTLE_ENDIAN)
uint8 channel:6;
uint8 priority:2;
uint8 mbxtype:4;
uint8 mbxcnt:4;
#endif
#if defined(EC_BIG_ENDIAN)
uint8 priority:2;
uint8 channel:6;
uint8 mbxcnt:4;
uint8 mbxtype:4;
#endif
} _MBXh;
typedef struct PACKED
{
_MBXh header;
uint8 b[MBXDSIZE];
} _MBX;
typedef struct PACKED
{
uint16 numberservice;
} _COEh;
typedef struct PACKED
{
#if defined(EC_LITTLE_ENDIAN)
uint8 opcode:7;
uint8 incomplete:1;
#endif
#if defined(EC_BIG_ENDIAN)
uint8 incomplete:1;
uint8 opcode:7;
#endif
uint8 reserved;
uint16 fragmentsleft;
} _INFOh;
typedef struct PACKED
{
_MBXh mbxheader;
uint16 type;
uint16 detail;
} _MBXerr;
typedef struct PACKED
{
_MBXh mbxheader;
_COEh coeheader;
uint8 command;
uint16 index;
uint8 subindex;
uint32 size;
} _COEsdo;
typedef struct PACKED
{
_MBXh mbxheader;
_COEh coeheader;
_INFOh infoheader;
uint16 index;
uint16 datatype;
uint8 maxsub;
uint8 objectcode;
char name;
} _COEobjdesc;
typedef struct PACKED
{
_MBXh mbxheader;
_COEh coeheader;
_INFOh infoheader;
uint16 index;
uint8 subindex;
uint8 valueinfo;
uint16 datatype;
uint16 bitlength;
uint16 access;
char name;
} _COEentdesc;
typedef struct PACKED
{
uint8 opcode;
uint8 reserved;
union
{
uint32 password;
uint32 packetnumber;
uint32 errorcode;
};
} _FOEh;
#define FOEHSIZE (sizeof(_FOEh))
#define FOE_DATA_SIZE (MBXSIZEBOOT - (MBXHSIZE+FOEHSIZE))
typedef struct PACKED
{
_MBXh mbxheader;
_FOEh foeheader;
union
{
char filename[FOE_DATA_SIZE];
uint8 data[FOE_DATA_SIZE];
char errortext[FOE_DATA_SIZE];
};
} _FOE;
/* state definition in mailbox
* 0 : idle
* 1 : claimed for inbox
* 2 : claimed for outbox
* 3 : request post outbox
* 4 : outbox posted not send
* 5 : backup outbox
* 6 : mailbox needs to be transmitted again
*/
typedef struct
{
uint8 state;
} _MBXcontrol;
typedef struct esc_cfg
{
void (*pre_state_change_hook) (uint8 * as, uint8 * an);
void (*post_state_change_hook) (uint8 * as, uint8 * an);
} esc_cfg_t;
void ESC_config (esc_cfg_t * cfg);
void ESC_ALerror (uint16 errornumber);
void ESC_ALstatus (uint8 status);
void ESC_SMstatus (uint8 n);
uint8 ESC_WDstatus (void);
uint8 ESC_claimbuffer (void);
uint8 ESC_startmbx (uint8 state);
void ESC_stopmbx (void);
void MBX_error (uint16 error);
uint8 ESC_mbxprocess (void);
void ESC_xoeprocess (void);
uint8 ESC_startinput (uint8 state);
void ESC_stopinput (void);
uint8 ESC_startoutput (uint8 state);
void ESC_stopoutput (void);
void ESC_ALevent (void);
void ESC_state (void);
/* From hardware file */
uint8 ESC_read (uint16 address, void *buf, uint16 len, void *tALevent);
uint8 ESC_write (uint16 address, void *buf, uint16 len, void *tALevent);
void ESC_init (void * arg);
/* From application */
extern void APP_safeoutput ();
extern volatile _ESCvar ESCvar;
extern _MBX MBX[MBXBUFFERS];
extern _MBXcontrol MBXcontrol[MBXBUFFERS];
extern uint8 MBXrun;
extern uint16 SM2_sml, SM3_sml;
#endif

910
soes/esc_coe.c 100644
View File

@ -0,0 +1,910 @@
/*
* SOES Simple Open EtherCAT Slave
*
* File : esc_coe.c
* Version : 0.9.2
* Date : 22-02-2010
* Copyright (C) 2007-2013 Arthur Ketels
*
* SOES is free software; you can redistribute it and/or modify it under
* the terms of the GNU General Public License version 2 as published by the Free
* Software Foundation.
*
* SOES is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* for more details.
*
* As a special exception, if other files instantiate templates or use macros
* or inline functions from this file, or you compile this file and link it
* with other works to produce a work based on this file, this file does not
* by itself cause the resulting work to be covered by the GNU General Public
* License. However the source code for this file must still be made available
* in accordance with section (3) of the GNU General Public License.
*
* This exception does not invalidate any other reasons why a work based on
* this file might be covered by the GNU General Public License.
*
* The EtherCAT Technology, the trade name and logo "EtherCAT" are the intellectual
* property of, and protected by Beckhoff Automation GmbH.
*/
/** \file
* \brief
* CAN over EtherCAT (CoE) module.
*
* SDO read / write and SDO service functions
*/
#include <string.h>
#include "utypes.h"
#include "esc.h"
#include "esc_coe.h"
#include "objectlist.h"
#define BITS2BYTES(b) ((b + 7) >> 3)
extern uint8 txpdoitems;
extern uint8 rxpdoitems;
/** Search for an object index matching the wanted value in the Object List.
*
* @param[in] index = value on index of object we want to locate
* @return local array index if we succeed, -1 if we didn't find the index.
*/
int32 SDO_findobject (uint16 index)
{
int32 n = 0;
while (SDOobjects[n].index < index)
{
n++;
}
if (SDOobjects[n].index != index)
{
return -1;
}
return n;
}
/** Calculate the size in Bytes of TxPDOs by adding the objects in SyncManager
* SDO 1C13.
*
* @return size of TxPDOs in Bytes.
*/
uint16 sizeTXPDO (void)
{
uint8 c, l, si, sic;
uint16 size = 0, hobj;
int16 nidx;
_objd FLASHSTORE *objd;
if (SDO1C13[0].data)
{
si = *((uint8 *) SDO1C13[0].data);
}
else
{
si = (uint8) SDO1C13[0].value;
}
if (si)
{
for (sic = 1; sic <= si; sic++)
{
if (SDO1C13[sic].data)
{
hobj = *((uint16 *) SDO1C13[sic].data);
}
else
{
hobj = (uint16) SDO1C13[sic].value;
}
nidx = SDO_findobject (hobj);
if (nidx > 0)
{
objd = SDOobjects[nidx].objdesc;
l = (uint8) objd->value;
for (c = 1; c <= l; c++)
{
size += ((objd + c)->value & 0xff);
}
}
}
}
return BITS2BYTES (size);
}
/** Calculate the size in Bytes of RxPDOs by adding the objects in SyncManager
* SDO 1C12.
*
* @return size of RxPDOs in Bytes.
*/
uint16 sizeRXPDO (void)
{
uint8 c, l, si, sic;
uint16 size = 0, hobj;
int16 nidx;
_objd FLASHSTORE *objd;
if (SDO1C12[0].data)
{
si = *((uint8 *) SDO1C12[0].data);
}
else
{
si = (uint8) SDO1C12[0].value;
}if (si)
{
for (sic = 1; sic <= si; sic++)
{
if (SDO1C12[sic].data)
{
hobj = *((uint16 *) SDO1C12[sic].data);
}
else
{
hobj = (uint16) SDO1C12[sic].value;
}
nidx = SDO_findobject (hobj);
if (nidx > 0)
{
objd = SDOobjects[nidx].objdesc;
l = (uint8) objd->value;
for (c = 1; c <= l; c++)
{
size += ((objd + c)->value & 0xff);
}
}
}
}
return BITS2BYTES (size);
}
/** Search for an object sub-index.
*
* @param[in] nidx = local array index of object we want to find sub-index to
* @param[in] subindex = value on sub-index of object we want to locate
* @return local array index if we succeed, -1 if we didn't find the index.
*/
int16 SDO_findsubindex (int16 nidx, uint8 subindex)
{
_objd FLASHSTORE *objd;
int16 n = 0;
uint8 maxsub;
objd = SDOobjects[nidx].objdesc;
maxsub = SDOobjects[nidx].maxsub;
while (((objd + n)->subindex < subindex) && (n < maxsub))
{
n++;
}
if ((objd + n)->subindex != subindex)
{
return -1;
}
return n;
}
/** Copy to mailbox.
*
* @param[in] source = pointer to source
* @param[in] dest = pointer to destination
* @param[in] size = Size to copy
*/
void copy2mbx (void *source, void *dest, uint16 size)
{
memcpy (dest, source, size);
}
/** Function for sending an SDO Abort reply.
*
* @param[in] index = index of object causing abort reply
* @param[in] sub-index = sub-index of object causing abort reply
* @param[in] abortcode = abort code to send in reply
*/
void SDO_abort (uint16 index, uint8 subindex, uint32 abortcode)
{
uint8 MBXout;
_COEsdo *coeres;
MBXout = ESC_claimbuffer ();
if (MBXout)
{
coeres = (_COEsdo *) &MBX[MBXout];
coeres->mbxheader.length = htoes (COE_DEFAULTLENGTH);
coeres->mbxheader.mbxtype = MBXCOE;
coeres->coeheader.numberservice =
htoes ((0 & 0x01f) | (COE_SDOREQUEST << 12));
coeres->index = htoes (index);
coeres->subindex = subindex;
coeres->command = COE_COMMAND_SDOABORT;
coeres->size = htoel (abortcode);
MBXcontrol[MBXout].state = MBXstate_outreq;
}
}
/** Function for responding on requested SDO Upload, sending the content
* requested in a free Mailbox buffer. Depending of size of data expedited,
* normal or segmented transfer is used. On error an SDO Abort will be sent.
*/
void SDO_upload (void)
{
_COEsdo *coesdo, *coeres;
uint16 index;
uint8 subindex;
int16 nidx, nsub;
uint8 MBXout;
uint32 size;
uint8 dss;
_objd FLASHSTORE *objd;
coesdo = (_COEsdo *) &MBX[0];
index = etohs (coesdo->index);
subindex = coesdo->subindex;
nidx = SDO_findobject (index);
if (nidx >= 0)
{
nsub = SDO_findsubindex (nidx, subindex);
if (nsub >= 0)
{
objd = SDOobjects[nidx].objdesc;
MBXout = ESC_claimbuffer ();
if (MBXout)
{
coeres = (_COEsdo *) &MBX[MBXout];
coeres->mbxheader.length = htoes (COE_DEFAULTLENGTH);
coeres->mbxheader.mbxtype = MBXCOE;
coeres->coeheader.numberservice =
htoes ((0 & 0x01f) | (COE_SDORESPONSE << 12));
size = (objd + nsub)->bitlength;
/* expedited bits used calculation */
dss = 0x0c;
if (size > 8)
{
dss = 0x08;
}
if (size > 16)
{
dss = 0x04;
}
if (size > 24)
{
dss = 0x00;
}
coeres->index = htoes (index);
coeres->subindex = subindex;
if (size <= 32)
{
/* expedited response i.e. length<=4 bytes */
coeres->command = COE_COMMAND_UPLOADRESPONSE +
COE_SIZE_INDICATOR + COE_EXPEDITED_INDICATOR + dss;
if ((objd + nsub)->data == nil)
{
/* use constant value */
coeres->size = htoel ((objd + nsub)->value);
}
else
{
/* convert bits to bytes */
size = (size + 7) >> 3;
/* use dynamic data */
copy2mbx ((objd + nsub)->data, &(coeres->size), size);
}
}
else
{
/* normal response i.e. length>4 bytes */
coeres->command = COE_COMMAND_UPLOADRESPONSE +
COE_SIZE_INDICATOR;
/* convert bits to bytes */
size = (size + 7) >> 3;
coeres->size = htoel (size);
if ((size + COE_HEADERSIZE) > MBXDSIZE)
{
/* segmented transfer needed */
/* set total size in bytes */
ESCvar.frags = size;
/* limit to mailbox size */
size = MBXDSIZE - COE_HEADERSIZE;
/* number of bytes done */
ESCvar.fragsleft = size;
/* signal segmented transfer */
ESCvar.segmented = MBXSEU;
ESCvar.data = (objd + nsub)->data;
}
else
{
ESCvar.segmented = 0;
}
coeres->mbxheader.length = htoes (COE_HEADERSIZE + size);
/* use dynamic data */
copy2mbx ((objd + nsub)->data, (&(coeres->size)) + 1, size);
}
MBXcontrol[MBXout].state = MBXstate_outreq;
}
}
else
{
SDO_abort (index, subindex, ABORT_NOSUBINDEX);
}
}
else
{
SDO_abort (index, subindex, ABORT_NOOBJECT);
}
MBXcontrol[0].state = MBXstate_idle;
ESCvar.xoe = 0;
}
/** Function for handling the following SDO Upload if previous SDOUpload
* response was flagged it needed to be segmented.
*
*/
void SDO_uploadsegment (void)
{
_COEsdo *coesdo, *coeres;
uint8 MBXout;
uint32 size, offset;
coesdo = (_COEsdo *) &MBX[0];
MBXout = ESC_claimbuffer ();
if (MBXout)
{
coeres = (_COEsdo *) &MBX[MBXout];
offset = ESCvar.fragsleft;
size = ESCvar.frags - ESCvar.fragsleft;
coeres->mbxheader.mbxtype = MBXCOE;
coeres->coeheader.numberservice =
htoes ((0 & 0x01f) | (COE_SDORESPONSE << 12));
coeres->command = COE_COMMAND_UPLOADSEGMENT + (coesdo->command & COE_TOGGLEBIT); // copy toggle bit
if ((size + COE_SEGMENTHEADERSIZE) > MBXDSIZE)
{
/* more segmented transfer needed */
/* limit to mailbox size */
size = MBXDSIZE - COE_SEGMENTHEADERSIZE;
/* number of bytes done */
ESCvar.fragsleft += size;
coeres->mbxheader.length = htoes (COE_SEGMENTHEADERSIZE + size);
}
else
{
/* last segment */
ESCvar.segmented = 0;
ESCvar.frags = 0;
ESCvar.fragsleft = 0;
coeres->command += COE_COMMAND_LASTSEGMENTBIT;
if (size >= 7)
{
coeres->mbxheader.length = htoes (COE_SEGMENTHEADERSIZE + size);
}
else
{
coeres->command += (7 - size) << 1;
coeres->mbxheader.length = htoes (COE_DEFAULTLENGTH);
}
}
copy2mbx ((uint8 *) ESCvar.data + offset, (&(coeres->command)) + 1, size); //copy to mailbox
MBXcontrol[MBXout].state = MBXstate_outreq;
}
MBXcontrol[0].state = MBXstate_idle;
ESCvar.xoe = 0;
}
/** Function to pre-qualify the incoming SDO download.
*
* @param[in] index = index of SDO download request to check
* @param[in] sub-index = sub-index of SDO download request to check
* @return 1 if the SDO Download is correct. 0 If not correct.
*/
int ESC_pre_objecthandler (uint16 index, uint8 subindex)
{
if ((index == 0x1c12) && (subindex > 0) && (rxpdoitems != 0))
{
SDO_abort (index, subindex, ABORT_READONLY);
return 0;
}
if ((index == 0x1c13) && (subindex > 0) && (txpdoitems != 0))
{
SDO_abort (index, subindex, ABORT_READONLY);
return 0;
}
return 1;
}
/** Function for handling incoming requested SDO Download, validating the
* request and sending an response. On error an SDO Abort will be sent.
*/
void SDO_download (void)
{
_COEsdo *coesdo, *coeres;
uint16 index;
uint8 subindex;
int16 nidx, nsub;
uint8 MBXout;
uint16 size, actsize;
_objd FLASHSTORE *objd;
uint32 *mbxdata;
coesdo = (_COEsdo *) &MBX[0];
index = etohs (coesdo->index);
subindex = coesdo->subindex;
nidx = SDO_findobject (index);
if (nidx >= 0)
{
nsub = SDO_findsubindex (nidx, subindex);
if (nsub >= 0)
{
objd = SDOobjects[nidx].objdesc;
if (((objd + nsub)->access == ATYPE_RW) ||
(((objd + nsub)->access == ATYPE_RWpre)
&& ((ESCvar.ALstatus & 0x0f) == ESCpreop)))
{
/* expedited? */
if (coesdo->command & COE_EXPEDITED_INDICATOR)
{
size = 4 - ((coesdo->command & 0x0c) >> 2);
mbxdata = &(coesdo->size);
}
else
{
/* normal upload */
size = (etohs (coesdo->size) & 0xffff);
mbxdata = (&(coesdo->size)) + 1;
}
actsize = ((objd + nsub)->bitlength + 7) >> 3;
if (actsize == size)
{
copy2mbx (mbxdata, (objd + nsub)->data, size);
if (ESC_pre_objecthandler (index, subindex))
{
MBXout = ESC_claimbuffer ();
if (MBXout)
{
coeres = (_COEsdo *) &MBX[MBXout];
coeres->mbxheader.length = htoes (COE_DEFAULTLENGTH);
coeres->mbxheader.mbxtype = MBXCOE;
coeres->coeheader.numberservice =
htoes ((0 & 0x01f) | (COE_SDORESPONSE << 12));
coeres->index = htoes (index);
coeres->subindex = subindex;
coeres->command = COE_COMMAND_DOWNLOADRESPONSE;
coeres->size = htoel (0);
MBXcontrol[MBXout].state = MBXstate_outreq;
}
}
/* external object write handler */
ESC_objecthandler (index, subindex);
}
else
{
SDO_abort (index, subindex, ABORT_TYPEMISMATCH);
}
}
else
{
if ((objd + nsub)->access == ATYPE_RWpre)
{
SDO_abort (index, subindex, ABORT_NOTINTHISSTATE);
}
else
{
SDO_abort (index, subindex, ABORT_READONLY);
}
}
}
else
{
SDO_abort (index, subindex, ABORT_NOSUBINDEX);
}
}
else
{
SDO_abort (index, subindex, ABORT_NOOBJECT);
}
MBXcontrol[0].state = MBXstate_idle;
ESCvar.xoe = 0;
}
/** Function for sending an SDO Info Error reply.
*
* @param[in] abortcode = = abort code to send in reply
*/
void SDO_infoerror (uint32 abortcode)
{
uint8 MBXout;
_COEobjdesc *coeres;
MBXout = ESC_claimbuffer ();
if (MBXout)
{
coeres = (_COEobjdesc *) &MBX[MBXout];
coeres->mbxheader.length = htoes ((uint16) 0x0a);
coeres->mbxheader.mbxtype = MBXCOE;
coeres->coeheader.numberservice =
htoes ((0 & 0x01f) | (COE_SDOINFORMATION << 12));
/* SDO info error request */
coeres->infoheader.opcode = COE_INFOERROR;
coeres->infoheader.incomplete = 0;
coeres->infoheader.reserved = 0x00;
coeres->infoheader.fragmentsleft = 0;
coeres->index = htoel (abortcode);
MBXcontrol[MBXout].state = MBXstate_outreq;
}
}
#define ODLISTSIZE ((MBX1_sml - MBXHSIZE - sizeof(_COEh) - sizeof(_INFOh) - 2) & 0xfffe)
/** Function for handling incoming requested SDO Get OD List, validating the
* request and sending an response. On error an SDO Info Error will be sent.
*/
void SDO_getodlist (void)
{
uint16 frags;
uint8 MBXout = 0;
uint16 entries = 0;
uint16 i, n;
uint16 *p;
_COEobjdesc *coel, *coer;
while (SDOobjects[entries].index != 0xffff)
{
entries++;
}
ESCvar.entries = entries;
frags = ((entries << 1) + ODLISTSIZE - 1);
frags /= ODLISTSIZE;
coer = (_COEobjdesc *) &MBX[0];
/* check for unsupported opcodes */
if (etohs (coer->index) > 0x01)
{
SDO_infoerror (ABORT_UNSUPPORTED);
}
else
{
MBXout = ESC_claimbuffer ();
}
if (MBXout)
{
coel = (_COEobjdesc *) &MBX[MBXout];
coel->mbxheader.mbxtype = MBXCOE;
coel->coeheader.numberservice =
htoes ((0 & 0x01f) | (COE_SDOINFORMATION << 12));
coel->infoheader.opcode = COE_GETODLISTRESPONSE;
/* number of objects request */
if (etohs (coer->index) == 0x00)
{
coel->index = htoes ((uint16) 0x00);
coel->infoheader.incomplete = 0;
coel->infoheader.reserved = 0x00;
coel->infoheader.fragmentsleft = htoes ((uint16) 0);
MBXcontrol[0].state = MBXstate_idle;
ESCvar.xoe = 0;
ESCvar.frags = frags;
ESCvar.fragsleft = frags - 1;
p = &(coel->datatype);
*p = htoes (entries);
p++;
*p = 0;
p++;
*p = 0;
p++;
*p = 0;
p++;
*p = 0;
coel->mbxheader.length = htoes (0x08 + (5 << 1));
}
/* only return all objects */
if (etohs (coer->index) == 0x01)
{
if (frags > 1)
{
coel->infoheader.incomplete = 1;
ESCvar.xoe = MBXCOE + MBXODL;
n = ODLISTSIZE >> 1;
}
else
{
coel->infoheader.incomplete = 0;
MBXcontrol[0].state = MBXstate_idle;
ESCvar.xoe = 0;
n = entries;
}
coel->infoheader.reserved = 0x00;
ESCvar.frags = frags;
ESCvar.fragsleft = frags - 1;
coel->infoheader.fragmentsleft = htoes (ESCvar.fragsleft);
coel->index = htoes ((uint16) 0x01);
p = &(coel->datatype);
for (i = 0; i < n; i++)
{
*p = htoes (SDOobjects[i].index);
p++;
}
coel->mbxheader.length = htoes (0x08 + (n << 1));
}
MBXcontrol[MBXout].state = MBXstate_outreq;
}
}
/** Function for continuing sending left overs from previous requested
* SDO Get OD List, validating the request and sending an response.
*
*/
void SDO_getodlistcont (void)
{
uint8 MBXout;
uint16 i, n, s;
uint16 *p;
_COEobjdesc *coel;
MBXout = ESC_claimbuffer ();
if (MBXout)
{
coel = (_COEobjdesc *) &MBX[MBXout];
coel->mbxheader.mbxtype = MBXCOE;
coel->coeheader.numberservice =
htoes ((0 & 0x01f) | (COE_SDOINFORMATION << 12));
coel->infoheader.opcode = COE_GETODLISTRESPONSE;
s = (ESCvar.frags - ESCvar.fragsleft) * (ODLISTSIZE >> 1);
if (ESCvar.fragsleft > 1)
{
coel->infoheader.incomplete = 1;
n = s + (ODLISTSIZE >> 1);
}
else
{
coel->infoheader.incomplete = 0;
MBXcontrol[0].state = MBXstate_idle;
ESCvar.xoe = 0;
n = ESCvar.entries;
}
coel->infoheader.reserved = 0x00;
ESCvar.fragsleft--;
coel->infoheader.fragmentsleft = htoes (ESCvar.fragsleft);
/* pointer 2 bytes back to exclude index */
p = &(coel->index);
for (i = s; i < n; i++)
{
*p = htoes (SDOobjects[i].index);
p++;
}
coel->mbxheader.length = htoes (0x06 + ((n - s) << 1));
MBXcontrol[MBXout].state = MBXstate_outreq;
}
}
/** Function for handling incoming requested SDO Get Object Description,
* validating the request and sending an response. On error an
* SDO Info Error will be sent.
*/
void SDO_getod (void)
{
uint8 MBXout;
uint16 index;
int32 nidx;
uint8 *d;
uint8 FLASHSTORE *s;
uint8 n = 0;
_COEobjdesc *coer, *coel;
coer = (_COEobjdesc *) &MBX[0];
index = etohs (coer->index);
nidx = SDO_findobject (index);
if (nidx >= 0)
{
MBXout = ESC_claimbuffer ();
if (MBXout)
{
coel = (_COEobjdesc *) &MBX[MBXout];
coel->mbxheader.mbxtype = MBXCOE;
coel->coeheader.numberservice =
htoes ((0 & 0x01f) | (COE_SDOINFORMATION << 12));
coel->infoheader.opcode = COE_GETODRESPONSE;
coel->infoheader.incomplete = 0;
coel->infoheader.reserved = 0x00;
coel->infoheader.fragmentsleft = htoes (0);
coel->index = htoes (index);
if (SDOobjects[nidx].objtype == OTYPE_VAR)
{
int32 nsub = SDO_findsubindex (nidx, 0);
_objd FLASHSTORE *objd = SDOobjects[nidx].objdesc;
coel->datatype = htoes ((objd + nsub)->datatype);
}
else
{
coel->datatype = htoes (0);
}
coel->maxsub = SDOobjects[nidx].maxsub;
coel->objectcode = SDOobjects[nidx].objtype;
s = (uint8 *) SDOobjects[nidx].name;
d = (uint8 *) &(coel->name);
while (*s && (n < (MBXDSIZE - 0x0c)))
{
*d = *s;
n++;
s++;
d++;
}
*d = *s;
coel->mbxheader.length = htoes ((uint16) 0x0c + n);
MBXcontrol[MBXout].state = MBXstate_outreq;
MBXcontrol[0].state = MBXstate_idle;
ESCvar.xoe = 0;
}
}
else
{
SDO_infoerror (ABORT_NOOBJECT);
}
}
/** Function for handling incoming requested SDO Get Entry Description,
* validating the request and sending an response. On error an
* SDO Info Error will be sent.
*/
void SDO_geted (void)
{
uint8 MBXout;
uint16 index;
int32 nidx, nsub;
uint8 subindex;
uint8 *d;
uint8 FLASHSTORE *s;
_objd FLASHSTORE *objd;
uint8 n = 0;
_COEentdesc *coer, *coel;
coer = (_COEentdesc *) &MBX[0];
index = etohs (coer->index);
subindex = coer->subindex;
nidx = SDO_findobject (index);
if (nidx >= 0)
{
nsub = SDO_findsubindex (nidx, subindex);
if (nsub >= 0)
{
objd = SDOobjects[nidx].objdesc;
MBXout = ESC_claimbuffer ();
if (MBXout)
{
coel = (_COEentdesc *) &MBX[MBXout];
coel->mbxheader.mbxtype = MBXCOE;
coel->coeheader.numberservice =
htoes ((0 & 0x01f) | (COE_SDOINFORMATION << 12));
coel->infoheader.opcode = COE_ENTRYDESCRIPTIONRESPONSE;
coel->infoheader.incomplete = 0;
coel->infoheader.reserved = 0x00;
coel->infoheader.fragmentsleft = htoes ((uint16) 0);
coel->index = htoes (index);
coel->subindex = subindex;
coel->valueinfo = COE_VALUEINFO_ACCESS +
COE_VALUEINFO_OBJECT + COE_VALUEINFO_MAPPABLE;
coel->datatype = htoes ((objd + nsub)->datatype);
coel->bitlength = htoes ((objd + nsub)->bitlength);
coel->access = htoes ((objd + nsub)->access);
s = (uint8 *) (objd + nsub)->name;
d = (uint8 *) &(coel->name);
while (*s && (n < (MBXDSIZE - 0x10)))
{
*d = *s;
n++;
s++;
d++;
}
*d = *s;
coel->mbxheader.length = htoes ((uint16) 0x10 + n);
MBXcontrol[MBXout].state = MBXstate_outreq;
MBXcontrol[0].state = MBXstate_idle;
ESCvar.xoe = 0;
}
}
else
{
SDO_infoerror (ABORT_NOSUBINDEX);
}
}
else
{
SDO_infoerror (ABORT_NOOBJECT);
}
}
/** Main CoE function checking the status on current mailbox buffers carrying
* data, distributing the mailboxes to appropriate CoE functions.
* On Error an MBX_error or SDO Abort will be sent depending on error cause.
*/
void ESC_coeprocess (void)
{
_MBXh *mbh;
_COEsdo *coesdo;
_COEobjdesc *coeobjdesc;
uint8 service;
if (!MBXrun)
{
return;
}
if (!ESCvar.xoe && (MBXcontrol[0].state == MBXstate_inclaim))
{
mbh = (_MBXh *) &MBX[0];
if (mbh->mbxtype == MBXCOE)
{
if (mbh->length < 8)
{
MBX_error (MBXERR_INVALIDSIZE);
}
else
ESCvar.xoe = MBXCOE;
}
}
if ((ESCvar.xoe == (MBXCOE + MBXODL)) && (!ESCvar.mbxoutpost))
{
/* continue get OD list */
SDO_getodlistcont ();
}
if (ESCvar.xoe == MBXCOE)
{
coesdo = (_COEsdo *) &MBX[0];
coeobjdesc = (_COEobjdesc *) &MBX[0];
service = etohs (coesdo->coeheader.numberservice) >> 12;
/* initiate SDO upload request */
if ((service == COE_SDOREQUEST)
&& (coesdo->command == COE_COMMAND_UPLOADREQUEST)
&& (etohs (coesdo->mbxheader.length) == 0x0a))
{
SDO_upload ();
}
/* SDO upload segment request */
if ((service == COE_SDOREQUEST)
&& ((coesdo->command & 0xef) == COE_COMMAND_UPLOADSEGREQ)
&& (etohs (coesdo->mbxheader.length) == 0x0a)
&& (ESCvar.segmented == MBXSEU))
{
SDO_uploadsegment ();
}
/* initiate SDO download request */
else
{
if ((service == COE_SDOREQUEST) && ((coesdo->command & 0xf1) == 0x21))
{
SDO_download ();
}
/* initiate SDO get OD list */
else
{
if ((service == COE_SDOINFORMATION)
&& (coeobjdesc->infoheader.opcode == 0x01))
{
SDO_getodlist ();
}
/* initiate SDO get OD */
else
{
if ((service == COE_SDOINFORMATION)
&& (coeobjdesc->infoheader.opcode == 0x03))
{
SDO_getod ();
}
/* initiate SDO get ED */
else
{
if ((service == COE_SDOINFORMATION)
&& (coeobjdesc->infoheader.opcode == 0x05))
{
SDO_geted ();
}
else
{
/* COE not recognised above */
if (ESCvar.xoe == MBXCOE)
{
if (service == 0)
{
MBX_error (MBXERR_INVALIDHEADER);
}
else
{
SDO_abort (etohs (coesdo->index), coesdo->subindex, ABORT_UNKNOWN);
}
MBXcontrol[0].state = MBXstate_idle;
ESCvar.xoe = 0;
}
}
}
}
}
}
}
}

46
soes/esc_coe.h 100644
View File

@ -0,0 +1,46 @@
/*
* SOES Simple Open EtherCAT Slave
*
* File : esc_coe.h
* Version : 0.9.2
* Date : 22-02-2010
* Copyright (C) 2007-2013 Arthur Ketels
*
* SOES is free software; you can redistribute it and/or modify it under
* the terms of the GNU General Public License version 2 as published by the Free
* Software Foundation.
*
* SOES is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* for more details.
*
* As a special exception, if other files instantiate templates or use macros
* or inline functions from this file, or you compile this file and link it
* with other works to produce a work based on this file, this file does not
* by itself cause the resulting work to be covered by the GNU General Public
* License. However the source code for this file must still be made available
* in accordance with section (3) of the GNU General Public License.
*
* This exception does not invalidate any other reasons why a work based on
* this file might be covered by the GNU General Public License.
*
* The EtherCAT Technology, the trade name and logo "EtherCAT" are the intellectual
* property of, and protected by Beckhoff Automation GmbH.
*/
/** \file
* \brief
* Headerfile for esc_coe.c
*/
#ifndef __esc_coe__
#define __esc_coe__
void ESC_coeprocess (void);
uint16 sizeTXPDO (void);
uint16 sizeRXPDO (void);
extern void ESC_objecthandler (uint16 index, uint8 subindex);
#endif

674
soes/esc_foe.c 100644
View File

@ -0,0 +1,674 @@
/*
* SOES Simple Open EtherCAT Slave
*
* File : foe.c
* Version : 0.1
* Date : 11-30-2010
* Copyright (C) 2010 ZBE Inc.
* Copyright (C) 2011-2013 Arthur Ketels.
* Copyright (C) 2012-2013 rt-labs.
*
* SOES is free software; you can redistribute it and/or modify it under
* the terms of the GNU General Public License version 2 as published by the Free
* Software Foundation.
*
* SOES is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* for more details.
*
* As a special exception, if other files instantiate templates or use macros
* or inline functions from this file, or you compile this file and link it
* with other works to produce a work based on this file, this file does not
* by itself cause the resulting work to be covered by the GNU General Public
* License. However the source code for this file must still be made available
* in accordance with section (3) of the GNU General Public License.
*
* This exception does not invalidate any other reasons why a work based on
* this file might be covered by the GNU General Public License.
*
* The EtherCAT Technology, the trade name and logo "EtherCAT" are the intellectual
* property of, and protected by Beckhoff Automation GmbH.
*/
/** \file
* \brief
* File over EtherCAT (FoE) module.
*/
#include "osal.h"
#include "utypes.h"
#include "esc.h"
#include "esc_foe.h"
#include <string.h>
#undef ESC_DEBUG
#ifdef ESC_DEBUG
#define DPRINT(...) OSAL_PRINT ("esc_foe: "__VA_ARGS__)
#define DEBUG_ASSERT(expression) ASSERT(expression)
#else
#define DPRINT(...)
#define DEBUG_ASSERT(expression)
#endif /* DEBUG */
/** \file
* \brief
* File over EtherCAT (FoE) module.
*
* FOE read / write and FOE service functions
*/
//define if FOE_read should be supported
//#define FOE_READ_SUPPORTED
/** Variable holding current filename read at FOE Open.
*/
char foe_file_name[FOE_FN_MAX + 1];
/** Main FoE configuration pointer data array. Structure i allocated and filled
* by the application defining what preferences it require.
*/
static foe_cfg_t * foe_cfg;
/** Collection of files possible to receive by FoE. Structure i allocated and
* filled by the application defining what preferences it require.
*/
static foe_writefile_cfg_t * foe_files;
/** Pointer to current file configuration item used by FoE.
*/
static foe_writefile_cfg_t * foe_file;
/** Main FoE status data array. Structure gets filled with current status
* variables during FoE usage.
*/
static _FOEvar FOEvar;
/** Validate a write or read request by checking filename and password.
*
* @param[in] name = Filename
* @param[in] num_chars = Length of filename
* @param[in] pass = Numeric variable of password
* @param[in] op = Request op-code
* @return 0= if we succeed, FOE_ERR_NOTFOUND something wrong with filename or
* password
*/
int FOE_fopen (char *name, uint8 num_chars, uint32 pass, uint8 op)
{
uint32 i;
/* Unpack the file name into characters we can look at. */
if (num_chars > FOE_FN_MAX)
{
num_chars = FOE_FN_MAX;
}
for (i = 0; i < num_chars; i++)
{
foe_file_name[i] = name[i];
}
foe_file_name[i] = '\0';
/* Figure out what file they're talking about. */
for (i = 0; i < foe_cfg->n_files; i++)
{
if ((0 == strncmp (foe_file_name, foe_files[i].name, num_chars)) &&
(pass == foe_files[i].filepass))
{
foe_file = &foe_files[i];
foe_file->address_offset = 0;
switch (op)
{
case FOE_OP_RRQ:
{
FOEvar.fposition = 0;
FOEvar.fend = foe_files[i].max_data;
return 0;
}
case FOE_OP_WRQ:
{
FOEvar.fposition = 0;
FOEvar.fend = foe_files[i].max_data;
return 0;
}
}
}
}
return FOE_ERR_NOTFOUND;
}
#ifdef FOE_READ_SUPPORTED
/** Function writing local data to mailbox buffer to be sent as next FoE frame.
* It will try to fill the Mailbox buffer available if there is enough data
* left to read.
*
* @param[in] data = pointer to buffer
* @param[in] maxlength = max length of data possible to read, controlled by
* Mailbox - FoE and Mailbox frame headers.
* @return Number of copied bytes.
*/
uint16 FOE_fread (uint8 * data, uint16 maxlength)
{
uint16 ncopied = 0;
while (maxlength && (FOEvar.fend - FOEvar.fposition))
{
maxlength--;
*(data++) = fbuffer[FOEvar.fposition++];
ncopied++;
}
return ncopied;
}
#endif
/** Function reading mailbox buffer to local buffer to be handled by
* application write hook. Ex. flash routine used by software update.
* It will consume the buffer and call the write hook every time the configured
* flush buffer limit is reached.
*
*
* @param[in] data = Pointer to buffer
* @param[in] length = Length of data to read
* @return Number of copied bytes.
*/
uint16 FOE_fwrite (uint8 *data, uint16 length)
{
uint16 ncopied = 0;
uint32 failed = 0;
DPRINT("FOE_fwrite\n");
FOEvar.fprevposition = FOEvar.fposition;
while (length && (FOEvar.fend - FOEvar.fposition) && !failed)
{
length--;
foe_cfg->fbuffer[FOEvar.fbufposition++] = *(data++);
if(FOEvar.fbufposition >= foe_cfg->buffer_size)
{
failed = foe_file->write_function (foe_file, foe_cfg->fbuffer);
FOEvar.fbufposition = 0;
foe_file->address_offset += foe_cfg->buffer_size;
}
FOEvar.fposition++;
ncopied++;
}
DPRINT("FOE_fwrite END with : %d\n",ncopied);
return ncopied;
}
/** Function handling the final FOE_fwrite when we close up regardless
* if we have filled the buffers or not.
*
* @return Number of copied bytes on success, 0= if failed.
*/
uint32_t FOE_fclose (void)
{
uint32 i;
uint32 failed = 0;
DPRINT("FOE_fclose\n");
if (FOEvar.fbufposition)
{
DPRINT("FOE_fclose EXTRA write\n");
for(i = FOEvar.fbufposition; i < foe_cfg->buffer_size; i++)
{
foe_cfg->fbuffer[FOEvar.fbufposition++] = foe_cfg->empty_write;
}
failed = foe_file->write_function (foe_file, foe_cfg->fbuffer);
FOEvar.fbufposition = 0;
foe_file->address_offset += foe_cfg->buffer_size;
DPRINT("FOE_fclose EXTRA write ended\n");
}
return failed;
}
/** Initialize by clearing all current status variables.
*
*/
void FOE_init ()
{
DPRINT("FOE_init\n");
FOEvar.foepacket = 0;
FOEvar.foestate = FOE_READY;
FOEvar.fposition = 0;
FOEvar.fprevposition = 0;
FOEvar.fbufposition = 0;
}
/** Function for sending an FOE abort frame.
*
* @param[in] code = abort code
*/
void FOE_abort (uint32 code)
{
_FOE *foembx;
uint8 mbxhandle;
if (code)
{
/* Send back an error packet. */
mbxhandle = ESC_claimbuffer ();
if (mbxhandle)
{
foembx = (_FOE *) & MBX[mbxhandle];
foembx->mbxheader.length = htoes (FOEHSIZE); /* Don't bother with error text for now. */
foembx->mbxheader.mbxtype = MBXFOE;
foembx->foeheader.opcode = FOE_OP_ERR;
foembx->foeheader.errorcode = htoel (code);
MBXcontrol[mbxhandle].state = MBXstate_outreq;
}
/* Nothing we can do if we can't get an outbound mailbox. */
}
DPRINT("FOE_abort\n");
FOE_init ();
}
#ifdef FOE_READ_SUPPORTED
/** Sends an FoE data frame, returning the number of data bytes
* written or an error number.
* Error numbers will be greater than FOE_DATA_SIZE.
* @param[in] data = pointer to buffer
* @param[in] length = length of data to read
* @return Number of data bytes written or an error number. Error numbers
* will be greater than FOE_DATA_SIZE.
*/
int FOE_send_data_packet ()
{
_FOE *foembx;
uint16 data_len;
uint8 mbxhandle;
mbxhandle = ESC_claimbuffer ();
if (mbxhandle)
{
foembx = (_FOE *) & MBX[mbxhandle];
data_len = FOE_fread (foembx->data, FOE_DATA_SIZE);
foembx->foeheader.opcode = FOE_OP_DATA;
foembx->foeheader.packetnumber = htoel (FOEvar.foepacket);
FOEvar.foepacket++;
foembx->mbxheader.length = htoes (data_len + FOEHSIZE);
foembx->mbxheader.mbxtype = MBXFOE;
/* Mark the outbound mailbox as filled. */
MBXcontrol[mbxhandle].state = MBXstate_outreq;
return data_len;
}
else
{
return FOE_ERR_PROGERROR;
}
}
#endif
/** Sends an FoE ack data frame.
* @return 0= or error number.
*/
int FOE_send_ack ()
{
_FOE *foembx;
uint8 mbxhandle;
mbxhandle = ESC_claimbuffer ();
if (mbxhandle)
{
DPRINT("FOE_send_ack\n");
foembx = (_FOE *) & MBX[mbxhandle];
foembx->mbxheader.length = htoes (FOEHSIZE);
foembx->mbxheader.mbxtype = MBXFOE;
foembx->foeheader.opcode = FOE_OP_ACK;
foembx->foeheader.packetnumber = htoel (FOEvar.foepacket);
FOEvar.foepacket++;
MBXcontrol[mbxhandle].state = MBXstate_outreq;
return 0;
}
else
{
DPRINT("ERROR:FOE_send_ack\n");
return FOE_ERR_PROGERROR;
}
}
/* Handlers for various FoE states. */
#ifdef FOE_READ_SUPPORTED
/** FoE read request handler. Starts with Initialize, Open and Sending one frame.
* When first frame have been sent we will send data from Ack.
* On error we will send FOE Abort.
*
*/
void FOE_read ()
{
_FOE *foembx;
uint32 data_len;
uint32 password;
int res;
if (FOEvar.foestate != FOE_READY)
{
FOE_abort (FOE_ERR_ILLEGAL);
return;
}
FOE_init ();
foembx = (_FOE *) &MBX[0];
/* Get the length of the file name in octets. */
data_len = etohs (foembx->mbxheader.length) - FOEHSIZE;
password = etohl (foembx->foeheader.password);
res = FOE_fopen (foembx->filename, data_len, password, FOE_OP_RRQ);
if (res == 0)
{
FOEvar.foepacket = 1;
/*
* Attempt to send the packet
*/
res = FOE_send_data_packet ();
if (res <= (int)FOE_DATA_SIZE)
{
FOEvar.foestate = FOE_WAIT_FOR_ACK;
}
else
{
FOE_abort (res);
}
}
else
{
FOE_abort (res);
}
}
#else
void FOE_read()
{
FOE_abort(FOE_ERR_NOTDEFINED);
}
#endif
#ifdef FOE_READ_SUPPORTED
/** FoE data ack handler. Will continue sending next frame until finished.
* On error we will send FOE Abort.
*/
void FOE_ack ()
{
int res;
/* Make sure we're able to take this. */
if (FOEvar.foestate == FOE_WAIT_FOR_FINAL_ACK)
{
/* Move us back to ready state. */
FOE_init ();
return;
}
else if (FOEvar.foestate != FOE_WAIT_FOR_ACK)
{
FOE_abort (FOE_ERR_ILLEGAL);
return;
}
res = FOE_send_data_packet ();
if (res < (int) FOE_DATA_SIZE)
{
FOEvar.foestate = FOE_WAIT_FOR_FINAL_ACK;
}
else if (res >= FOE_ERR_NOTDEFINED)
{
FOE_abort (FOE_ERR_PROGERROR);
}
}
#endif
/** FoE write request handler. Starts with Initialize, Open and Ack that we can/will
* receive data. On error we will send FOE Abort.
*
*/
void FOE_write ()
{
_FOE *foembx;
uint32 data_len;
uint32 password;
int res;
if (FOEvar.foestate != FOE_READY)
{
FOE_abort (FOE_ERR_ILLEGAL);
return;
}
FOE_init ();
foembx = (_FOE *) &MBX[0];
data_len = etohs (foembx->mbxheader.length) - FOEHSIZE;
password = etohl (foembx->foeheader.password);
/* Get an address we can write the file to, if possible. */
res = FOE_fopen (foembx->filename, data_len, password, FOE_OP_WRQ);
DPRINT("FOE_write\n");
if (res == 0)
{
res = FOE_send_ack ();
if (res)
{
FOE_abort (res);
}
else
{
FOEvar.foestate = FOE_WAIT_FOR_DATA;
}
}
else
{
FOE_abort (res);
}
}
/** FoE data request handler. Validates and reads data until we're finsihed. Every
* read frame follwed by an Ack frame. On error we will send FOE Abort.
*
*/
void FOE_data ()
{
_FOE *foembx;
uint32 packet;
uint16 data_len, ncopied;
int res;
if(FOEvar.foestate != FOE_WAIT_FOR_DATA)
{
FOE_abort(FOE_ERR_ILLEGAL);
return;
}
foembx = (_FOE*)&MBX[0];
data_len = etohs(foembx->mbxheader.length) - FOEHSIZE;
packet = etohl(foembx->foeheader.packetnumber);
if (packet != FOEvar.foepacket)
{
DPRINT("FOE_data packet error,packet: %d foeheaader.packet: %d\n",packet,FOEvar.foepacket);
FOE_abort (FOE_ERR_PACKETNO);
}
else if (FOEvar.fposition + data_len > FOEvar.fend)
{
DPRINT("FOE_data disk full\n");
FOE_abort (FOE_ERR_DISKFULL);
}
else
{
ncopied = FOE_fwrite (foembx->data, data_len);
if (!ncopied)
{
DPRINT("FOE_data no copied\n");
FOE_abort (FOE_ERR_PROGERROR);
}
else if (data_len == FOE_DATA_SIZE)
{
DPRINT("FOE_data data_len == FOE_DATA_SIZE\n");
if (ncopied != data_len)
{
DPRINT("FOE_data only %d of %d copied\n",ncopied, data_len);
FOE_abort (FOE_ERR_PROGERROR);
}
res = FOE_send_ack ();
if (res)
{
FOE_abort (res);
}
}
else
{
if ((ncopied != data_len) || FOE_fclose ())
{
DPRINT("FOE_fclose failed to write extra buffer\n");
FOE_abort (FOE_ERR_PROGERROR);
}
else
{
DPRINT("FOE_data completed\n");
res = FOE_send_ack ();
FOE_init ();
}
}
}
}
#ifdef FOE_READ_SUPPORTED
/** FoE read request buys handler. Send an Ack of last frame again. On error
* we will send FOE Abort.
*
*/
void FOE_busy ()
{
/* Only valid if we're servicing a read request. */
if (FOEvar.foestate != FOE_WAIT_FOR_ACK)
{
FOE_abort (FOE_ERR_ILLEGAL);
}
else
{
/* Send the last part again. */
FOEvar.fposition = FOEvar.fprevposition;
FOEvar.foepacket--;
FOE_ack ();
}
}
#endif
/** FoE error requesthandler. Send an FOE Abort.
*
*/
void FOE_error ()
{
/* Master panic! abort the transfer. */
FOE_abort (0);
}
/** Function copying the application configuration variable
* to the FoE module local pointer variable.
*
* @param[in] cfg = Pointer to by the Application static declared
* configuration variable holding application specific details.
* @param[in] cfg_files = Pointer to by the Application static declared
* configuration variable holding file specific details for files to be handled
* by FoE
*/
void FOE_config (foe_cfg_t * cfg, foe_writefile_cfg_t * cfg_files)
{
foe_cfg = cfg;
foe_files = cfg_files;
}
/** Main FoE function checking the status on current mailbox buffers carrying
* data, distributing the mailboxes to appropriate FOE functions depending
* on requested opcode.
* On Error an FoE Error or FoE Abort will be sent.
*/
void ESC_foeprocess (void)
{
_MBXh *mbh;
_FOE *foembx;
if (!MBXrun)
{
return;
}
if (!ESCvar.xoe && (MBXcontrol[0].state == MBXstate_inclaim))
{
mbh = (_MBXh *) &MBX[0];
if (mbh->mbxtype == MBXFOE)
{
ESCvar.xoe = MBXFOE;
}
}
if (ESCvar.xoe == MBXFOE)
{
foembx = (_FOE *) &MBX[0];
/* Verify the size of the file data. */
if (etohs (foembx->mbxheader.length) < FOEHSIZE)
{
FOE_abort (MBXERR_SIZETOOSHORT);
}
else if (ESCvar.ALstatus != ESCboot)
{
FOE_abort (FOE_ERR_BOOTSTRAPONLY);
}
else
{
switch (foembx->foeheader.opcode)
{
case FOE_OP_WRQ:
{
DPRINT("FOE_OP_WRQ\n");
FOE_write ();
break;
}
case FOE_OP_DATA:
{
DPRINT("FOE_OP_DATA\n");
FOE_data ();
break;
}
#ifdef FOE_READ_SUPPORTED
case FOE_OP_RRQ:
{
DPRINT("FOE_OP_RRQ\n");
FOE_read ();
break;
}
case FOE_OP_ACK:
{
DPRINT("FOE_OP_ACK\n");
FOE_ack ();
break;
}
case FOE_OP_BUSY:
{
DPRINT("FOE_OP_BUSY\n");
FOE_busy ();
break;
}
#endif
case FOE_OP_ERR:
{
DPRINT("FOE_OP_ERR\n");
FOE_error ();
break;
}
default:
{
DPRINT("FOE_ERR_NOTDEFINED\n");
FOE_abort (FOE_ERR_NOTDEFINED);
break;
}
}
}
MBXcontrol[0].state = MBXstate_idle;
ESCvar.xoe = 0;
}
}

99
soes/esc_foe.h 100644
View File

@ -0,0 +1,99 @@
/*
* SOES Simple Open EtherCAT Slave
*
* File : esc_foe.h
* Version : 0.1
* Date : 11-30-2010
* Copyright (C) 2010 ZBE Inc.
* Copyright (C) 2007-2013 Arthur Ketels
* Copyright (C) 2012-2013 rt-labs.
*
* SOES is free software; you can redistribute it and/or modify it under
* the terms of the GNU General Public License version 2 as published by the Free
* Software Foundation.
*
* SOES is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* for more details.
*
* As a special exception, if other files instantiate templates or use macros
* or inline functions from this file, or you compile this file and link it
* with other works to produce a work based on this file, this file does not
* by itself cause the resulting work to be covered by the GNU General Public
* License. However the source code for this file must still be made available
* in accordance with section (3) of the GNU General Public License.
*
* This exception does not invalidate any other reasons why a work based on
* this file might be covered by the GNU General Public License.
*
* The EtherCAT Technology, the trade name and logo "EtherCAT" are the intellectual
* property of, and protected by Beckhoff Automation GmbH.
*/
/** \file
* \brief
* Headerfile for esc_foe.c
*/
#ifndef __esc_foe__
#define __esc_foe__
/** Maximum number of characters allowed in a file name. */
#define FOE_FN_MAX 15
typedef struct foe_writefile_cfg foe_writefile_cfg_t;
struct foe_writefile_cfg
{
/** Name of file to receive from master */
const char * name;
/** Size of file,sizeof data we can recv */
uint32 max_data;
/** Where to store the data initially */
uint32 dest_start_address;
/** Current address during write of file */
uint32 address_offset;
/* FoE password */
uint32 filepass;
/* Pointer to application foe write function */
uint32 (*write_function) (foe_writefile_cfg_t * self, uint8 * data);
};
typedef struct foe_cfg
{
/** Allocate static in caller func to fit buffer_size */
uint8 * fbuffer;
/** Write this to fill-up, ex. 0xFF for "non write" */
uint8 empty_write;
/** Buffer size before we flush to destination */
uint32 buffer_size;
/** Number of files used in firmware update */
uint32 n_files;
/** Pointer to files configured to be used by FoE */
foe_writefile_cfg_t * files;
} foe_cfg_t;
typedef struct PACKED
{
/** Current FoE state, ex. Waiting for ACK, Waiting for DATA */
uint8 foestate;
/** Current file buffer position, evaluated against foe file buffer size
* when to flush
*/
uint16 fbufposition;
/** Frame number in read or write sequence */
uint32 foepacket;
/** Current position in file to be handled by FoE request */
uint32 fposition;
/** Previous position in file to be handled by FoE request */
uint32 fprevposition;
/** End position of allocated disk space for FoE requested file */
uint32 fend;
} _FOEvar;
/* Initializes FoE state. */
void FOE_config (foe_cfg_t * cfg, foe_writefile_cfg_t * cfg_files);
void FOE_init (void);
void ESC_foeprocess (void);
#endif