* Modified the fprime-fpp version for fpp branch
* Fixes for missing includes
* Removed include from Fw/FPrimeBasicTypes.hpp and modified fprime-fpp version
* Fixed files that failed to include cstring header
* Changed string.h to cstring in BufferRepeater.cpp
* Updated formatting in ActivePhaser.cpp & BufferManagerComponentImpl.cpp
* Fixed formatting in FpySequencerStack.cpp & FpySequencerDirectives.cpp
* Update Spi component to return a status on device access
* Format LinuxSpiDriver files and update comments from TODO to DEPRECATED
* Add assertions to LinuxSpiDriver
* Add assertions to LinuxSpiDriver
---------
Co-authored-by: djbyrne <djbyrne@jpl.nasa.gov>
* Set the Name of Fprime Tasks on Linux
* prefix thread name w/ process name
* Revert "prefix thread name w/ process name"
This reverts commit 5867602f135c69022469c985b6de13458686e6a2.
* Add `setname` to spelling expected list
* Format My Changes
* Add in opt-out configuration
* Enable POSIX_THREADS_ENABLE_NAMES and fix ut
* Remove warning when flag set off
* UT thread names
* Add tmate session setup to build workflow
* Disable thread names on Ip UTs
* Use random thread ids in UTs
* Fix race condition
* Fix improper string set
---------
Co-authored-by: M Starch <LeStarch@googlemail.com>
Co-authored-by: Michael D Starch <Michael.D.Starch@jpl.nasa.gov>
* Add clang-tidy to requirement.txt, and update Unit Test guideline
* Leave out of requirements until rPI is supported or avoided
* Fix spelling of macOS
---------
Co-authored-by: djbyrne <djbyrne@jpl.nasa.gov>
* Add new Fw::StringBase type StaticString for strings backed my immutable literals
* Spellcheck fix
* Add disclaimer comment about use of StaticString
* Refactor the StringBase interface into an immutable ConstStringBase abstract base class and the now mutable StringBase class
* Rename StaticString to ConstExternalString and inherit from ConstStringBase
* Fix typo
* Change references from StringBase to ConstStringBase where applicable
* Updates following review meeting: add missing deserialize function and add new error status, move length function implementation into ConstStringBase so it is not pure virtual
* Clang format fix
* Additional clang-format fixes
* Fix the copy-assignment operator for StringBase not being correctly evaluated
* Clang format fix
* Explicitly delete the Serializable assignment operator and provide a skeleton implementation for RawTimeInterface to appease the compiler
* Revert "Explicitly delete the Serializable assignment operator and provide a skeleton implementation for RawTimeInterface to appease the compiler"
This reverts commit 086d7bcd3ca9c4f6e553d7fc34d0d126a69a165b.
* Move ConstStringBase to separate hpp/cpp files, plus other pull request feedback
* Clang format fix
* Update length implementation for ConstStringBase and ConstExternalString
* Improved asserts in ConstExternalString constructor
Co-authored-by: Rob Bocchino <bocchino@icloud.com>
* Fixed ConstStringBase length implementation
Co-authored-by: Rob Bocchino <bocchino@icloud.com>
* Clang format fix
* Add some UTs for ConstExternalString, fix non-overridden interfaces, and fix ConstStringBase::maxLength asserting for zero capacity strings
* Spell-check fix for ConstExternalString UTs
* Revise length implementation in ConstStringBase
If the capacity is zero, return zero
* Format
---------
Co-authored-by: Ian Brault <ian.r.brault@jpl.nasa.gov>
Co-authored-by: Rob Bocchino <bocchino@icloud.com>
Co-authored-by: Rob Bocchino <bocchino@jpl.nasa.gov>
Co-authored-by: M Starch <LeStarch@googlemail.com>
* Created new SerialBufferBase as a parent of SerializeBufferBase. Renaming interface functions to be less confusing.
* Deprecating copyRawOffset. No direct use-cases in F' core.
* Make SerialBufferBase a true pure virtual interface.
* Changing Serializable to work with SerialBufferBase parent interface.
* Changing copyRaw and copyRawOffset to work with SerialBufferBase
* Updating documentation for SerialBufferBase usage
* Adding some documentation. Adding missing ASSERT in copyRaw. Fixing some bugs that new ASSERT uncovered.
* Renaming SerializeBufferBase to LinearBufferBase. Add a using declaration to maintain backwards compatability. Properly mark LinearBufferBase functions as override.
* Filling in the rest of the docstrings for the classes in Serializable
* Removing redundant virtual keyword on override function
* Applying clang formatting
* Incorporating PR comments
* Fix compile issues
* Bump version to alpha
* Format
* v
---------
Co-authored-by: M Starch <LeStarch@googlemail.com>
* Update directives documentation with requirements
Added requirements for various directives and updated documentation.
* Refine sequencer requirements for clarity
* sp, missing exit requirement
* Update requirement references in directives.md
* Adding missing stack results as N/A
* Update requirements and descriptions in directives.md
Updated requirements for various directives and clarified descriptions. Removed unused directives and added TODOs for further specification.
* Update sequencer requirements in sdd.md
* Add in 2's complement notes.
Updated integer operations to use unsigned 64-bit integers and clarified handling of integers with 2's complement representation.
* Update documentation with 2's complement caution
Added caution note about 2's complement representation requirement.
* sp
* fix(.clang-tidy): `Checks` is supposed to be a comma separated list of checks
* fix clang-tidy warning
* fix a few lint warnings
* run clang-format
* more format
* Add guide for developing device drivers in F Prime
* Add develop-device-driver.md
* Update device driver docs
* small fixes
* Polish things up
* more polishing
* spelling and link fixes
* Address review comments
* Document sequencer requirements and directives
Added detailed requirements for the sequencer, including support for various directives and operations.
* Reorganize sequencer requirements in documentation
* Adjust task priorities to fit in supported platforms' priority ranges
Darwin's task priority range is most restrictive (15-47); adjusted priorities
to reside within that range.
* Add comment clarifying TASK_PRIORITY_DEFAULT and TASK_DEFAULT
* Adjust relative task priorities for uplink and downlink
This moves uplink tasks to higher priority than downlink tasks and places
consumer tasks at higher priority than producer tasks.
* Add alignment to memory allocator
* Fix undefined reference
* Fix enum type comparison
* Switch to enum class
* format
* Fix time
* Update Fw/Types/MallocAllocator.hpp
Co-authored-by: Thomas Boyer-Chammard <49786685+thomas-bc@users.noreply.github.com>
* Update Fw/Types/MmapAllocator.hpp
Co-authored-by: Thomas Boyer-Chammard <49786685+thomas-bc@users.noreply.github.com>
---------
Co-authored-by: Thomas Boyer-Chammard <49786685+thomas-bc@users.noreply.github.com>
* Update contribution guidelines for clarity and process
Clarified the process for submitting pull requests and emphasized the importance of opening an issue first. Updated the note about F´ Autocoder Python and its replacement by FPP.
* Fix typo and reorganize CONTRIBUTING.md structure
Corrected a typo in the Code Contribution Process section and reorganized the structure of the CONTRIBUTING.md file for clarity.
* Update CONTRIBUTING.md
Co-authored-by: Thomas Boyer-Chammard <49786685+thomas-bc@users.noreply.github.com>
---------
Co-authored-by: Thomas Boyer-Chammard <49786685+thomas-bc@users.noreply.github.com>
* Much work on set flags
* Little more work on flags
* Get UTs passing
* Defaults for flags
* Add uts for set flag
* Switch from bitfield to boolean array
* fix ut
* more work on flag system
* Add some uts
* Add getflag dir
* format
* Update docs
* sp
* Remove update on change from bool tlm
* pr feedback
---------
Co-authored-by: Zimri Leisher <zimri.leisher@fireflyspace.com>
* Save point for PRM_SET_FILE work, add basic infrastruture
* fprime-format
* Create prime and backup DB, initial implementation of file based set, some UT updates
* More work on Prime and Backup DBs including helper methods, utilizing those for copy, and UTs
* spelling
* printf in Tester fix
* printf in Tester fix
* printf in Tester fix
* Remove a debug printf, update new method args, additional offNom Set File tests
* Spelling and format
* Clean up comments
* Sync with upstream devel updates
* Add additional UT for reverting parameter db on set file failure
* Spelling and format
* Updates to PrmDb after first review; change to active/staging design
* Spelling
* Remove FIXME comment
* Review fixes
* Fix UT
* Format
* Format II
* Format III
---------
Co-authored-by: M Starch <LeStarch@googlemail.com>
* Mark SwAssert declarations as noinline
Without this change, a compiler using LTO may inline the zeros that are
inserted as additional parameters for the call to defaultSwAssert. This
increases code size to optimize for the off-nominal condition where an
assertion is tripped.
In my testing, this single change reduces my largest deployment's
code size by 11%.
* Add 'noinline' to dictionary
* Update Fw/Types/Assert.hpp
Co-authored-by: Rob Bocchino <bocchino@icloud.com>
---------
Co-authored-by: M Starch <LeStarch@googlemail.com>
Co-authored-by: Rob Bocchino <bocchino@icloud.com>
* Passing the Default BIG Arg to Serialize Functions
* Fails on Ac Files
* Compiles w/ little endian autocode
* Unit Tests Pass
* Little Endian deserializeTo & Unit Test Little Endian SerDes
* Add little-endian SerDes examples to docs
* Add & Respect Endianness for Array Lengths & Remove unneeded Fw:: Prefix
* Switch to enum class Endianness
* Fixes for enum class Endianness
* Run code formatter
* Bump fpp to v3.1.0a4
* Update Fw/Time/Time.hpp
* Update Fw/Time/Time.hpp
---------
Co-authored-by: Rob Bocchino <bocchino@jpl.nasa.gov>
Co-authored-by: M Starch <LeStarch@googlemail.com>
* Remove debug prefix from breakpoint commands, start working on line by line step
* Actually add teh step cmd, some uts, update docs
* Fix step ut
* Split up tlm chans, add more for breakpoint stuff
* format
* Remove update on change from bool telemetry channels
* Make GenericHub EXCLUDE_FROM_ALL
* Add a build stage for Svc_GenericHub
CppCheck requires every target to be built.
* sp
---------
Co-authored-by: Thomas Boyer-Chammard <49786685+thomas-bc@users.noreply.github.com>
* Initial fix for CWE-453-CmdBufferAssert
* Added EVR throttle; updated ut
* Updated unit tests
* Updated UT to check for TLM update
* Implemented finding from pull request
* Removed Test Directory
* Update model and SDD
* Move telemetry to rate group to prevent flood
* Fix Ref topology
* Format
* sp
---------
Co-authored-by: bitWarrior <bitWarrior@protonmail.com>
Co-authored-by: M Starch <LeStarch@googlemail.com>
* Move dequeued ComBuffer to persistent memory
* Add ordering notes to com interface docs
* Add buffer ownership tracking
* Assert dequeue status for serialized buffer
Added status check for dequeue operation to ensure successful serialization.
* Fix static_assert -> static_cast
* Fix format
* update seq_gen to match PR 4079
* comment-out check specific number of events. re-run multi without cause error
* fixed format
* change warn_hi to greater_or_equal_to 1 and put back 2 extra AppendFile
---------
Co-authored-by: Cindy T Huynh <chuynh@jpl.nasa.gov>
Co-authored-by: M Starch <LeStarch@googlemail.com>
* Initial addition of dedicated reconnect task in SocketComponentHelper
* Updates to fix UT errors, address FIXMEs, update comments
* Additional FIXMEs and doc updates
* Spelling fix
* Format
* Format and some delay updates
* Address second request FIXMEs (remove)
* Unconditional stop & join in UDP tester cleanup
* Address FIXMEs and update Task to init singleton in a thread and address sanitizer safe manner
* Spelling
* Address PR review comments
* Mark legacy serialize and deserialize functions as deprecated. Clean up of remaining legacy references.
* Upgrading serialization in FppTestProject and Ref
* Fixed formatting issues
* Make APID same width as FwPacketDescriptorType
* Rename ComCfg.APID to ComCfg.Apid
* Fix FprimeDeframer UTs
* FpySequencer stack based architecture (#3975)
* Some work towards stack based arch
* Bring fp/int conv up to date
* Get compiling with stack based arch
* Start trying to fix UTs
* Start adding store/load dirs
* Add push val dir
* UTs are running
* UTs passing
* Make exit stack based
* Fix more uts
* Fix final UTs
* sp
* Fix overflow potential err
* Fix another overflow
* same error fix
* Update sdd
* sp
* Fix undefined behavior with bitshift of signed integer
* sp
---------
Co-authored-by: Zimri Leisher <zimri.leisher@fireflyspace.com>
* Fix AI Policy link in PR template (#4019)
* Update NOTICE.txt references (#4045)
With the removal of the Autocoders directory, we also remove the pyparsestring usage.
* Reformat FppTest (#4048)
* Update Drv IP stack to use FwSizeType instead of U32 (#4013)
* Update IP stack source to use SizeType instead of I/U32
* Update UTs reflecting U32/I32 change to SizeType
* Static cast sizes per review
* Fix commented out thing
* Basic data structure library, phase 1 (#3927)
* Revise SDD for SetBase
* Revise SDD for SetBase
* Revise SDD for Fw/DataStructures
* Revise SDD for FifoQueue
* Revise SDD for Fw/DataStructures
* Revise SDD for MapBase
* Revise SDD for StackBase
* Revise SDD for Fw/DataStructures
* Revise SDD for Fw/DataStructures
* Add StackBase.hpp
* Add ExternalStack.hpp
* Add Stack.hpp
* Add ExternalStackTest
* Revise Stack tests
* Revise ExternalStack
* Revise ExternalStackTest
* Revise ExternalStackTest
* Revise ExternalStackTest
* Revise ExternalStackTest
* Add StackTest
* Revise SDD for Fw/DataStructures
* Revise SDD for Fw/DataStructures
* Revise SDD for Fw/DataStructures
* Add MapIterator
* Add SetIterator
* Add SetOrMapIterator
* Add MapBase.hpp
* Revise SDD for Fw/DataStructures
* Revise SDD for ArraySetOrMapImpl
* Revise SDD for ArraySetOrMapImpl
* Revise SDD for ExternalArray
* Revise SDD for Fw/DataStructures
* Revise SDD for Fw/DataStructures
* Revise MapBase
* Revise MapBase
* Revise comments
* Revise SDD for ArraySetOrMapImpl
* Revise Fw/DataStructures
* Add ArraySetOrMapImpl
* Add ExternalArrayMap
* Revise ExternalArrayMap
* Revise Fw/DataStructures
* Revise SetBase
* Revise SDD for Fw/DataStructures
* Revise SDD for ExternalArraySet
* Revise SDD for ExternalArraySet
* Revise SDD for ArraySetOrMapImpl
* Revise Fw/DataStructures
* Revise SDD for Fw/DataStructures
* Revise Fw/DataStructures tests
* Revise unit tests for Fw/DataStructures
* Revise tests for ArraySetOrMapImpl
* Revise unit tests for Fw/DataStructures
* Revise unit tests for Fw/DataStructures
* Revise unit tests for ArraySetOrMapImpl
* Revise unit tests for ArraySetOrMapImpl
* Revise unit tests for ArraySetOrMapImpl
* Revise unit tests for ArraySetOrMapImpl
* Revise unit tests for ArraySetOrMapImpl
* Revise unit tests for ArraySetOrMapImpl
* Revise unit tests for Fw/DataStructures
* Revise SDD for SetOrMapIterator
* Add ExternalArrayMapTest
* Revise ExternalArrayMapTest
* Revise design for sets and maps
* Revert changes to design
* Revise unit tests for Fw/DataStructures
* Revise unit tests for Fw/DataStructures
* Revise ExternalArrayMapTest
* Revise ExternalArrayMapTest
* Revise unit tests for ArraySetOrMapImpl
* Revise ExternalArrayMapTest
* Revise ExternalArrayMapTest and MapTest
* Revise MapTestScenarios
* Revise ExternalArrayMapTest
* Revise ExternalArrayMapTest
* Revise ExternalArrayMapTest
* Revise array set and map
Remove at function from interface.
It breaks the array or set abstraction.
It provides little value, since one can use the iterator
provided by SetBase or MapBase to range over the elements.
* Revise ExternalArrayMapTest
* Add ExternalArraySetTest
* Revise ExternalArraySet and ExternalArrayMap
* Revise ExternalArraySetTest
* Revise ExternalArraySetTest
* Revise ExternalArraySetTest
* Revise ExternalArraySetTest
* Revise ExternalArraySetTest
* Revise ExternalArraySetTest
* Revise ExternalArraySetTest and ExternalArrayMapTest
* Revise ArraySetOrMapImplTest
* Revise ExternalArrayMapTest
* Revise ExternalArraySetTest
* Revise SDD for ArrayMap
* Revise SDD for ArraySet
* Revise SDD for ArraySet
* Add ArrayMap
* Revise ArrayMapTest
* Revise Fw/DataStructures
* Revise SDDs for ArrayMap and ArraySet
* Revise Fw/DataStructures
* Refactor map test scenarios
* Refactor data structures tests
* Refactor SetTestScenarios
* Refactor FifoQueueTestScenarios
* Refactor ExternalFifoQueueTest
* Revise Fifo Queue tests
* Refactor ExternalFifoQueueTest
* Revise comments
* Revise Stack tests
* Revise Stack tests
* Refactor Stack tests
* Revise Stack tests
* Revise Array
Remove getStaticSize
* Refactor Fifo tests
* Refactor ArraySetOrMapImplTest
* Revise data structures design
Rename Iterator to Entry
* Revise data structures implementation
Rename Iterator to Entry
* Revise data structures impl and test
Rename Iterator to Entry throughout
* Revise data structures implementation
Rename SetOrMapEntry to SetOrMapImplEntry
* Revise data structure implementation
Rename Entry to ImplEntry
* Revise data structures design
Rename symbols to match implementation
* Revise design for data structures
Add ConstIterator to Map
* Revise ArraySetOrMapImpl
Add ConstIterator
* Add iterators to DS implementation
* Revise map iteration
* Revise unit tests
Use iterators for maps
* Revise iterators
* Revise iterators
* Rename MapEntry to MapConstEntry
* Revise map interface
* Rename SetOrMapImplEntry to SetOrMapImplConstEntry
* Revert "Rename SetOrMapImplEntry to SetOrMapImplConstEntry"
This reverts commit cc6371d03c8f65fa130212d589812cf4ab3714fe.
* Rename SetEntry to SetConstEntry
* Add SetConstIterator
* Revise SetBase and unit tests
Use iterators
* Revise set interface
* Revise comments
* Reformat code
* Revise array set and map impl
Remove forward links
* Revise data structures tests
* Revise Set iterator
* Remove SetConstEntry
* Refactor SetOrMapImplEntry
* Pull in changes from rb-tree branch
* Revise MapBase
* Revise MapBase and docs
* Revise MapBase
* Revise MapBase
* Revise iterators
* Revise MapConstIterator docs
* Rename MapConstEntry to MapEntry
* Revise MapEntry
* Fix MapBase docs
* Revise MapConstIterator
* Revise MapEntry
* Revise MapConstIterator docs
* Revise docs for ExternalArrayMap
* Revise ArrayMap docs
* Revise ArraySetOrMapImpl
* Revise SetOrMapImplEntry
* Revise MapEntry
* Revise map and set interfaces
* Revert changes to map interface
* Rename MapEntry to MapEntryBase
* Revise type aliases
* Reformat code
* Revise SetBase
* Revise map interface
* Revise set and map interface
* Revise ExternalArraySet docs
* Revise ArraySet
* Revise ArraySet docs
* Revise SetConstIterator
* Revise SetBase
* Revise SetBase docs
* Revise SetBase
* Revise ArraySet
* Revise ArraySet docs
* Revise ExternalArraySet docs
* Add SetOrMapImplEntry
* Revise ArraySetOrMapImpl
* Revise Fw/DataStructures
Reformat code
* Revise Fw/DataStructures
Fix compile errors on Linux
* Revise Fw/DataStructures
Fix compile errors on Linux
* Revise Fw/DataStructures
Fix compile errors on Linux
* Revise Fw/DataStructures
Fix compile errors on Linux
* Fix comments
* Revise Fw/DataStructures
Fix compile errors on Linux
* Revise ArrayMap docs
* Remove helper scripts
* Revise tests for Fw/DataStructures
* Fix spelling
* Fix Markdown link
* Fix uninitialized variable in test
* Fix uninitialized variable in test
* Fix "spelling"
Why is the spelling check enforcing arbitrary rules of style?
* Fix comments
* Revise tests for ArraySetOrMapImpl
* Revise comment
* Revise ArraySetOrMap impl
* Revise formatting
* Revise docs
* Revise docs for Fw/DataStructures
* Revise Array and ExternalArray
Add static assertions
* Revise FifoQueue and Stack
Add static assertions
* Revise ArraySet and ArrayMap
Add static assertions
* Revise ArrayMap tests
* Revise ExternalArraySet tests
* Refactor ArraySetTest
* Revise array initialization
* Revise comments
* Revise Array initialization
* Revise Array design and implementation
* Revert changes to Fw/DataStructures
* Revise Array
* Revise Array
* Revise Array
* Fix formatting
* Add SizedContainer base class
* Revise StackBase
Make it inherit from SizedContainer
Revise stack tests
* Revise MapBase
Make it inherit from SizedContainer
Revise tests
* Revise SetBase
Make it inherit from SizedContainer
Revise tests
* Revise DataStructures design
Add SizedContainer
* Revise SDD for DataStructures
* Revise DataStructures design
* Revise DataStructures design
* Revise DataStructures design
* Revise DataStructures design
* Fix spelling
* Revise zero-arg constructor for Array
* Revise Array interface
Make it consistent with the arrays generated by FPP
* Fix to assertion
* FpySequencer arithmetic (#4025)
* Some work towards stack based arch
* Bring fp/int conv up to date
* Get compiling with stack based arch
* Start trying to fix UTs
* Start adding store/load dirs
* Add push val dir
* UTs are running
* UTs passing
* Make exit stack based
* Fix more uts
* Fix final UTs
* sp
* Fix overflow potential err
* Fix another overflow
* same error fix
* Format
* Also add to format checker
* Add math directives
* Add integer extension and truncation
* Also check correct size on stack
* Fix comment
* Push cmd response to stack
* Cast cmd response code to i32
* Add stack cmd, memcmp, discard dirs
* Fix some bugs with stack cmd
* Fix lil bug in sgtack cmd
* same bug
* Fix another bug sry
* Update sdd
* sp
* Fix undefined behavior with bitshift of signed integer
* sp
* Fix lil bug in timeout detection of stack cmd
* Switch format check to do all Svc dirs
* Reformat, and fix packet descriptor serialize bug
* Add UTs for all of arith ops
* Add tests for disc, memcmp, stack cmd
* Add deser tests for those three dirs
* sp
* Format
* Replace magic numbers with sizeofs
* Add currentStatementIdx helper function
* Format
* Split imod into smod and umod
* sp
* Add fmod, copy python behavior for fmod and smod
---------
Co-authored-by: Zimri Leisher <zimri.leisher@fireflyspace.com>
* Update supported platforms (#4071)
* improved step to contribute back
* added delivery date for targeted platforms
* added tbd since we are not sure at the moment
* fixed column data
* updating list of supported targets. This reflects how F Prime runs on these hardware with zephyr.
* alphabetized list and added link for freertos
* fix spelling
* rename Apple M* to Apple Silicon
---------
Co-authored-by: Thomas Boyer-Chammard <49786685+thomas-bc@users.noreply.github.com>
* Add ground derived channels how-to guide (#4074)
* Initial derived channel work
* Write ground-derived channels
* Update plugin handler
* Updating publishChannel case
Updated method name to follow naming conventions.
* Fix method name to use snake_case in documentation
* Add environment setup to CONTRIBUTING.md (#4078)
* Fix typo `cp` to `cd` in CONTRIBUTING.md
* Mention Python venv requirements for running tests
* Add logic for assert failure short circuiting in `AssertFatalAdapter` (#4042)
* Add logic for assertion short circuiting
- Add guard logic to AssertFatalAdapter to prevent a cascading FW_ASSERT chain from occurring
- If any assert checks fail while handling an in-progress assert check failure, reportAssert will log the
additional assert and execute the system-specific assert handler before returning
* Update assert guard logic to counter based
- Instead of using a bool guard to determine when to off-ramp from a series of FW_ASSERT check failures,
use a counter that is configurable in a program's FpConfig.h file
---------
Co-authored-by: M Starch <LeStarch@googlemail.com>
* Add subtopology documentation (#4072)
* Add subtopology guide
* fix typo and how-to
* Add reference link
* Add event ID filters to text logger components (#4028)
* Add event ID filter to PassiveConsoleTextLogger
* Add event ID filter to ActiveTextLogger
* Add const qualifier to filtered event list pointers
* Fix assert argument types
* Fix clang format errors
* Fix copy-paste error on include file
Co-authored-by: Thomas Boyer-Chammard <49786685+thomas-bc@users.noreply.github.com>
* Add missing initialization to ActiveTextLogger constructor
---------
Co-authored-by: Ian Brault <ian.r.brault@jpl.nasa.gov>
Co-authored-by: Thomas Boyer-Chammard <49786685+thomas-bc@users.noreply.github.com>
Co-authored-by: M Starch <LeStarch@googlemail.com>
* Bump GDS to v4.0.2a3 (#4079)
* Bump to v4.0.2a2 (GDS)
* Fix integration tests
* Fix requirements.txt
* Allow FPP arrays of arbitrary size (#4073)
* Revise array tests
Update constructor calls to conform to new code gen
Format the code
* Reformat FppTest
* Revise requirements.txt
* Update requirements.txt
* Update fpp version
* Revise Ref to conform to FPP changes
* Remove trailing spaces
---------
Co-authored-by: Thomas Boyer-Chammard <49786685+thomas-bc@users.noreply.github.com>
* Update project structure in cookiecutters CI (#3991)
* Update project structure
* Fix sourcing path
* fix paths
---------
Co-authored-by: Thomas Boyer-Chammard <49786685+thomas-bc@users.noreply.github.com>
* Fix#3397 (#4086)
* Add test driven development how-to (#4090)
* Add test driven development how-to
* sp; review
* Add reusable InT test scripts (#3923)
* add deployment function
* update file to use config json file
* remove unuse function
* fix typos
* fixed spelling
* update to use get_mnemonic
* rm shellcmd from fileManager and add health & systemResources testcase
* check memory usage and number of CPUs
* remove Ref.PingReceiver and fixed typos
* fixed spelling fileDownlink,health,systemResources and add config.json file
* Update config.json
* replace ActiveLogger to EventManager
* Updated config.json use lowercase CdhCore and FileHandling(fileDownlink,fileManager,prmDb) and ComCcsds(cmdSeq) etc
* update test_cmd_version to compare version of telemetry channel vs. evr version
* extend max_delay to work with Raspberry pi
* rename config.json to int_config.json
* delete Ref/config.json new file name int_config.json
* add time.sleep between AppendFile cmd to work with rasberry Pi
* fix int_config.json and add new Int DpMgr, DpWriter and DpCatalog
* add comments to confirm /tmp/1MiB.txt and /tmp/test_seq.seq exist before execute script
* add send uplink files
* Rename config.json, fix spelling
* python formatting
---------
Co-authored-by: Cindy T Huynh <chuynh@jpl.nasa.gov>
Co-authored-by: M Starch <LeStarch@googlemail.com>
Co-authored-by: Thomas Boyer-Chammard <49786685+thomas-bc@users.noreply.github.com>
Co-authored-by: Kevin F. Ortega <kevin.f.ortega@jpl.nasa.gov>
* Modify LinuxTimer interface for consistency (#4087)
* Use Fw::TimeInterval in LinuxTimer
* Fix Linux FD typo
* Fix interval timer UT
* Format
* Fix assert casts
* Fix ComLogger UTs
* Fix FppTest microseconds
* Fix casting
* Fix overflow
* FpySequencer U32 stack size + some error telemetry (#4065)
* Switch everything that references stack size or offset to U32
* Add dir err tlm
* Rename tlm point to be consistent
* Update state tlm type to enumstoretype
* Make new Fpy::StackSizeType alias
* Add explanation for why we chose U32
* Fix one more static cast
* Bump schema vers to 2
---------
Co-authored-by: Zimri Leisher <zimri.leisher@fireflyspace.com>
* Add Framing subtopologies and use them within Com subtopologies (#4113)
* Update ComX subtopologies to not include ComStub and update Ref
* Cosmetic updates
* Working FramingCcsds subtopology used in ComCcsds
* Revert Ref to use ComCcsds
* Move FramingSubtopology into ComCcsds build module
* Working ComFprime subtopology
* Cosmetic updates
* formatting
* Incorporate student feedback for ground derived channels (#4117)
* Update fprime-gds version to 4.0.2a4 (#4118)
* Revise subtopology development documentation (#4119)
* Revise subtopology development documentation
* Document subtopology configuration process
Added detailed instructions for configuring subtopologies, including module setup and CMake integration.
* Enhance documentation on subtopology structure
Added recommendations for including documentation and optional files in subtopology.
* fix spelling
* fix spelling v2 final
---------
Co-authored-by: Thomas Boyer-Chammard <49786685+thomas-bc@users.noreply.github.com>
* Add SDD for ComCcsds subtopology (#4128)
* Create SDD for ComCcsds subtopology
* Update Svc/Subtopologies/ComCcsds/docs/sdd.md
Co-authored-by: Thomas Boyer-Chammard <49786685+thomas-bc@users.noreply.github.com>
* Update Svc/Subtopologies/ComCcsds/docs/sdd.md
Co-authored-by: Thomas Boyer-Chammard <49786685+thomas-bc@users.noreply.github.com>
* Update Svc/Subtopologies/ComCcsds/docs/sdd.md
Co-authored-by: Thomas Boyer-Chammard <49786685+thomas-bc@users.noreply.github.com>
* Revise CCSDS subtopology entries and limitations
Updated descriptions for CCSDS subtopologies and clarified limitations.
---------
Co-authored-by: Thomas Boyer-Chammard <49786685+thomas-bc@users.noreply.github.com>
* Create SDD for CdhCore subtopology (#4121)
* Create SDD for CdhCore subtopology
Added a comprehensive Software Design Document (SDD) for the CdhCore subtopology, detailing requirements, design, usage, configuration, and traceability.
* sp
* Update SDD with review feedback
Added section for rate-group connection points and updated instance requirements.
* Feedback updates on common port patters, health, and worker (#4115)
* Feedback updates on common port patters, health, and worker
* Fix typos and improve clarity in documentation
* Fix typo in health-checking documentation - pt 2
Corrected a typo in the description of Svc.Health regarding configurable timeouts.
* Fix typo in manager-worker documentation - pt 3
* Fix formatting in health-checking documentation
* Add Software Design Document for FileHandling subtopology (#4125)
* Add FPP state machine How-To (#4096)
* Add FPP state machine How-To
* Fix state definitions in state diagram for newlines
* sp
Clarified wording regarding state transitions in the documentation.
* Missing `.`
Co-authored-by: Rob Bocchino <bocchino@icloud.com>
* Review updates
* Update links in define-state-machines.md
* sp
---------
Co-authored-by: Rob Bocchino <bocchino@icloud.com>
* Add Software Design Document for ComFprime subtopology (#4127)
* Add Software Design Document for ComFprime subtopology
* sp
* fix spelling and same feedback as ComCcsds
* Update instance summary in sdd.md documentation
---------
Co-authored-by: Thomas Boyer-Chammard <49786685+thomas-bc@users.noreply.github.com>
* Add file size and subdirectory support to FileManager directory listing feature (#4041)
* Enhancement: Added file size and subdirectory support to FileManager directory listing feature
* Refactor to directory listing feature using rategroup 2 component
* Spelling fixes to expect.txt, config feilds for schedin call, fixes on comments/types
* Fix for spellcheck
* Replace fixed size with FileNameStringSize for commands
* Fix minor nits
* Formatting
* Remove fileManager instance, use FileHandling.fileManager
* Fix review feedback
---------
Co-authored-by: M Starch <LeStarch@googlemail.com>
* Revise Communication Adapter Interface documentation (#4133)
Updated reference to the Communication Adapter Interface in the documentation to reflect changes in the interface file names and added usage instructions.
* Add ActivePhaser to Svc (#3974)
* Initial open source review of active phaser
* Start working on ActivePhaser's FPP model
* Add ActivePhaser implementation
* Start working on unit tests
* Fill in test logic
* Add comments
* Guard against writing outside of container
* Add comment
* Update comments
* Fix comment on overflow
* Comment on the use of actual_start and others
* Add comments and max connection count
* Add comments
* Phaser updates
* Add telemetry channels
* Update comments, fix FPP, update API calls in tester
* Apply formatter
* Minor comment change
* Fix spelling
* First draft of SDD
* Revert "Add telemetry channels"
This reverts commit 1690e51e125477d032e07fa8cd3882d6db2b8b3b.
* PRIVATE -> private
* Add friend class declaration for ActivePhaserTester
* Fix FIXMEs where possible
* Formatting
* Fix minor UT issues
* Remove (void)
---------
Co-authored-by: ZIIIKT <shaokail@jpl.nasa.gov>
Co-authored-by: M Starch <LeStarch@googlemail.com>
Co-authored-by: Michael D Starch <Michael.D.Starch@jpl.nasa.gov>
* Fix other UTs
* Bump GDS dependency to latest v4.0.2a5
* Bump fprime-gds to v4.0.2a6
* Update dictionary command in seqgen tests
---------
Co-authored-by: Zimri Leisher <zimri.leisher@gmail.com>
Co-authored-by: Zimri Leisher <zimri.leisher@fireflyspace.com>
Co-authored-by: M Starch <LeStarch@googlemail.com>
Co-authored-by: Rob Bocchino <bocchino@jpl.nasa.gov>
Co-authored-by: kevin-f-ortega <kevin.f.ortega@gmail.com>
Co-authored-by: Philip Romano <pjromano94@gmail.com>
Co-authored-by: Kyle Jones <kylej@jpl.nasa.gov>
Co-authored-by: Ian Brault <ian@brault.dev>
Co-authored-by: Ian Brault <ian.r.brault@jpl.nasa.gov>
Co-authored-by: chuynh4duarte <chuynh4duarte@gmail.com>
Co-authored-by: Cindy T Huynh <chuynh@jpl.nasa.gov>
Co-authored-by: Kevin F. Ortega <kevin.f.ortega@jpl.nasa.gov>
Co-authored-by: Rob Bocchino <bocchino@icloud.com>
Co-authored-by: Isaac Garibay <144189484+Isaac-G5900@users.noreply.github.com>
Co-authored-by: Shaokai (Jerry) Lin <shaokai@berkeley.edu>
Co-authored-by: ZIIIKT <shaokail@jpl.nasa.gov>
Co-authored-by: Michael D Starch <Michael.D.Starch@jpl.nasa.gov>
* Fixing read-after-write checks for SPI configuration. Adding UT.
* Add assert to validate the read and write buffers are the same size in SpiReadWrite_handler
* Corrected WARNING_LOW -> WARNING_LO
* Fixing event Strings and invalid SpiFrequency
* Reverting changes to LinuxSpiDriverTester
* Removing redundant variable write_clock
* Initial open source review of active phaser
* Start working on ActivePhaser's FPP model
* Add ActivePhaser implementation
* Start working on unit tests
* Fill in test logic
* Add comments
* Guard against writing outside of container
* Add comment
* Update comments
* Fix comment on overflow
* Comment on the use of actual_start and others
* Add comments and max connection count
* Add comments
* Phaser updates
* Add telemetry channels
* Update comments, fix FPP, update API calls in tester
* Apply formatter
* Minor comment change
* Fix spelling
* First draft of SDD
* Revert "Add telemetry channels"
This reverts commit 1690e51e125477d032e07fa8cd3882d6db2b8b3b.
* PRIVATE -> private
* Add friend class declaration for ActivePhaserTester
* Fix FIXMEs where possible
* Formatting
* Fix minor UT issues
* Remove (void)
---------
Co-authored-by: ZIIIKT <shaokail@jpl.nasa.gov>
Co-authored-by: M Starch <LeStarch@googlemail.com>
Co-authored-by: Michael D Starch <Michael.D.Starch@jpl.nasa.gov>
Updated reference to the Communication Adapter Interface in the documentation to reflect changes in the interface file names and added usage instructions.
* Enhancement: Added file size and subdirectory support to FileManager directory listing feature
* Refactor to directory listing feature using rategroup 2 component
* Spelling fixes to expect.txt, config feilds for schedin call, fixes on comments/types
* Fix for spellcheck
* Replace fixed size with FileNameStringSize for commands
* Fix minor nits
* Formatting
* Remove fileManager instance, use FileHandling.fileManager
* Fix review feedback
---------
Co-authored-by: M Starch <LeStarch@googlemail.com>
* Add Software Design Document for ComFprime subtopology
* sp
* fix spelling and same feedback as ComCcsds
* Update instance summary in sdd.md documentation
---------
Co-authored-by: Thomas Boyer-Chammard <49786685+thomas-bc@users.noreply.github.com>
* Add FPP state machine How-To
* Fix state definitions in state diagram for newlines
* sp
Clarified wording regarding state transitions in the documentation.
* Missing `.`
Co-authored-by: Rob Bocchino <bocchino@icloud.com>
* Review updates
* Update links in define-state-machines.md
* sp
---------
Co-authored-by: Rob Bocchino <bocchino@icloud.com>
* Feedback updates on common port patters, health, and worker
* Fix typos and improve clarity in documentation
* Fix typo in health-checking documentation - pt 2
Corrected a typo in the description of Svc.Health regarding configurable timeouts.
* Fix typo in manager-worker documentation - pt 3
* Fix formatting in health-checking documentation
* Revise subtopology development documentation
* Document subtopology configuration process
Added detailed instructions for configuring subtopologies, including module setup and CMake integration.
* Enhance documentation on subtopology structure
Added recommendations for including documentation and optional files in subtopology.
* fix spelling
* fix spelling v2 final
---------
Co-authored-by: Thomas Boyer-Chammard <49786685+thomas-bc@users.noreply.github.com>
* Update ComX subtopologies to not include ComStub and update Ref
* Cosmetic updates
* Working FramingCcsds subtopology used in ComCcsds
* Revert Ref to use ComCcsds
* Move FramingSubtopology into ComCcsds build module
* Working ComFprime subtopology
* Cosmetic updates
* formatting
* Switch everything that references stack size or offset to U32
* Add dir err tlm
* Rename tlm point to be consistent
* Update state tlm type to enumstoretype
* Make new Fpy::StackSizeType alias
* Add explanation for why we chose U32
* Fix one more static cast
* Bump schema vers to 2
---------
Co-authored-by: Zimri Leisher <zimri.leisher@fireflyspace.com>
* add deployment function
* update file to use config json file
* remove unuse function
* fix typos
* fixed spelling
* update to use get_mnemonic
* rm shellcmd from fileManager and add health & systemResources testcase
* check memory usage and number of CPUs
* remove Ref.PingReceiver and fixed typos
* fixed spelling fileDownlink,health,systemResources and add config.json file
* Update config.json
* replace ActiveLogger to EventManager
* Updated config.json use lowercase CdhCore and FileHandling(fileDownlink,fileManager,prmDb) and ComCcsds(cmdSeq) etc
* update test_cmd_version to compare version of telemetry channel vs. evr version
* extend max_delay to work with Raspberry pi
* rename config.json to int_config.json
* delete Ref/config.json new file name int_config.json
* add time.sleep between AppendFile cmd to work with rasberry Pi
* fix int_config.json and add new Int DpMgr, DpWriter and DpCatalog
* add comments to confirm /tmp/1MiB.txt and /tmp/test_seq.seq exist before execute script
* add send uplink files
* Rename config.json, fix spelling
* python formatting
---------
Co-authored-by: Cindy T Huynh <chuynh@jpl.nasa.gov>
Co-authored-by: M Starch <LeStarch@googlemail.com>
Co-authored-by: Thomas Boyer-Chammard <49786685+thomas-bc@users.noreply.github.com>
Co-authored-by: Kevin F. Ortega <kevin.f.ortega@jpl.nasa.gov>
* Revise array tests
Update constructor calls to conform to new code gen
Format the code
* Reformat FppTest
* Revise requirements.txt
* Update requirements.txt
* Update fpp version
* Revise Ref to conform to FPP changes
* Remove trailing spaces
---------
Co-authored-by: Thomas Boyer-Chammard <49786685+thomas-bc@users.noreply.github.com>
* Add event ID filter to PassiveConsoleTextLogger
* Add event ID filter to ActiveTextLogger
* Add const qualifier to filtered event list pointers
* Fix assert argument types
* Fix clang format errors
* Fix copy-paste error on include file
Co-authored-by: Thomas Boyer-Chammard <49786685+thomas-bc@users.noreply.github.com>
* Add missing initialization to ActiveTextLogger constructor
---------
Co-authored-by: Ian Brault <ian.r.brault@jpl.nasa.gov>
Co-authored-by: Thomas Boyer-Chammard <49786685+thomas-bc@users.noreply.github.com>
Co-authored-by: M Starch <LeStarch@googlemail.com>
* Add logic for assertion short circuiting
- Add guard logic to AssertFatalAdapter to prevent a cascading FW_ASSERT chain from occurring
- If any assert checks fail while handling an in-progress assert check failure, reportAssert will log the
additional assert and execute the system-specific assert handler before returning
* Update assert guard logic to counter based
- Instead of using a bool guard to determine when to off-ramp from a series of FW_ASSERT check failures,
use a counter that is configurable in a program's FpConfig.h file
---------
Co-authored-by: M Starch <LeStarch@googlemail.com>
* Initial derived channel work
* Write ground-derived channels
* Update plugin handler
* Updating publishChannel case
Updated method name to follow naming conventions.
* Fix method name to use snake_case in documentation
* improved step to contribute back
* added delivery date for targeted platforms
* added tbd since we are not sure at the moment
* fixed column data
* updating list of supported targets. This reflects how F Prime runs on these hardware with zephyr.
* alphabetized list and added link for freertos
* fix spelling
* rename Apple M* to Apple Silicon
---------
Co-authored-by: Thomas Boyer-Chammard <49786685+thomas-bc@users.noreply.github.com>
* Some work towards stack based arch
* Bring fp/int conv up to date
* Get compiling with stack based arch
* Start trying to fix UTs
* Start adding store/load dirs
* Add push val dir
* UTs are running
* UTs passing
* Make exit stack based
* Fix more uts
* Fix final UTs
* sp
* Fix overflow potential err
* Fix another overflow
* same error fix
* Format
* Also add to format checker
* Add math directives
* Add integer extension and truncation
* Also check correct size on stack
* Fix comment
* Push cmd response to stack
* Cast cmd response code to i32
* Add stack cmd, memcmp, discard dirs
* Fix some bugs with stack cmd
* Fix lil bug in sgtack cmd
* same bug
* Fix another bug sry
* Update sdd
* sp
* Fix undefined behavior with bitshift of signed integer
* sp
* Fix lil bug in timeout detection of stack cmd
* Switch format check to do all Svc dirs
* Reformat, and fix packet descriptor serialize bug
* Add UTs for all of arith ops
* Add tests for disc, memcmp, stack cmd
* Add deser tests for those three dirs
* sp
* Format
* Replace magic numbers with sizeofs
* Add currentStatementIdx helper function
* Format
* Split imod into smod and umod
* sp
* Add fmod, copy python behavior for fmod and smod
---------
Co-authored-by: Zimri Leisher <zimri.leisher@fireflyspace.com>
* Update IP stack source to use SizeType instead of I/U32
* Update UTs reflecting U32/I32 change to SizeType
* Static cast sizes per review
* Fix commented out thing
* Some work towards stack based arch
* Bring fp/int conv up to date
* Get compiling with stack based arch
* Start trying to fix UTs
* Start adding store/load dirs
* Add push val dir
* UTs are running
* UTs passing
* Make exit stack based
* Fix more uts
* Fix final UTs
* sp
* Fix overflow potential err
* Fix another overflow
* same error fix
* Update sdd
* sp
* Fix undefined behavior with bitshift of signed integer
* sp
---------
Co-authored-by: Zimri Leisher <zimri.leisher@fireflyspace.com>
* fixing error #3897
* Generative AI documentation added
* Update GENERATIVE_AI.md
* Update GENERATIVE_AI.md
* Update pull_request_template.md
resolving comments
* Update OsTime.cpp
resolving comment
* updating expect.txt to have "GPT"
* Update GENERATIVE_AI.md
Co-authored-by: Rob Bocchino <bocchino@icloud.com>
* Fix relative link and display
* updates to GENERATIVE_AI.md
* Fix merge
* Update GENERATIVE_AI.md
* Update cross-compilation.md
* reverting back to AI b/c branch confusion
* updating disclosure and file name
* Update to current in fprime devel
* Fix relative link and display
---------
Co-authored-by: M Starch <LeStarch@googlemail.com>
Co-authored-by: Rob Bocchino <bocchino@icloud.com>
Co-authored-by: Thomas Boyer-Chammard <49786685+thomas-bc@users.noreply.github.com>
* Staging DEPRECATE changes in preparation for new FPP alpha. Removed backwards compat hacks. Updated some uses of the legacy functions that were missed originally.
* Remove declaration of serialize and deserialize from RawTime as those should be inherited now
* Removing FW_SERIALIZE_UNIMPLEMENTED and FW_DESERIALIZE_UNIMPLEMENTED from SerializeStatus
* Removing superfluous comma
* Missed AmpcsEvrLogPacket. Fixing a minor whitespace issue in Serializable.
* Un-deprecating serialize/deserialize for this release
* Restoring DEPRECATED for the noLength functions
* Pulling in fpp 3.0.0a17. Fixing some lingering issues with refactoring.
* Format files
* Update fprime-fpp package
* Fixing some lingering issues with serialization modernization.
* Fixing weird merge issue with AmpcsEvrLogPacket
* More clang issue fixes
* Still pesky clang formatting issues. Superfluous whitespace.
* Removing redundant virtuals for overriden methods
* Incorporating PR comments
* clang formatted Serializable.hpp
* Removing redundant serialize and deserialize methods in TestAbsType. Inherit from parent.
---------
Co-authored-by: thomas-bc <thomas.boyerchammard@gmail.com>
* Bump GDS to latest release
Fixes#3963
* Set LEDBlinker to FPrime Framing
* Set Rasbperry Pi Integration Test Framer
* Remove spurious 'g'
---------
Co-authored-by: M Starch <LeStarch@googlemail.com>
* Modify Com/Ccsds/Fprime ComDriverConfig & TopologyDefs for easier ComDriver config
* Fix BaseID collision
* Removed restrict platform, UART/TCP driver configs different files, CMake switch depending on FPRIME_HAS_SOCKETS
* Add Exclude_FROM_ALL to all subtopology cmake modules
* remove exclude from ComCcsds (needed for Ref)
* Remove exclude from all for testing
* Exclude_from_all only on comLoggerTee, comFprime (not used in Ref)
* Added Svc_Subtopologies target
* Use add_custom_target, spelling fix
* Add Configs to Svc_Subtopologies target
* Removed comDriver as instance within subtopologies, now within project topology
* Take out cmdSeq from ComSubtopologies, put in FileHandling
* Added Subtopology States for all, common pattern users can follow
* Fix Extra newline
* Moved Phased comDriver code into RefTopology.cpp
* Update metadata
check-spelling run (pull_request_target) for subtopology-config-phasing-updates
Signed-off-by: check-spelling-bot <check-spelling-bot@users.noreply.github.com>
on-behalf-of: @check-spelling <check-spelling-bot@check-spelling.dev>
* Fixed call to default stack size
* Moved cmdSeq from FileHandling subtopology to Ref Root Topology
* Fix integration test
* Remove unneeded Os includes in RefTopology.cpp
* Fix BaseIds
* Add comment for BaseIDs, comDriver configuration order fix
* Restructure of enums within Com Subtopologies
* Correct include for ComCcsds enum headers
* Using namespace syntax change
* Fix BaseIds
* Update metadata
check-spelling run (pull_request_target) for subtopology-config-phasing-updates
Signed-off-by: check-spelling-bot <check-spelling-bot@users.noreply.github.com>
on-behalf-of: @check-spelling <check-spelling-bot@check-spelling.dev>
* Remove unneeded Dependency
* Add enum at the top
* Fix RefTopology.cpp
* Update Comment
---------
Signed-off-by: check-spelling-bot <check-spelling-bot@users.noreply.github.com>
Co-authored-by: Moises Mata <moisesmata@users.noreply.github.com>
* Deprecating serialize/deserialize methods for clearer serializeTo/serializeFrom and deserializeTo/deserializeFrom methods to indicate direction.
* Cleaned up some GCC directives that was used for an experimenting. Fixed some bugs in Serializable.
* Un-deprecating serialize/deserialize methods to decouple the required FPP changes
* Further modenized more child classes. Added some backwards compatibility fall-back logic to aid in FPP decoupling.
* Fixing clang formatting violation
* Removing redundant virtual keyword since the functions are already overrides
* Incorporating PR comments
* Fixing clang format issue
* Incorporating PR comments
* Updating documentation for new serialize/deserialize methods
* Add a simple single-thread only stub for std::atomic
* Add EOF newlines
* Move files to a new directory under Stub and add register_fprime_implementation for StandardAtomic
* Remove PRIVATE PROTECTED and STATIC access overrides
* Bump up requirements version
---------
Co-authored-by: Thomas Boyer-Chammard <49786685+thomas-bc@users.noreply.github.com>
* Add FppTestProject level
* Fix FPP Test Project UT errors
* Add back in FppTest deployment & make empty main in source.cpp
* Remove Wold-style-cast to see if that fixes CI issues
* Update add_compile_options
---------
Co-authored-by: M Starch <LeStarch@googlemail.com>
* Added ComLogTSplit subtopology, compiles but needs testing within a larger topology
* Added ComLogTSplit Subtopology
- Takes com in from tlm send and uses a com splitter to split between comQueue and comLogger
- Uses the instance format, will be compatible with fprime-util new --subtopology-instance in fprime-tools update
* Update metadata
check-spelling run (push) for add-com-logger-subtopology
Signed-off-by: check-spelling-bot <check-spelling-bot@users.noreply.github.com>
on-behalf-of: @check-spelling <check-spelling-bot@check-spelling.dev>
* Syntax fixes to include and add_fprime_subdirectory
* Remove uneeded base address in config
* Fix BaseID clashes
* Fix ComLogTSplit PingEntries Namespace
* Update metadata
check-spelling run (pull_request_target) for add-com-logger-subtopology
Signed-off-by: check-spelling-bot <check-spelling-bot@users.noreply.github.com>
on-behalf-of: @check-spelling <check-spelling-bot@check-spelling.dev>
* Removed un-needed mallocator include in RefTopology.cpp
* Update BASE_IDS in Ref, Subtopologies. ComLogTSplit -> ComLoggerTee
* Update metadata
check-spelling run (pull_request_target) for add-com-logger-subtopology
Signed-off-by: check-spelling-bot <check-spelling-bot@users.noreply.github.com>
on-behalf-of: @check-spelling <check-spelling-bot@check-spelling.dev>
* Removed unneeded headers is RefTopologyDefs.hpp
* ComFprime fix: subtopology state references and configObjects phased code
* Queue size bigger in ComFprime
* Add missing tearDownComponents phase to comQueue(comFprime) component in ComFprime.
---------
Signed-off-by: check-spelling-bot <check-spelling-bot@users.noreply.github.com>
Co-authored-by: Moises Mata <moisesmata@users.noreply.github.com>
* Update F' Time handling with FPP struct and clean up TIME flags
* Update documentation to indicate required time base options
* Remove time context comparison from Time compare method and FpySequencer
* UT updates
* Remove time add/sub context assertions, upload context compare logic and UTs, and doc updates
* Update Fw::Time SDD serializables section
* Markdown format fix
* Markdown format fix
* Markdown format fix
* Markdown format fix
* Bump FPP to v3.0.0a14
---------
Co-authored-by: M Starch <LeStarch@googlemail.com>
* Add --dirty flag to the git command used in the version autocoder
* Additionally add --broken flag to the git command used in the version autocoder
* format
---------
Co-authored-by: Ian Brault <ian.r.brault@jpl.nasa.gov>
Co-authored-by: M Starch <LeStarch@googlemail.com>
* Adding FW_CASSERT_1 macro for C
* Splitting assert failure case into separate test. Adding TestAssetHook to properly test assertion failures.
* Fixed TestAssertHook implementation
* Updates for FppTest/dp and FppTest/component corresponding to UT cmake update for protected/private
* Refactor Fpp/state_machine/internal_instance/state teststo be in their own Tester classes
* Standardize headers
* Remove old ifndef from BasicGuardTester.hpp
* More cleanup of BasicGuardTester
* Remove extra /dp files (leftover from rename) and fix a header comment typo
* Revert accidentally checked in cmake
* Enable UT_AUTO_HELPERS for FppTest/dp
* Revert FppTest/state_machine/internal_instance/state
* Update state_machine/internal_instance/state/ component names to append Tester
* pdate state_machine/internal_instance/choice/ component names
* Update state_machine/internal_instance/initial/ component names
* Reformat code
---------
Co-authored-by: Rob Bocchino <bocchino@jpl.nasa.gov>
* Add fptoi and itofp dirs
* Fix F32 literal
* Add some file read stage telemetry to err msgs
* Update default register count to 128
* Fix NOT directive to behave properly with if
* Make fptoi and itofp signed/unsigned
* fix warning
* Fix another warning
* Fix sp
* Add fpext, fptrunc, combine with not into unary op, tests pass
* Some UTs, switch to using memcpy
* Add UTs for all binary and unary ops
* Some more UTs
* sp
---------
Co-authored-by: Zimri Leisher <zimri.leisher@fireflyspace.com>
Co-authored-by: M Starch <LeStarch@googlemail.com>
* Update Fw/Time/TimeInterval to use an FPP struct
* Spelling; add TimeInterval UTs; remove UT-only stdout << method which is autocoded now for TimeInterval
* Add TimeInterval sub tests
* Re-factor tests into TestMain/Tester format files, separating Time and TimeInterval
* Add TimeIntervalTester as friend, for consistency
* Address build errors
* Update fpp comments
* Update TimeInterval to use FPP struct as underlying member variable type, only
* Upate CMake for build errors
* Add a little work on fp cmps
* Lil more work on fp cmp
* Finish flt stuff, add UT
* sp
* Much cleaner binary cmps
* Add final UTs
* sp
---------
Co-authored-by: Zimri Leisher <zimri.leisher@fireflyspace.com>
Co-authored-by: M Starch <LeStarch@googlemail.com>
* Added led-blinker workflow for aarch64-linux platform
* Update runner label
* Added Tags to RPI self hosted workflows, sparse-checkout-cone-mode false
* Add subtopologies to Svc/ restructing of Ref to include CDH subtopology
* CDHCore Subtopology added under Svc and integrated into Ref
* Health instance within CDHCore references CDHCoreConfig for queue size
* Update metadata
check-spelling run (push) for add-subtopologies
Signed-off-by: check-spelling-bot <check-spelling-bot@users.noreply.github.com>
on-behalf-of: @check-spelling <check-spelling-bot@check-spelling.dev>
* Added AssertFatalAdapter Version PassiveTextLogger to Subtopology, config clarity improvements
* Comms subtopology without cmdSeq created, integrated in Ref
* Added cmdSeq to Comms Subtopology, integrated into Ref
* Add FileHandling Subtopology, initial structure
* Fixed Spelling, Flie -> File
* Update metadata
check-spelling run (push) for add-subtopologies
Signed-off-by: check-spelling-bot <check-spelling-bot@users.noreply.github.com>
on-behalf-of: @check-spelling <check-spelling-bot@check-spelling.dev>
* Added working FileHandling, DataProducts subtopology, integrated into Ref
* prmDb part of FileHandling, fatalHandler part of CDHCore
* Update metadata
check-spelling run (push) for add-subtopologies
Signed-off-by: check-spelling-bot <check-spelling-bot@users.noreply.github.com>
on-behalf-of: @check-spelling <check-spelling-bot@check-spelling.dev>
* Update comment for clarity
* Initial move to phasing components
* Fixing Phasing: Adding initial Phasing for CDHCore, DataProducts, FileHandling
* Renaming topologydefs.hpp, phasing fully working on all four subtopologies, needs cleaning up
* Cleanup with Ports_ComPacketQueue, definition only in Comms.fpp now
* Base project with all 4 subtopologies, integrated into Ref, and passing CI
* Initial Commit with all Subtopologies in Svc/Subtopologies
* Added posixtime back in to Ref Deployment (Accidentally Deleted)
* Updates to match new subtopology structure, integrate CCSDS into Ref
* Changes to CommCCSDS that go with last changes
* Standardize subtopology structure and naming to PascalCase
* Namespace fixe for ComFprime
* CDHCore->Cdhcore for consistency
* Rename CDHCore to CdhCore for consistency
* Update metadata
check-spelling run (pull_request_target) for add-subtopologies
Signed-off-by: check-spelling-bot <check-spelling-bot@users.noreply.github.com>
on-behalf-of: @check-spelling <check-spelling-bot@check-spelling.dev>
* Reorder on teardown phases for Com Subtopolgies
* Cpp check style fix
* Fix: Add missing tearDownComponents cleanup for DataProducts dpBufferManager
* Delete old comments, test using same mallocator for all subtopologies
* fix: Deallocated DataProducts BufferMgr
* Fix DataProducts subtopology memory cleanup
* Fix: Dataproducts subtopology teardown order
* Added tearDownComponents(state)
* Consolidate all cleanup to teardowncomponents
* Fix memory leaks: restore teardown phases
* Removal of redundant teardowncomponents()
* Revert "Removal of redundant teardowncomponents()"
This reverts commit 29d4ff8242574f1afc1bb6aacdf5cfef4d79987d.
* Fix formatting, remove commented out code
* Swap hardcoded numbers to config constants in subtopologies
* register_fprime_config() in config modules, isolated ComDriver into a separate config fpp file
* Added explicit CMake Module Names and Depends between Subtopologies and their Configs
* Fixed CCSDS case, more config constants
* Added explicit depends for each subtopology config
* added mallocator config, subtopology state structure
* Update subtopology config names for clarity, fixes#3571
* Fix reference to dpBuffer config Constants
---------
Signed-off-by: check-spelling-bot <check-spelling-bot@users.noreply.github.com>
Co-authored-by: Moises Mata <moisesmata@users.noreply.github.com>
* Start combining dirs and cmd
* Much closer to combining dir and cmd
* Finish making cmds work
* Add directive error codes, fix UT
* Add deser lvar directive
* Add comparison operators
* Add unsigned/signed inequality ops
* Rename store to setreg
* First UT with a binary comparison op!
* Remove printfs
* Doc commnt
* Add and/not, and/or under binary cmp
* Fix a couple bugs in sequencer
* Add exit directive'
* Make exit actually end sequence if positive
* A little more work on UTS
* Fix UTs
* Add deser lvar UT
* Add exit, not, set reg, and binary cmp UTs
* Rename lvar to sreg
* Get the last few old refs to lvar
* sp
* Fix typo
* Fix typo
---------
Co-authored-by: Zimri Leisher <zimri.leisher@fireflyspace.com>
Co-authored-by: M Starch <LeStarch@googlemail.com>
* Refactor UdpSocket to remove SocketState and the use of dynamic memory allocation.
* Replacing some ASSERTs with proper SocketIpStatus. Adding some input argument validation. Adding some better logging.
* Refactoring UdpSocket to remove redundant m_recv_port and m_recv_hostname members
* Fixing some documentation and renaming a variable to be more consistent
* Adding ADDRSTRLEN to spelling expect
* Incorporating PR fixes and adding a new UT for zero length datagram
* Replacing a strcpy with a Fw::StringUtils::string_copy
* Removing incorrect UDP statuses in empty datagram test
* Fixing bug in implementation of UdpSocket by overriding IpSocket implementation of send and recv to properly handle 0-length datagrams
* Incorporating PR fixes. Adding function argument checks for send/recv.
* Fixing build errors
* Incorporating PR comments
* Forgot to add change for IpSocket
* Fixing asserts and removing virtual from recv that we shouldn't have to override.
* Spelling
* Updates for Svc/ActiveRateGroup corresponding to UT cmake update for protected/private by updating driver name and updating ActiveRateGroupImplTester to ActiveRateGroupTester
* Spelling
* Updates for Svc/PrmDb corresponding to UT cmake update for protected/private by updating driver name and updating PrmDbImplTester to PrmDbTester
* Spelling
* Format Fw/Buffer Fw/Cmd and Fw/Com
* add code format check
* fix branch to pull from
* debug
* uninstall before install
* Use pip3
* debug with tmate
* put fprime-tools dep in req.txt
* test
* req hash
* setup python first
* use nasa pointer
* Revert "Format Fw/Buffer Fw/Cmd and Fw/Com"
This reverts commit b4968ec6805006a99bd2a01c0a28fe6fb5f6430f.
* Format Fw/Buffer Fw/Cmd and Fw/Com
* Update to fprime-tools 4.0.0a2
* Use env var for readability
* naming
* Add clang-format to requirements.txt
* Skip clang-format requirement on armv7l platform
* Interfaces
* Point to new fpp alpha release
* Fix the fprime-gds version
* Update for framer/deframer work
* Fix cmake tests
* Clean up annotations
* Clean up final fpp
* PRIVATE -> private for Fw/Dp/DpContainer.hpp
* Add newline to DpContainerTester.hpp
* Update FPP Test to use DpContainerHelper; spelling fix; remove commented out code
* Move DpContainerTester to Fw namespace; refactor DpContainer protected checks into DpContainerTester itself
* PRIVATE -> private and PROTECTED -> protected in last remaining cases in Fw and Svc
* Fix UT errors and clean up refactorted SerializeBufferBaseTester methods
* Comment clean up
* Simplified config naming scheme, FatalHandler back in CDHCore
* Remove unneeded add_dependencies in TestDeployment CMakeLists.txt
* Changed config name to CDHCore config
* updating to newer cmake since some toolchains need this new version
* bugfix
* bugfix. need to set the size otherwise there is a possibility buffer's allocated size is larger than expected. This is true when using a staticmemory allocator where the static memory is e.g. 256 but the requested size is 128.
* need to static cast
* PRIVATE->private and PROTECTED->protected updates in Svc/FpySequencer
* Clean up new UT public/private helpers
* sp
---------
Co-authored-by: M Starch <LeStarch@googlemail.com>
* Add constants to dictionary spec
* Update enum section to use enum value
* Update dictionary content section to include array of constants.
* Remove kind field from constant
* Add note on how integer constants are output to the dictionary
* Add table of required defs with names, kinds, locations, and purpose
* updated supported platforms docs
* Fixed Tip box
* clear up doc
* fixed spelling
* Added nice title so the website can pick that up
* correcting step
* updated per pr reviews
* being more consistent with the word deployment. these sentences should actually use reference project instead of reference deployment -- as discussed with the fprime core team
* Add FwBaseIdType, updates ActiveLogger, CmdDispatcher, TlmPacketizer to use Fw types, update unit tests
* Update unit tests, rename FwBaseIdType to FwIdType
* Cleanup
* Change type of sizeOfZeros
* Add FwIdType to TestConfigDeployment overriden config
* Add annotation
* Update Ref linuxTimer base id
* Added led-blinker workflow for aarch64-linux platform
* Update runner label
* Added Tags to RPI self hosted workflows, sparse-checkout-cone-mode false
* Add subtopologies to Svc/ restructing of Ref to include CDH subtopology
* CDHCore Subtopology added under Svc and integrated into Ref
* Health instance within CDHCore references CDHCoreConfig for queue size
* Update metadata
check-spelling run (push) for add-subtopologies
Signed-off-by: check-spelling-bot <check-spelling-bot@users.noreply.github.com>
on-behalf-of: @check-spelling <check-spelling-bot@check-spelling.dev>
* Added AssertFatalAdapter Version PassiveTextLogger to Subtopology, config clarity improvements
* Comms subtopology without cmdSeq created, integrated in Ref
* Added cmdSeq to Comms Subtopology, integrated into Ref
* Add FileHandling Subtopology, initial structure
* Fixed Spelling, Flie -> File
* Update metadata
check-spelling run (push) for add-subtopologies
Signed-off-by: check-spelling-bot <check-spelling-bot@users.noreply.github.com>
on-behalf-of: @check-spelling <check-spelling-bot@check-spelling.dev>
* Added working FileHandling, DataProducts subtopology, integrated into Ref
* prmDb part of FileHandling, fatalHandler part of CDHCore
* Update metadata
check-spelling run (push) for add-subtopologies
Signed-off-by: check-spelling-bot <check-spelling-bot@users.noreply.github.com>
on-behalf-of: @check-spelling <check-spelling-bot@check-spelling.dev>
* Update comment for clarity
* Initial move to phasing components
* Fixing Phasing: Adding initial Phasing for CDHCore, DataProducts, FileHandling
* Renaming topologydefs.hpp, phasing fully working on all four subtopologies, needs cleaning up
* Cleanup with Ports_ComPacketQueue, definition only in Comms.fpp now
* CDHCore subtopology added and integrated within Ref deployment
* Fixed to work with CCSDS, added comment on RefPackets, fatalHandler within CDHCore config
* Add correct stackSize in CDHCoreconfig
* CDHCore Subtopology, parameterization done through config overrides
- Subtopology with core CDH functionality within Svc
- integrated within Ref Deployment
- PingEntries.hpp within CDHCore/ that provides default values for PingEntries
- Default TlmChan, option to use TlmPacketizer through changing CDHCoreConfig.fpp
* Fixed priority values in CDHCoreConfig, removed FatalHandler from CDHCore
* Update metadata
check-spelling run (pull_request_target) for add-cdhcore-subtopology
Signed-off-by: check-spelling-bot <check-spelling-bot@users.noreply.github.com>
on-behalf-of: @check-spelling <check-spelling-bot@check-spelling.dev>
* Added CDHCore as a dependency for TestDeployment, in CMakeLists.txt
* Changed Structure in RefTopologyDefs.hpp to make simpler
* Reverted to prior RefTopologydefs.hpp Structure
---------
Signed-off-by: check-spelling-bot <check-spelling-bot@users.noreply.github.com>
Co-authored-by: Moises Mata <moisesmata@users.noreply.github.com>
* Fixing directory detection bug.
* Removed some superfluous whitespace
* Adding branch path for non-directory and non-file to return PathType::OTHER. Fixing a spelling mistake.
* Moving getPathType to OS specific FileSystem implementations
* Incorporating PR comments and cleaning up comments
* Reverting unnecessary comment changes
* Incorporating fixes for static analysis findings
* Add RHEL8 container to CI
* Trigger on ci/ branches
* remove trigger on examples
* Attempt to install deps in container
* remove sudo
* git safe directory
* install libasan
* Add libasan libubsan
* fix spelling
* Add test user for UT run
* First pass at Svc + TcpClient implementation
* Tmp work
* Revert FileUplink changes
* Add copy (with allocation/deallocation) to FprimeRouter to simplify buffer management
* Update FprimeRouter UTs
* Update FprimeDeframer UTs
* Update FrameAccumulator UTs
* Update ComStub UTs
* Update missing Drv and UTs
* Update ComInterface to use ComDataWithContext on output
* Update Ref/RPI topology
* Fix spelling
* Fix test typo
* Update Udp component and UTs
* Rename data ports and standardize "Return" naming pattern
* Fix variable name
* Adapt UTs
* Update Communication Adapter Interface docs
* Full SDD updates
* Spelling & nits and details
* Put formatting back to original
* Added SpacePacket, TC and TM framers/deframers + Ref topology. Working with GDS wohooo
* TODOs and code cleanup
* Add APID enum to ComCfg.fpp and route based on received APID
* Increment counts per frame/apid
* Remove duplicate files
* Document and implement services/functions provided by the TCDeframer
* Add events, todos and notes
* fill TM frame with idle packet
* Add ApidMapper component and map APID - FwPacketDescriptor
* Refactor to new CMake API
* Update Types and Add TCDeframer tests
* Update type usage namespacing
* Finish TCDeframer UTs
* Add TMFramer tests and refine VcId handling
* Tests and code cleanup
* Define ComPacketType in FPP
* Map FW_PACKET_FILE to downlink specific APID
* Remove sequence number check
* Add packet loss notification to space packet
* Tests WIP
* WIP
* Use SpacePacket header type in TMFramer idle packet
* SpacePacketDeframer tests and untracked APID detection
* Add APID (=PacketDescriptor) extraction to FprimeDeframer
* Use ApidManager on uplink to validate seq count (is central authority for APID - SeqCount)
* Code cleanup
* Much cleaner ApidManager as a service, not in the middle of framing
* Even better ApidManager
* Add SpacePacketFramer UTs
* Set up rule based testing for ApidManager
* Code cleanup and fix TMFramer UT
* First pass at SDDs and stuff
* SDD fixes
* ApidManager Rule-based testing
* Improve TMFramer code coverage, docs and comments
* Types cleanup
* Add CRC check to CcsdsTCFrameDetector
* Add unit tests for CcsdsTCFrameDetector
* Fix Ref topology
* Fix old PacketType usage
* Fix ComQueue UTs
* Fix CI warnings
* Add test for CRC corruption in frame detector
* Spelling
* Remove ApidDemo component from topology
* Fix more static analysis
* Clean up ApidManager tests and fix static analysis warnings
* Fix UTs on RHEL8
* Fix SDD links
* Fix more static analysis on UTs
* More spelling fixes
* Improve SDDs and comments
* Update metadata
check-spelling run (pull_request_target) for ccsds-protocols
Signed-off-by: check-spelling-bot <check-spelling-bot@users.noreply.github.com>
on-behalf-of: @check-spelling <check-spelling-bot@check-spelling.dev>
* More SDD updates
* Attempt UT fixes
* First pass of review comments
* Fix length token is minus 1 inconsistency
* Review recs: static assert frame size, docs, TM buffer asserts
* Add fprime-gds.yml to Ref for GDS with framing selection
* Update requirements.txt for GDS 4.0.0a3 (CCSDS protocols)
* Update UTs to reflect last update
* Drop Python 3.8 support
* Update FprimeRouter UTs for new APID routing
* Fix spelling and RHEL8 cast warnings
* Fix spelling again...
* Deserialize APID in FprimeDeframer only if it is valid
* Fix googletest warning??
* static casting that u8 yall
* Use width FPP constants
* Add SDD links
* Switch TMFramer/TCDeframer capitalization to TmFramer/TcDeframer
* Use git mv to rename files and directory
* oops forgot rename a test file
* review changes: add annotations on all FPP ports
---------
Signed-off-by: check-spelling-bot <check-spelling-bot@users.noreply.github.com>
Co-authored-by: Thomas Boyer-Chammard <thomas-bc@users.noreply.github.com>
* Fixing immplementation of UDP epehmeral support and adding two tests cases to TestUdp
* Updating SDD. Fixing configureSend so it can be passed a port of 0.
* Actually adding SDD this time. Also fixed some incorrect wording in hpp file.
* Removing unnecessary period
* Removing redundant test. All the functionality can be tested in the same test.
* Removing redundant code path.
* Incorporating some fixes for static analysis findings
* Revert "Incorporating some fixes for static analysis findings"
This reverts commit 644fbbe4e9fb797c765a2e13ef8c4f057e838edf.
* Incorporating some fixes to static analyzer findings.
* Fixing typo
* Changing use of char to CHAR
* Adding documentation for ephemeral ports to Drv/Ip SDD. Fixing configureSend so that it maintains the configured timeout_seconds and timeout_microseconds.
* Adding netinet to spelling expect list.
* Changing the use of socklen_t to U32
* Incorporating PR suggestion
* Reverting back to using socklen_t for address length
* PRIVATE->private and PROTECTED->protected updates in Svc/BufferLogger (nasa#3446)
* Add comments about fwd declaration (nasa#3446)
* PRIVATE->private and PROTECTED->protected updates in Svc/CmdSequencer (#3446)
* Moved BlockDrv to Ref
* Fixed unit tests
* Updated LinuxTimer component name
* Fixed unit tests
* Re-removed LinuxTimerImpl.hpp
* Fixed a bunch of doc references to Drv/BlockDriver
* Spelling fix
* Added linux to spelling expect
* Doc fixes, have Svc/LinuxTimer use tick interface
* Added to change log
---------
Co-authored-by: Thomas Boyer-Chammard <49786685+thomas-bc@users.noreply.github.com>
* PRIVATE->private and PROTECTED->protected updates in FppTest/state_machine/internal_instance/choice/ (nasa#3446)
* PRIVATE->private and PROTECTED->protected updates in FppTest/state_machine/internal_instance/initial/ (nasa#3446)
* PRIVATE->private and PROTECTED->protected updates in FppTest/state_machine/internal_instance/state/ (nasa#3446)
* Change the type of the Task priority to FwTaskPriorityType
* Fix missed UT arg update
---------
Co-authored-by: Mishaal Aleem <aleem@fprime-fsw-0.jpl.nasa.gov>
Co-authored-by: Rob Bocchino <bocchino@jpl.nasa.gov>
* bugfixes to uts. the old way was generating out of range offsets
* bugfixes
* adding more helpful messages and bugfix to ut for when mode is OPEN_APPEND
* removed unnecessary prints
* ci fixes and updates based on review
* fix for static analyzer
* sp
* should appease ci
* append moves the file pointer before write not on open
* typo
* cleaned up code
* open with append will still have the state position to 0
* Initial prototype of external parameter types
* Change external parameter interface to be an abstract base class
* Renamed external parameter delegate
* Sync parameter delegate interfaces with GNC
* Finshed interface sync with GNC
* Fixed missing include
* Added external parameter delgate documentation
* Added parameter base ID to the parameter external delegate interface
* Added external parameters to FPP component UTs
* Add external parameter UTs and got them to build
* Completed external paramter UTs
* Updated parameter delegate to accept a serial buffer base instead of a parameter buffer
* Renamed to fix spelling
* Bumped Fpp version
* Added external parameters documentation to the user's guide
* Fixed config include path
* Updated spelling expect file for external parameter names
* Revise FppTest
Add static casts in assertions to avoid conversion warnings
* Bumped FPP version to the 10th alpha release of 3.0.0
* Revise FppTest
Sort file lists
---------
Co-authored-by: Rob Bocchino <bocchino@jpl.nasa.gov>
* Add goto, if, setlocalvar, and debugging
* Finish off debug stuff, add more UTs, start work on UT seq builder
* Some more work on UTs
* Finish UTing RunState
* Much more UT of validation
* Test allocbuff
* Add a couple more Uts
* Some formatting and more UT coverage
* Fix docstirng
* Fix rpi conversion bug
* Fix mac warning
* Fix sp
* sp
* Update some docs
* Switch to using fixtures
* Add gettlmval and gettlmtime
* Update docstrings of getprm/gettlm ports
* Add TlmGet port to tlmpacketizer
* Add get_prm_val
* Fix tlmchan gettlm
* Combine tlmval and time into one
* Update tlm packetizer with TlmValid
* Update tlm chan with TlmValid
* PR feedback
* Fix rpi build
---------
Co-authored-by: Zimri Leisher <zimri.leisher@fireflyspace.com>
Co-authored-by: M Starch <LeStarch@googlemail.com>
* Clarify allocation failure error
It's not useful to report an UNKNOWN_ERROR when the cause is known.
* Adding model to CPP enum check
---------
Co-authored-by: M Starch <LeStarch@googlemail.com>
* Added nav for tutorials back to mkdocs.yml
* formatting
* formatting
---------
Co-authored-by: Thomas Boyer-Chammard <49786685+thomas-bc@users.noreply.github.com>
* Initial FprimeFramer and FprimePacketizer
* Code clarity + set up UTs
* Rework ComQueue and ComStub to use DataWithContext
* Add packets to RefPackets.fppi
* Fix ComQueue tests
* Add hotfix to FileDownlink instead of ComQueue
* Fix cancelPacket as well
* Fix ComQueue UTs by removing hotfix
* Refactor DataWithContext to use an FPP object for context instead of Fw.Buffer
* Touch up testing
* Add docs
* more docs
* More docs
* Rework buffer deallocation pattern to pass-through ComQueue
* Update ComStub UTs
* Restore original FileDownlink.cpp
* Formatting tweak
* Update deprecated getSerializeRepr() calls
* deserialization methods
* Fix spelling
* add cast for safety
* CMakefile change
* Bump ComQueue depth
* Update RPI deployment with new Downlink stack
* Rename comQueueIn port to comPktQueueIn
* Fix comQueueIn to comPktQueueIn change
* Remove legacy Svc.Framer
* Fix CMake UTs
* Fix RPI topology config
* Fix FprimeProtocol.fpp module
* Fix namespacing
* Use const reference for FrameContext port
* Review comments EXCEPT port passback refactor
* Rework ComStub with new ByteStream
* New ByteStream - ComInterface model
* Rework TcpClient / TcpServer with new bytestream
* Adapt UDP component for new ByteStream
* Adapt FrameAccumulator for new ByteStream
* Adapt FprimeFramer for new ByteStream
* Update Ref topology with new ByteStream model
* Remove all legacy deallocates from Drivers; reintroduce DEPRECATED model types
* Fix spelling and include error
* More spelling....
* RPI and RpiDemo fixes
* Fix conversion warning on RPI
* static_cast for short int on RPI
* Standardize port names
* Remove legacy Drv types and merge RECV/SEND enum type, delete StreamCrossover
* Update SDDs
* Update SDDs
* Fix ComInterface <-> Framer interfaction, clarify comments and fix annotations
* Switch ComStub from ASSERT to log failure and return buffer
* Add history size check + clarify test handler overrides
* Fix RPI topology to wire comStub on Uplink
* Rename comm to comDriver in RPI topology
* Update communication adapter interface docs
* Awesome Nav Changes
* Awesome Nav Changes
* Bring up to date with latest
* This is AWESOME
* Rename files for ordering
* Remove How-To prefix in titles
* Fix spelling
* Remove old sdd_processing.py script
---------
Co-authored-by: thomas-bc <thomas.boyer.chammard@jpl.nasa.gov>
* Add initiali fpy sequencer
* Get ready to use internal state machines
* Start modeling state machine in fpp
* Little more work on fpy sequencer
* Little more drafting on fpy sequencer
* State machine review with bocchino
* Remove unnecessary sm stuff
* Update docstgrings
* Start implementing actions for SM
* Little more work on fpy seq
* Get compiling again, rework how errors are handled, start actually reading header from disk
* Much more work on getting the state machine up and working
* Little more work
* More changes to SM. Mostly combine validation into one state
* A little more work on the readXYZ funcs
* Start working on the actual runtime!
* Little more work on sending out cmds
* Some work on handling statement results
* Get waits working hopefully. Also refactor cmd signals and responses
* remove the two states for cmd vs directive
* Some progress in converting to fprime types
* Get seq compiling with new fprime types
* refactor validation a little
* Fix final bugs with seq parsing. First seq rangits add to ref
* Add StatementARgBuf
* Add some tlm, get wait directives working
* Check timebase/ctx, increase allocated size
* Some fixes for removing NATIVE_X
* use handlestmt result
* Fix some types, clean up some errors, add tlm
* Move more stuff to RUN state
* Start pulling seq dirs into internal ports
* Use internal interfaces for directives
* Add timeout to dispatcher
* Fix a lil bug with seq too large
* Sequencer working! Passing all int tests
* Add seq path tlm, timeout, return signals in directives
* Fix several pr feedback items
* More pr feedback
* More fixes from PR feedback
* Remove printf
* Add basic unit tests
* Respond to more feedback
* Do most feedback from comments
* Little more event fixes, add more docs
* Some work on proper cmd response off nominal behavior
* Add all events and conditions to cmdresponsein
* Small fix to unexpected cmd repsonse, remove from ref
* Fix some small compiler warnings
* Fix one more warning
* Fix a comment
* spelling
* Remove unused types from test
* Cast assert arg
---------
Co-authored-by: Zimri Leisher <zimri.leisher@fireflyspace.com>
* Initial refactor of CMake build target
* Changing config CMake to new style
* Initial step towards restoring UTs
* Working on CMake UTs
* Fixing UTs - no shared
* Rebasing nasa/fprime
* sp
* Fixing inital CI issues
* Fixing more CI errors through PIP-supplied CMake
* More CI fixes
* Adding external links to recursive link
* CI fixes, and function comments
* OsTime proof of concept
* Updated documentation and unit tests
* Add no epoch test
* Add kubiak to expect.txt
* Updates to OsTime to support setEpoch port and data structure locking
* Address analyzer warnings
* Fix one more CI warning
* Remove use of void
* Rework timing assertions
* Fix spelling of epoch
* Move OsTimeEpoch port inside a Ports directory
* Update OsTime tests to use RawTimeTester
* Increase config FW_RAW_TIME_HANDLE_MAX_SIZE to 32 bytes to support Fw::Time objects
* Reduce scope of OsTime Epoch Mutex
* sp
---------
Co-authored-by: M Starch <LeStarch@googlemail.com>
* Deprecating Fw::Buffer::getSerializeRepr in favour of Fw::Buffer::getSerializer and Fw::Buffer::getDeserializer (#2714)
* Addressing PR comments.
* Add workflow for running fpp-to-json on Ref (#3430)
* Add workflow for running fpp-to-json on Ref
* Update working dirs
* Add FPP v3.0.0a4
* fpp v3.0.0a5
* Use setup action
* Rename workflow for better display
---------
Co-authored-by: Thomas Boyer-Chammard <49786685+thomas-bc@users.noreply.github.com>
* Return cmd repsonse and UT check (#3438)
Co-authored-by: Zimri Leisher <zimri.leisher@fireflyspace.com>
* Update Ref to use FPP telemetry packets (#3440)
* Revise Ref app
Convert Ref packets to FPP
* Remove header include for XML packets
* Remove trailing spaces
* Delete RefPackets.xml
* Update Ref packets
* Update fpp version
* Update fpp version
---------
Co-authored-by: M Starch <LeStarch@googlemail.com>
* Refactored type organization (#3422)
* Refactored type organization
* Creating better configuration/types header hierarchy
* Replace FpConfig type aliases with FPP generated aliases
* Add the aliases to the FPP model
* Config + Type Aliases builds
* Renamed Fw/Types.h,hpp to Fw/FPrimeBasicTypes.h,hpp
* Updating to FPP-a7
* Adding newline
* sp
* Fixing minor nit from review
* Spurious ;
---------
Co-authored-by: Andrei Tumbar <andrei.tumbar@jpl.nasa.gov>
* Deprecating Fw::Buffer::getSerializeRepr in favour of Fw::Buffer::getSerializer and Fw::Buffer::getDeserializer (#2714)
* Incorporating PR suggested fixes
* Adding the setting of m_serLoc and m_deserLoc to the copy constructor. Moving those members from private to protected.
* Adding m_serLoc and m_deserLoc copying to = operator function. Fixing FPP tests to explicitly move deserialize location to offset.
* File typo (#3464)
* typo. SeekType does not have a CURRENT value but it does have a RELATIVE value
* applied formatter
* Incorporating PR comments
* Incorporating PR comments
---------
Co-authored-by: Justine West <35715959+jwest115@users.noreply.github.com>
Co-authored-by: Thomas Boyer-Chammard <49786685+thomas-bc@users.noreply.github.com>
Co-authored-by: Zimri Leisher <zimri.leisher@gmail.com>
Co-authored-by: Zimri Leisher <zimri.leisher@fireflyspace.com>
Co-authored-by: Rob Bocchino <bocchino@jpl.nasa.gov>
Co-authored-by: M Starch <LeStarch@googlemail.com>
Co-authored-by: Andrei Tumbar <andrei.tumbar@jpl.nasa.gov>
Co-authored-by: kevin-f-ortega <kevin.f.ortega@gmail.com>
* Refactored type organization
* Creating better configuration/types header hierarchy
* Replace FpConfig type aliases with FPP generated aliases
* Add the aliases to the FPP model
* Config + Type Aliases builds
* Renamed Fw/Types.h,hpp to Fw/FPrimeBasicTypes.h,hpp
* Updating to FPP-a7
* Adding newline
* sp
* Fixing minor nit from review
* Spurious ;
---------
Co-authored-by: Andrei Tumbar <andrei.tumbar@jpl.nasa.gov>
* Remove FwSignedSizeType from file
* Restoring FwSignedSizeType to seek offsets
* Fixing usages and UTs
* Fixes on Linux
* CI fix
* CI round 3
* CI rev 4
* Fixing code scan errors
* Review fixes - pt 1
* Failed to save
* Adding fallbacks FILE_ID and RELATIVE_PATH asserts. Unit tests implemented but the FILE_ID test is broken. (#2988)
* Consolidating UTs into AssertTypesTest and fixing minor bug in Fw/Test/UnitTestAssert.cpp
* Fixing minor typo in comment
* Add minor improvements to deal with external libraries
* Fix UT_MOD_DEPS usage
* Revert "Add minor improvements to deal with external libraries"
This reverts commit 44803631eee9d152a00bbaabc42124b8404f56de.
* Remove NATIVE_* types from FileUplink
* Remove NATIVE_* types from RateGroupDriver
* Remove NATIVE_* types from ComLogger
* Addressing init function usage of NATIVE_ types
* NATIVE_ types from command dispatcher
* NATIVE_ types from ComQueue
* NATIVE_ types from CmdSplitter
* U32 -> FwOpcodeType in CmdDispatcher
* NATIVE_ types in BufferManager
* NATIVE_ types in LinuxTimer
* NATIVE_ types from BufferAccumulator and renabling UT
* NATIVE_ types from TlmChan
* NATIVE_ types from BufferRepeater
* NATIVE_ types from Active/Passive Rate Group
* NATIVE_ types from ComSplitter and ComStub
* NATIVE_ types from ActiveLogger and fixed ActiveRateGroup sdd
* NATIVE_ types from Dp*
* NATIVE_ types from FileManager and ActiveLogger (missed)
* NATIVE_ types from BufferLogger, FileDownlink, StaticMemory
* Deleting UdpSender/UdpReceiver that lack models and build config
* NATIVE_ types from Health
* NATIVE_ types from CmdSequencer
* NATIVE_ types from TlmPacketizer
* Fixing unit test issues
* POINTER_CAST from Svc
* CI fixes
* CI fixes (Linux)
* Fixing Ref/RPI for RG context
* CI (sp)
* Fixing RPI build for time conversions
* CI fixes (RPI)
* Self review comments
* Removing UDP sender/receiver config
* Review recommendations - pt 1
* Adding format specifier aliases for primitives. Updating documentation. (#3199)
* Changing double format to 'lf' for better compatibility for scanf
* Adding UTs. Removing PRI_F32 as C/C++ always promotes floats to doubles.
* Split Router out of Deframer - initial implementation
* Rename variable to packetBuffer and resolve conversion warnings
* Add test cases for each incoming packet type
* Adjust comments and stuff
* Update Ref topology with Router
* WIP - FrameAccumulator
* Add lightweight deframer
* Working frame detector, accumulator, and fprime packet
* CCSDS implementation and better checksums
* Fixing overly small start word to use SCID as well
* Fixing frame accumulator for new structure
* Minor cleanup to frame detectors
* Add CCSDS Deframers and F´ minimal deframer
* Clean up comments
* Update Ref topology with Accumulator/Deframer/Router
* Update buffer manager
* Upgrade Router.cpp to latest Fw::Logger
* Update RPI deployment to use FrameAccumulator/Router
* Remove CCSDS Deframers
* Add first pass at UTs
* add buffer accumulation testing
* start SDD and rename author
* Fix static analysis warnings and add comments to UTs
* Spelling
* Add FprimeFrameDetector UTs
* Fix CI issue
* Fix test component creation
* Add first pass at SDDs
* Rename FrameAccumulator allocation ports
* Add review comments
* Functional one-off detection
* Fix algorithms and rename Deframer to FprimeDeframer
* Remove file
* Remove templated detectors
* Improve test code
* Rename frame Footer to Trailer, and improve SDDs
* finish renaming footer to trailer and add implementation note
* Fix spelling and CI warning
* Fix test code
* More CI and spelling fixes
* Add back virtual destructor
* appease pedantic warnings
* Fix declaration ordering for safe destruction
* Run formatting and add a few comments
* Add RouterInterface.fppi and use it in Router
* review changes round 1
* Rename Router to FprimeRouter and add test for unconnected unknownDataOut port
* Finish renaming Router -> FprimeRouter
* Use get-target-branch for cookiecutters tests and fix spelling
* fix a few comments, CI warning and formatting
* Update types for compatibility with updated FwSizeType
* Move FprimeProtocol.fpp to Svc/ and update non-compliant UINT types
* Code review recommendations
* Move FrameAccumulator destruction to cleanup() code
* Add frame validation to FprimeDeframer
* Add cleanup() call to test code
* Fix static analysis warnings
* Resolve type warnings and add multiple events in FprimeDeframer
* latest latest v3
---------
Co-authored-by: Michael D Starch <Michael.D.Starch@jpl.nasa.gov>
* NATIVE_INT_TYPE use in toString
* NATIVE_INT_TYPE use in SimpleObjRegistry
* NATIVE_INT_TYPE use in Asserts
* NATIVE_INT_TYPE use in Fw/Comp
* NATIVE_INT_TYPE use in getCapacity
* NATIVE_INT_TYPE use in getEntries
* NATIVE_INT_TYPE use in size/length
* NATIVE_INT_TYPE use in FILE_NAME_ARG
* NATIVE_INT_TYPE use in Fw (misc)
* NATIVE_INT_TYPE use in identifier
* NATIVE_INT_TYPE use in Fw (misc II)
* POINTER_CAST in Buffer
* POINTER_CAST in Serializable
* sp
* Removing no longer used DefaultTypes.hpp
* Fixes to accomidate Fw refactor
* Unit-test and CI fixes
* Fixing review comments - pt 1
* Improve error checking in mutex stub
The default mutex stub is intended to be usable on any platform,
even platforms that do not have threads and cannot block. This stub is
inappropriate for applications that need to contend over mutexes.
However, if inadvertently used in applications in a way that would
result in mutex contention, they would silently allow incorrect and
dangerous behavior. (Notably, they allowed multiple threads to enter the
same critical section.)
The new implementation still works on all platforms, and never blocks.
However, it ensures that only one thread enters each critical section at
a time. Attempting to acquire a mutex that is already taken will result
in a failure to acquire the mutex, and likely an assertion. Because this
should only occur in the case of a coding defect, this is an improvement
over the previous implementation.
* Note mutex identity in lock/unlock status assert
When a mutex fails to be taken or released, and it causes an assertion
to trip, this change makes sure that enough information is provided to
uniquely identify which mutex was at fault.
* Fix assertion cast argument types to be generic
* Create fprime-translations.md
LeStarch on Feb 13, 2025
CollaboratorAuthor
@matt392code these tables you posted are exactly what we need for this issue. Do you want to pull those tables into a PR?
Create:
docs/user-guide/framework/fprime-translations.md
Add all of the tables you put at the top (everything up to "Example Translations").
I will need to go through and edit some of the data, but want to let you get credit for the initial work.
* Reviewing output
* Adding tranlation guide to mkdocs.yml
* Add links and fix typo
---------
Co-authored-by: M Starch <LeStarch@googlemail.com>
Co-authored-by: chammard <thomas.boyer.chammard@jpl.nasa.gov>
* Add fprime-examples repo to CI
* Rename other workflows for consistency
* Rename more CI workflows
* Add correct F´ location
* Address review comments
* Revert to External Repo (External Build might suggest the build process is external)
* added telem packets to JSON dictionary spec
* add telemetry packet examples, cleanup examples
* fix examples
* fix typo
* rename groups to sets
* Add newline after tables, use camel case for component instance names
* update description of deploymentName field
* update deploymentName field description
* fix example
* Improve BufferManager assertion context args
Previously, in some cases, no information or context was provided when
this assertion tripped, which made it harder to identify the cause.
Include more information in several cases.
* Fix assertion argument cast to be generic
* Adding casts for explicit conversion
---------
Co-authored-by: M Starch <LeStarch@googlemail.com>
* Synchronous cancel guide, and Fw.Signal implementation
Fixing name in CMakeList for Fw.Signal
Draft of other port patterns
More port patterns with reoganized structure
Adding completion status port
Proof-read ports paterns doc
Fixing expert review elements w/ common port patterns
Updating links to point to devel examples
* Fixing path from old to new
* Fix relative links
* Update mkdocs.yml and ordering
* Fixing [!NOTE]
---------
Co-authored-by: Thomas Boyer-Chammard <49786685+thomas-bc@users.noreply.github.com>
* Doc restructure with design-patterns and build-system sections
* Restore advanced.md and uts.md
* Link in UTs
* Fix link
* Remove card layout from user manual landing page
* Add back the cards
2025-02-13 13:54:43 -08:00
3406 changed files with 124209 additions and 145434 deletions
We're excited about the potential of generative AI to help make [F´](https://github.com/nasa/fprime) development more productive, enjoyable, and accessible! Whether you're using AI to write code, improve documentation, or learn about complex systems, we welcome the thoughtful use of these powerful tools in your F´ contributions.
This guide shares our community's approach to using generative AI effectively and responsibly. You'll find practical tips, best practices, and simple guidelines to help you get the most out of AI tools while maintaining the quality standards that make F´ great.
## Our Position on Generative AI
F´ embraces technological advancement and innovation. Generative AI tools can assist with:
- Code generation and refactoring
- Documentation creation and improvement
- Test case development
- Debugging assistance
- Design pattern suggestions
- Learning and understanding our codebases
However, the use of generative AI must align with our commitment to high technical standards, quality, and the collaborative nature of open source development.
## Disclosure
To maintain transparency and enable effective code review, contributors **must disclose all generative AI usage**.
This includes contributions in the forms of **Pull Requests**, **Issues** or **Discussions**.
### Pull Request Submissions for Contributors
1. **Fill-In the "AI Used (y/n)" table entry** in the pull request template disclosing whether Gen AI was used in the pull request
2. **Provide details in the "AI Usage" section** describing how generative AI was utilized
### What to Disclose
Include information about:
- **Type of assistance**: Code generation, documentation, debugging, testing, refactoring, etc.
- **Scope of usage**: Which files, functions, or sections were AI-assisted
- **Tool(s) used**: Name of the AI system(s) employed (e.g., GitHub Copilot, ChatGPT, etc.)
- **Level of modification**: Whether AI-generated content was used as-is, modified, or used as inspiration
### What AI Cannot Replace
- **Domain expertise** in flight software and embedded systems
- **Understanding of F Prime architecture** and design patterns
- **Critical thinking** about system requirements and constraints
- **Human judgment** on safety-critical decisions
- **Community collaboration** and peer review processes
## Best Practices
### Providing Guidelines to AI Tools
When working with generative AI, provide clear rules and context to improve code quality and consistency. For Example:
- **Reference F´ Style Guidelines**: Include the [F´ Style Guidelines](https://github.com/nasa/fprime/wiki/F%C2%B4-Style-Guidelines) in your prompts
- **Enforce coding standards**: Instruct AI to avoid "magic numbers" and use descriptive variable names or comments
Takes component, port type, serializable, topology, or enum XML files as input and produces FPrime Autocoded Ac.cpp/hpp files. Codegen is also set up to generate *Impl_[hpp,cpp] template implementation template files with -t/--template, unit test component files with -u/--unit-test, logger files through -l/--loggers and -L/--logger-output-file, dependency files through -d/--dependency-file, dictionary files through -g/--default_dict, -x/--xml_topology_dict, -T/--default_topology_dict, -a/--ampcs_dict, and -A/--ampcs_topology_dict, HTML docs through -H/--html_docs, Markdown docs through -m/--md_docs, and reports on component interfaces through -r/--gen_report.
### cosmosgen.py
Takes a topology XML file as input and generates all the configuration files necessary to add a deployment to Ball Aerospace's COSMOS suite of tools for sending and receiving commands and telemetry. The output directory defaults to $BUILD_ROOT/COSMOS. You can also delete a deployment from the COSMOS directory by using "-r DEPLOYMENT_NAME". Full documentation can be found in Autocoders/Python/src/fprime_ac/utils/cosmos/.
### JSONDictionaryGen.py
Takes a topology XML file as input and produces a JSON dictionary with naming convention "Deployment" + Dictionary.json. The JSON dictionary is generated within the directory where JSONDictionaryGen was run, but this can be overridden by inputting a new output directory in -p/--path.
### testgen.py
Testgen generates a test component in the same way that codegen does. It takes a component XML file as input and generates Tester.cpp/hpp, TesterBase.cpp/hpp, GTestBase.cpp/hpp, and a TestMain.cpp. TestMain.cpp and Tester.cpp/hpp won't be overwritten if they already exist. Rather, one should use command line option -m/--maincpp to overwrite TestMain.cpp and -f/--force_tester to overwrite Tester.cpp and Tester.hpp. Testgen supports absolute paths to inputted files, so you are able to call testgen on any file and the test component will be generated in the directory that testgen was called from.
### gds_dictgen.py
GDS Dictgen is a tool for generating GDS XML Dictionaries that are named *TopologyAppDictionary.xml. The tool takes topology XML as input, and the generated dictionary contains all enums, serializables, commands, events, channels, and parameters present within the topology. GDS Dictgen supports absolute paths to inputted files, so you are able to call GDS dictgen on any file and the dictionary will be generated in the directory that GDS dictgen was called from.
### pymod_dictgen.py
Pymod Dictgen is a tool for generating python modules for the GDS. The tool takes topology XML as input, and it generates command, event, channel, and parameter python modules within their own respective directories. The output path can be changed with command line option -o/--dict_dir. Pymod dictgen supports absolute paths to inputted files, so you are able to call testgen on any file and the directories will be generated in the directory that pymod dictgen was called from.
### implgen.py
Implgen is a tool that takes in component XML and generates ComponentImpl.cpp/hpp files. It is formatted in a very similar way to testgen.py. It generates the Impl files within whatever directory it was ran, and it has its own pytest in Autocoders/Python/test/implgen. Implgen also allows for absolute paths.
### tlmLayout.py
Takes as input a telemetry layout in tab-delimited format and generates .hpp files of the packet layout(s) and a table that can be used to form the packet(s).
## Autocoders Python directory structure
### bin/
Directory containing all 7 autocoder tools and a few scripts to invoke them.
### doc/
Directory containing telemetry packet / layout documentation. It also contains a changelog and a readme for the autocoder, but both are outdated.
### schema/
Directory containing all autocoder RelaxNG and Schematron XML schemas. Schemas are found within the default directory. The sample_XML_files directory contains sample XML files for the schemas that are run using the testSchemas.py test. These sample XML files were made for the RelaxNG schemas, but they have not been updated for the schematron schemas, so they may not work with them.
### src/
Directory containing all python code for the autocoder tools. Codegen uses the visitor pattern to generate its output files, and the generators for the visitor pattern are found in generators while the visitors are found in generators/visitors. Generators/templates contains all the cheetah templates required to run the autocoder. In a fresh repo, these should be built either by making F Prime, making the autocoder unit tests, or manually running cheetah compile within the templates directory. The parsers directory contains all the custom autocoder XML parser modules that the autocoder uses to create models from raw F Prime XML. Lastly, utils/cosmos contains the modules used by the cosmosgen tool. There is a readme file within this directory that explains what all of this code does.
| AbstractGenerator.py | Defines the interface for each portion or the code to be generated |
| ChannelBody.py | Main entry point of channel class body |
| ChannelHeader.py | Main entry point of channel class header |
| CommandBody.py | Main entry point of command class body |
| CommandHeader.py | Main entry point of command class header |
| DictBody.py | Main entry point of dict class body |
| DictHeader.py | Main entry point of dict class header |
| DictStart.py | Main entry point of start of dict class code |
| EventBody.py | Main entry point of event class body |
| EventHeader.py | Main entry point of event class header |
| FinishSource.py | Main entry point of end of file code |
| formatters.py | Contains various routines to output formatted strings for code generation |
| GenFactory.py | Factory for instancing the interface and connecting appropriate visitors |
| HtmlDocPage.py | Main entry point for generation of html documentation for grnd interfaces |
| HtmlStartPage.py | Main entry point for generation of html documentation for grnd interfaces |
| Includes1.py | Main entry point for generation of a first set of include statements |
| Includes2.py | Main entry point for generation of a second set of include statements |
| InitFiles.py | Main entry point for generation of initializing code |
| InstanceDictBody.py | Main entry point for generation of instance dict body |
| InstanceDictHeader.py | Main entry point for generation of instance dict header |
| InstanceDictStart.py | Main entry point for generation of start of instance dict class code |
| MdDocPage.py | Main entry point of markdown documentation for ground interfaces |
| MdStartPage.py | Main entry point for start of code for markdown documentation |
| Namespace.py | Main entry point for generation of initialization code |
| Private.py | Main entry point for generation of private code within a class |
| Protected.py | Main entry point for generation of private code within a class |
| Public.py | Main entry point for generation of private code within a class |
| StartChannel.py | Main entry point for start of code for channel class |
| StartCommand.py | Main entry point for start of code for command class |
| StartEvent.py | Main entry point for start of code for event class |
| StartSource.py | Main entry point for start of code |
#### src/models/
| File | Description |
| --- | ----------- |
| Arg.py | Argument meta-model that is instanced as an association to port instances |
| Channel.py | Channel meta-model - list of channels |
| Command.py | Command meta-model - list of commands |
| CompFactory.py | Factory class for instancing the component and building port and arg config |
| Component.py | Component meta-model and main interface for code generation queries |
| Event.py | Event meta-model - list of event |
| InternalInterface.py | Internal interface meta-model - list of internal interfaces |
| ModelParser.py | Contains various routines for parsing the meta-model object and returning lists, dicts, etc. for visitors to utilize in mapping to code |
| Parameter.py | Parameter meta-model - list of parameters |
| Port.py | Port meta-model contained within a component class |
| PortFactory.py | Factory class for instancing the port interface type and building up port and arg config |
| Serialize.py | Serializable meta-model |
| TopoFactory.py | Factory class for instancing topology meta-model |
| Topology.py | Topology meta-model and main interface for code generation queries |
#### src/parsers/
| File | Description |
| --- | ----------- |
| AbstractParser.py | Defines the shared interfaces for parsing, validation and getter methods for component, port, and topology xml |
| XmlComponentParser.py | Parses XML component description files |
| XmlEnumParser.py | Parses XML enum description files |
| XmlParser.py | Parent class of the rest of the XmlParser classes |
| XmlPortsParser.py | Parses XML port description files |
| XmlSerializeParser.py | Parses XML serialize description files |
| XmlTopologyParser.py | Parses XML topology description files |
#### src/utils/
| File | Description |
| --- | ----------- |
| ac_cli_helpers.py | Contains helper methods to parse arguments and to run the autocoder CLI and pass any arguments it needs |
| AddSysPath.py | Contains a function that adds a directory to the Python sys.path value - copied from Python cookbook |
| CaltechHeader.py | Contains the caltech header that should be used in autocoder classes |
| ConfigManager.py | Simple configuration class patterned after the Keck observation sequencer GUI and the Tahoe CalVal pipeline |
| DictTypeConverter.py | Contains methods to convert types to dictionary types and to replace special characters in format strings |
| DiffAndRename.py | Mainly used for difference and rename routines |
| DumpObj.py | Contains methods to print nicely formatted overviews of objects |
| EnumDictCheck.py | A structure used to report enumeration size errors |
| EnumGenerator.py | Generator to produce serializable enums |
| Logger.py | Sets up the logging for all other scripts based on the Python logging module - not a standalone file |
| ParseC.py | Contains a set of Python functions that parse C code |
| pyparsing.py | Python parser methods created externally by Paul T. McGuire |
| TopDictGenerator.py | Generator that produces a topology dictionary from parsed XML |
| TypesList.py | Contains types_list and port_types_list which contain types allowed in commands/telemetry/parameters/events |
| VersionFile.py | Check if file exists, and creates a backup copy using an appended versioning string - copied directly from the language cookbook |
| XmlParser.py | General XML parser class based on the Python xml2obj recipe |
### templates/
Directory containing a sample unit test for testing components. There are sample F Prime XML files, a sample Impl.cpp file, and the ut itself.
### test/
Directory containing all unit tests invoked by the cmake system. List of working unit tests are present within CMakeLists.txt. The directories testgen, dictgen, schematron, and enum_xml contain pytests which should be run using pytest rather than cmake. Testgen and enum_xml additionally contain unit tests, but they are set up within cmake to be built as utilities rather than unit tests, so they will not be invoked when running all unit tests in cmake. Dependencies and file i/o within these unit tests prevent them from being successfully run outside of their pytests, so this should be kept this way.
### CMakeLists.txt
Cmake file that is present in all parts of directory tree to be built by cmake. If cmake was invoked with type testing, templates and test get built. The src directory is always built as well.
### Requirements
The Autocoder's requirements are covered by installing the F´ software package. This is covered by the installation process.
## Schematron
In Autocoders/Python/schema/default there are various schematron .rng files mixed with the normal F Prime RelaxNG .rng schema files. The schematron files validate xml in the same way as the RelaxNG schemas (within the XmlParser classes), but these schematron files will only generate command line errors, not exceptions like the schema files will. Here is a short description of each file:
| top_uniqueness_schematron.rng | Compares base_id attributes of all instance xml elements by checking that the values within their base_id_window don't overlap |
| active_comp_schematron.rng | Checks that all active component xml elements have a child port element that is of type async_input |
| enum_value_schematron.rng | Checks that if one enum item xml element has an attribute "value" then all enum item xml elements have an attribute "value". It also checks uniqueness of these values |
| comp_uniqueness_schematron.rng | Checks that all ID's and opcodes for their respective elements within a component xml element are unique - this is the same as the bottom four schematron files but this file only runs on component xml tags |
| command_op_schematron.rng | Checks uniqueness of command opcodes in command xml elements |
| event_id_schematron.rng | Checks uniqueness of event id's in event xml elements |
| channel_id_schematron.rng | Checks uniqueness of channel id's in channel xml elements |
| parameter_id_schematron.rng | Checks uniqueness of parameter id's in parameter xml elements |
### Schematron Syntax
The root element of a schematron file is a schema tag with attribute xmlns set to "http://purl.oclc.org/dsdl/schematron". You are able to define any number of patterns with any number of rules within these files, where a pattern is a set of rules and a rule defines a set of asserts that all run on an xml element where the element's name is defined in the rule's context attribute. Schematron asserts use XPath syntax. It is helpful to find XPath cheat sheets online and have them open when defining a schematron assert.
help="Required. Fully-qualified file name of the cheetah template used by this script (normally in Autocoders/Python/src/fprime_ac/utils/TlmPacketDefBase.tmpl)",
)
parser.add_argument(
"input_file",nargs="+",help="One or more input tab-delimited csv file names"
"Components with type {} aren't in the topology model.".format(
comp.get_type()
)
)
xml_list=[]
forparsed_xml_typeinparsed_xml_dict:
ifparsed_xml_dict[parsed_xml_type]isNone:
print(
"ERROR: XML of type {} is being used, but has not been parsed correctly. Check if file exists or add xml file with the 'import_component_type' tag to the Topology file.".format(
<!-- This is a common file for both interface_schema and internal_interface_schema. These two were originally merged into this file, but had to be split as a workaround to keep the same definitions but not validate component files that had the interface tag in it. -->
<include href="common_elements.rng"/>
<start>
<ref name="interface_root_define"/>
</start>
<define name="interface_root_define">
<a:documentation>Used for interface files.</a:documentation>
<choice>
<!--Choice between interface or port root tag.-->
<element name="interface">
<a:documentation>Allows for one interface.</a:documentation>
<ref name="interface_define"/>
</element>
<element name="port">
<a:documentation>Allows for one interface.</a:documentation>
<!-- This is a common file for both interface_schema and internal_interface_schema. These two were originally merged into this file, but had to be split as a workaround to keep the same definitions but not validate component files that had the interface tag in it. -->
<include href="common_elements.rng"/>
<start>
<ref name="internal_interface_root_define"/>
</start>
<define name="internal_interface_root_define">
<a:documentation>Used for interfaces within components.</a:documentation>
<element name="internal_interfaces">
<a:documentation>Allows for multiple interfaces.</a:documentation>
<assert test="count(//instance[((./@base_id+./@base_id_window)>current()/@base_id and (current()/@base_id+current()/@base_id_window)>(./@base_id))])=1 or (count(//instance[((./@base_id+./@base_id_window)=current()/@base_id and (current()/@base_id+current()/@base_id_window)=(./@base_id))])=1)">
Range of id's for every instance should be non-overlapping.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.