diff --git a/Apps/FlightSoftware/PrimaryFlightController/FlightMCU/.cproject b/Apps/FlightSoftware/PrimaryFlightController/FlightMCU/.cproject
index 19f5ab1e4..360c38806 100644
--- a/Apps/FlightSoftware/PrimaryFlightController/FlightMCU/.cproject
+++ b/Apps/FlightSoftware/PrimaryFlightController/FlightMCU/.cproject
@@ -156,43 +156,43 @@
-
+
-
+
-
-
-
-
-
-
+
+
+
+
+
-
-
-
+
+
-
+
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
-
diff --git a/Apps/FlightSoftware/PrimaryFlightController/FlightMCU/App/Main.cpp b/Apps/FlightSoftware/PrimaryFlightController/FlightMCU/App/Main.cpp
index 51ba2d4c6..631f60be7 100644
--- a/Apps/FlightSoftware/PrimaryFlightController/FlightMCU/App/Main.cpp
+++ b/Apps/FlightSoftware/PrimaryFlightController/FlightMCU/App/Main.cpp
@@ -14,19 +14,19 @@
#include "i2c.h"
extern "C" {
- void vApplicationIdleHook( void );
+ void vApplicationIdleHook(void);
}
-void vApplicationIdleHook( void ){
+void vApplicationIdleHook(void) {
run1cycle();
- //gioToggleBit(gioPORTB, 1);
- for(uint32_t i=0; i<2000000; i++) asm(" NOP");
+ //for(uint32_t i=0; i<22000; i++) asm(" NOP");
}
void main(void)
{
/* USER CODE BEGIN (3) */
gioInit();
+
i2cInit();
constructApp();
diff --git a/Apps/FlightSoftware/PrimaryFlightController/FlightMCU/Include/CubeRoverConfig.hpp b/Apps/FlightSoftware/PrimaryFlightController/FlightMCU/Include/CubeRoverConfig.hpp
index 0327d8f3c..621118a28 100644
--- a/Apps/FlightSoftware/PrimaryFlightController/FlightMCU/Include/CubeRoverConfig.hpp
+++ b/Apps/FlightSoftware/PrimaryFlightController/FlightMCU/Include/CubeRoverConfig.hpp
@@ -2,9 +2,9 @@
#define INCLUDE_CUBEROVERCONFIG_HPP_
// Definition of rate group dividers
-#define RATEGROUP_DIVIDER_LOW_FREQ 4
-#define RATEGROUP_DIVIDER_MED_FREQ 2
-#define RATEGROUP_DIVIDER_HI_FREQ 1
+#define RATEGROUP_DIVIDER_LOW_FREQ 220000000 // 1Hz
+#define RATEGROUP_DIVIDER_MED_FREQ 2200000 // 100Hz
+#define RATEGROUP_DIVIDER_HI_FREQ 220000 // 1kHz
// Definition of component instance ID, Affinity and queue depth
#define EVENT_LOGGER_ID 0
diff --git a/Apps/FlightSoftware/fprime/CubeRover/ComponentTemplate/CubeRoverComponentTemplate/CubeRoverComponentTemplateAi.xml b/Apps/FlightSoftware/fprime/CubeRover/ComponentTemplate/CubeRoverComponentTemplate/CubeRoverComponentTemplateAi.xml
new file mode 100644
index 000000000..da3860443
--- /dev/null
+++ b/Apps/FlightSoftware/fprime/CubeRover/ComponentTemplate/CubeRoverComponentTemplate/CubeRoverComponentTemplateAi.xml
@@ -0,0 +1,32 @@
+
+
+
+
+
+ Svc/Ping/PingPortAi.xml
+ Fw/Log/LogPortAi.xml
+
+
+
+
+
+ The output log port
+
+
+
+
+
+
+ Input ping port "Health"
+
+
+
+
+ Output ping port "Health"
+
+
+
+
+
+
diff --git a/Apps/FlightSoftware/fprime/CubeRover/ComponentTemplate/CubeRoverComponentTemplate/Makefile b/Apps/FlightSoftware/fprime/CubeRover/ComponentTemplate/CubeRoverComponentTemplate/Makefile
new file mode 100644
index 000000000..49648598a
--- /dev/null
+++ b/Apps/FlightSoftware/fprime/CubeRover/ComponentTemplate/CubeRoverComponentTemplate/Makefile
@@ -0,0 +1,15 @@
+# This Makefile goes in each module, and allows building of an individual module library.
+# It is expected that each developer will add targets of their own for building and running
+# tests, for example.
+
+# derive module name from directory
+
+MODULE_DIR = {{ NAMESPACE }}/{{ COMPONENT_NAME }}
+MODULE = $(subst /,,$(MODULE_DIR))
+
+BUILD_ROOT ?= $(subst /$(MODULE_DIR),,$(CURDIR))
+export BUILD_ROOT
+
+include $(BUILD_ROOT)/mk/makefiles/module_targets.mk
+
+# Add module specific targets here
diff --git a/Apps/FlightSoftware/fprime/CubeRover/ComponentTemplate/CubeRoverComponentTemplate/mod.mk b/Apps/FlightSoftware/fprime/CubeRover/ComponentTemplate/CubeRoverComponentTemplate/mod.mk
new file mode 100644
index 000000000..58b50866d
--- /dev/null
+++ b/Apps/FlightSoftware/fprime/CubeRover/ComponentTemplate/CubeRoverComponentTemplate/mod.mk
@@ -0,0 +1,5 @@
+SRC = {{ COMPONENT_NAME }}ComponentAi.xml
+
+HDR =
+
+SUBDIRS =
diff --git a/Apps/FlightSoftware/fprime/CubeRover/ComponentTemplate/generate_component.sh b/Apps/FlightSoftware/fprime/CubeRover/ComponentTemplate/generate_component.sh
new file mode 100755
index 000000000..923ba6143
--- /dev/null
+++ b/Apps/FlightSoftware/fprime/CubeRover/ComponentTemplate/generate_component.sh
@@ -0,0 +1,28 @@
+COMPONENT_NAME=$1
+NAMESPACE=$2
+
+if [ $# -ne 2 ]
+then
+ echo "generate_component.sh COMPONENT_NAME NAMESPACE"
+ exit 1
+fi
+
+if [ ! -d "../../$NAMESPACE" ]
+then
+ echo "namespace $NAMESPACE does not exist"
+ exit 1
+fi
+
+OutputPath="../../$NAMESPACE/$COMPONENT_NAME"
+Aixml="${OutputPath}/${COMPONENT_NAME}ComponentAi.xml"
+
+mkdir -p $OutputPath
+cp ./CubeRoverComponentTemplate/CubeRoverComponentTemplateAi.xml $Aixml
+cp ./CubeRoverComponentTemplate/Makefile $OutputPath
+cp ./CubeRoverComponentTemplate/mod.mk $OutputPath
+sed -i "s/{{ COMPONENT_NAME }}/$COMPONENT_NAME/g" $Aixml
+sed -i "s/{{ COMPONENT_NAME }}/$COMPONENT_NAME/g" ${OutputPath}/Makefile
+sed -i "s/{{ COMPONENT_NAME }}/$COMPONENT_NAME/g" ${OutputPath}/mod.mk
+sed -i "s/{{ NAMESPACE }}/$NAMESPACE/g" $Aixml
+sed -i "s/{{ NAMESPACE }}/$NAMESPACE/g" ${OutputPath}/Makefile
+echo "Don't forget to add the component to fprime/mk/configs/modules/modules.mk under CubeRover_MODULES"
diff --git a/Apps/FlightSoftware/fprime/CubeRover/Top/CubeRoverTopologyAppAc.hpp.patch b/Apps/FlightSoftware/fprime/CubeRover/Top/CubeRoverTopologyAppAc.hpp.patch
new file mode 100644
index 000000000..6622596af
--- /dev/null
+++ b/Apps/FlightSoftware/fprime/CubeRover/Top/CubeRoverTopologyAppAc.hpp.patch
@@ -0,0 +1,25 @@
+--- CubeRoverTopologyAppAc.hpp 2020-09-28 17:58:46.310851294 -0700
++++ CubeRoverTopologyAppAc.hpp.bak 2020-09-28 18:01:46.347818934 -0700
+@@ -16,14 +16,14 @@
+ extern Fw::SimpleObjRegistry simpleReg;
+
+ // Component declarations
+-extern Drv::BlockDriverImpl blockDriver("blockDriver");
+-extern Svc::RateGroupDriverImpl rateGroupDriver("rateGroupDriver");
+-extern Svc::ActiveRateGroupImpl rateGroupLowFreq("rateGroupLowFreq");
+-extern Svc::ActiveRateGroupImpl rateGroupMedFreq("rateGroupMedFreq");
+-extern Svc::ActiveRateGroupImpl rateGroupHiFreq("rateGroupHiFreq");
+-extern Svc::CubeRoverTimeImpl cubeRoverTime("cubeRoverTime");
+-extern Svc::TlmChanImpl tlmChan("tlmChan");
+-extern Svc::CommandDispatcherImpl cmdDispatcher("cmdDispatcher");
++extern Drv::BlockDriverImpl blockDriver;
++extern Svc::RateGroupDriverImpl rateGroupDriver;
++extern Svc::ActiveRateGroupImpl rateGroupMedFreq;
++extern Svc::ActiveRateGroupImpl rateGroupLowFreq;
++extern Svc::ActiveRateGroupImpl rateGroupHiFreq;
++extern Svc::CubeRoverTimeImpl cubeRoverTime;
++extern Svc::TlmChanImpl tlmChan;
++extern Svc::CommandDispatcherImpl cmdDispatcher;
+
+
+
diff --git a/Apps/FlightSoftware/fprime/CubeRover/Top/CubeRoverTopologyAppAi.xml b/Apps/FlightSoftware/fprime/CubeRover/Top/CubeRoverTopologyAppAi.xml
index 13bc7da69..5e4564a9d 100644
--- a/Apps/FlightSoftware/fprime/CubeRover/Top/CubeRoverTopologyAppAi.xml
+++ b/Apps/FlightSoftware/fprime/CubeRover/Top/CubeRoverTopologyAppAi.xml
@@ -7,7 +7,7 @@
Svc/RateGroupDriver/RateGroupDriverComponentAi.xml
Svc/ActiveRateGroup/ActiveRateGroupComponentAi.xml
- Svc/Time/TimeComponentAi.xml
+ Svc/LinuxTime/CubeRoverTimeComponentAi.xml
Svc/TlmChan/TlmChanComponentAi.xml
Svc/CmdDispatcher/CommandDispatcherComponentAi.xml
@@ -21,7 +21,7 @@
-
+
@@ -78,25 +78,21 @@
*********************************************************************************************************
-->
-
-
-
-
@@ -138,4 +134,4 @@
-
\ No newline at end of file
+
diff --git a/Apps/FlightSoftware/fprime/CubeRover/Top/Topology.cpp b/Apps/FlightSoftware/fprime/CubeRover/Top/Topology.cpp
index 5e8180330..392ba9c33 100644
--- a/Apps/FlightSoftware/fprime/CubeRover/Top/Topology.cpp
+++ b/Apps/FlightSoftware/fprime/CubeRover/Top/Topology.cpp
@@ -1,10 +1,12 @@
#include
#include
#include
+#include // PrimaryFlightController/FlightMCU
-#include "CubeRoverConfig.hpp"
#include "Topology.hpp"
-#include "Components.hpp"
+
+
+
// ---------------------------------------------------------------------------
// Block Driver Component
@@ -78,6 +80,8 @@ Svc::CommandDispatcherImpl cmdDispatcher(
#endif
);
+
+
/**
* @brief Run 1 cycle (debug)
*/
diff --git a/Apps/FlightSoftware/fprime/CubeRover/Top/Topology.hpp b/Apps/FlightSoftware/fprime/CubeRover/Top/Topology.hpp
index 60b10773d..fcdea74cf 100644
--- a/Apps/FlightSoftware/fprime/CubeRover/Top/Topology.hpp
+++ b/Apps/FlightSoftware/fprime/CubeRover/Top/Topology.hpp
@@ -8,6 +8,7 @@
#ifndef F_PRIME_CUBEROVER_TOP_TOPOLOGY_HPP_
#define F_PRIME_CUBEROVER_TOP_TOPOLOGY_HPP_
+#include "Components.hpp"
#include "CubeRoverTopologyAppAc.hpp"
/**
diff --git a/Apps/FlightSoftware/fprime/CubeRover/build.sh b/Apps/FlightSoftware/fprime/CubeRover/build.sh
new file mode 100755
index 000000000..b242b6db6
--- /dev/null
+++ b/Apps/FlightSoftware/fprime/CubeRover/build.sh
@@ -0,0 +1,11 @@
+# This was my build step (mostly because my arm compiler won't link *.a without executable enabled??
+make clean
+make TIR4
+patch --verbose ./Top/CubeRoverTopologyAppAc.hpp ./Top/CubeRoverTopologyAppAc.hpp.patch
+# find .. | grep --color=never -e ".a$" | xargs --verbose chmod +x
+make TIR4
+./clean.sh
+# git checkout ../Autocoders/* # If your git freaks out over file mode changing
+
+# Now go to CCS, delete the TI build output folders (which SHOULD be removed by clean.sh
+# Build
diff --git a/Apps/FlightSoftware/fprime/Fw/Types/BasicTypes.cpp b/Apps/FlightSoftware/fprime/Fw/Types/BasicTypes.cpp
index 9ea630c0e..b976cfcc6 100644
--- a/Apps/FlightSoftware/fprime/Fw/Types/BasicTypes.cpp
+++ b/Apps/FlightSoftware/fprime/Fw/Types/BasicTypes.cpp
@@ -12,7 +12,7 @@
#include
-#ifdef __VXWORKS__ // VxWorks doesn't have strnlen
+#if defined __VXWORKS__ || defined __TI_ARM__ // Neither VxWorks nor TI ARM have strnlen
NATIVE_INT_TYPE strnlen(const char *s, NATIVE_INT_TYPE maxlen) {
// walk buffer looking for NULL
for (NATIVE_INT_TYPE index = 0; index < maxlen; index++) {
diff --git a/Apps/FlightSoftware/fprime/Fw/Types/BasicTypes.hpp b/Apps/FlightSoftware/fprime/Fw/Types/BasicTypes.hpp
index 7c82e80fa..247a61f9b 100644
--- a/Apps/FlightSoftware/fprime/Fw/Types/BasicTypes.hpp
+++ b/Apps/FlightSoftware/fprime/Fw/Types/BasicTypes.hpp
@@ -115,8 +115,8 @@ typedef float F32; //!< 32-bit floating point
#define PRIVATE private //!< overridable private for unit testing
#endif
-// Not ideal, but VxWorks doesn't have strnlen
-#ifdef __VXWORKS__
+// Not ideal, but neither VxWorks nor TI ARM have strnlen
+#if defined __VXWORKS__ || defined __TI_ARM__
NATIVE_INT_TYPE strnlen(const char *s, NATIVE_INT_TYPE maxlen);
#endif
diff --git a/Apps/FlightSoftware/fprime/Svc/ComLogger/ComLogger.hpp b/Apps/FlightSoftware/fprime/Svc/ComLogger/ComLogger.hpp
index f3bca9718..ff580d055 100644
--- a/Apps/FlightSoftware/fprime/Svc/ComLogger/ComLogger.hpp
+++ b/Apps/FlightSoftware/fprime/Svc/ComLogger/ComLogger.hpp
@@ -14,6 +14,10 @@
#include
#include
+#ifdef __TI_ARM__ // TI ARM doesn't define limits.h
+#define NAME_MAX 255
+#define PATH_MAX 4096
+#endif
#include
#include
diff --git a/Apps/FlightSoftware/fprime/Svc/LinuxTime/CubeRoverTimeComponentAi.xml b/Apps/FlightSoftware/fprime/Svc/LinuxTime/CubeRoverTimeComponentAi.xml
new file mode 100644
index 000000000..7c4e6f3cd
--- /dev/null
+++ b/Apps/FlightSoftware/fprime/Svc/LinuxTime/CubeRoverTimeComponentAi.xml
@@ -0,0 +1,15 @@
+
+
+
+
+ Fw/Time/TimePortAi.xml
+ A component for getting time
+
+
+
+ Port to retrieve time
+
+
+
+
+
diff --git a/Apps/FlightSoftware/fprime/Svc/LinuxTime/mod.mk b/Apps/FlightSoftware/fprime/Svc/LinuxTime/mod.mk
index f34d0442f..682ec93ac 100644
--- a/Apps/FlightSoftware/fprime/Svc/LinuxTime/mod.mk
+++ b/Apps/FlightSoftware/fprime/Svc/LinuxTime/mod.mk
@@ -22,7 +22,9 @@ SRC_RASPIAN = LinuxTimeImpl.cpp
SRC_TIR4 = CubeRoverTimeImpl.cpp
-HDR = LinuxTimeImpl.hpp
+SRC = CubeRoverTimeComponentAi.xml
+
+HDR = CubeRoverTimeImpl.hpp
SUBDIRS = test
diff --git a/Apps/FlightSoftware/fprime/mk/configs/compiler/defines_common.mk b/Apps/FlightSoftware/fprime/mk/configs/compiler/defines_common.mk
index f00438a88..7ba10da10 100644
--- a/Apps/FlightSoftware/fprime/mk/configs/compiler/defines_common.mk
+++ b/Apps/FlightSoftware/fprime/mk/configs/compiler/defines_common.mk
@@ -1,3 +1,3 @@
COMMON_DEFINES := -DISF -DBUILD_$(BUILD)
-CUBEROVER_PACKAGE_TOP_LEVEL=/home/cedric/CubeRoverPackage
-FPRIME_ROOT_LOC=/home/cedric/CubeRoverPackage/Apps/FlightSoftware/fprime
+CUBEROVER_PACKAGE_TOP_LEVEL=$(HOME)/CubeRoverPackage
+FPRIME_ROOT_LOC=$(HOME)/CubeRoverPackage/Apps/FlightSoftware/fprime
diff --git a/Apps/FlightSoftware/fprime/mk/configs/compiler/ti-cgt-arm.mk b/Apps/FlightSoftware/fprime/mk/configs/compiler/ti-cgt-arm.mk
index 6c131b945..56b472dbd 100644
--- a/Apps/FlightSoftware/fprime/mk/configs/compiler/ti-cgt-arm.mk
+++ b/Apps/FlightSoftware/fprime/mk/configs/compiler/ti-cgt-arm.mk
@@ -32,6 +32,7 @@ CFLAGS := -mv7R4 \
--abi=eabi \
--preproc_with_compile \
--verbose_diagnostics \
+ --little_endian \
$(CCS_CFLAGS_COMMON) \
$(CCS_CXXFLAGS_COMMON) \
-I$(BUILD_ROOT) -I$(TI_ARM_COMPILER_INCLUDE_LOC) \
diff --git a/Apps/FlightSoftware/fprime/mk/configs/modules/modules.mk b/Apps/FlightSoftware/fprime/mk/configs/modules/modules.mk
index 67199fc10..3c443c924 100644
--- a/Apps/FlightSoftware/fprime/mk/configs/modules/modules.mk
+++ b/Apps/FlightSoftware/fprime/mk/configs/modules/modules.mk
@@ -36,6 +36,9 @@ CFDP_GTEST_MODULES := \
UTILS_MODULES := \
Utils/Hash
+# XXX: Svc/BuffGndSockIf
+# XXX: Svc/UdpSender
+# XXX: Svc/UdpReceiver
SVC_MODULES := \
Svc/BufferAccumulator \
Svc/BufferLogger \
@@ -49,7 +52,6 @@ SVC_MODULES := \
Svc/Sched \
Svc/ComLogger \
Svc/SocketGndIf \
- Svc/BuffGndSockIf \
Svc/TlmChan \
Svc/PassiveTextLogger \
Svc/PassiveConsoleTextLogger \
@@ -69,9 +71,7 @@ SVC_MODULES := \
Svc/FileDownlink \
Svc/AssertFatalAdapter \
Svc/FatalHandler \
- Svc/FileManager \
- Svc/UdpSender \
- Svc/UdpReceiver
+ Svc/FileManager
DEMO_DRV_MODULES := \
Drv/DataTypes \