*
* @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
*
* 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
* @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.
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);
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;
}
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;
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,
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 *******");
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);