Skip to content

Commit 25e1c42

Browse files
Use links with "latest" tag wherever possible
1 parent 6d43de9 commit 25e1c42

2 files changed

Lines changed: 33 additions & 33 deletions

File tree

docs/Device implementation tutorial.md

Lines changed: 24 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ Further detail for each step is included in the [Guidance](#guidance) section.
5454

5555
This section provides guidance in select focus areas required for device implementations.
5656

57-
For full definitions of models referred to in this document please check the models published in the [Framework](https://specs.amwa.tv/ms-05-02/branches/v1.0.x/docs/Framework.html) or the [Feature Sets Register](https://specs.amwa.tv/nmos-control-feature-sets/).
57+
For full definitions of models referred to in this document please check the models published in the [Framework](https://specs.amwa.tv/ms-05-02/latest/docs/Framework.html) or the [Feature Sets Register](https://specs.amwa.tv/nmos-control-feature-sets/).
5858

5959
The basic device workflow follows the diagram below where individual steps are detailed in the following subsections.
6060

@@ -64,13 +64,13 @@ The basic device workflow follows the diagram below where individual steps are d
6464

6565
### Modelling the control classes
6666

67-
As per the [MS-05-02](https://specs.amwa.tv/ms-05-02/branches/v1.0.x/docs/NcObject.html) specification all control classes inherit from `NcObject`.
67+
As per the [MS-05-02](https://specs.amwa.tv/ms-05-02/latest/docs/NcObject.html) specification all control classes inherit from `NcObject`.
6868

69-
This base control class exposes important properties but also [generic methods](https://specs.amwa.tv/ms-05-02/branches/v1.0.x/docs/NcObject.html#generic-getter-and-setter) for getting and setting property values.
69+
This base control class exposes important properties but also [generic methods](https://specs.amwa.tv/ms-05-02/latest/docs/NcObject.html#generic-getter-and-setter) for getting and setting property values.
7070

71-
`NcObject` also defines the [PropertyChanged](https://specs.amwa.tv/ms-05-02/branches/v1.0.x/docs/NcObject.html#propertychanged-event) event which is fundamental for subscriptions and notifications to work.
71+
`NcObject` also defines the [PropertyChanged](https://specs.amwa.tv/ms-05-02/latest/docs/NcObject.html#propertychanged-event) event which is fundamental for subscriptions and notifications to work.
7272

73-
As per the [MS-05-01](https://specs.amwa.tv/ms-05-01/branches/v1.0.x/docs/Identification.html) specification there are different types of identifiers which ultimately can be split into two categories:
73+
As per the [MS-05-01](https://specs.amwa.tv/ms-05-01/latest/docs/Identification.html) specification there are different types of identifiers which ultimately can be split into two categories:
7474

7575
- dynamic identifiers (object identifiers)
7676
- persistent identifiers (roles, class identities and data type names)
@@ -81,19 +81,19 @@ As per the [MS-05-01](https://specs.amwa.tv/ms-05-01/branches/v1.0.x/docs/Identi
8181

8282
#### Block control classes
8383

84-
As per the [MS-05-02](https://specs.amwa.tv/ms-05-02/branches/v1.0.x/docs/Blocks.html) specification blocks are containers for other control classes.
84+
As per the [MS-05-02](https://specs.amwa.tv/ms-05-02/latest/docs/Blocks.html) specification blocks are containers for other control classes.
8585

8686
All devices have at the very least a `root block` which is the top most block in the device model. The root block has an `oid` of 1 and the role of `root`.
8787

88-
Control classes which are nested inside a block are advertised using descriptors in the `members` property of [NcBlock](https://specs.amwa.tv/ms-05-02/branches/v1.0.x/docs/Framework.html#ncblock).
88+
Control classes which are nested inside a block are advertised using descriptors in the `members` property of [NcBlock](https://specs.amwa.tv/ms-05-02/latest/docs/Framework.html#ncblock).
8989

90-
The `members` property in blocks enables [device model discovery](https://specs.amwa.tv/ms-05-02/branches/v1.0.x/docs/Blocks.html#device-model-discovery) of the device structure.
90+
The `members` property in blocks enables [device model discovery](https://specs.amwa.tv/ms-05-02/latest/docs/Blocks.html#device-model-discovery) of the device structure.
9191

92-
Blocks are also useful for quickly finding a particular control class by using the [search methods](https://specs.amwa.tv/ms-05-02/branches/v1.0.x/docs/Blocks.html#search-methods) provided.
92+
Blocks are also useful for quickly finding a particular control class by using the [search methods](https://specs.amwa.tv/ms-05-02/latest/docs/Blocks.html#search-methods) provided.
9393

9494
#### Manager control classes
9595

96-
As per the [MS-05-02](https://specs.amwa.tv/ms-05-02/branches/v1.0.x/docs/Managers.html) specification managers are special classes which collate information which pertains to the entire device.
96+
As per the [MS-05-02](https://specs.amwa.tv/ms-05-02/latest/docs/Managers.html) specification managers are special classes which collate information which pertains to the entire device.
9797

9898
Typical managers included in the root block are:
9999

@@ -102,7 +102,7 @@ Typical managers included in the root block are:
102102

103103
#### Worker control classes
104104

105-
As per the [MS-05-02](https://specs.amwa.tv/ms-05-02/branches/v1.0.x/docs/Workers.html) specification workers are special classes which handle control or monitoring features for a particular specific device domain.
105+
As per the [MS-05-02](https://specs.amwa.tv/ms-05-02/latest/docs/Workers.html) specification workers are special classes which handle control or monitoring features for a particular specific device domain.
106106

107107
Different devices will need to use different workers depending on their functionality set.
108108

@@ -112,13 +112,13 @@ Indeed, sometimes devices might also need to expose vendor specific functionalit
112112

113113
[BCP-008-01](https://specs.amwa.tv/bcp-008-01/) and [BCP-008-01](https://specs.amwa.tv/bcp-008-02/) define specialised NcReceiverMonitor and NcSenderMonitor worker classes which report relevant statuses, status messages and status transition counters for relevant domains like Connectivity, Synchronization or Stream validation.
114114

115-
Objects implementing these classes MUST publish the IS-04 resource identity they are monitoring (Sender or Receiver) through the [context identity mapping mechanism](#context-identity-mapping).
115+
Objects implementing these classes publish the IS-04 resource identity they are monitoring (Sender or Receiver) through the [context identity mapping mechanism](#context-identity-mapping).
116116

117117
Sender and Receiver monitors derive from the base class NcStatusMonitor which specified an `overallStatus` property. This property combines the specific domain statuses of a monitor into a single status which can be more easily observed and displayed by a simple client.
118118

119119
#### Context identity mapping
120120

121-
[MS-05-02](https://specs.amwa.tv/ms-05-02/branches/v1.0.x/docs/NcObject.html#touchpoints) specifies an identity mapping mechanism available in the base `NcObject` class. This touchpoint mechanism can be used to associate identities from outside contexts with entities inside the control structure of the device.
121+
[MS-05-02](https://specs.amwa.tv/ms-05-02/latest/docs/NcObject.html#touchpoints) specifies an identity mapping mechanism available in the base `NcObject` class. This touchpoint mechanism can be used to associate identities from outside contexts with entities inside the control structure of the device.
122122

123123
Examples include [Receiver monitors](https://specs.amwa.tv/bcp-008-01/branches/v1.0-dev/docs/Overview.html#touchpoints-and-is-04-receivers) and [Sender monitors](https://specs.amwa.tv/bcp-008-02/branches/v1.0-dev/docs/Overview.html#touchpoints-and-is-04-senders) which is express domain health statuses for an attached stream receiver or sender.
124124

@@ -132,7 +132,7 @@ A device is expected to offer touchpoints to map identities wherever relevant (F
132132

133133
#### Typical device structure
134134

135-
As per the [MS-05-02](https://specs.amwa.tv/ms-05-02/branches/v1.0.x/docs/Blocks.html) specification all MS-05 / IS-12 devices need to expose a structure starting with the root block which always has an `oid` of 1.
135+
As per the [MS-05-02](https://specs.amwa.tv/ms-05-02/latest/docs/Blocks.html) specification all MS-05 / IS-12 devices need to expose a structure starting with the root block which always has an `oid` of 1.
136136

137137
A minimal implementation of a device will have at least two [managers](Device%20implementation%20tutorial.md#manager-control-classes) listed in the root block:
138138

@@ -147,9 +147,9 @@ A device is expected to allow its structure to be discovered (see [Block control
147147

148148
#### Non-standard classes used to model vendor specific functionality
149149

150-
Non-standard control classes can be created by branching off from a standard control class and following the class ID generation guidelines specified in [MS-05-01](https://specs.amwa.tv/ms-05-01/branches/v1.0.x/docs/Appendix_A_-_Class_ID_Format.html).
150+
Non-standard control classes can be created by branching off from a standard control class and following the class ID generation guidelines specified in [MS-05-01](https://specs.amwa.tv/ms-05-01/latest/docs/Appendix_A_-_Class_ID_Format.html).
151151

152-
Here is an example of a new worker control class called `DemoClassAlpha`. It inherits from [NcWorker](https://specs.amwa.tv/ms-05-02/branches/v1.0.x/docs/Framework.html#ncworker) which has an classId of `[1, 2]` and adds the authority key (in this case 0, but would be a negative number if the vendor has an OUI or CID) followed by the index 1.
152+
Here is an example of a new worker control class called `DemoClassAlpha`. It inherits from [NcWorker](https://specs.amwa.tv/ms-05-02/latest/docs/Framework.html#ncworker) which has an classId of `[1, 2]` and adds the authority key (in this case 0, but would be a negative number if the vendor has an OUI or CID) followed by the index 1.
153153

154154
```json
155155
{
@@ -191,7 +191,7 @@ A subsequent non-standard worker would look like this:
191191

192192
ensuring class identity uniqueness.
193193

194-
Alternatively the following diagram shows how a vendor may create a vendor specific Receiver monitor by deriving the standard Receiver monitor class.
194+
Alternatively the following diagram shows how a vendor could create a vendor specific Receiver monitor by deriving the standard Receiver monitor class.
195195

196196
| ![Non-standard branching](images/non-standard-branching.png) |
197197
|:--:|
@@ -201,11 +201,11 @@ Alternatively the following diagram shows how a vendor may create a vendor speci
201201

202202
After a device has initiated its device model structure and allocated oids to every control class instance, it then either waits for external commands which interact with these entities (e.g. get/set values, invoke actions) or sends notifications for properties which have changed if there are subscriptions.
203203

204-
[IS-12](https://specs.amwa.tv/is-12/branches/v1.0.x/docs/Protocol_messaging.html) defines the protocol messaging behavior but also what the different JSON representations are for specific [data types](https://specs.amwa.tv/is-12/branches/v1.0.x/docs/Data_type_marshalling.html).
204+
[IS-12](https://specs.amwa.tv/is-12/latest/docs/Protocol_messaging.html) defines the protocol messaging behavior but also what the different JSON representations are for specific [data types](https://specs.amwa.tv/is-12/latest/docs/Data_type_marshalling.html).
205205

206206
#### Control endpoint advertisement (in NMOS IS-04)
207207

208-
The [NMOS IS-12](https://specs.amwa.tv/is-12/branches/v1.0.x/docs/IS-04_interactions.html) specification explains that the control endpoint is advertised in the controls array as part of the NMOS device resource. The schema for the NMOS device resource is available in the [NMOS IS-04](https://specs.amwa.tv/is-04/branches/v1.3.1/APIs/schemas/with-refs/device.html) specification.
208+
The [NMOS IS-12](https://specs.amwa.tv/is-12/latest/docs/IS-04_interactions.html) specification explains that the control endpoint is advertised in the controls array as part of the NMOS device resource. The schema for the NMOS device resource is available in the [NMOS IS-04](https://specs.amwa.tv/is-04/latest/APIs/schemas/with-refs/device.html) specification.
209209

210210
It is expected that an IS-12 enabled device exposes a `urn:x-nmos:control:ncp` control type in the controls array for its NMOS device resource.
211211

@@ -234,26 +234,26 @@ Control endpoint example:
234234

235235
#### Mapping commands and returning responses
236236

237-
As per the [NMOS IS-12](https://specs.amwa.tv/is-12/branches/v1.0.x/docs/Protocol_messaging.html#command-message-type) specification a device is expected to respond to [Commands](https://specs.amwa.tv/is-12/branches/v1.0.x/docs/Sending_commands.html) sent by a controller.
237+
As per the [NMOS IS-12](https://specs.amwa.tv/is-12/latest/docs/Protocol_messaging.html#command-message-type) specification a device is expected to respond to [Commands](https://specs.amwa.tv/is-12/latest/docs/Sending_commands.html) sent by a controller.
238238

239239
`Note`: Multiple commands can be sent in the commands array.
240240

241-
As per the [MS-05-02](https://specs.amwa.tv/ms-05-02/branches/v1.0.x/docs/NcObject.html#generic-getter-and-setter) specification all control classes inherit from `NcObject` which specifies generic `Get` and `Set` methods.
241+
As per the [MS-05-02](https://specs.amwa.tv/ms-05-02/latest/docs/NcObject.html#generic-getter-and-setter) specification all control classes inherit from `NcObject` which specifies generic `Get` and `Set` methods.
242242

243243
These methods can be used by a controller to get the value of a property in a control class or set the value of a property in a control class if write allowed. Furthermore, any control class could have other methods which can be invoked in the same way as the generic methods.
244244

245-
As specified by `MS-05-02` any method response inherits from the base data type [NcMethodResult](https://specs.amwa.tv/ms-05-02/branches/v1.0.x/docs/Framework.html#ncmethodresult).
245+
As specified by `MS-05-02` any method response inherits from the base data type [NcMethodResult](https://specs.amwa.tv/ms-05-02/latest/docs/Framework.html#ncmethodresult).
246246

247247
| ![Command example](images/command-example.png) |
248248
|:--:|
249249
| _**Command example**_ |
250250

251251
#### Subscriptions, events and notifications
252252

253-
As per the [MS-05-02](https://specs.amwa.tv/ms-05-02/branches/v1.0.x/docs/NcObject.html#propertychanged-event) specification all control classes inherit from `NcObject` which specifies the `PropertyChanged` event.
253+
As per the [MS-05-02](https://specs.amwa.tv/ms-05-02/latest/docs/NcObject.html#propertychanged-event) specification all control classes inherit from `NcObject` which specifies the `PropertyChanged` event.
254254

255255
This means any object in the device model can be subscribed to in order to receive property change notifications.
256-
A device is expected to allow controllers to [Subscribe](https://specs.amwa.tv/is-12/branches/v1.0.x/docs/Subscribing_to_events.html) to object ids it is interested in by correctly handling `Subscription` messages and sending back `SubscriptionResponse` messages as specified in [NMOS IS-12](https://specs.amwa.tv/is-12/branches/v1.0.x/docs/Protocol_messaging.html).
256+
A device is expected to allow controllers to [Subscribe](https://specs.amwa.tv/is-12/latest/docs/Subscribing_to_events.html) to object ids it is interested in by correctly handling `Subscription` messages and sending back `SubscriptionResponse` messages as specified in [NMOS IS-12](https://specs.amwa.tv/is-12/latest/docs/Protocol_messaging.html).
257257

258258
A device is also expected to use the underlying WebSocket control protocol context and the subscriptions received in order to determine when a notification message needs to be sent to a controller.
259259

0 commit comments

Comments
 (0)