mirror of
				https://github.com/Telecominfraproject/oopt-tai-implementations.git
				synced 2025-10-30 01:32:42 +00:00 
			
		
		
		
	mux: capability API support
Signed-off-by: Wataru Ishida <wataru.ishid@gmail.com>
This commit is contained in:
		| @@ -68,6 +68,27 @@ namespace tai::mux { | ||||
|                 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( | ||||
|                 _Out_ tai_object_id_t          *module_id, | ||||
|                 _In_ uint32_t                   attr_count, | ||||
|   | ||||
| @@ -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>(), | ||||
|                     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_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 { | ||||
|                 return m_context.oid; | ||||
| @@ -80,10 +81,10 @@ namespace tai::mux { | ||||
|                 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) { | ||||
|                 auto ret = m_context.pa->get(T, id(), count, attribute); | ||||
|                 if ( ret != TAI_STATUS_SUCCESS ) { | ||||
|                 return m_context.pa->get(T, id(), count, attribute); | ||||
|             } | ||||
|                 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); | ||||
|             } | ||||
|     }; | ||||
|  | ||||
|   | ||||
 Submodule tai_mux/oopt-tai updated: 7711e2332d...ba4b1ba6a6
									
								
							| @@ -156,6 +156,15 @@ namespace tai::mux { | ||||
|         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) { | ||||
|         S_ModuleAdapter adapter; | ||||
|         tai_object_id_t real_id; | ||||
|   | ||||
| @@ -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 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 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); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Wataru Ishida
					Wataru Ishida