template<class Class>
aes70::device::OcaFirmwareManager class

Template parameters
Class - Class to wrap.

This class template detects the methods and events defined for the class OcaFirmwareManager in the AES70 specification and exposes them through AES70. Note that all AES70 methods and event handlers need to be public in order to be detected.

Detects the following symbols with the corresponding detector classes:

Detects the following event handlers for property changes (of type aes70::property_change_event ):

  • OnComponentVersionsChanged with property encoder OCP1::OcaList<OCP1::Struct<OCP1::OcaUint32, OCP1::OcaUint32, OCP1::OcaUint32, OCP1::OcaUint16>>

From the AES70 standard:

Optional manager that manages versions of the different firmware and software images of the device.

  • May be instantiated at most once in any device.
  • If instantiated, must have object number 3. A device that does not support firmware updating may support the subset of this class's functions needed to report firmware version numbers to inquiring controllers. This firmware manager offers a generic interface for updating OCA devices. The actual robustness of the update process is left up to the implementer. The interface allows for any of: - Fully transactional based uploads (i.e. only committing to the newly uploaded images after all component uploads have succeeded, and reverting back to the old images if any step fails) - Partly transactional based uploads (i.e. committing to a newly uploaded image after each individual component upload succeeds, possibly leading to a device containing a mix of old and new images) - Non-transactional based uploads guarded by golden images (i.e. accepting a 'weak' spot in the upload process where interruption may lead to a corrupt regular image, which is solved by loading a read-only failsafe ("golden") image in such cases that will allow recovery of the regular image) - Non-transactional based uploads that may lead to bricked devices

Base classes

template<class Class>
class OcaManager

Public static variables

static const OcaClassVersionNumber ClassVersion
static const classid_tpl<3> ClassId
static const size_t count_events

Public static functions

static auto get_event_index(OcaEventID id, size_t index) -> AES70_ALWAYS_INLINE ptrdiff_t

Constructors, destructors, conversion operators

template<typename ... TN>
OcaFirmwareManager(TN && ... args)

Public functions

auto get_class_version() const -> uint16_t virtual
auto get_classid() const -> const classid& virtual
void init(aes70::device::device* d, uint32_t n) virtual
auto call(const OcaMethodID id, const uint8_t* src, const uint8_t* src_end, uint8_t parameterCount, const aes70::response_generator& response) -> bool virtual
auto get_event_index(const OcaEventID OcaEventID) const -> ptrdiff_t virtual

Function documentation

template<classClass>
static AES70_ALWAYS_INLINE ptrdiff_t aes70::device::OcaFirmwareManager<Class>::get_event_index(OcaEventID id, size_t index)

Internal class for finding the event index of a given EventID. Returns -1 if the given event is not defined.

template<classClass> template<typename ... TN>
aes70::device::OcaFirmwareManager<Class>::OcaFirmwareManager(TN && ... args)

Constructor which calls the constructor of Class with args forwarded.

template<classClass>
uint16_t aes70::device::OcaFirmwareManager<Class>::get_class_version() const virtual

Returns the AES70 class version of this object.

template<classClass>
const classid& aes70::device::OcaFirmwareManager<Class>::get_classid() const virtual

Returns the AES70 class id of this object.

template<classClass>
void aes70::device::OcaFirmwareManager<Class>::init(aes70::device::device* d, uint32_t n) virtual

Called when this object is added to a device.

template<classClass>
bool aes70::device::OcaFirmwareManager<Class>::call(const OcaMethodID id, const uint8_t* src, const uint8_t* src_end, uint8_t parameterCount, const aes70::response_generator& response) virtual

Internal method used to call AES70 methods in this object.

template<classClass>
ptrdiff_t aes70::device::OcaFirmwareManager<Class>::get_event_index(const OcaEventID OcaEventID) const virtual

Returns the index of a given event. The idea is that all events defined on a aes70 class can be enumerated. For events which this object does not implement, the value -1 is returned.

Variable documentation

template<classClass>
static const OcaClassVersionNumber aes70::device::OcaFirmwareManager<Class>::ClassVersion

The ClassVersion of this class according to the AES70 standard.

template<classClass>
static const classid_tpl<3> aes70::device::OcaFirmwareManager<Class>::ClassId

The ClassID of this class according to the AES70 standard.

template<classClass>
static const size_t aes70::device::OcaFirmwareManager<Class>::count_events

Number of events defined in this class. This depends on which events are implemented by Class.