/*******************************************************************************
**
** Function         srvc_eng_release_channel
**
** Description      Client operation complete callback.
**
** Returns          void
**
*******************************************************************************/
void srvc_eng_release_channel (UINT16 conn_id)
{
    tSRVC_CLCB *p_clcb =  srvc_eng_find_clcb_by_conn_id(conn_id);

    p_clcb->cur_srvc_id = SRVC_ID_NONE;

    /* check pending request */
    //if (p_clcb->pend_req == NULL)
        GATT_Disconnect(p_clcb->conn_id);
}
Beispiel #2
0
/*******************************************************************************
**
** Function         srvc_eng_release_channel
**
** Description      Client operation complete callback.
**
** Returns          void
**
*******************************************************************************/
void srvc_eng_release_channel (UINT16 conn_id)
{
    tSRVC_CLCB *p_clcb =  srvc_eng_find_clcb_by_conn_id(conn_id);

    if (p_clcb == NULL)
    {
        GATT_TRACE_ERROR("%s: invalid connection id %d", __FUNCTION__, conn_id);
        return;
    }

    p_clcb->cur_srvc_id = SRVC_ID_NONE;

    /* check pending request */
    GATT_Disconnect(p_clcb->conn_id);
}
Beispiel #3
0
/*******************************************************************************
**
** Function         srvc_eng_c_cmpl_cback
**
** Description      Client operation complete callback.
**
** Returns          void
**
*******************************************************************************/
static void srvc_eng_c_cmpl_cback (UINT16 conn_id, tGATTC_OPTYPE op, tGATT_STATUS status,
                                   tGATT_CL_COMPLETE *p_data)
{
    tSRVC_CLCB   *p_clcb = srvc_eng_find_clcb_by_conn_id(conn_id);

    GATT_TRACE_EVENT2 ("srvc_eng_c_cmpl_cback() - op_code: 0x%02x  status: 0x%02x ", op, status);

    if (p_clcb == NULL)
    {
        GATT_TRACE_ERROR0("srvc_eng_c_cmpl_cback received for unknown connection");
        return;
    }

    if (p_clcb->cur_srvc_id != SRVC_ID_NONE &&
        p_clcb->cur_srvc_id <= SRVC_ID_MAX)
        srvc_eng_c_cmpl_act[p_clcb->cur_srvc_id - 1](p_clcb, op, status, p_data);
}
Beispiel #4
0
/*******************************************************************************
**
** Function         dis_gatt_c_read_dis_value_cmpl
**
** Description      Client read DIS database complete callback.
**
** Returns          void
**
*******************************************************************************/
static void dis_gatt_c_read_dis_value_cmpl(UINT16 conn_id)
{
    tSRVC_CLCB *p_clcb = srvc_eng_find_clcb_by_conn_id(conn_id);

    dis_cb.dis_read_uuid_idx = 0xff;

    srvc_eng_release_channel(conn_id);

    if (dis_cb.p_read_dis_cback && p_clcb)
    {
        LOG_INFO(LOG_TAG, "%s conn_id:%d attr_mask = 0x%04x", __func__, conn_id,
                p_clcb->dis_value.attr_mask);

        (*dis_cb.p_read_dis_cback)(p_clcb->bda, &p_clcb->dis_value);
        dis_cb.p_read_dis_cback = NULL;
    }
}