Merge branch 'develop'

This commit is contained in:
Matthias Ringwald 2016-05-03 16:02:54 +02:00
commit b712dda17c

View File

@ -349,6 +349,7 @@ static void hsp_ringing_timeout_handler(btstack_timer_source_t * timer){
ag_ring = 1; ag_ring = 1;
btstack_run_loop_set_timer(&hs_timeout, 2000); // 2 seconds timeout btstack_run_loop_set_timer(&hs_timeout, 2000); // 2 seconds timeout
btstack_run_loop_add_timer(&hs_timeout); btstack_run_loop_add_timer(&hs_timeout);
hsp_run();
} }
static void hsp_ringing_timer_start(void){ static void hsp_ringing_timer_start(void){
@ -363,23 +364,23 @@ static void hsp_ringing_timer_stop(void){
} }
void hsp_ag_start_ringing(void){ void hsp_ag_start_ringing(void){
if (hsp_state != HSP_W2_CONNECT_SCO) return;
ag_ring = 1; ag_ring = 1;
hsp_state = HSP_W4_RING_ANSWER; if (hsp_state == HSP_W2_CONNECT_SCO) {
hsp_state = HSP_W4_RING_ANSWER;
}
hsp_ringing_timer_start(); hsp_ringing_timer_start();
} }
void hsp_ag_stop_ringing(void){ void hsp_ag_stop_ringing(void){
ag_ring = 0; ag_ring = 0;
ag_num_button_press_received = 0; if (hsp_state == HSP_W4_RING_ANSWER){
hsp_state = HSP_W2_CONNECT_SCO; hsp_state = HSP_W2_CONNECT_SCO;
}
hsp_ringing_timer_stop(); hsp_ringing_timer_stop();
} }
static void hsp_run(void){ static void hsp_run(void){
int err;
if (ag_send_ok){ if (ag_send_ok){
if (!rfcomm_can_send_packet_now(rfcomm_cid)) { if (!rfcomm_can_send_packet_now(rfcomm_cid)) {
rfcomm_request_can_send_now_event(rfcomm_cid); rfcomm_request_can_send_now_event(rfcomm_cid);
@ -396,10 +397,17 @@ static void hsp_run(void){
return; return;
} }
ag_send_error = 0; ag_send_error = 0;
err = hsp_ag_send_str_over_rfcomm(rfcomm_cid, HSP_AG_ERROR); hsp_ag_send_str_over_rfcomm(rfcomm_cid, HSP_AG_ERROR);
if (err) { return;
ag_send_error = 1; }
if (ag_ring){
if (!rfcomm_can_send_packet_now(rfcomm_cid)) {
rfcomm_request_can_send_now_event(rfcomm_cid);
return;
} }
ag_ring = 0;
hsp_ag_send_str_over_rfcomm(rfcomm_cid, HSP_AG_RING);
return; return;
} }
@ -431,30 +439,18 @@ static void hsp_run(void){
break; break;
case HSP_W4_RING_ANSWER: case HSP_W4_RING_ANSWER:
if (ag_ring){ if (!ag_num_button_press_received) break;
if (!rfcomm_can_send_packet_now(rfcomm_cid)) {
rfcomm_request_can_send_now_event(rfcomm_cid); if (!rfcomm_can_send_packet_now(rfcomm_cid)) {
return; rfcomm_request_can_send_now_event(rfcomm_cid);
} return;
ag_ring = 0;
err = hsp_ag_send_str_over_rfcomm(rfcomm_cid, HSP_AG_RING);
if (err) {
ag_ring = 1;
}
break;
} }
if (!ag_num_button_press_received) break;
ag_send_ok = 0; ag_send_ok = 0;
ag_num_button_press_received = 0; ag_num_button_press_received = 0;
hsp_state = HSP_W2_CONNECT_SCO; hsp_state = HSP_W2_CONNECT_SCO;
err = hsp_ag_send_str_over_rfcomm(rfcomm_cid, HSP_AG_OK); hsp_ag_send_str_over_rfcomm(rfcomm_cid, HSP_AG_OK);
if (err) {
hsp_state = HSP_W4_RING_ANSWER;
ag_num_button_press_received = 1;
}
break; break;
case HSP_W2_CONNECT_SCO: case HSP_W2_CONNECT_SCO:
@ -486,10 +482,7 @@ static void hsp_run(void){
ag_microphone_gain = -1; ag_microphone_gain = -1;
char buffer[10]; char buffer[10];
sprintf(buffer, "%s=%d\r\n", HSP_MICROPHONE_GAIN, gain); sprintf(buffer, "%s=%d\r\n", HSP_MICROPHONE_GAIN, gain);
err = hsp_ag_send_str_over_rfcomm(rfcomm_cid, buffer); hsp_ag_send_str_over_rfcomm(rfcomm_cid, buffer);
if (err) {
ag_microphone_gain = gain;
}
break; break;
} }
@ -502,10 +495,7 @@ static void hsp_run(void){
ag_speaker_gain = -1; ag_speaker_gain = -1;
char buffer[10]; char buffer[10];
sprintf(buffer, "%s=%d\r\n", HSP_SPEAKER_GAIN, gain); sprintf(buffer, "%s=%d\r\n", HSP_SPEAKER_GAIN, gain);
err = hsp_ag_send_str_over_rfcomm(rfcomm_cid, buffer); hsp_ag_send_str_over_rfcomm(rfcomm_cid, buffer);
if (err) {
ag_speaker_gain = gain;
}
break; break;
} }
break; break;