Change mesh APIs
authorJiwan Kim <ji-wan.kim@samsung.com>
Thu, 1 Jun 2017 04:39:35 +0000 (13:39 +0900)
committersaerome.kim <saerome.kim@samsung.com>
Mon, 17 Jul 2017 02:09:10 +0000 (11:09 +0900)
- 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
include/mesh_dbus.h
src/mesh.c
src/mesh_dbus.c
test/main.c
test/mesh_device.c

index 96453300678fb5a53c3d8577440cec4ecd972776..ce9876e81dd413e60a56fa1047ac362e2bff2915 100644 (file)
@@ -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.
index 113df62c794c2ab17ce7800f3b8c9063bbf75c3b..86e34511d37ede40d8e3a5498ca2a832614b7f2e 100644 (file)
@@ -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);
index 02da840e642a71a9e97588d6423b79f0975dfc60..c78e34440a820e2f810e307f629e89049fb7f207 100644 (file)
@@ -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;
        }
index 1e1048f73765462de0f8fc16e74500fed14f2cee..16cfd4b170023081d3bd3c5886b7409d56ff8317 100644 (file)
@@ -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,
index 6838cee97dab7ddf9444a61e98dbc8aa7f74a869..2199a1f22bec1853673bbdba550fa0871b24ca7c 100644 (file)
@@ -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 *******");
index a510ad7ce7ec7c15cb901457bffdfedcb77f24d6..6206a3b80606321f5cb256bfd5e7fb0accff4616 100644 (file)
@@ -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);