-
Notifications
You must be signed in to change notification settings - Fork 27
Description
Open-CMSIS-Pack should enable software re-use across software vendors and companies. To achieve this we need guidelines and this talks about the usage of Cclass/Cgroup.
Software components are defined with the element <component>.
Application Programming Interfaces (API) are defined with the element <api>.
Both use Cclass and Cgroup names to organize selectable components for software re-use.
Each Cclass and every selected Cclass/Cgroup should have one of the following modes that are validated by packchk.
- Mode: Open is used to allow extensions provided by multiple vendors. Every vendor can add additional
Cgroupnames. As a component has also aCvendor, an name clash between different vendors can be resolved. Still it is recommended to avoid name clashes at theCgrouplevel. - Mode: Device is used to define device specific software components. New
Cgroupnames are allowed, but each component must have a dependency to a device (otherwise similar to Mode: Open). - Mode: Board is used to define board specific software components. New
Cgroupnames are allowed, but each component must have a dependency to a board (otherwise similar to Mode: Open). - Mode: Controlled is used to describe that extensions to the
Cclassare possible, but controlled by the Open-CMSIS-Pack working group or by the Owner (=vendor). CMSIS, LVGL, or Memfault could be examples for such a Cclass. - Mode: Bundle is used to publish a complete software stack with fixed functionality (i.e. File System, TCP/IP stack, etc.). Additional
Cgroupnames can only be added using the sameCvendorname. It is possible to have multiple bundles that use the sameCclassname. - Mode: API is used to publish unified API header files. Implementations can be provided by various vendors using a Csub name in the element. Depending on the attribute
exclusiveone or more implementations may be provided. This mode is triggered by the element<apis>of a software pack.
An unexpected Cclass or Cgroup naming clash may result to incompatible operation of the Open-CMSIS-Pack system.
Sometimes even established software packs become unusable or users get confused by way components are represented.
It is therefore required to organize the Cclass/Cgroup taxonomy at the level of the Open-CMSIS-Pack project beyond the current information in the Open-CMSIS-Pack specification that is described under the element.
The implications (that should be verified by tools like packchk) of the different modes are:
- Mode: Open new
Cgroupnames are accepted. There might be a check for duplicates in other packs. - Mode: Device new
Cgroupnames are accepted. There is a check for a device condition as the components are device specific. - Mode: Board new
Cgroupnames are accepted. There is a check for a board condition as the components are boards specific. - Mode: Controlled
Cgroupare checked againstOpen-CMSIS-Pack-Taxonomy.XML. If not present, rejected. - Mode: Bundle new
Cgroupnames are accepted. There is a check that a bundle with name is defined. - Mode: API same as Mode:Controlled as new APIs can only be added by the Open-CMSIS-Pack working group or by the Owner (=vendor).
Proposed steps:
- Define a
Open-CMSIS-Pack-Taxonomy.XML(or YML) file that lists validCclassdefinitions, along with above mode information, owner (= vendor), contact (= email), description, and optionalCgroupinformation. - Specify the current Cclass usage in this
Open-CMSIS-Pack-Taxonomy.XMLfile. Add Cgroup information where required. - This
Open-CMSIS-Pack-Taxonomy.XMLfile is used by packchk for validation but could be also used to display information about the registered Cclass/Cgroup. - Use https://github.com/Open-CMSIS-Pack/Open-CMSIS-Pack-Taxonomy to manage the
Open-CMSIS-Pack-Taxonomy.XML. Implement a contribution process similar to Simple-Icons - Explore removal of element from software packs (*.PDSC files) as otherwise it may result in inconsistent definitions.