diff --git a/quad/src/quad_app/iic_utils.h b/quad/src/quad_app/iic_utils.h index 276ac22ca5c22325c371b5ae85b71dd10674d872..b1ccb6861d9fdb779debe8e42f56b866573f97d2 100644 --- a/quad/src/quad_app/iic_utils.h +++ b/quad/src/quad_app/iic_utils.h @@ -96,7 +96,7 @@ #define ACCEL_Y_BIAS 0.009f #define ACCEL_Z_BIAS 0.087f -void iic_set_global(struct I2CDriver *given_i2c); +void iic_set_globals(struct I2CDriver *given_i2c, struct SystemDriver *given_system); void iic0_mpu9150_write(u8 register_addr, u8 data); void iic0_mpu9150_read(u8* recv_buffer, u8 register_addr, int size); diff --git a/quad/src/quad_app/initialize_components.c b/quad/src/quad_app/initialize_components.c index 7328e381a1db6e5e7bf1721e92f464b014175141..e5f73528fa3a37bb94ccb2ceadac5da5e00a0d13 100644 --- a/quad/src/quad_app/initialize_components.c +++ b/quad/src/quad_app/initialize_components.c @@ -8,6 +8,7 @@ #include "initialize_components.h" #include "communication.h" #include "sensor.h" +#include "iic_utils.h" //#define BENCH_TEST @@ -39,8 +40,9 @@ int protection_loops(modular_structs_t *structs) int init_structs(modular_structs_t *structs) { struct LEDDriver *mio7_led = &structs->hardware_struct.mio7_led; + struct SystemDriver *sys = &structs->hardware_struct.sys; if (mio7_led->reset(mio7_led)) return -1; - mio7_init_global(mio7_led); + mio7_init_globals(mio7_led, sys); // Turn off LED 7 to let observers know that the quad is not yet active mio7_led->turn_off(mio7_led); @@ -73,7 +75,7 @@ int init_structs(modular_structs_t *structs) { if (i2c->reset(i2c)) { return -1; } - iic_set_global(i2c); + iic_set_globals(i2c, sys); // Initialize PWM Recorders and Motor outputs struct PWMInputDriver *pwm_inputs = &structs->hardware_struct.pwm_inputs; diff --git a/quad/src/quad_app/mio7_led.h b/quad/src/quad_app/mio7_led.h index 52e9e8faab89e225591667027b9a9b7654385159..6244e2c1157cff657170783303506a8303ff07f5 100644 --- a/quad/src/quad_app/mio7_led.h +++ b/quad/src/quad_app/mio7_led.h @@ -24,7 +24,7 @@ */ void flash_MIO_7_led(int how_many_times, int ms_between_flashes); -void mio7_init_global(struct LEDDriver *given_mio7_led); +void mio7_init_globals(struct LEDDriver *given_mio7_led, struct SystemDriver *sys); void MIO7_led_on(); void MIO7_led_off(); diff --git a/quad/src/quad_app/quad_app.h b/quad/src/quad_app/quad_app.h index ef4cab71f718e52eb7b200b05e555a3f8ad3bffa..85e753a1e14a5a87c91d36f2410651e4b696264c 100644 --- a/quad/src/quad_app/quad_app.h +++ b/quad/src/quad_app/quad_app.h @@ -1,6 +1,8 @@ #ifndef QUAD_APP_H #define QUAD_APP_H +#include "type_def.h" + int quad_main(int (*setup_hardware)(hardware_t *hardware_struct)); #endif diff --git a/quad/src/quad_app/type_def.h b/quad/src/quad_app/type_def.h index 5263c31254deca9c6d01bc80841b0a2c81937fba..1dad790da9f3c65d7e4c46153cf033ae2bcbd765 100644 --- a/quad/src/quad_app/type_def.h +++ b/quad/src/quad_app/type_def.h @@ -400,6 +400,7 @@ typedef struct hardware_t { struct TimerDriver global_timer; struct TimerDriver axi_timer; struct LEDDriver mio7_led; + struct SystemDriver sys; } hardware_t; /** diff --git a/quad/xsdk_workspace/modular_quad_pid/.cproject b/quad/xsdk_workspace/modular_quad_pid/.cproject index 2a974bb61e6abb6f71e0b057d0beb3c3c2a5b789..63ab92a73ddc5e18f02c14a2a0a35a750e67eee4 100644 --- a/quad/xsdk_workspace/modular_quad_pid/.cproject +++ b/quad/xsdk_workspace/modular_quad_pid/.cproject @@ -18,7 +18,7 @@ <storageModule moduleId="cdtBuildSystem" version="4.0.0"> <configuration artifactExtension="elf" artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.debug,org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe" cleanCommand="rm -rf" description="" id="xilinx.gnu.arm.exe.debug.980189137" name="Debug" parent="xilinx.gnu.arm.exe.debug"> <folderInfo id="xilinx.gnu.arm.exe.debug.980189137." name="/" resourcePath=""> - <toolChain id="xilinx.gnu.arm.exe.debug.toolchain.1195127676" name="Xilinx ARM GNU Toolchain" superClass="xilinx.gnu.arm.exe.debug.toolchain"> + <toolChain id="xilinx.gnu.arm.exe.debug.toolchain.1195127676" name="Xilinx ARM GNU Toolchain" resourceTypeBasedDiscovery="true" superClass="xilinx.gnu.arm.exe.debug.toolchain"> <targetPlatform binaryParser="com.xilinx.sdk.managedbuilder.XELF.arm" id="xilinx.arm.target.gnu.base.debug.2072264921" isAbstract="false" name="Debug Platform" superClass="xilinx.arm.target.gnu.base.debug"/> <builder buildPath="${workspace_loc:/modular_quad_pid}/Debug" enableAutoBuild="true" id="xilinx.gnu.arm.toolchain.builder.debug.2124876787" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="GNU make" superClass="xilinx.gnu.arm.toolchain.builder.debug"/> <tool id="xilinx.gnu.arm.c.toolchain.assembler.debug.192056667" name="ARM gcc assembler" superClass="xilinx.gnu.arm.c.toolchain.assembler.debug"> @@ -27,10 +27,14 @@ <tool id="xilinx.gnu.arm.c.toolchain.compiler.debug.177835003" name="ARM gcc compiler" superClass="xilinx.gnu.arm.c.toolchain.compiler.debug"> <option defaultValue="gnu.c.optimization.level.none" id="xilinx.gnu.compiler.option.optimization.level.1900496019" name="Optimization Level" superClass="xilinx.gnu.compiler.option.optimization.level" value="gnu.c.optimization.level.none" valueType="enumerated"/> <option id="xilinx.gnu.compiler.option.debugging.level.1207856754" name="Debug Level" superClass="xilinx.gnu.compiler.option.debugging.level" value="gnu.c.debugging.level.max" valueType="enumerated"/> - <option id="xilinx.gnu.compiler.inferred.swplatform.includes.2123463819" name="Software Platform Include Path" superClass="xilinx.gnu.compiler.inferred.swplatform.includes" valueType="includePath"> + <option id="xilinx.gnu.compiler.inferred.swplatform.includes.2123463819" name="Software Platform Include Path" superClass="xilinx.gnu.compiler.inferred.swplatform.includes"/> + <option id="xilinx.gnu.compiler.symbols.defined.1696008720" name="Defined symbols (-D)" superClass="xilinx.gnu.compiler.symbols.defined"/> + <option id="xilinx.gnu.compiler.dircategory.includes.1211006365" name="Include Paths" superClass="xilinx.gnu.compiler.dircategory.includes" valueType="includePath"> <listOptionValue builtIn="false" value="../../system_bsp/ps7_cortexa9_0/include"/> + <listOptionValue builtIn="false" value=""${workspace_loc:/modular_quad_pid/ext/computation_graph}""/> + <listOptionValue builtIn="false" value=""${workspace_loc:/modular_quad_pid/ext/quad_app}""/> + <listOptionValue builtIn="false" value=""${workspace_loc:/modular_quad_pid/ext/queue}""/> </option> - <option id="xilinx.gnu.compiler.symbols.defined.1696008720" name="Defined symbols (-D)" superClass="xilinx.gnu.compiler.symbols.defined"/> <inputType id="xilinx.gnu.arm.c.compiler.input.909725989" name="C source files" superClass="xilinx.gnu.arm.c.compiler.input"/> </tool> <tool id="xilinx.gnu.arm.cxx.toolchain.compiler.debug.1470236349" name="ARM g++ compiler" superClass="xilinx.gnu.arm.cxx.toolchain.compiler.debug"> @@ -52,6 +56,7 @@ <option id="xilinx.gnu.c.link.option.libs.1025826490" name="Libraries (-l)" superClass="xilinx.gnu.c.link.option.libs" valueType="libs"> <listOptionValue builtIn="false" value="m"/> </option> + <option id="xilinx.gnu.c.link.option.paths.1462160427" name="Library search path (-L)" superClass="xilinx.gnu.c.link.option.paths"/> <inputType id="xilinx.gnu.linker.input.777404607" superClass="xilinx.gnu.linker.input"> <additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/> <additionalInput kind="additionalinput" paths="$(LIBS)"/> @@ -101,12 +106,16 @@ <tool id="xilinx.gnu.arm.c.toolchain.compiler.release.85270120" name="ARM gcc compiler" superClass="xilinx.gnu.arm.c.toolchain.compiler.release"> <option defaultValue="gnu.c.optimization.level.more" id="xilinx.gnu.compiler.option.optimization.level.515686013" name="Optimization Level" superClass="xilinx.gnu.compiler.option.optimization.level" valueType="enumerated"/> <option id="xilinx.gnu.compiler.option.debugging.level.1121150517" name="Debug Level" superClass="xilinx.gnu.compiler.option.debugging.level" value="gnu.c.debugging.level.none" valueType="enumerated"/> - <option id="xilinx.gnu.compiler.inferred.swplatform.includes.687694973" name="Software Platform Include Path" superClass="xilinx.gnu.compiler.inferred.swplatform.includes" valueType="includePath"> - <listOptionValue builtIn="false" value="../../system_bsp/ps7_cortexa9_0/include"/> - </option> + <option id="xilinx.gnu.compiler.inferred.swplatform.includes.687694973" name="Software Platform Include Path" superClass="xilinx.gnu.compiler.inferred.swplatform.includes" valueType="includePath"/> <option id="xilinx.gnu.compiler.symbols.defined.1562495938" name="Defined symbols (-D)" superClass="xilinx.gnu.compiler.symbols.defined" valueType="definedSymbols"> <listOptionValue builtIn="false" value="NDEBUG=1"/> </option> + <option id="xilinx.gnu.compiler.dircategory.includes.1873624761" superClass="xilinx.gnu.compiler.dircategory.includes" valueType="includePath"> + <listOptionValue builtIn="false" value="../../system_bsp/ps7_cortexa9_0/include"/> + <listOptionValue builtIn="false" value=""${workspace_loc:/modular_quad_pid/ext/computation_graph}""/> + <listOptionValue builtIn="false" value=""${workspace_loc:/modular_quad_pid/ext/quad_app}""/> + <listOptionValue builtIn="false" value=""${workspace_loc:/modular_quad_pid/ext/queue}""/> + </option> <inputType id="xilinx.gnu.arm.c.compiler.input.846429887" name="C source files" superClass="xilinx.gnu.arm.c.compiler.input"/> </tool> <tool id="xilinx.gnu.arm.cxx.toolchain.compiler.release.1846278293" name="ARM g++ compiler" superClass="xilinx.gnu.arm.cxx.toolchain.compiler.release"> @@ -158,6 +167,15 @@ <storageModule moduleId="cdtBuildSystem" version="4.0.0"> <project id="modular_quad_pid.xilinx.gnu.arm.exe.832182557" name="Xilinx ARM Executable" projectType="xilinx.gnu.arm.exe"/> </storageModule> + <storageModule moduleId="refreshScope" versionNumber="2"> + <configuration configurationName="Release"> + <resource resourceType="PROJECT" workspacePath="/modular_quad_pid"/> + </configuration> + <configuration configurationName="Debug"> + <resource resourceType="PROJECT" workspacePath="/modular_quad_pid"/> + </configuration> + </storageModule> + <storageModule moduleId="org.eclipse.cdt.internal.ui.text.commentOwnerProjectMappings"/> <storageModule moduleId="scannerConfiguration"> <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/> <scannerConfigBuildInfo instanceId="xilinx.gnu.arm.exe.debug.980189137;xilinx.gnu.arm.exe.debug.980189137."> @@ -166,6 +184,9 @@ <scannerConfigBuildInfo instanceId="xilinx.gnu.arm.exe.release.255973624;xilinx.gnu.arm.exe.release.255973624.;xilinx.gnu.arm.c.toolchain.compiler.release.85270120;xilinx.gnu.arm.c.compiler.input.846429887"> <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.xilinx.managedbuilder.ui.ARMGCCManagedMakePerProjectProfileC"/> </scannerConfigBuildInfo> + <scannerConfigBuildInfo instanceId="xilinx.gnu.arm.exe.debug.980189137"> + <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.xilinx.managedbuilder.ui.ARMGCCManagedMakePerProjectProfileC"/> + </scannerConfigBuildInfo> <scannerConfigBuildInfo instanceId="xilinx.gnu.arm.exe.release.255973624;xilinx.gnu.arm.exe.release.255973624."> <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.xilinx.managedbuilder.ui.ARMGCCManagedMakePerProjectProfileC"/> </scannerConfigBuildInfo> @@ -173,13 +194,4 @@ <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.xilinx.managedbuilder.ui.ARMGCCManagedMakePerProjectProfileC"/> </scannerConfigBuildInfo> </storageModule> - <storageModule moduleId="refreshScope" versionNumber="2"> - <configuration configurationName="Release"> - <resource resourceType="PROJECT" workspacePath="/modular_quad_pid"/> - </configuration> - <configuration configurationName="Debug"> - <resource resourceType="PROJECT" workspacePath="/modular_quad_pid"/> - </configuration> - </storageModule> - <storageModule moduleId="org.eclipse.cdt.internal.ui.text.commentOwnerProjectMappings"/> </cproject> diff --git a/quad/xsdk_workspace/modular_quad_pid/.project b/quad/xsdk_workspace/modular_quad_pid/.project index bb5f1cfda9ec5d0ae27231be921b55d9fed41736..61b0bf7e40e000c5d6a0812b1b46aa8230584d8a 100644 --- a/quad/xsdk_workspace/modular_quad_pid/.project +++ b/quad/xsdk_workspace/modular_quad_pid/.project @@ -3,8 +3,8 @@ <name>modular_quad_pid</name> <comment></comment> <projects> - <project>system_bsp_new</project> <project>system_bsp</project> + <project>system_bsp_new</project> </projects> <buildSpec> <buildCommand> @@ -24,4 +24,119 @@ <nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature> <nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature> </natures> + <linkedResources> + <link> + <name>ext/computation_graph</name> + <type>2</type> + <locationURI>QUAD_LOC/src/computation_graph</locationURI> + </link> + <link> + <name>ext/quad_app</name> + <type>2</type> + <locationURI>QUAD_LOC/src/quad_app</locationURI> + </link> + <link> + <name>ext/queue</name> + <type>2</type> + <locationURI>QUAD_LOC/src/queue</locationURI> + </link> + </linkedResources> + <filteredResources> + <filter> + <id>1489164394345</id> + <name></name> + <type>10</type> + <matcher> + <id>org.eclipse.ui.ide.multiFilter</id> + <arguments>1.0-name-matches-false-false-obj</arguments> + </matcher> + </filter> + <filter> + <id>0</id> + <name>ext/computation_graph</name> + <type>5</type> + <matcher> + <id>org.eclipse.ui.ide.multiFilter</id> + <arguments>1.0-name-matches-false-false-*.c</arguments> + </matcher> + </filter> + <filter> + <id>0</id> + <name>ext/computation_graph</name> + <type>5</type> + <matcher> + <id>org.eclipse.ui.ide.multiFilter</id> + <arguments>1.0-name-matches-false-false-*.h</arguments> + </matcher> + </filter> + <filter> + <id>0</id> + <name>ext/computation_graph</name> + <type>10</type> + <matcher> + <id>org.eclipse.ui.ide.multiFilter</id> + <arguments>1.0-name-matches-false-false-*</arguments> + </matcher> + </filter> + <filter> + <id>0</id> + <name>ext/quad_app</name> + <type>5</type> + <matcher> + <id>org.eclipse.ui.ide.multiFilter</id> + <arguments>1.0-name-matches-false-false-*.c</arguments> + </matcher> + </filter> + <filter> + <id>0</id> + <name>ext/quad_app</name> + <type>5</type> + <matcher> + <id>org.eclipse.ui.ide.multiFilter</id> + <arguments>1.0-name-matches-false-false-*.h</arguments> + </matcher> + </filter> + <filter> + <id>0</id> + <name>ext/quad_app</name> + <type>10</type> + <matcher> + <id>org.eclipse.ui.ide.multiFilter</id> + <arguments>1.0-name-matches-false-false-*</arguments> + </matcher> + </filter> + <filter> + <id>0</id> + <name>ext/queue</name> + <type>5</type> + <matcher> + <id>org.eclipse.ui.ide.multiFilter</id> + <arguments>1.0-name-matches-false-false-*.c</arguments> + </matcher> + </filter> + <filter> + <id>0</id> + <name>ext/queue</name> + <type>5</type> + <matcher> + <id>org.eclipse.ui.ide.multiFilter</id> + <arguments>1.0-name-matches-false-false-*.h</arguments> + </matcher> + </filter> + <filter> + <id>0</id> + <name>ext/queue</name> + <type>10</type> + <matcher> + <id>org.eclipse.ui.ide.multiFilter</id> + <arguments>1.0-name-matches-false-false-*</arguments> + </matcher> + </filter> + </filteredResources> + <variableList> + <variable> + <name>QUAD_LOC</name> + <value>$%7BPARENT-1-WORKSPACE_LOC%7D</value> + </variable> + </variableList> </projectDescription> diff --git a/quad/xsdk_workspace/modular_quad_pid/ext/__CAUTION__.md b/quad/xsdk_workspace/modular_quad_pid/ext/__CAUTION__.md new file mode 100644 index 0000000000000000000000000000000000000000..6f7e2a00feb6d7083997b71389dcad6b36a0d616 --- /dev/null +++ b/quad/xsdk_workspace/modular_quad_pid/ext/__CAUTION__.md @@ -0,0 +1,12 @@ +**************************************** + Do not edit files in this directory! +**************************************** + +The fine print +---- + +Files in this directory are simlinked to external libraries. They exist here +purely to help fascilitate the build process and permit debugging of those +libraries within XSDK. Editing them here might build within XSDK, but it might +break in its original context. Hence, don't edit these files within XSDK. Edit +them within a workflow that uses the Makefile in the top-level quad folder. diff --git a/quad/xsdk_workspace/modular_quad_pid/src/hw_impl_zybo.h b/quad/xsdk_workspace/modular_quad_pid/src/hw_impl_zybo.h index 04b408c04dff83391f02e46e1884d6206be60a37..077869a2b05161679ed5d19dd157b886b36e2d52 100644 --- a/quad/xsdk_workspace/modular_quad_pid/src/hw_impl_zybo.h +++ b/quad/xsdk_workspace/modular_quad_pid/src/hw_impl_zybo.h @@ -1,7 +1,7 @@ #ifndef HW_IMPL_ZYBO #define HW_IMPL_ZYBO -#include "../application/hw_iface.h" +#include "hw_iface.h" #include <sleep.h> #include <stdlib.h> diff --git a/quad/xsdk_workspace/modular_quad_pid/src/main.c b/quad/xsdk_workspace/modular_quad_pid/src/main.c index fac5b292519db353db2de0059becb4d392f4f02c..2d50f0b4a7b2313e893f90d63a66f150b6369ef4 100644 --- a/quad/xsdk_workspace/modular_quad_pid/src/main.c +++ b/quad/xsdk_workspace/modular_quad_pid/src/main.c @@ -1,6 +1,7 @@ #include <stdio.h> #include "hw_impl_zybo.h" #include "quad_app.h" +#include "type_def.h" int setup_hardware(hardware_t *hardware) { hardware->i2c = create_zybo_i2c(); @@ -10,6 +11,7 @@ int setup_hardware(hardware_t *hardware) { hardware->global_timer = create_zybo_global_timer(); hardware->axi_timer = create_zybo_axi_timer(); hardware->mio7_led = create_zybo_mio7_led(); + return 0; } int main()