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 readTxPowerLevel()
{

    DataContainer* dc = DataContainer::getInstance();
    uint8_t *tx_power_level;
    tx_power_level = (uint8_t*) malloc(sizeof(uint8_t));

    // The Transmit Power Level characteristic represents the current transmit power level in dBm, and the level ranges from -100 dBm to +20 dBm to a
    // resolution of 1 dBm.
    //
    // Units of dBm are decibels relative to 1 mW of power, hence, 0 dBm 1 mW.
    // 1/100 mW is -20 dBm and 100 mW is +20 dBm. Powers less than 1 mW are always negative dBm values, and powers greater than
    // 1 mW are always positive.

    errno= 0;
    int result = bt_gatt_read_value(dc->getTxPowerServiceInstance(), dc->getTxPowerLevelValueHandle(), 0, tx_power_level, sizeof(uint8_t), 0);
    if (result < 0) {
        qDebug() << "XXXX bt_gatt_read_value - errno=(" << errno<< ") :" << strerror(errno);
    }

    int power_level_dbm = *tx_power_level;
    if (power_level_dbm > 128) {
        power_level_dbm = 255 - power_level_dbm;
    }

    dc->setTxPowerLevel(power_level_dbm);

    free(tx_power_level);

    qDebug() << "XXXX read TX power level. result=" << result << " : tx_power_level=" << *tx_power_level << " : power_level_dbm=" << power_level_dbm;
}