BT_ERR("callback is NULL");
return BLUETOOTH_ERROR_INVALID_PARAM;
}
+
+ BT_INIT_PARAMS();
+ BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
+
+ ret = _bt_send_request(BT_BLUEZ_SERVICE, BT_MESH_INIT,
+ in_param1, in_param2, in_param3, in_param4, &out_param);
+
+ BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
+
+ if (ret != BLUETOOTH_ERROR_NONE) {
+ BT_ERR("Fail to init the mesh in bt-service");
+ return ret;
+ }
+
ret = _bt_init_event_handler();
if (ret != BLUETOOTH_ERROR_NONE &&
BT_EXPORT_API int bluetooth_mesh_deinit(void)
{
+ int ret;
+
_bt_unregister_event(BT_MESH_EVENT);
_bt_set_user_data(BT_MESH, NULL, NULL);
+ BT_INIT_PARAMS();
+ BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
+
+ ret = _bt_send_request(BT_BLUEZ_SERVICE, BT_MESH_DEINIT,
+ in_param1, in_param2, in_param3, in_param4, &out_param);
+
+ BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
+
+ if (ret != BLUETOOTH_ERROR_NONE) {
+ BT_ERR("Fail to init the mesh in bt-service");
+ return ret;
+ }
+
return BLUETOOTH_ERROR_NONE;
}
#include "bt-service-avrcp-tg.h"
#include "bt-service-avrcp-ctrl.h"
#include "bt-service-gatt.h"
+#include "bt-service-mesh-main.h"
#include "bt-service-mesh-util.h"
#include "bt-service-mesh-network.h"
#include "bt-service-mesh-config-client.h"
break;
}
+
+ case BT_MESH_INIT:
+ result = _bt_mesh_init();
+ break;
+
+ case BT_MESH_DEINIT:
+ result = _bt_mesh_deinit();
+ break;
+
case BT_MESH_NETWORK_CREATE: {
bluetooth_mesh_node_t node;
GSList *model_list = NULL;
case BT_PBAP_PHONEBOOK_SEARCH:
case BT_RFCOMM_LISTEN_AND_ACCEPT:
- case BT_MESH_NETWORK_CREATE:
- case BT_MESH_NETWORK_LOAD:
- case BT_MESH_NETWORK_SCAN:
- case BT_MESH_NETWORK_CANCEL_SCAN:
- case BT_MESH_NETWORK_SET_CAPABILITIES:
- case BT_MESH_NETWORK_PROVISION_DEVICE:
- case BT_MESH_AUTHENTICATION_REPLY:
- case BT_MESH_NETWORK_SET_NAME:
- case BT_MESH_NETWORK_ADD_NETKEY:
- case BT_MESH_NETWORK_DELETE_NETKEY:
- case BT_MESH_NETWORK_UPDATE_NETKEY:
- case BT_MESH_NETWORK_ADD_APPKEY:
- case BT_MESH_NETWORK_DELETE_APPKEY:
- case BT_MESH_NETWORK_UPDATE_APPKEY:
- case BT_MESH_NETWORK_GET_NETKEYS:
- case BT_MESH_NETWORK_GET_APPKEYS:
- case BT_MESH_NETWORK_GET_NODES:
- case BT_MESH_ELEMENT_GET_MODELS:
- case BT_MESH_NODE_BROWSE:
- case BT_MESH_NODE_GET_VENDOR_FEATURES:
- case BT_MESH_NODE_CONFIGURE_KEY:
- case BT_MESH_NODE_TTL_EXECUTE:
- case BT_MESH_NODE_GET_NETKEYS:
- case BT_MESH_NODE_GET_APPKEYS:
- case BT_MESH_MODEL_CONFIGURE_APPKEY:
- case BT_MESH_MODEL_GET_APPKEY_LIST:
- case BT_MESH_NETWORK_CREATE_GROUP:
- case BT_MESH_MODEL_CONFIG_GROUP_SUB:
- case BT_MESH_MODEL_CONFIG_VIRTUAL_GROUP_SUB:
- case BT_MESH_MODEL_SET_PUBLICATION:
- case BT_MESH_MODEL_GET_PUBLICATION:
- case BT_MESH_NETWORK_GET_GROUPS:
ret_val = cynara_check(p_cynara, client_creds, client_session, user_creds,
BT_PRIVILEGE_PUBLIC);
case BT_MAP_PUSH_MESSAGE:
case BT_MAP_GET_MESSAGE:
+ case BT_MESH_INIT:
+ case BT_MESH_DEINIT:
+ case BT_MESH_NETWORK_CREATE:
+ case BT_MESH_NETWORK_LOAD:
+ case BT_MESH_NETWORK_SCAN:
+ case BT_MESH_NETWORK_CANCEL_SCAN:
+ case BT_MESH_NETWORK_SET_CAPABILITIES:
+ case BT_MESH_NETWORK_PROVISION_DEVICE:
+ case BT_MESH_AUTHENTICATION_REPLY:
+ case BT_MESH_NETWORK_SET_NAME:
+ case BT_MESH_NETWORK_ADD_NETKEY:
+ case BT_MESH_NETWORK_DELETE_NETKEY:
+ case BT_MESH_NETWORK_UPDATE_NETKEY:
+ case BT_MESH_NETWORK_ADD_APPKEY:
+ case BT_MESH_NETWORK_DELETE_APPKEY:
+ case BT_MESH_NETWORK_UPDATE_APPKEY:
+ case BT_MESH_NETWORK_GET_NETKEYS:
+ case BT_MESH_NETWORK_GET_APPKEYS:
+ case BT_MESH_NETWORK_GET_NODES:
+ case BT_MESH_ELEMENT_GET_MODELS:
+ case BT_MESH_NODE_BROWSE:
+ case BT_MESH_NODE_GET_VENDOR_FEATURES:
+ case BT_MESH_NODE_CONFIGURE_KEY:
+ case BT_MESH_NODE_TTL_EXECUTE:
+ case BT_MESH_NODE_GET_NETKEYS:
+ case BT_MESH_NODE_GET_APPKEYS:
+ case BT_MESH_MODEL_CONFIGURE_APPKEY:
+ case BT_MESH_MODEL_GET_APPKEY_LIST:
+ case BT_MESH_NETWORK_CREATE_GROUP:
+ case BT_MESH_MODEL_CONFIG_GROUP_SUB:
+ case BT_MESH_MODEL_CONFIG_VIRTUAL_GROUP_SUB:
+ case BT_MESH_MODEL_SET_PUBLICATION:
+ case BT_MESH_MODEL_GET_PUBLICATION:
+ case BT_MESH_NETWORK_GET_GROUPS:
+
ret_val = cynara_check(p_cynara, client_creds, client_session, user_creds,
BT_PRIVILEGE_PLATFORM);
#include <time.h>
#include <sys/time.h>
#include <ell/ell.h>
+#include <actd/unit_control.h>
#include "bluetooth-api.h"
#include "bt-internal-types.h"
#include <oal-mesh.h>
+#define MESH_SYSTEMD_SERVICE_NAME "bluetooth-mesh.service"
+
/* Event handlers */
static void __bt_mesh_handle_pending_request_info(int result,
int service_function, void *param,
int _bt_mesh_init(void)
{
+ int ret = UNIT_CONTROL_OK;
oal_status_t status = OAL_STATUS_SUCCESS;
+ /* Launch bluetooth-meshd */
+ ret = actd_start_unit(UNIT_CONTROL_BUS_TYPE_SYSTEM,
+ MESH_SYSTEMD_SERVICE_NAME, 5000);
+
+ if (ret != UNIT_CONTROL_OK) {
+ BT_ERR("Failed to call systemact service: %d", ret);
+ return BLUETOOTH_ERROR_INTERNAL;
+ }
+
status = mesh_enable();
if (OAL_STATUS_SUCCESS != status) {
BT_ERR("Mesh: Failed to initialize Mesh profile, status: %d",
int _bt_mesh_deinit(void)
{
oal_status_t status = OAL_STATUS_SUCCESS;
+ int ret = UNIT_CONTROL_OK;
+
+ /* Terminate bluetooth-meshd */
+ ret = actd_stop_unit(UNIT_CONTROL_BUS_TYPE_SYSTEM,
+ MESH_SYSTEMD_SERVICE_NAME, 5000);
+
+ if (ret != UNIT_CONTROL_OK)
+ BT_ERR("Failed to call systemact service: %d", ret);
status = mesh_disable();
if (OAL_STATUS_SUCCESS != status) {