Skip to content

Make APID and FwPacketDescriptorType the same width#4076

Merged
LeStarch merged 43 commits intonasa:develfrom
thomas-bc:packet-descriptor-rework
Sep 12, 2025
Merged

Make APID and FwPacketDescriptorType the same width#4076
LeStarch merged 43 commits intonasa:develfrom
thomas-bc:packet-descriptor-rework

Conversation

@thomas-bc
Copy link
Collaborator

@thomas-bc thomas-bc commented Aug 26, 2025

Related Issue(s)
Has Unit Tests (y/n)
Documentation Included (y/n)
Generative AI was used in this contribution (y/n)

Change Description

Fix #4026

Make FwPacketDescriptorType and APID type share the same width.

🚨🚨🚨 Default FwPacketDescriptorType changed to U16 🚨🚨🚨

With the recent updates to GDS, this should be transparent to the user.

Rationale

Future Work

We can't get rid of FwPacketDescriptorType yet because it still is relevant to the framework's inner working (packet are stamped with it). Long term, we may want to stop creating packets by stamping out the FwPacketDescriptorType in front. Either pass as a different argument, or maybe just use SpacePackets all around.

// ----------------------------------------------------------------------

U16 ApidManager ::getAndIncrementSeqCount(ComCfg::APID::T apid) {
U16 ApidManager ::getAndIncrementSeqCount(ComCfg::Apid::T apid) {

Check notice

Code scanning / CodeQL

Long function without assertion Note

All functions of more than 10 lines should have at least one assertion.
// header
U16 packetIdentification = 0;
ComCfg::APID::T apid = context.get_apid();
ComCfg::Apid::T apid = context.get_apid();

Check warning

Code scanning / CodeQL

Unchecked function argument Warning

This use of parameter context has not been checked.
zimri-leisher and others added 25 commits September 10, 2025 10:52
* 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>
With the removal of the Autocoders directory, we also remove the pyparsestring usage.
* 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
* 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 cc6371d.

* 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
* 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>
* 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>
* 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
* Fix typo `cp` to `cd` in CONTRIBUTING.md

* Mention Python venv requirements for running tests
…nasa#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 guide

* fix typo and how-to

* Add reference link
* 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 to v4.0.2a2 (GDS)

* Fix integration tests

* Fix requirements.txt
* 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

* Fix sourcing path

* fix paths

---------

Co-authored-by: Thomas Boyer-Chammard <49786685+thomas-bc@users.noreply.github.com>
* Add test driven development how-to

* sp; review
* 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>
* 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
* 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>
…#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
* 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>
LeStarch and others added 10 commits September 10, 2025 10:52
* 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

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

* 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 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

* 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>
…ng feature (nasa#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>
Updated reference to the Communication Adapter Interface in the documentation to reflect changes in the interface file names and added usage instructions.
* 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 1690e51.

* 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>
Copy link

@github-advanced-security github-advanced-security bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

CodeQL found more than 20 potential problems in the proposed changes. Check the Files changed tab for more details.

Check warning

Code scanning / CppCheck

Could not find a newline character at the end of the file. Warning test

Could not find a newline character at the end of the file.
@thomas-bc
Copy link
Collaborator Author

Need nasa/fprime-gds#239 to pass integration tests

thomas-bc added a commit to nasa/fprime-gds that referenced this pull request Sep 11, 2025
* initial work

* Add dictionary merge script (#230)

* Add dictionary merge script

* sp

* Add cli option to disable data logging (#229)

* Add file uplink capability to testing API (#228)

* formatting

* Add uplink_file and uplink...await

* Fix apps logging by logging directly to subdirectory (#232)

* Fix apps logging by logging directly to subdirectory

* remove unecessary code

* Fix test calls and add deepcopy

* Add publishing pipeline (tts only) (#233)

* Add publishing pipeline (tts only)

* Fix UTs

* Remove unused imports

* Fix case

* Expose dictionary path for integration API (#234)

* Allow JS config; fix dictionary cli config (#235)

* Allow JS config; fix dictionary cli config

* sp

* Add Channel Clear; Fix Event Clear (#237)

* Add channel clear

* Fix display when all null

* Sanitize HTML output

* Fix error on too-small frame decoding (#236)

* Turn off Dashboard by default (#238)

* Turn off Dashboard by default

* Add 'vuejs' to spelling exceptions

* Fpy compiler 0.2 (#231)

* Some work on high level language

* A decent bit of work on new compiler

* Tiny bit more work

* Start working on custom parser

* Remove lambdas and comprehensions

* Remove try/except/finally/raise

* Remove with

* Remove classdef and decorators

* Remove import, global, nonlocal, assert

* Remove match/case

* Remove dotted_as_name

* Remove star expr

* Remove del

* Continue updating grammar, add some compiler passes

* Cut down grammar more

* Work on parsing func calls

* Much more work on parsing types

* Cut grammar further

* Cut down parser a little more, update python clz

* Some more work towards simplifying compile passes

* Get more restrictive syntax working

* Switch to a universal ref system

* Work on conditional syntax

* Little work on infix ops

* Get polymorphic resolves working?

* Little more work on infix ops

* Ll more work

* Some good work splitting up thjings into passes

* Some more work on splitting up passes

* More work on simplifying compiuler passes

* Passing tests again...

* Start generating directives

* Little more work on IR

* Tons of work on code gen

* Conditionals pretty much done, working on stitching together bodies

* Some fixes to grammar

* Much more work on implying arg types

* Fix a couple bugs

* Add linearizationgits i think it's working

* Fix a couple small bugs

* Fix serialization, add main func

* Work on commonizing code related to exprs

* Switch over to new expr system

* A little more cleaning up

* Start working on putting expr into reg

* Cool new visitor pattern based on type annotation

* Lots more work on code gen, some notes on spec/todos

* Fix some bugs in expr code gen

* Almsot done with code gen

* Get code gen working again!

* Fix a lil bug in if codegen

* Little work towards allowing field refs

* Work on namespacing

* Some work on a more general system for getting var vals

* Switch back to how it was before :(

* Resolve references seems to be working again..

* Much more work on properly resolving refs

* FP equality seems to work

* Passing all tests

* Fix a few bugs in getitem, wait rel

* Some bugfixes, SPEC updates

* Clean up some compiler passes n funcs

* Improved err msgs, simpler code, better pass names

* Comments on each cmp pass

* Start using fpext dir

* Add fp to int conversion

* Switch over tests to using fpydemo dep

* Get all tests actually running on fpyseq

* Many more unit tests

* Some more UTs, update to use fpto signed/unsigned int

* Some work on making a vm model

* much work on stack based model

* Get fib calculator working in bytecode!

* reorganize and clean things up. decide i don't need a const pool

* Completely remove everything to do with func calling and heap

* Fix some bugs, nail down tlm get/push val

* Start fixing some bugs, switch over tests to use the model

* Many small code quality fixes, docstring

* Remove most printouts

* Remove old bytecode serializer

* remove old test files

* Add some bytecode assembler work

* Add floating point 'e' literal

* Allow int literals to be used for floats

* Much more progress on stack based arch. almost all tests pass

* Add integer extension ops

* Much work on math

* Fix unit tests, more work on arithmetic

* Add some tests for mul/div/sub/add

* Fix order of operations (thanks mom) and itrunc

* Add some tests, ast nodes for pow/mod

* Little more work on pow/modulo

* Some docstrings, comments, renaming

* Little more docstrings

* Make sleep relative take a float

* Add log

* Add test checking if we can assign variables a non const val

* Some work on parametrized tests

* Rename fpynamespace to fpyscope

* Deal with overflows properly

* More work automatically testing all arith

* delete old code in test

* Remove tests, fix union type

* sp

* sp

* Attepmt to disable tests

* Fix codeql and sp again

* Fix type annotations

* Get complex expr assign working

* Check use before declare

* Add testing code for deser

* Fix bug in push int trunc

* Add signed/unsigned div

* Add cmd return values, equality between non numeric types

* Update directive ids

* Split integer bitwidth conversions into diff opcodes

* Fix integer pow

* Lots of cooking on stack ops

* Much work on a better type semantics and operator syntax

* Much more work on rule based conversion/inference

* Get new type inference/conversion system workinggit add test!

* Clean up code a bunch, fix some bugs, work on spec

* Intermediate type in SPEC

* Lil more work on spec

* Spl;it imod into umod and smod

* Fmod, smod, umod, continue to clean up intermediate typing

* Fix fmod, update for new fpydemo

* Some codeql things

* hopefully get working on python 3.9

* try again to fix python 3.9

* Fix union type checK

* try more to fix 3.9:

* one more try

* another one

* another another one

* fr this time

* Finally fix tests?

* Fix some extra prints

* Continue fixing 3.9 issues

* Fix union type handling in visitor

* Fix a couple more isinstance calls

* Another 3.9 problem...

* Fix same prob in a new place in model

* Fix codeql

* More codeql

* sp

* sp

* sp

* sp

* sp

* sp

* Better exceptions, u32 stack, catch more things at compile time

* Many updates to readme

* More work on tutorial

* More tutorial updates

* Some readme updates

* Use enum for stack ops

* Fix UT and a review comment

* More spec updates

* More work on the enums?

* Clean up type coercion system to match spec

* Add some tests for literals

* Some more small cleanup

* Fix 3.9 Uts

* Remove print, update schema vers to 2

* Unary negation and identity working mostly...

* Remove assembler

* And fix uts

* Remove unary minus from integer syntax

* Fix uts and warning

* Fix spec

* Fix sp

---------

Co-authored-by: Zimri Leisher <zimri.leisher@fireflyspace.com>

* remove debug statements and such

* remove print and extra variable

* Fix `--deployment-config` arg pass through

* Fix Comm parsers

---------

Co-authored-by: M Starch <LeStarch@googlemail.com>
Co-authored-by: Zimri Leisher <zimri.leisher@gmail.com>
Co-authored-by: Zimri Leisher <zimri.leisher@fireflyspace.com>
@thomas-bc
Copy link
Collaborator Author

@thomas-bc
Copy link
Collaborator Author

TODO: fix fprime-seqgen (not pulling DictionaryParser) and fprime-examples

thomas-bc added a commit to nasa/fprime-examples that referenced this pull request Sep 12, 2025
@thomas-bc thomas-bc requested a review from LeStarch September 12, 2025 21:36
@LeStarch LeStarch merged commit ade6cc5 into nasa:devel Sep 12, 2025
69 checks passed
@thomas-bc thomas-bc deleted the packet-descriptor-rework branch September 12, 2025 21:42
thomas-bc added a commit to nasa/fprime-examples that referenced this pull request Sep 12, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Make FwPacketDescriptorType and APID types share same width