fprime-community / fpp Goto Github PK
View Code? Open in Web Editor NEWF Prime Prime: A modeling language for F Prime
Home Page: https://fprime.jpl.nasa.gov
License: Apache License 2.0
F Prime Prime: A modeling language for F Prime
Home Page: https://fprime.jpl.nasa.gov
License: Apache License 2.0
Update the README file to reflect the new capabilities in release 0.3.0.
The XML type needs the full qualified C++ type, e.g. Fw::ParamValid
. This is due to the way the XML to C++ code generator works: the literal return type is pasted into the generated code, which may be in a different namespace.
For example, uses of FwOpcodeType
should not generate an import_header
declaration.
Generate XML for internal ports
Add documentation for include specifiers in components.
Translate general port instances to XML. Also translate top-level component structure and comment.
Translate XML to FPP for events.
For example, you should be able to say
instance foo: Foo base id 0x100 at "../../Bar.hpp"
This definition says that foo
is an instance of the Foo
component and the C++ header file of its implementation is located at ../../Bar.hpp
. This construction supports the case where a single component model has several different C++ implementation classes. If no path is given, e.g.,
instance foo: Foo base id 0x100
then the translator will use a default header file, e.g., Foo.hpp
(or FooComponentImpl.hpp
if that more verbose form is desired) in the directory where the Foo
component model is located.
Extend fpp-check to cover component instance specifiers.
Mangle the names. For example, when enum E
is defined inside component C
, generate an XML array C_EArrayAi.ml
. It would be better to define an inner class C::E
, but the F Prime XML doesn't support this.
Add documentation for constants and types in components.
With regard to the first item: The purpose of declared unconnected ports was to suppress warnings, so that every compilation would not spew warnings when ports are unconnected. However, we solve this problem by generating the unconnected list only on demand, via fpp-check -u [file]
. One can then filter the unconnected list however desired, e.g., by piping it through egrep -vi '(pingin|pingout)'
.
The alternative is to maintain long lists of unconnected ports in the source model, which is a pain, or provide some more advanced capability for specifying sets of ports, which is more complicated.
Extend fpp-check to cover init specifiers.
Add documentation for special ports.
Translate XML to FPP for special port instances.
Translate XML to FPP for commands.
When file A includes file B, and a definition appears in B, the location of the definition should be A, not B.
Write the initial pass for checking connection graph specifiers. Don't resolve patterns yet. Don't check patterns for correctness, except to detect duplicate patterns and to resolve port instance identifiers.
Extend fpp-format to cover topologies.
Translate XML to FPP for internal ports.
Add documentation for general ports.
Add documentation for events.
Generate XML for events.
Generate XML for general port instances.
Apply automatic numbering of ports
Generate XML for commands.
Translate XML to FPP for telemetry.
Generate XML for parameters.
Update fpp-locate-uses to cover topologies.
A few invalid uses of symbols cause a crash. For example this:
constant a = 0
constant b = a.c
In checking the second constant definition, the analyzer expects the symbol a
to have an associated scope and throws an exception because it doesn't. Instead, it should report the error.
Tighten up the checks.
Add documentation for parameters.
Allow the use of ref port parameters in an async context. In this case, ref should be a no-op. In the current XML implementation, it affects the way the autocode is generated. We can note this as an XML limitation in the User's Guide.
For completeness, along with arrays, structs, and enums.
Write the initial pass for checking unused port specifiers. Resolve each specifier to a semantic port instance identifier.
Add documentation for internal ports.
Mangle the names. For example, if constant c
is defined in component C
, generate a constant named C_c
. It would be better to generate a constant C::c
, but the F Prime XML doesn't support this.
Add documentation for commands.
Generate XML for telemetry channels.
Extend fpp-check to cover topology import specifiers.
Right now you can use an integer or rational format specifier for any numeric argument. Tighten this up so you can use integer specifiers for integer arguments and rational specifiers for floating-point arguments. For example, you can't use the specifier {x}
for an argument of type F32
or the specifier {f}
for an argument of type U32
.
Generate XML for special port instances.
Add documentation for telemetry.
Translate XML to FPP for parameters.
Resolve each topology definition to a partially numbered topology T.
Generalize the scheme so that you can specify any pair of matching port arrays P1 and P2 for any component C. Then for all instances I of C, and for all instances I' that have connections to I.P1[n1] and I.P2[n2] the renumbering will ensure that n1 = n2. This handles all the special cases listed (command registration, dispatch, and response; sequence command and response; health ping send and receive). It also extends to new cases.
This will require a new kind of component specifier for matching. For example, in the Health component:
match pingIn with pingOut
Extend fpp-check to cover component instance definitions.
Update fpp-locate-defs to cover topologies.
Update Scope (section 1), Analyzing and Translating Models (Section 10), and any other sections to reflect the new capabilities in release 0.3.0.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.