Skip to content

Organizing Cclass Taxonomy #263

@ReinhardKeil

Description

@ReinhardKeil

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 Cgroup names. As a component has also a Cvendor, an name clash between different vendors can be resolved. Still it is recommended to avoid name clashes at the Cgroup level.
  • Mode: Device is used to define device specific software components. New Cgroup names 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 Cgroup names 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 Cclass are 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 Cgroup names can only be added using the same Cvendor name. It is possible to have multiple bundles that use the same Cclass name.
  • 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 exclusive one 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 Cgroup names are accepted. There might be a check for duplicates in other packs.
  • Mode: Device new Cgroup names are accepted. There is a check for a device condition as the components are device specific.
  • Mode: Board new Cgroup names are accepted. There is a check for a board condition as the components are boards specific.
  • Mode: Controlled Cgroup are checked against Open-CMSIS-Pack-Taxonomy.XML. If not present, rejected.
  • Mode: Bundle new Cgroup names 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 valid Cclass definitions, along with above mode information, owner (= vendor), contact (= email), description, and optional Cgroup information.
  • Specify the current Cclass usage in this Open-CMSIS-Pack-Taxonomy.XML file. Add Cgroup information where required.
  • This Open-CMSIS-Pack-Taxonomy.XML file 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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    In DiscussionDiscussion for this issue is open and ongoingProposalIssue that contains a proposal for change of specificationenhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions