mux: capability API support

Signed-off-by: Wataru Ishida <wataru.ishid@gmail.com>
This commit is contained in:
Wataru Ishida
2021-09-02 03:56:48 +00:00
parent dc5690a10b
commit acc455f87e
5 changed files with 38 additions and 6 deletions

View File

@@ -68,6 +68,27 @@ namespace tai::mux {
return TAI_STATUS_NOT_SUPPORTED; return TAI_STATUS_NOT_SUPPORTED;
} }
tai_status_t get_capabilities(tai_object_type_t type, tai_object_id_t oid, uint32_t count, tai_attribute_capability_t *list) {
switch (type) {
case TAI_OBJECT_TYPE_MODULE:
if ( m_module_api == nullptr || m_module_api->get_module_capabilities == nullptr ) {
return TAI_STATUS_NOT_SUPPORTED;
}
return m_module_api->get_module_capabilities(oid, count, list);
case TAI_OBJECT_TYPE_NETWORKIF:
if ( m_netif_api == nullptr || m_netif_api->get_network_interface_capabilities == nullptr ) {
return TAI_STATUS_NOT_SUPPORTED;
}
return m_netif_api->get_network_interface_capabilities(oid, count, list);
case TAI_OBJECT_TYPE_HOSTIF:
if ( m_hostif_api == nullptr || m_hostif_api->get_host_interface_capabilities == nullptr ) {
return TAI_STATUS_NOT_SUPPORTED;
}
return m_hostif_api->get_host_interface_capabilities(oid, count, list);
}
return TAI_STATUS_NOT_SUPPORTED;
}
tai_status_t create_module( tai_status_t create_module(
_Out_ tai_object_id_t *module_id, _Out_ tai_object_id_t *module_id,
_In_ uint32_t attr_count, _In_ uint32_t attr_count,

View File

@@ -61,7 +61,8 @@ namespace tai::mux {
Object(S_PlatformAdapter pa) : m_context{pa}, tai::framework::Object<T>(0, nullptr, std::make_shared<tai::framework::FSM>(), Object(S_PlatformAdapter pa) : m_context{pa}, tai::framework::Object<T>(0, nullptr, std::make_shared<tai::framework::FSM>(),
reinterpret_cast<void*>(&m_context), reinterpret_cast<void*>(&m_context),
std::bind(&Object::default_setter, this, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3, std::placeholders::_4, std::placeholders::_5), std::bind(&Object::default_setter, this, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3, std::placeholders::_4, std::placeholders::_5),
std::bind(&Object::default_getter, this, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3, std::placeholders::_4)) {} std::bind(&Object::default_getter, this, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3, std::placeholders::_4),
std::bind(&Object::default_cap_getter, this, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3, std::placeholders::_4)) {}
tai_object_id_t id() const { tai_object_id_t id() const {
return m_context.oid; return m_context.oid;
@@ -80,10 +81,10 @@ namespace tai::mux {
return m_context.pa->set(T, id(), count, attribute); return m_context.pa->set(T, id(), count, attribute);
} }
tai_status_t default_getter(uint32_t count, tai_attribute_t* const attribute, void* const user, const tai::framework::error_info* const info) { tai_status_t default_getter(uint32_t count, tai_attribute_t* const attribute, void* const user, const tai::framework::error_info* const info) {
auto ret = m_context.pa->get(T, id(), count, attribute); return m_context.pa->get(T, id(), count, attribute);
if ( ret != TAI_STATUS_SUCCESS ) {
} }
return ret; tai_status_t default_cap_getter(uint32_t count, tai_attribute_capability_t* const caps, void* const user, const tai::framework::error_info* const info) {
return m_context.pa->get_capability(T, id(), count, caps);
} }
}; };

View File

@@ -156,6 +156,15 @@ namespace tai::mux {
return TAI_STATUS_SUCCESS; return TAI_STATUS_SUCCESS;
} }
tai_status_t PlatformAdapter::get_capability(const tai_object_type_t& type, const tai_object_id_t& id, uint32_t count, tai_attribute_capability_t* const caps) {
S_ModuleAdapter adapter;
tai_object_id_t real_id;
if ( get_mapping(id, &adapter, &real_id) != 0 ) {
return TAI_STATUS_FAILURE;
}
return adapter->get_capabilities(type, real_id, count, caps);
}
tai_status_t PlatformAdapter::set(const tai_object_type_t& type, const tai_object_id_t& id, uint32_t count, const tai_attribute_t* const attrs) { tai_status_t PlatformAdapter::set(const tai_object_type_t& type, const tai_object_id_t& id, uint32_t count, const tai_attribute_t* const attrs) {
S_ModuleAdapter adapter; S_ModuleAdapter adapter;
tai_object_id_t real_id; tai_object_id_t real_id;

View File

@@ -112,6 +112,7 @@ namespace tai::mux {
tai_status_t get(const tai_object_type_t& type, const tai_object_id_t& id, uint32_t count, tai_attribute_t* const attrs); tai_status_t get(const tai_object_type_t& type, const tai_object_id_t& id, uint32_t count, tai_attribute_t* const attrs);
tai_status_t set(const tai_object_type_t& type, const tai_object_id_t& id, uint32_t count, const tai_attribute_t* const attrs); tai_status_t set(const tai_object_type_t& type, const tai_object_id_t& id, uint32_t count, const tai_attribute_t* const attrs);
tai_status_t get_capability(const tai_object_type_t& type, const tai_object_id_t& id, uint32_t count, tai_attribute_capability_t* const caps);
virtual tai_status_t get_mux_attribute(const tai_object_type_t& type, const tai_object_id_t& oid, tai_attribute_t* const attribute); virtual tai_status_t get_mux_attribute(const tai_object_type_t& type, const tai_object_id_t& oid, tai_attribute_t* const attribute);
virtual tai_status_t set_mux_attribute(const tai_object_type_t& type, const tai_object_id_t& oid, const tai_attribute_t* const attribute, tai::framework::FSMState* state); virtual tai_status_t set_mux_attribute(const tai_object_type_t& type, const tai_object_id_t& oid, const tai_attribute_t* const attribute, tai::framework::FSMState* state);