Clear mesh event handlers in the mesh deinit time
[platform/core/connectivity/bluetooth-frwk.git] / bt-oal / bluez_hal / src / bt-hal-mesh.c
index 8711b15..ff1b80d 100644 (file)
@@ -81,10 +81,12 @@ static void __bt_hal_handle_network_provisioning_status(void *buf, uint16_t len)
 {
        struct hal_ev_mesh_provision_status *ev = buf;
 
+       INFO("Mesh: Send provstatus callback");
        if (bt_hal_mesh_cbacks->provisioning_status_cb)
                bt_hal_mesh_cbacks->provisioning_status_cb(ev->status,
                                (bt_uuid_t*)&ev->net_uuid,
                                        (bt_uuid_t*)&ev->dev_uuid);
+       INFO("Mesh: Done Sending  provstatus callback");
 }
 
 static void __bt_hal_handle_network_provisioning_finished(void *buf, uint16_t len)
@@ -147,6 +149,17 @@ static void __bt_hal_handle_devkey_message_received_event(void *buf, uint16_t le
                                        ev->data_len, ev->data);
 }
 
+static void __bt_hal_handle_message_received_event(void *buf, uint16_t len)
+{
+       struct hal_ev_mesh_message_event *ev = buf;
+
+       if (bt_hal_mesh_cbacks->msg_cb)
+               bt_hal_mesh_cbacks->msg_cb((bt_uuid_t*)&ev->net_uuid,
+                       ev->source_addr,
+                               ev->dest_addr, ev->key_idx,
+                                       ev->data_len, ev->data);
+}
+
 static void __bt_hal_handle_mesh_events(int message, void *buf, uint16_t len)
 {
        DBG("+");
@@ -168,7 +181,7 @@ static void __bt_hal_handle_mesh_events(int message, void *buf, uint16_t len)
                __bt_hal_handle_network_scan_result(buf, len);
                break;
        case HAL_EV_MESH_PROVISIONING_STATUS:
-               DBG("Mesh Event: HAL_EV_MESH_SCAN_RESULT");
+               DBG("Mesh Event: HAL_EV_MESH_PROVISIONING_STATUS");
                __bt_hal_handle_network_provisioning_status(buf, len);
                break;
        case HAL_EV_MESH_PROVISIONING_FINISHED:
@@ -195,6 +208,10 @@ static void __bt_hal_handle_mesh_events(int message, void *buf, uint16_t len)
                DBG("Mesh Event: HAL_EV_MESH_DEVKEY_MESSAGE_EVENT");
                __bt_hal_handle_devkey_message_received_event(buf, len);
                break;
+       case HAL_EV_MESH_MESSAGE_EVENT:
+               DBG("Mesh Event: HAL_EV_MESH_MESSAGE_EVENT");
+               __bt_hal_handle_message_received_event(buf, len);
+               break;
        default:
                DBG("Mesh Event Currently not handled!!");
                break;
@@ -289,6 +306,15 @@ static bt_status_t mesh_key_configuration_message(bt_uuid_t *network,
                        key_idx, netkey_idx);
 }
 
+static bt_status_t mesh_model_execute_message(bt_uuid_t *network,
+               uint16_t dest, uint16_t appkey_idx, uint8_t *buf,
+               int len)
+{
+       DBG("");
+       return _bt_hal_mesh_model_execute_message(network, dest,
+                       appkey_idx, buf, len);
+}
+
 static bt_status_t init(btmesh_callbacks_t *callbacks)
 {
        DBG("");
@@ -318,6 +344,8 @@ static void cleanup(void)
        _bt_hal_mesh_unregister_dbus_handler_cb();
        _bt_hal_unregister_event_handler_cb(HAL_MESH);
 
+       _bt_hal_mesh_stack_deinit();
+
        bt_hal_mesh_cbacks = NULL;
 }
 
@@ -335,6 +363,7 @@ static btmesh_interface_t mesh_if = {
        .appkey_execute = mesh_network_appkey_operation,
        .config_send = mesh_send_configuration_message,
        .key_send = mesh_key_configuration_message,
+       .msg_execute = mesh_model_execute_message,
        .cleanup = cleanup
 };