mirror of
https://github.com/bluekitchen/btstack.git
synced 2025-03-31 19:20:26 +00:00
update state before sending rfcomm string in hsp_ag
This commit is contained in:
parent
7cb7a632d7
commit
fca884d2ac
40
src/hsp_ag.c
40
src/hsp_ag.c
@ -207,7 +207,7 @@ void hsp_ag_create_service(uint8_t * service, int rfcomm_channel_nr, const char
|
|||||||
}
|
}
|
||||||
|
|
||||||
static int hsp_ag_send_str_over_rfcomm(uint16_t cid, char * command){
|
static int hsp_ag_send_str_over_rfcomm(uint16_t cid, char * command){
|
||||||
if (!rfcomm_can_send_packet_now(rfcomm_cid)) return 1;
|
if (!rfcomm_can_send_packet_now(cid)) return 1;
|
||||||
int err = rfcomm_send_internal(cid, (uint8_t*) command, strlen(command));
|
int err = rfcomm_send_internal(cid, (uint8_t*) command, strlen(command));
|
||||||
if (err){
|
if (err){
|
||||||
printf("rfcomm_send_internal -> error 0X%02x", err);
|
printf("rfcomm_send_internal -> error 0X%02x", err);
|
||||||
@ -337,16 +337,20 @@ static void hsp_run(void){
|
|||||||
int err;
|
int err;
|
||||||
|
|
||||||
if (ag_send_ok){
|
if (ag_send_ok){
|
||||||
err = hsp_ag_send_str_over_rfcomm(rfcomm_cid, HSP_AG_OK);
|
|
||||||
if (!err){
|
|
||||||
ag_send_ok = 0;
|
ag_send_ok = 0;
|
||||||
|
err = hsp_ag_send_str_over_rfcomm(rfcomm_cid, HSP_AG_OK);
|
||||||
|
if (err){
|
||||||
|
ag_send_ok = 1;
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ag_send_error){
|
if (ag_send_error){
|
||||||
|
ag_send_error = 0;
|
||||||
err = hsp_ag_send_str_over_rfcomm(rfcomm_cid, HSP_AG_ERROR);
|
err = hsp_ag_send_str_over_rfcomm(rfcomm_cid, HSP_AG_ERROR);
|
||||||
if (!err) ag_send_error = 0;
|
if (err) {
|
||||||
|
ag_send_error = 1;
|
||||||
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -359,18 +363,24 @@ static void hsp_run(void){
|
|||||||
|
|
||||||
case HSP_W4_RING_ANSWER:
|
case HSP_W4_RING_ANSWER:
|
||||||
if (ag_ring){
|
if (ag_ring){
|
||||||
|
ag_ring = 0;
|
||||||
err = hsp_ag_send_str_over_rfcomm(rfcomm_cid, HSP_AG_RING);
|
err = hsp_ag_send_str_over_rfcomm(rfcomm_cid, HSP_AG_RING);
|
||||||
if (!err) ag_ring = 0;
|
if (err) {
|
||||||
|
ag_ring = 1;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!ag_num_button_press_received) break;
|
if (!ag_num_button_press_received) break;
|
||||||
|
ag_send_ok = 0;
|
||||||
|
|
||||||
|
ag_num_button_press_received = 0;
|
||||||
|
hsp_state = HSP_W2_CONNECT_SCO;
|
||||||
|
|
||||||
err = hsp_ag_send_str_over_rfcomm(rfcomm_cid, HSP_AG_OK);
|
err = hsp_ag_send_str_over_rfcomm(rfcomm_cid, HSP_AG_OK);
|
||||||
if (!err) {
|
if (err) {
|
||||||
hsp_state = HSP_W2_CONNECT_SCO;
|
hsp_state = HSP_W4_RING_ANSWER;
|
||||||
ag_send_ok = 0;
|
ag_num_button_press_received = 1;
|
||||||
ag_num_button_press_received = 0;
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case HSP_W2_CONNECT_SCO:
|
case HSP_W2_CONNECT_SCO:
|
||||||
@ -393,18 +403,26 @@ static void hsp_run(void){
|
|||||||
case HSP_ACTIVE:
|
case HSP_ACTIVE:
|
||||||
|
|
||||||
if (ag_microphone_gain >= 0){
|
if (ag_microphone_gain >= 0){
|
||||||
|
int gain = ag_microphone_gain;
|
||||||
|
ag_microphone_gain = -1;
|
||||||
char buffer[10];
|
char buffer[10];
|
||||||
sprintf(buffer, "%s=%d\r\n", HSP_MICROPHONE_GAIN, ag_microphone_gain);
|
sprintf(buffer, "%s=%d\r\n", HSP_MICROPHONE_GAIN, ag_microphone_gain);
|
||||||
err = hsp_ag_send_str_over_rfcomm(rfcomm_cid, buffer);
|
err = hsp_ag_send_str_over_rfcomm(rfcomm_cid, buffer);
|
||||||
if (!err) ag_microphone_gain = -1;
|
if (err) {
|
||||||
|
ag_microphone_gain = gain;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ag_speaker_gain >= 0){
|
if (ag_speaker_gain >= 0){
|
||||||
|
int gain = ag_speaker_gain;
|
||||||
|
ag_speaker_gain = -1;
|
||||||
char buffer[10];
|
char buffer[10];
|
||||||
sprintf(buffer, "%s=%d\r\n", HSP_SPEAKER_GAIN, ag_speaker_gain);
|
sprintf(buffer, "%s=%d\r\n", HSP_SPEAKER_GAIN, ag_speaker_gain);
|
||||||
err = hsp_ag_send_str_over_rfcomm(rfcomm_cid, buffer);
|
err = hsp_ag_send_str_over_rfcomm(rfcomm_cid, buffer);
|
||||||
if (!err) ag_speaker_gain = -1;
|
if (err) {
|
||||||
|
ag_speaker_gain = gain;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user