...
DriverProvider & DriverAdminService
DriverProvider
is an entity capable of providing device drivers and their behaviours:
- Set<Driver> getDrivers()
DriverAdminService
is an ONOS service for tracking and managing device drivers indirectly by managing driver providers as follows:
Set<DriverProvider> getProviders()
registerProvider(DriverProvider)
unregisterProvider(DriverProvider)
Note that different driver providers can contribute behaviours to the same driver. This way, drivers for support of OpenFlow table pipelines can come from one source, while support for the PoE configuration of the device can come from another.
DriverService
Service for locating DriverService
is the principal service that apps and other ONOS subsystems can use to locate appropriate drivers for the device via the following:
by driver name
by device manufacturer, H/W version & S/W version
by supported Behaviour
- by device ID
Behaviours
Different facets of behaviour for either talking about a device or for interacting with a device are modeled as derivatives of Behaviour
and HandlerBehaviour
interfaces, respectively. The reason for differentiating between the two lies in the slightly different context required.
Contexts
DriverData
is a container for data learned about a device in prior interactions. It
provides
Behaviours
for talking about a devicehas parent
Driver
In this way, even interrogations about different aspects of a device are channeled through abstractions.
Similarly, DriverHandler
is a context for interacting with a device.
provides
Behaviours
for interacting with a devicehas
DriverData
has parent
Driver
So as you can see, in order to talk about a specific aspect of information learned about a device, but in the absence of a connection to the device, one requires access to at least DriverData
, which represents the data learned in prior interactions with a device, whereas direct interactions with a device require a slightly more comprehensive DriverHandler
context, which include DriverData for recording learned information, but also additional information required for connecting to the device and/or interacting with other ONOS services on behalf of the device.