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 9645330..ce9876e 100644 (file)
@@ -491,11 +491,32 @@ 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 113df62..86e3451 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 02da840..c78e344 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 1e1048f..16cfd4b 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 6838cee..2199a1f 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 a510ad7..6206a3b 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);