From 76b252a543c94e5e6a5b48a48d19a95c5c0bc4e5 Mon Sep 17 00:00:00 2001 From: Wataru Ishida Date: Tue, 5 Feb 2019 16:30:22 -0800 Subject: [PATCH] mux: adapt to the lastest oopt-tai Signed-off-by: Wataru Ishida --- tai_mux/module_adapter.cpp | 3 +++ tai_mux/module_adapter.hpp | 5 ++--- tai_mux/mux.cpp | 22 ++++++++++++++++++---- tai_mux/mux.hpp | 6 ++++-- tai_mux/oopt-tai | 2 +- tai_mux/static_platform_adapter.cpp | 2 ++ tai_mux/tai.cpp | 10 +++++++--- tai_mux/test/test.cpp | 12 +++++------- 8 files changed, 42 insertions(+), 20 deletions(-) diff --git a/tai_mux/module_adapter.cpp b/tai_mux/module_adapter.cpp index ba1b4b1..77d8ff8 100644 --- a/tai_mux/module_adapter.cpp +++ b/tai_mux/module_adapter.cpp @@ -3,6 +3,7 @@ #include #include #include +#include #define LOAD_TAI_API(name) \ m_ ## name = (name ## _fn) dlsym(m_dl, #name); \ @@ -19,6 +20,8 @@ ModuleAdapter::ModuleAdapter(const std::string& name, uint64_t flags, const tai_ LOAD_TAI_API(tai_api_uninitialize) LOAD_TAI_API(tai_api_query) LOAD_TAI_API(tai_log_set) + LOAD_TAI_API(tai_object_type_query) + LOAD_TAI_API(tai_module_id_query) std::stringstream ss; diff --git a/tai_mux/module_adapter.hpp b/tai_mux/module_adapter.hpp index 32e0785..370c605 100644 --- a/tai_mux/module_adapter.hpp +++ b/tai_mux/module_adapter.hpp @@ -40,12 +40,11 @@ class ModuleAdapter { tai_status_t create_module( _Out_ tai_object_id_t *module_id, _In_ uint32_t attr_count, - _In_ const tai_attribute_t *attr_list, - _In_ tai_module_notification_t *notifications) { + _In_ const tai_attribute_t *attr_list) { if ( m_module_api == nullptr || m_module_api->create_module == nullptr ) { return TAI_STATUS_FAILURE; } - return m_module_api->create_module(module_id, attr_count, attr_list, notifications); + return m_module_api->create_module(module_id, attr_count, attr_list); } tai_status_t remove_module( diff --git a/tai_mux/mux.cpp b/tai_mux/mux.cpp index 05d89a4..8f6081b 100644 --- a/tai_mux/mux.cpp +++ b/tai_mux/mux.cpp @@ -1,4 +1,5 @@ #include "mux.hpp" +#include Multiplexier *g_mux; @@ -175,8 +176,7 @@ tai_status_t Multiplexier::get_network_interface_attributes(_In_ tai_object_id_t tai_status_t Multiplexier::create_module( _Out_ tai_object_id_t *module_id, _In_ uint32_t attr_count, - _In_ const tai_attribute_t *attr_list, - _In_ tai_module_notification_t *notifications) { + _In_ const tai_attribute_t *attr_list) { if ( g_mux == nullptr ) { return TAI_STATUS_UNINITIALIZED; } @@ -195,7 +195,7 @@ tai_status_t Multiplexier::create_module( tai_object_id_t id; - auto ret = m_adapter->create_module(&id, attr_count, attr_list, notifications); + auto ret = m_adapter->create_module(&id, attr_count, attr_list); if ( ret != TAI_STATUS_SUCCESS ) { return ret; } @@ -260,10 +260,24 @@ tai_status_t Multiplexier::get_module_attributes(_In_ tai_object_id_t module_id, return m_adapter->get_module_attributes(id, attr_count, attr_list); } +tai_object_type_t Multiplexier::object_type_query(_In_ tai_object_id_t id) { + tai_object_id_t realid; + ModuleAdapter *m_adapter; + if ( g_mux == nullptr ) { + return TAI_OBJECT_TYPE_NULL; + } + + if ( g_mux->get_mapping(id, &m_adapter, &realid) != 0 ) { + return TAI_OBJECT_TYPE_NULL; + } + return m_adapter->tai_object_type_query(realid); +} + Multiplexier* create_mux(platform_adapter_t pa_kind, uint64_t flags, const tai_service_method_table_t* services) { try { return new Multiplexier(pa_kind, flags, services); - } catch (...) { + } catch (const std::runtime_error& e) { + std::cerr << e.what() << std::endl; return nullptr; } } diff --git a/tai_mux/mux.hpp b/tai_mux/mux.hpp index e952ee6..0402c2d 100644 --- a/tai_mux/mux.hpp +++ b/tai_mux/mux.hpp @@ -56,8 +56,7 @@ class Multiplexier { tai_status_t create_module( _Out_ tai_object_id_t *module_id, _In_ uint32_t attr_count, - _In_ const tai_attribute_t *attr_list, - _In_ tai_module_notification_t *notifications); + _In_ const tai_attribute_t *attr_list); tai_status_t remove_module( _In_ tai_object_id_t module_id); @@ -110,6 +109,9 @@ class Multiplexier { _In_ uint32_t attr_count, _Out_ tai_attribute_t *attr_list); + tai_object_type_t object_type_query( + _In_ tai_object_id_t id); + private: Multiplexier(const Multiplexier&){} void operator = (const Multiplexier&){} diff --git a/tai_mux/oopt-tai b/tai_mux/oopt-tai index 865afb0..5bea26d 160000 --- a/tai_mux/oopt-tai +++ b/tai_mux/oopt-tai @@ -1 +1 @@ -Subproject commit 865afb02014912a0c447475d700ddbc48c6dcb40 +Subproject commit 5bea26d46b0191fd1a09e7f8a6ae17e6857f16cc diff --git a/tai_mux/static_platform_adapter.cpp b/tai_mux/static_platform_adapter.cpp index faa6126..2a57aca 100644 --- a/tai_mux/static_platform_adapter.cpp +++ b/tai_mux/static_platform_adapter.cpp @@ -18,6 +18,8 @@ StaticPlatformAdapter::StaticPlatformAdapter(uint64_t flags, const tai_service_m std::map map; auto c = json::parse(config); + m_services.module_presence = nullptr; + for ( json::iterator it = c.begin(); it != c.end(); ++it ) { auto location = it.key(); auto lib = it.value().get(); diff --git a/tai_mux/tai.cpp b/tai_mux/tai.cpp index 4fd1a5d..00bf5a6 100644 --- a/tai_mux/tai.cpp +++ b/tai_mux/tai.cpp @@ -1,5 +1,6 @@ #include "mux.hpp" #include +#include extern Multiplexier *g_mux; @@ -148,10 +149,9 @@ tai_network_interface_api_t mux_network_interface_api = { static tai_status_t mux_create_module( _Out_ tai_object_id_t *module_id, _In_ uint32_t attr_count, - _In_ const tai_attribute_t *attr_list, - _In_ tai_module_notification_t *notifications) + _In_ const tai_attribute_t *attr_list) { - return g_mux->create_module(module_id, attr_count, attr_list, notifications); + return g_mux->create_module(module_id, attr_count, attr_list); } static tai_status_t mux_remove_module(_In_ tai_object_id_t module_id) @@ -223,3 +223,7 @@ tai_status_t tai_api_query(_In_ tai_api_t tai_api_id, tai_status_t tai_log_set(tai_api_t tai_api_id, tai_log_level_t log_level) { return TAI_STATUS_SUCCESS; } + +tai_object_type_t tai_object_type_query(tai_object_id_t id) { + return g_mux->object_type_query(id); +} diff --git a/tai_mux/test/test.cpp b/tai_mux/test/test.cpp index c012029..5417163 100644 --- a/tai_mux/test/test.cpp +++ b/tai_mux/test/test.cpp @@ -18,8 +18,6 @@ tai_module_api_t *module_api; tai_network_interface_api_t *netif_api; tai_host_interface_api_t *hostif_api; -tai_module_notification_t notification = {0}; - int fd; std::queue> q; std::mutex m; @@ -67,12 +65,12 @@ int module::create_netif(uint32_t num) { list.clear(); - attr.id = TAI_NETWORK_INTERFACE_ATTR_TX_ENABLE; - attr.value.booldata = true; + attr.id = TAI_NETWORK_INTERFACE_ATTR_TX_DIS; + attr.value.booldata = false; list.push_back(attr); - attr.id = TAI_NETWORK_INTERFACE_ATTR_TX_CHANNEL; - attr.value.u16 = 10; + attr.id = TAI_NETWORK_INTERFACE_ATTR_TX_LASER_FREQ; + attr.value.u64 = 191300000000000; list.push_back(attr); attr.id = TAI_NETWORK_INTERFACE_ATTR_TX_GRID_SPACING; @@ -125,7 +123,7 @@ tai_status_t create_module(const std::string& location, tai_object_id_t& m_id) { attr.value.charlist.count = location.size(); attr.value.charlist.list = (char*)location.c_str(); list.push_back(attr); - return module_api->create_module(&m_id, list.size(), list.data(), ¬ification); + return module_api->create_module(&m_id, list.size(), list.data()); } int main() {