From 76fb2d7660e8791d368ff9c2dda4c9d832c5f6e1 Mon Sep 17 00:00:00 2001 From: Jiwan Kim Date: Thu, 1 Jun 2017 13:39:35 +0900 Subject: [PATCH] Change mesh APIs - Create a new API : mesh_set_event_cb() - Remove event_callback parameter from mesh_enable() - Change not to execute mesh_disable() on test app termination --- include/mesh.h | 26 +++++++++++++++++++++++--- include/mesh_dbus.h | 3 ++- src/mesh.c | 25 ++++++++++++++++++++----- src/mesh_dbus.c | 12 +++++++++--- test/main.c | 4 +--- test/mesh_device.c | 9 ++++++++- 6 files changed, 63 insertions(+), 16 deletions(-) diff --git a/include/mesh.h b/include/mesh.h index 9645330..ce9876e 100644 --- a/include/mesh.h +++ b/include/mesh.h @@ -491,10 +491,31 @@ int mesh_deinitialize(mesh_h handle); * * @pre The callback must be registered with mesh_enable() * - * @see mesh_enable() + * @see mesh_set_event_cb() */ typedef void (*mesh_event_cb)(mesh_event_e event_type, mesh_event_data_s* event); +/** + * @brief Sets event handler for the mesh network service. + * @details Sets event handler to get events from the mesh network service. + * + * @since_tizen 4.0 + * + * @param[in] handle The mesh handle + * @param[in] event_handler The event handler + * + * @return 0 on success, otherwise a negative error value. + * @retval #MESH_ERROR_NONE Successful + * @retval #MESH_ERROR_INVALID_PARAMETER Invalid parameter + * @retval #MESH_ERROR_IO_ERROR Unexpected d-bus error + * @retval #MESH_ERROR_NOT_SUPPORTED Not supported + * + * @see mesh_initialize() + * @see mesh_deinitialize() + * + */ +int mesh_set_event_cb(mesh_h handle, mesh_event_cb event_handler); + /** * @brief Enable the mesh service. * @details All this function to start mesh service @@ -505,7 +526,6 @@ typedef void (*mesh_event_cb)(mesh_event_e event_type, mesh_event_data_s* event) * if mesh service is no longer needed. * * @param[in] handle The mesh handle - * @param[in] event_handler The event handler * * @return 0 on success, otherwise a negative error value. * @retval #MESH_ERROR_NONE Successful @@ -518,7 +538,7 @@ typedef void (*mesh_event_cb)(mesh_event_e event_type, mesh_event_data_s* event) * @see mesh_disable() * */ -int mesh_enable(mesh_h handle, mesh_event_cb event_handler); +int mesh_enable(mesh_h handle); /** * @brief disable the mesh service. diff --git a/include/mesh_dbus.h b/include/mesh_dbus.h index 113df62..86e3451 100644 --- a/include/mesh_dbus.h +++ b/include/mesh_dbus.h @@ -36,7 +36,8 @@ extern "C" { int _mesh_dbus_start(mesh_h m); int _mesh_dbus_stop(mesh_h m); -int _mesh_enable(mesh_h handle, mesh_event_cb event_handler); +int _mesh_set_event_cb(mesh_h handle, mesh_event_cb event_handler); +int _mesh_enable(mesh_h handle); int _mesh_disable(mesh_h handle); int _mesh_scan(mesh_h handle); int _mesh_specific_scan(mesh_h handle, const char* ssid, int channel); diff --git a/src/mesh.c b/src/mesh.c index 02da840..c78e344 100644 --- a/src/mesh.c +++ b/src/mesh.c @@ -308,25 +308,40 @@ EXPORT_API int mesh_initialize(mesh_h *mesh) return MESH_ERROR_NONE; } -EXPORT_API int mesh_deinitialize(mesh_h mesh) +EXPORT_API int mesh_deinitialize(mesh_h handle) { CHECK_FEATURE_SUPPORTED(MESH_FEATURE); - _mesh_dbus_stop(mesh); + _mesh_dbus_stop(handle); - LOGI("Destroy handle: %p", mesh); + LOGI("Destroy handle: %p", handle); return MESH_ERROR_NONE; } -EXPORT_API int mesh_enable(mesh_h handle, mesh_event_cb event_handler) +EXPORT_API int mesh_set_event_cb(mesh_h handle, mesh_event_cb event_handler) { int rv = 0; CHECK_FEATURE_SUPPORTED(MESH_FEATURE); RETV_IF(NULL == handle, MESH_ERROR_INVALID_PARAMETER); - rv = _mesh_enable(handle, event_handler); + rv = _mesh_set_event_cb(handle, event_handler); + if (rv == MESH_ITNL_ERR_IO_ERROR) { + return MESH_ERROR_IO_ERROR; + } + + return MESH_ERROR_NONE; +} + +EXPORT_API int mesh_enable(mesh_h handle) +{ + int rv = 0; + CHECK_FEATURE_SUPPORTED(MESH_FEATURE); + + RETV_IF(NULL == handle, MESH_ERROR_INVALID_PARAMETER); + + rv = _mesh_enable(handle); if (rv == MESH_ITNL_ERR_IO_ERROR) { return MESH_ERROR_IO_ERROR; } diff --git a/src/mesh_dbus.c b/src/mesh_dbus.c index 1e1048f..16cfd4b 100644 --- a/src/mesh_dbus.c +++ b/src/mesh_dbus.c @@ -387,7 +387,15 @@ static void _mesh_remove_mpath() g_mpath.count = 0; } -int _mesh_enable(mesh_h handle, mesh_event_cb event_handler) +int _mesh_set_event_cb(mesh_h handle, mesh_event_cb event_handler) +{ + struct mesh_handle *h = handle; + RETV_IF(NULL == h, MESH_ITNL_ERR_INVALID_PARAM); + h->event_handler = event_handler; + return MESH_ITNL_ERR_NONE; +} + +int _mesh_enable(mesh_h handle) { GVariant *variant = NULL; unsigned int result; @@ -396,8 +404,6 @@ int _mesh_enable(mesh_h handle, mesh_event_cb event_handler) RETV_IF(NULL == h->dbus_connection, MESH_ITNL_ERR_IO_ERROR); - h->event_handler = event_handler; - variant = g_dbus_connection_call_sync(h->dbus_connection, MESH_MANAGER_NAME, MESH_MANAGER_OBJ_PATH, diff --git a/test/main.c b/test/main.c index 6838cee..2199a1f 100644 --- a/test/main.c +++ b/test/main.c @@ -162,10 +162,8 @@ OUT: if (g_found_network_list) g_list_free(g_found_network_list); - if (mesh) { - mesh_disable(mesh); + if (mesh) mesh_deinitialize(mesh); - } g_main_loop_unref(mainloop); msg("******* Bye bye *******"); diff --git a/test/mesh_device.c b/test/mesh_device.c index a510ad7..6206a3b 100644 --- a/test/mesh_device.c +++ b/test/mesh_device.c @@ -65,7 +65,14 @@ static int run_mesh_enable(MManager *mm, struct menu_data *menu) int ret; msg("enable"); - ret = mesh_enable(mesh, event_cb); + ret = mesh_set_event_cb(mesh, event_cb); + if (ret != 0) { + msg("Failed to set callback for mesh network: [%s(0x%X)]", + mesh_error_to_string(ret), ret); + return RET_FAILURE; + } + + ret = mesh_enable(mesh); if (ret != 0) { msg("Failed to enable mesh network: [%s(0x%X)]", mesh_error_to_string(ret), ret); -- 2.34.1