/******************************************************************************* ** ** Function bta_hf_client_rfc_data ** ** Description Read and process data from RFCOMM. ** ** ** Returns void ** *******************************************************************************/ void bta_hf_client_rfc_data(tBTA_HF_CLIENT_DATA *p_data) { UINT16 len; char buf[BTA_HF_CLIENT_RFC_READ_MAX]; UNUSED(p_data); memset(buf, 0, sizeof(buf)); /* read data from rfcomm; if bad status, we're done */ while (PORT_ReadData(bta_hf_client_cb.scb.conn_handle, buf, BTA_HF_CLIENT_RFC_READ_MAX, &len) == PORT_SUCCESS) { /* if no data, we're done */ if (len == 0) { break; } bta_hf_client_at_parse(buf, len); /* no more data to read, we're done */ if (len < BTA_HF_CLIENT_RFC_READ_MAX) { break; } } }
/******************************************************************************* ** ** Function bta_ag_rfc_data ** ** Description Read and process data from RFCOMM. ** ** ** Returns void ** *******************************************************************************/ void bta_ag_rfc_data(tBTA_AG_SCB *p_scb, tBTA_AG_DATA *p_data) { UINT16 len; char buf[BTA_AG_RFC_READ_MAX]; UNUSED(p_data); memset(buf, 0, BTA_AG_RFC_READ_MAX); APPL_TRACE_DEBUG ("bta_ag_rfc_data"); /* do the following */ for(;;) { /* read data from rfcomm; if bad status, we're done */ if (PORT_ReadData(p_scb->conn_handle, buf, BTA_AG_RFC_READ_MAX, &len) != PORT_SUCCESS) { break; } /* if no data, we're done */ if (len == 0) { break; } /* run AT command interpreter on data */ bta_sys_busy(BTA_ID_AG, p_scb->app_id, p_scb->peer_addr); bta_ag_at_parse(&p_scb->at_cb, buf, len); if ((p_scb->sco_idx != BTM_INVALID_SCO_INDEX) && bta_ag_sco_is_open(p_scb)) { APPL_TRACE_IMP ("bta_ag_rfc_data, change link policy for SCO"); bta_sys_sco_open(BTA_ID_AG, p_scb->app_id, p_scb->peer_addr); } else { bta_sys_idle(BTA_ID_AG, p_scb->app_id, p_scb->peer_addr); } /* no more data to read, we're done */ if (len < BTA_AG_RFC_READ_MAX) { break; } } }