void gatt_service_disconnected(const char *bdaddr, const char *service, int instance, int reason, void *userData)
{

    Q_UNUSED(userData)
    Q_UNUSED(instance)
    Q_UNUSED(reason)

    QString bdaddr_str = QString(bdaddr);
    QString service_str = QString(service);
    qDebug() << QString("XXXX gatt_service_disconnected: bdaddr:%1 : %2 - %3").arg(bdaddr_str).arg(service_str).arg(parse_service_uuid(service));

    DataContainer *dc = DataContainer::getInstance();

    if (instance == dc->getLinkLossServiceInstance()) {
        qDebug() << "XXXX reacting to link loss service disconnection";
        link_loss_connected = false;
        dc->setLinkLossServiceInstance(0);
        _handler->emitSignalLostLink();
    }

    if (instance == dc->getTxPowerServiceInstance()) {
        qDebug() << "XXXX reacting to tx power service disconnection";
        tx_power_connected = false;
        dc->setTxPowerServiceInstance(0);
    }

    if (instance == dc->getAlertServiceInstance()) {
        qDebug() << "XXXX reacting to immediate alert service disconnection";
        immediate_alert_connected = false;
        dc->setAlertServiceInstance(0);
    }

}
void BluetoothHandler::sendAlertRequest()
{

    if (!immediate_alert_connected) {
        qDebug() << "XXXX not yet connected to the immediate alert service so ignoring alert request from user";
        return;
    }

    qDebug() << "XXXX BluetoothHandler::sendAlertRequest()";
    uint8_t level[] = { 0 };

    switch (_alertLevel) {
    case BluetoothHandler::Off:
        level[0] = 0;
        break;
    case BluetoothHandler::Mild:
        level[0] = 1;
        break;
    case BluetoothHandler::High:
        level[0] = 2;
        break;
    default:
        level[0] = 0;
        break;
    }

    errno= 0;

    DataContainer* dc = DataContainer::getInstance();

    int alert_service_instance = dc->getAlertServiceInstance();
    uint16_t alert_level_value_handle = dc->getImmediateAlertLevelValueHandle();

    qDebug() << "XXXX setting immediate alert service alert level with bt_gatt_write_value_noresp. alert_service_instance=" << alert_service_instance;

    if (bt_gatt_write_value_noresp(alert_service_instance, alert_level_value_handle, 0, level, sizeof(level)) == EOK) {
        qDebug() << "XXXX BluetoothHandler::sendAlertRequest() - value written successfully";
    } else {
        qDebug() << "XXXX BluetoothHandler::sendAlertRequest() - errno=(" << errno<< ") :" << strerror(errno);
    }
}