diff --git a/FprimeZephyrReference/ReferenceDeployment/Main.cpp b/FprimeZephyrReference/ReferenceDeployment/Main.cpp index e3148ff0..17479569 100644 --- a/FprimeZephyrReference/ReferenceDeployment/Main.cpp +++ b/FprimeZephyrReference/ReferenceDeployment/Main.cpp @@ -11,6 +11,7 @@ #include const struct device* serial = DEVICE_DT_GET(DT_NODELABEL(cdc_acm_uart0)); +const struct device* lora = DEVICE_DT_GET(DT_NODELABEL(lora0)); int main(int argc, char* argv[]) { // ** DO NOT REMOVE **// @@ -22,6 +23,7 @@ int main(int argc, char* argv[]) { Os::init(); // Object for communicating state to the topology ReferenceDeployment::TopologyState inputs; + inputs.loraDevice = lora; inputs.uartDevice = serial; inputs.baudRate = 115200; diff --git a/FprimeZephyrReference/ReferenceDeployment/Top/ReferenceDeploymentPackets.fppi b/FprimeZephyrReference/ReferenceDeployment/Top/ReferenceDeploymentPackets.fppi index 4a0e736f..d68fe7a6 100644 --- a/FprimeZephyrReference/ReferenceDeployment/Top/ReferenceDeploymentPackets.fppi +++ b/FprimeZephyrReference/ReferenceDeployment/Top/ReferenceDeploymentPackets.fppi @@ -41,6 +41,10 @@ telemetry packets ReferenceDeploymentPackets { ReferenceDeployment.lis2mdlManager.MagneticField } + packet LoRa id 7 group 4 { + lora.LastRssi + lora.LastSnr + } } omit { diff --git a/FprimeZephyrReference/ReferenceDeployment/Top/ReferenceDeploymentTopology.cpp b/FprimeZephyrReference/ReferenceDeployment/Top/ReferenceDeploymentTopology.cpp index d06583fa..5480fe30 100644 --- a/FprimeZephyrReference/ReferenceDeployment/Top/ReferenceDeploymentTopology.cpp +++ b/FprimeZephyrReference/ReferenceDeployment/Top/ReferenceDeploymentTopology.cpp @@ -82,7 +82,9 @@ void setupTopology(const TopologyState& state) { startTasks(state); // Uplink is configured for receive so a socket task is started - comDriver.configure(state.uartDevice, state.baudRate); + // We dont need UART, as we are sending coms directly to lora + // comDriver.configure(state.uartDevice, state.baudRate); + lora.start(state.loraDevice); } void startRateGroups() { diff --git a/FprimeZephyrReference/ReferenceDeployment/Top/ReferenceDeploymentTopologyDefs.hpp b/FprimeZephyrReference/ReferenceDeployment/Top/ReferenceDeploymentTopologyDefs.hpp index 3912dbb4..81064f65 100644 --- a/FprimeZephyrReference/ReferenceDeployment/Top/ReferenceDeploymentTopologyDefs.hpp +++ b/FprimeZephyrReference/ReferenceDeployment/Top/ReferenceDeploymentTopologyDefs.hpp @@ -70,6 +70,7 @@ namespace ReferenceDeployment { */ struct TopologyState { const device* uartDevice; //!< UART device path for communication + const device* loraDevice; //!< LoRa device path for communication U32 baudRate; //!< Baud rate for UART communication CdhCore::SubtopologyState cdhCore; //!< Subtopology state for CdhCore ComCcsds::SubtopologyState comCcsds; //!< Subtopology state for ComCcsds diff --git a/FprimeZephyrReference/ReferenceDeployment/Top/instances.fpp b/FprimeZephyrReference/ReferenceDeployment/Top/instances.fpp index 64925bc6..76f59bd3 100644 --- a/FprimeZephyrReference/ReferenceDeployment/Top/instances.fpp +++ b/FprimeZephyrReference/ReferenceDeployment/Top/instances.fpp @@ -75,4 +75,6 @@ module ReferenceDeployment { instance prmDb: Components.NullPrmDb base id 0x10024000 instance comDelay: Components.ComDelay base id 0x10025000 + + instance lora: Zephyr.LoRa base id 0x10026000 } diff --git a/FprimeZephyrReference/ReferenceDeployment/Top/topology.fpp b/FprimeZephyrReference/ReferenceDeployment/Top/topology.fpp index e67efb49..25915d01 100644 --- a/FprimeZephyrReference/ReferenceDeployment/Top/topology.fpp +++ b/FprimeZephyrReference/ReferenceDeployment/Top/topology.fpp @@ -24,7 +24,7 @@ module ReferenceDeployment { instance rateGroup1Hz instance rateGroupDriver instance timer - instance comDriver + instance lora instance gpioDriver instance gpioBurnwire0 instance gpioBurnwire1 @@ -73,16 +73,16 @@ module ReferenceDeployment { connections Communications { # ComDriver buffer allocations - comDriver.allocate -> ComCcsds.commsBufferManager.bufferGetCallee - comDriver.deallocate -> ComCcsds.commsBufferManager.bufferSendIn + # comDriver.allocate -> ComCcsds.commsBufferManager.bufferGetCallee + # comDriver.deallocate -> ComCcsds.commsBufferManager.bufferSendIn - # ComDriver <-> ComStub (Uplink) - comDriver.$recv -> ComCcsds.comStub.drvReceiveIn - ComCcsds.comStub.drvReceiveReturnOut -> comDriver.recvReturnIn + # # ComDriver <-> ComStub (Uplink) + # comDriver.$recv -> ComCcsds.comStub.drvReceiveIn + # ComCcsds.comStub.drvReceiveReturnOut -> comDriver.recvReturnIn - # ComStub <-> ComDriver (Downlink) - ComCcsds.comStub.drvSendOut -> comDriver.$send - comDriver.ready -> ComCcsds.comStub.drvConnected + # # ComStub <-> ComDriver (Downlink) + # ComCcsds.comStub.drvSendOut -> comDriver.$send + # comDriver.ready -> ComCcsds.comStub.drvConnected } connections RateGroups { @@ -91,7 +91,6 @@ module ReferenceDeployment { # High rate (10Hz) rate group rateGroupDriver.CycleOut[Ports_RateGroups.rateGroup10Hz] -> rateGroup10Hz.CycleIn - rateGroup10Hz.RateGroupMemberOut[0] -> comDriver.schedIn # Slow rate (1Hz) rate group rateGroupDriver.CycleOut[Ports_RateGroups.rateGroup1Hz] -> rateGroup1Hz.CycleIn diff --git a/FprimeZephyrReference/project/config/CMakeLists.txt b/FprimeZephyrReference/project/config/CMakeLists.txt index 15360ffd..29a93297 100644 --- a/FprimeZephyrReference/project/config/CMakeLists.txt +++ b/FprimeZephyrReference/project/config/CMakeLists.txt @@ -10,6 +10,7 @@ register_fprime_config( "${CMAKE_CURRENT_LIST_DIR}/CdhCoreFatalHandlerConfig.fpp" "${CMAKE_CURRENT_LIST_DIR}/ComCcsdsConfig.fpp" "${CMAKE_CURRENT_LIST_DIR}/CommandDispatcherImplCfg.hpp" + "${CMAKE_CURRENT_LIST_DIR}/LoRaCfg.hpp" "${CMAKE_CURRENT_LIST_DIR}/FpConfig.h" "${CMAKE_CURRENT_LIST_DIR}/TlmPacketizerCfg.hpp" INTERFACE diff --git a/FprimeZephyrReference/project/config/FpConfig.h b/FprimeZephyrReference/project/config/FpConfig.h index 3adfa68c..8c2c6f3a 100644 --- a/FprimeZephyrReference/project/config/FpConfig.h +++ b/FprimeZephyrReference/project/config/FpConfig.h @@ -327,6 +327,10 @@ extern "C" { #define FW_FILE_CHUNK_SIZE 512 //!< Chunk size for working with files in the OSAL layer #endif +#ifndef FW_ASSERT_COUNT_MAX +#define FW_ASSERT_COUNT_MAX 4 +#endif + // *** NOTE configuration checks are in Fw/Cfg/ConfigCheck.cpp in order to have // the type definitions in Fw/Types/BasicTypes available. #ifdef __cplusplus diff --git a/FprimeZephyrReference/project/config/LoRaCfg.hpp b/FprimeZephyrReference/project/config/LoRaCfg.hpp new file mode 100644 index 00000000..0de46af3 --- /dev/null +++ b/FprimeZephyrReference/project/config/LoRaCfg.hpp @@ -0,0 +1,12 @@ +#ifndef LORA_CFG_HPP +#define LORA_CFG_HPP +#include +#include +namespace LoRaConfig { +const U32 FREQUENCY = 437400000; //!< LoRa frequency in Hz +lora_signal_bandwidth BANDWIDTH = BW_125_KHZ; //!< LoRa bandwidth +const I8 TX_POWER = 14; //!< LoRa transmission power in dBm +const U16 PREAMBLE_LENGTH = 8; //!< LoRa preamble length +U8 HEADER[] = {0, 0, 0, 0}; //!< LoRa header (not used) +} // namespace LoRaConfig +#endif // LORA_CFG_HPP diff --git a/FprimeZephyrReference/project/config/TlmPacketizerCfg.hpp b/FprimeZephyrReference/project/config/TlmPacketizerCfg.hpp index 96f20246..3b99c34e 100644 --- a/FprimeZephyrReference/project/config/TlmPacketizerCfg.hpp +++ b/FprimeZephyrReference/project/config/TlmPacketizerCfg.hpp @@ -16,7 +16,7 @@ #include namespace Svc { -static const FwChanIdType MAX_PACKETIZER_PACKETS = 6; +static const FwChanIdType MAX_PACKETIZER_PACKETS = 7; static const FwChanIdType TLMPACKETIZER_NUM_TLM_HASH_SLOTS = 15; // !< Number of slots in the hash table. // Works best when set to about twice the number of components producing telemetry diff --git a/lib/fprime b/lib/fprime index abb09e4a..e21fa7b1 160000 --- a/lib/fprime +++ b/lib/fprime @@ -1 +1 @@ -Subproject commit abb09e4a681cd586ac719a7517430637cdc46199 +Subproject commit e21fa7b10973cafc8b19ac9e5fda5975e3593f45 diff --git a/lib/fprime-zephyr b/lib/fprime-zephyr index 4a149bbe..931354e2 160000 --- a/lib/fprime-zephyr +++ b/lib/fprime-zephyr @@ -1 +1 @@ -Subproject commit 4a149bbed5c7c86fbac44ab8a65791eff97370f9 +Subproject commit 931354e26e39cb711f846e1ca8bb1337ede83b7c