TR104 Datamodel Daemon

TR104 is a diverged fork of BBFDM, aim of this repo is to provide the datamodel layer for TR104 and TR104-extensions.

For design and architecture refer to BBFDM.

TR104 supported Interfaces

TR104 supports following northbound interfaces:

  • Ubus - for seamless integration with OpenWRT based solutions
  • JSON-RPC - for integration with RDK-B based solutions

South bound interfaces are implementation dependent, but it support extending datamodel with

  • UCI
  • UBUS
  • System calls

Debugging support

Similar to bbfdmd, tr104d also provides a cli debug utility to interact with datamodel

root@eagle-44d43771b500:~# tr104d -c help
Valid commands:
   help
   get [path-expr]
   set [path-expr] [value]
   add [object]
   del [path-expr]
   instances [path-expr]
   schema [path-expr]
root@eagle-44d43771b500:~#

Note: This cli utility shall only be used for debugging, as it has datamodel parameters for TR104 only and some datamodel references might show metadata

ex:

root@eagle-44d43771b500:~# tr104d -c get Device.
Device.Services.X_IOPSYS_EU_VoiceHalInit => 0
Device.Services.VoiceService.1.Alias => cpe-1

...

Device.Services.VoiceService.1.CodecProfile.1.Codec => Device.Services.VoiceService.*.Capabilities.Codec.[Codec=="G.711ALaw"].
Device.Services.VoiceService.1.CodecProfile.1.PacketizationPeriod => 20
Device.Services.VoiceService.1.CodecProfile.1.Alias => cpe-1

Directory structure

This implementation comprises of the three main components:

├── daemon
│   ├── json_rpc  -- Daemon with JSON-RPC northbound interface
│   └── ubus      -- Daemon with UBUS northbound interface
├── libdm
│   ├── tr104     -- Contains TR104 specific datamodel definitions as per DotSO plugin
│   └── tr104_ext -- Contains TR104 vendor extensions
└── libdmtree     -- A Static library with APIs to traverse datamodel tree, used by daemon
Component Description
daemon Daemon which used to expose data model object
libdmtree It is a static library that provides many APIs used to interact with UCI configurations, Ubus objects, JSON schema, CLI commands and memory management. It also provides a mechanism to add new objects, parameters, events and operates or extend the existing DM tree using json plugin or shared library plugin.
libdm A shared library that provides the tr104 datamodel tree

How to extend the TR104 datamodel

In case of UBUS daemon tr104d, its deployed using datamodel micro-services, which provides a way to extend the datamodel further using DotSO and JSON plugins.

User has to create a DotSO or JSON plugin and then install it pre-defined tr104 plugin directory /etc/tr104/plugins/ reference

Description
No description provided
Readme BSD-3-Clause 819 KiB
Languages
C 99.3%
Shell 0.4%
CMake 0.3%