An example NMOS Device implementing IS-12.
Install dependencies
pip install -r requirements.txtRun
python main.pyThe following features are working:
- Hosting a basic IS-04 node api with only node and device resources
- Advertising the IS-12 control endpoint (
urn:x-nmos:control:ncp/v1.0) inside the IS-04 device resource - Hosting a WebSocket server which the IS-12 endpoint uses for bidirectional communication
- Receiving Command messages and sending Command Response messages by pairing their handles (IS-12 messages)
- Receiving Subscription messages and sending Notification messages whenever object properties change (IS-12 schemas)
- Offering a basic NcObject implementation
- Offering an NcBlock implementation and advertising a root block and nested block
- Implementing all NcBlock methods
- Offering a Class Manager implementation
- Implementing class discovery
- Implementing datatype discovery
The following features are planned:
- Implementing the IS-04 registration workflow so we can register resources in an NMOS registry and maintain the registrations via heartbeats
- Implementing the NcReceiverMonitor model
- Implementing the NcSenderMonitor model
- Implementing the IS-05 connection management api with senders and receivers being monitored by associated sender and receiver monitors with appropriate touchpoints
- Implementing the BCP-008-01 behaviour in regards to activation, status reporting delay, overall status mapping and transition counters
- Implementing the BCP-008-02 behaviour in regards to activation, status reporting delay, overall status mapping and transition counters
- Implementing a vendor specific class
Here are other resources available around NMOS Control & Monitoring:
-
A Rust counterpart to this repository (IS-12 device implementation)
https://github.com/cristian-recoseanu/nmos-control-rusty-device -
An open source client/controller IS-12/BCP-008 example implementation in TypeScript/NodeJS
https://github.com/cristian-recoseanu/nmos-control-scripty-client -
A comprehensive Implementers guide (INFO-006)
https://specs.amwa.tv/info-006/ -
The nmos-device-control-mock showcasing a fully compliant and tested implementation of IS-12 and BCP-008 in TypeScript/NodeJS
https://github.com/AMWA-TV/nmos-device-control-mock -
nmos-cpp open source library with a fully compliant and tested implementation of IS-12 and BCP-008 in C++
https://github.com/sony/nmos-cpp -
nmos-testing framework
https://specs.amwa.tv/nmos-testing/