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 3c1bd13..ff1b80d 100644 (file)
@@ -149,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("+");
@@ -197,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;
@@ -291,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("");
@@ -320,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;
 }
 
@@ -337,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
 };