Skip to content

Commit

Permalink
Update Appendix A - Class ID Format.md (#31)
Browse files Browse the repository at this point in the history
* Update Appendix A - Class ID Format.md

- Change nonstandard to non-standard
- add sentence about vendor specific functionality

* Update docs/Appendix A - Class ID Format.md

Review suggestion.

Co-authored-by: jonathan-r-thorpe <[email protected]>

* Update docs/Appendix A - Class ID Format.md

Review suggestion.

Co-authored-by: jonathan-r-thorpe <[email protected]>

---------

Co-authored-by: jonathan-r-thorpe <[email protected]>
  • Loading branch information
cristian-recoseanu and jonathan-r-thorpe authored Jun 13, 2023
1 parent 418716b commit 312a1c2
Showing 1 changed file with 11 additions and 9 deletions.
20 changes: 11 additions & 9 deletions docs/Appendix A - Class ID Format.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,12 @@ Each class id is identified by using the [NcClassId](https://specs.amwa.tv/ms-05

The lineage key of a class is set of class indices that identifies the entire lineage of the class, beginning from [NcObject](https://specs.amwa.tv/ms-05-02/branches/v1.0-dev/docs/Framework.html#ncobject), extending down through all ancestor classes, and ending at the class in question. The key contains as many class indices as needed to describe the inheritance hierarchy.

To support compatible addition of nonstandard classes to the standard control model, lineage keys allow _**authority keys**_ to be interposed in the sequence of class indices. This feature is described in [Nonstandard classIds](#nonstandard-classids).
To support compatible addition of non-standard classes to the standard control model, lineage keys allow _**authority keys**_ to be interposed in the sequence of class indices. This feature is described in [Non-standard classIds](#non-standard-classids).

A control class defined by the [Control framework](https://specs.amwa.tv/ms-05-02/) is called a _**standard class**_. The lineage key of a standard class contains no authority keys.

Devices use non-standard classes to model vendor specific functionality in their device models.

An annotated [Example](#example) is given below.

## Class Indices
Expand All @@ -26,21 +28,21 @@ For example, for a standard class `NcXXX` whose lineage key is **1•2•12•7*

**1•2•12•7** designates class `NcXXX` , a child of the class whose parent is **1•2•12**.

## Nonstandard classIds
## Non-standard classIds

A class not defined by NCA is called a _**nonstandard class**_, and its classId is called a _**nonstandard classId**_. A nonstandard classId contains at least one authority key.
A class not defined by NCA is called a _**non-standard class**_, and its classId is called a _**non-standard classId**_. A non-standard classId contains at least one authority key.

A nonstandard classId is constructed by inserting an authority key into the lineage key immediately before the index of the first nonstandard class. In the following examples the authority key is indicated by "**A**", as in **{i(1)•i(2)•A•i(3) ...}**.
A non-standard classId is constructed by inserting an authority key into the lineage key immediately before the index of the first non-standard class. In the following examples the authority key is indicated by "**A**", as in **{i(1)•i(2)•A•i(3) ...}**.

The interpretation of a lineage key that includes an authority key **A** is as follows:

1. Every index to the left of **A** identifies a standard NCA class.
2. Every index to the right of **A** identifies a nonstandard class defined by the authority identified by **A**.
2. Every index to the right of **A** identifies a non-standard class defined by the authority identified by **A**.
3. The index immediately to the left of **A** identifies the class that is the parent of the class whose index is immediately to the right of **A**.

For example, the lineage key **{1•1•2•A•5}** identifies a nonstandard class whose parent is **{1•1•2}** , whose authority is **A** , and whose own (nonstandard) class index is **5**.
For example, the lineage key **{1•1•2•A•5}** identifies a non-standard class whose parent is **{1•1•2}** , whose authority is **A** , and whose own (non-standard) class index is **5**.

All class indices to the right of the authority are considered to be nonstandard. For example, the lineage key **{1•1•2•A•5•4}** identifies a nonstandard class with index **4** that is a child of the nonstandard class with index **5** that is a child of the standard class **{1•1•2}**.
All class indices to the right of the authority are considered to be non-standard. For example, the lineage key **{1•1•2•A•5•4}** identifies a non-standard class with index **4** that is a child of the non-standard class with index **5** that is a child of the standard class **{1•1•2}**.

Choice of class ordinal values to the right of an authority key is the responsibility of the identified authority.

Expand All @@ -52,6 +54,6 @@ The IEEE (Institute of Electrical and Electronic Engineers) OUI and CID are iden

## Example

| ![Standard and nonstandard class IDs for an NcGain subtree](images/ClassID.png) |
| ![Standard and non-standard class IDs for an NcGain subtree](images/ClassID.png) |
|:--:|
| **Class IDs:** Standard and nonstandard forms |
| **Class IDs:** Standard and non-standard forms |

0 comments on commit 312a1c2

Please sign in to comment.