diff --git a/src/classic/hfp_ag.c b/src/classic/hfp_ag.c index c62de3498..be7969a32 100644 --- a/src/classic/hfp_ag.c +++ b/src/classic/hfp_ag.c @@ -412,24 +412,16 @@ static int hfp_ag_send_retrieve_indicators_cmd_via_generator(uint16_t cid, hfp_c static int hfp_ag_send_retrieve_indicators_status_cmd(uint16_t cid){ char buffer[40]; int offset = snprintf(buffer, sizeof(buffer), "\r\n%s:", HFP_INDICATOR); - offset += hfp_ag_indicators_status_join(buffer+offset, sizeof(buffer)-offset); - - buffer[offset] = 0; - + offset += hfp_ag_indicators_status_join(buffer+offset, sizeof(buffer) - offset - 9); offset += snprintf(buffer+offset, sizeof(buffer)-offset, "\r\n\r\nOK\r\n"); - buffer[offset] = 0; return send_str_over_rfcomm(cid, buffer); } static int hfp_ag_send_retrieve_can_hold_call_cmd(uint16_t cid){ char buffer[40]; int offset = snprintf(buffer, sizeof(buffer), "\r\n%s:", HFP_SUPPORT_CALL_HOLD_AND_MULTIPARTY_SERVICES); - offset += hfp_ag_call_services_join(buffer+offset, sizeof(buffer)-offset); - - buffer[offset] = 0; - + offset += hfp_ag_call_services_join(buffer+offset, sizeof(buffer)-offset-9); offset += snprintf(buffer+offset, sizeof(buffer)-offset, "\r\n\r\nOK\r\n"); - buffer[offset] = 0; return send_str_over_rfcomm(cid, buffer); } @@ -441,22 +433,15 @@ static int hfp_ag_send_list_supported_generic_status_indicators_cmd(uint16_t cid static int hfp_ag_send_retrieve_supported_generic_status_indicators_cmd(uint16_t cid){ char buffer[40]; int offset = snprintf(buffer, sizeof(buffer), "\r\n%s:(", HFP_GENERIC_STATUS_INDICATOR); - offset += hfp_hf_indicators_join(buffer+offset, sizeof(buffer)-offset); - - buffer[offset] = 0; - + offset += hfp_hf_indicators_join(buffer+offset, sizeof(buffer) - offset - 10); offset += snprintf(buffer+offset, sizeof(buffer)-offset, ")\r\n\r\nOK\r\n"); - buffer[offset] = 0; return send_str_over_rfcomm(cid, buffer); } static int hfp_ag_send_retrieve_initital_supported_generic_status_indicators_cmd(uint16_t cid){ char buffer[40]; - int offset = hfp_hf_indicators_initial_status_join(buffer, sizeof(buffer)); - - buffer[offset] = 0; - offset += snprintf(buffer+offset, sizeof(buffer)-offset, "\r\nOK\r\n"); - buffer[offset] = 0; + int offset = hfp_hf_indicators_initial_status_join(buffer, sizeof(buffer) - 7); + snprintf(buffer+offset, sizeof(buffer)-offset, "\r\nOK\r\n"); return send_str_over_rfcomm(cid, buffer); } @@ -471,44 +456,38 @@ static int hfp_ag_send_report_network_operator_name_cmd(uint16_t cid, hfp_networ if (strlen(op.name) == 0){ sprintf(buffer, "\r\n%s:%d,,\r\n\r\nOK\r\n", HFP_QUERY_OPERATOR_SELECTION, op.mode); } else { - int offset = 0; int size = sizeof(buffer); - offset += snprintf(buffer, size,"\r\n%s:%d,%d,", HFP_QUERY_OPERATOR_SELECTION, op.mode, op.format); + int offset = snprintf(buffer, size,"\r\n%s:%d,%d,", HFP_QUERY_OPERATOR_SELECTION, op.mode, op.format); offset += snprintf(buffer + offset, 16, "%s", op.name); - offset += snprintf(buffer + offset, size - offset,"\r\n\r\nOK\r\n"); + snprintf(buffer + offset, size - offset, "\r\n\r\nOK\r\n"); } return send_str_over_rfcomm(cid, buffer); } +static inline int hfp_ag_send_cmd_with_int(uint16_t cid, const char * cmd, uint8_t value){ + char buffer[30]; + sprintf(buffer, "\r\n%s:%d\r\n", cmd, value); + return send_str_over_rfcomm(cid, buffer); +} static int hfp_ag_send_suggest_codec_cmd(uint16_t cid, uint8_t codec){ - char buffer[30]; - sprintf(buffer, "\r\n%s:%d\r\n", HFP_CONFIRM_COMMON_CODEC, codec); - return send_str_over_rfcomm(cid, buffer); + return hfp_ag_send_cmd_with_int(cid, HFP_CONFIRM_COMMON_CODEC, codec); } static int hfp_ag_send_activate_voice_recognition_cmd(uint16_t cid, uint8_t activate_voice_recognition){ - char buffer[30]; - sprintf(buffer, "\r\n%s: %d\r\n", HFP_ACTIVATE_VOICE_RECOGNITION, activate_voice_recognition); - return send_str_over_rfcomm(cid, buffer); + return hfp_ag_send_cmd_with_int(cid, HFP_ACTIVATE_VOICE_RECOGNITION, activate_voice_recognition); } static int hfp_ag_send_set_speaker_gain_cmd(uint16_t cid, uint8_t gain){ - char buffer[30]; - sprintf(buffer, "\r\n%s:%d\r\n", HFP_SET_SPEAKER_GAIN, gain); - return send_str_over_rfcomm(cid, buffer); + return hfp_ag_send_cmd_with_int(cid, HFP_SET_SPEAKER_GAIN, gain); } static int hfp_ag_send_set_microphone_gain_cmd(uint16_t cid, uint8_t gain){ - char buffer[30]; - sprintf(buffer, "\r\n%s:%d\r\n", HFP_SET_MICROPHONE_GAIN, gain); - return send_str_over_rfcomm(cid, buffer); + return hfp_ag_send_cmd_with_int(cid, HFP_SET_MICROPHONE_GAIN, gain); } static int hfp_ag_send_set_response_and_hold(uint16_t cid, int state){ - char buffer[30]; - sprintf(buffer, "\r\n%s: %d\r\n", HFP_RESPONSE_AND_HOLD, state); - return send_str_over_rfcomm(cid, buffer); + return hfp_ag_send_cmd_with_int(cid, HFP_RESPONSE_AND_HOLD, state); } static uint8_t hfp_ag_suggest_codec(hfp_connection_t *hfp_connection){ @@ -1610,7 +1589,7 @@ static void hfp_ag_send_call_status(hfp_connection_t * hfp_connection, int call_ // TODO: check length of a buffer, to fit the MTU int offset = snprintf(buffer, sizeof(buffer), "\r\n%s: %d,%d,%d,%d,%d", HFP_LIST_CURRENT_CALLS, idx, dir, status, mode, mpty); if (number){ - offset += snprintf(buffer+offset, sizeof(buffer)-offset, ", \"%s\",%u", number, type); + offset += snprintf(buffer+offset, sizeof(buffer)-offset-3, ", \"%s\",%u", number, type); } snprintf(buffer+offset, sizeof(buffer)-offset, "\r\n"); log_info("hfp_ag_send_current_call_status 000 index %d, dir %d, status %d, mode %d, mpty %d, type %d, number %s", idx, dir, status, @@ -1619,11 +1598,7 @@ static void hfp_ag_send_call_status(hfp_connection_t * hfp_connection, int call_ } static void hfp_run_for_context(hfp_connection_t *hfp_connection){ - - // log_info("hfp_run_for_context %p", hfp_connection); - if (!hfp_connection) return; - if (!hfp_connection->rfcomm_cid) return; if (!rfcomm_can_send_packet_now(hfp_connection->rfcomm_cid)) { diff --git a/test/hfp/test_sequences.c b/test/hfp/test_sequences.c index 50c5e9bd1..b7b90ea0b 100644 --- a/test/hfp/test_sequences.c +++ b/test/hfp/test_sequences.c @@ -2412,10 +2412,10 @@ const char * TC_AG_RHH_BV_01_I[] = { "AT+CMEE=1" , "OK" , "AT+BTRH?" , - "+BTRH: 0" , + "+BTRH:0" , "OK" , "USER:X" , - "+BTRH: 2" , + "+BTRH:2" , "+CIEV:2,0" , "USER:t" }; @@ -2451,12 +2451,12 @@ const char * TC_AG_RHH_BV_02_I[] = { "RING" , "+CLIP: \"1234567\",129" , "AT+BTRH=0" , - "+BTRH: 0" , + "+BTRH:0" , "OK" , "+CIEV:2,1" , "+CIEV:3,0" , "USER:X" , - "+BTRH: 2" , + "+BTRH:2" , "+CIEV:2,0" , "USER:t" }; @@ -2492,11 +2492,11 @@ const char * TC_AG_RHH_BV_03_I[] = { "RING" , "+CLIP: \"1234567\",129" , "USER:w" , - "+BTRH: 0" , + "+BTRH:0" , "+CIEV:2,1" , "+CIEV:3,0" , "USER:X" , - "+BTRH: 2" , + "+BTRH:2" , "+CIEV:2,0" , "USER:t" }; @@ -2530,10 +2530,10 @@ const char * TC_AG_RHH_BV_04_I[] = { "AT+CMEE=1" , "OK" , "AT+BTRH?" , - "+BTRH: 0" , + "+BTRH:0" , "OK" , "AT+BTRH=1" , - "+BTRH: 1" , + "+BTRH:1" , "OK" , "USER:b" , "USER:C" , @@ -2570,10 +2570,10 @@ const char * TC_AG_RHH_BV_05_I[] = { "AT+CMEE=1" , "OK" , "AT+BTRH?" , - "+BTRH: 0" , + "+BTRH:0" , "OK" , "USER:x" , - "+BTRH: 1" , + "+BTRH:1" , "USER:C" , "+CIEV:2,0" , "USER:t" @@ -2608,10 +2608,10 @@ const char * TC_AG_RHH_BV_06_I[] = { "AT+CMEE=1" , "OK" , "AT+BTRH?" , - "+BTRH: 0" , + "+BTRH:0" , "OK" , "AT+BTRH=2" , - "+BTRH: 2" , + "+BTRH:2" , "OK" , "+CIEV:2,0" , "USER:t" @@ -2646,10 +2646,10 @@ const char * TC_AG_RHH_BV_07_I[] = { "AT+CMEE=1" , "OK" , "AT+BTRH?" , - "+BTRH: 0" , + "+BTRH:0" , "OK" , "USER:X" , - "+BTRH: 2" , + "+BTRH:2" , "+CIEV:2,0" , "USER:t" }; @@ -2683,10 +2683,10 @@ const char * TC_AG_RHH_BV_08_I[] = { "AT+CMEE=1" , "OK" , "AT+BTRH?" , - "+BTRH: 0" , + "+BTRH:0" , "OK" , "USER:C" , - "+BTRH: 2" , + "+BTRH:2" , "+CIEV:2,0" , "USER:t" }; @@ -2724,7 +2724,7 @@ const char * TC_HF_RHH_BV_01_I[] = { "AT+VGS=9" , "OK", "+BSIR: 0" , - "+BTRH: 2" , + "+BTRH:2" , "+CIEV: 2,0" }; @@ -2749,7 +2749,7 @@ const char * TC_HF_RHH_BV_02_I[] = { "AT+VGS=9" , "OK", "+BSIR: 0" , - "+BTRH: 2" , + "+BTRH:2" , "+CIEV: 2,0" , "AT+BRSF=951" , "+BRSF: 511" , @@ -2847,11 +2847,11 @@ const char * TC_HF_RHH_BV_02_I[] = { "RING" , "RING" , "USER:]" , // "AT+BTRH=0" , - "+BTRH: 0" , + "+BTRH:0" , "OK" , "+CIEV: 2,1" , "+CIEV: 3,0" , - "+BTRH: 2" , + "+BTRH:2" , "+CIEV: 2,0" }; @@ -2876,7 +2876,7 @@ const char * TC_HF_RHH_BV_03_I[] = { "AT+VGS=9" , "OK", "+BSIR: 0" , - "+BTRH: 2" , + "+BTRH:2" , "+CIEV: 2,0" , "AT+BRSF=951" , "+BRSF: 511" , @@ -2974,11 +2974,11 @@ const char * TC_HF_RHH_BV_03_I[] = { "RING" , "RING" , "USER:]" , // "AT+BTRH=0" , - "+BTRH: 0" , + "+BTRH:0" , "OK" , "+CIEV: 2,1" , "+CIEV: 3,0" , - "+BTRH: 2" , + "+BTRH:2" , "+CIEV: 2,0" , "AT+BRSF=951" , "+BRSF: 511" , @@ -3002,10 +3002,10 @@ const char * TC_HF_RHH_BV_03_I[] = { "+CIEV: 3,1" , "RING" , "+CLIP: \"1234567\",129" , - "+BTRH: 0" , + "+BTRH:0" , "+CIEV: 2,1" , "+CIEV: 3,0" , - "+BTRH: 2" , + "+BTRH:2" , "+CIEV: 2,0" }; @@ -3030,7 +3030,7 @@ const char * TC_HF_RHH_BV_04_I[] = { "AT+VGS=9" , "OK", "+BSIR: 0" , - "+BTRH: 2" , + "+BTRH:2" , "+CIEV: 2,0" , "AT+BRSF=951" , "+BRSF: 511" , @@ -3128,11 +3128,11 @@ const char * TC_HF_RHH_BV_04_I[] = { "RING" , "RING" , "USER:]" , // "AT+BTRH=0" , - "+BTRH: 0" , + "+BTRH:0" , "OK" , "+CIEV: 2,1" , "+CIEV: 3,0" , - "+BTRH: 2" , + "+BTRH:2" , "+CIEV: 2,0" , "AT+BRSF=951" , "+BRSF: 511" , @@ -3156,10 +3156,10 @@ const char * TC_HF_RHH_BV_04_I[] = { "+CIEV: 3,1" , "RING" , "+CLIP: \"1234567\",129" , - "+BTRH: 0" , + "+BTRH:0" , "+CIEV: 2,1" , "+CIEV: 3,0" , - "+BTRH: 2" , + "+BTRH:2" , "+CIEV: 2,0" , "AT+BRSF=951" , "+BRSF: 511" , @@ -3181,7 +3181,7 @@ const char * TC_HF_RHH_BV_04_I[] = { "OK", "+BSIR: 0" , "USER:{" , // "AT+BTRH=1" , - "+BTRH: 1" , + "+BTRH:1" , "OK" , "+CIEV: 2,0" }; @@ -3207,7 +3207,7 @@ const char * TC_HF_RHH_BV_05_I[] = { "AT+VGS=9" , "OK", "+BSIR: 0" , - "+BTRH: 2" , + "+BTRH:2" , "+CIEV: 2,0" , "AT+BRSF=951" , "+BRSF: 511" , @@ -3305,11 +3305,11 @@ const char * TC_HF_RHH_BV_05_I[] = { "RING" , "RING" , "USER:]" , // "AT+BTRH=0" , - "+BTRH: 0" , + "+BTRH:0" , "OK" , "+CIEV: 2,1" , "+CIEV: 3,0" , - "+BTRH: 2" , + "+BTRH:2" , "+CIEV: 2,0" , "AT+BRSF=951" , "+BRSF: 511" , @@ -3333,10 +3333,10 @@ const char * TC_HF_RHH_BV_05_I[] = { "+CIEV: 3,1" , "RING" , "+CLIP: \"1234567\",129" , - "+BTRH: 0" , + "+BTRH:0" , "+CIEV: 2,1" , "+CIEV: 3,0" , - "+BTRH: 2" , + "+BTRH:2" , "+CIEV: 2,0" , "AT+BRSF=951" , "+BRSF: 511" , @@ -3358,7 +3358,7 @@ const char * TC_HF_RHH_BV_05_I[] = { "OK", "+BSIR: 0" , "USER:{" , // "AT+BTRH=1" , - "+BTRH: 1" , + "+BTRH:1" , "OK" , "+CIEV: 2,0" , "AT+BRSF=951" , @@ -3380,7 +3380,7 @@ const char * TC_HF_RHH_BV_05_I[] = { "AT+VGS=9" , "OK", "+BSIR: 0" , - "+BTRH: 1" , + "+BTRH:1" , "+CIEV: 2,0" }; @@ -3405,7 +3405,7 @@ const char * TC_HF_RHH_BV_06_I[] = { "AT+VGS=9" , "OK", "+BSIR: 0" , - "+BTRH: 2" , + "+BTRH:2" , "+CIEV: 2,0" , "AT+BRSF=951" , "+BRSF: 511" , @@ -3503,11 +3503,11 @@ const char * TC_HF_RHH_BV_06_I[] = { "RING" , "RING" , "USER:]" , // "AT+BTRH=0" , - "+BTRH: 0" , + "+BTRH:0" , "OK" , "+CIEV: 2,1" , "+CIEV: 3,0" , - "+BTRH: 2" , + "+BTRH:2" , "+CIEV: 2,0" , "AT+BRSF=951" , "+BRSF: 511" , @@ -3531,10 +3531,10 @@ const char * TC_HF_RHH_BV_06_I[] = { "+CIEV: 3,1" , "RING" , "+CLIP: \"1234567\",129" , - "+BTRH: 0" , + "+BTRH:0" , "+CIEV: 2,1" , "+CIEV: 3,0" , - "+BTRH: 2" , + "+BTRH:2" , "+CIEV: 2,0" , "AT+BRSF=951" , "+BRSF: 511" , @@ -3556,7 +3556,7 @@ const char * TC_HF_RHH_BV_06_I[] = { "OK", "+BSIR: 0" , "USER:{" , // "AT+BTRH=1" , - "+BTRH: 1" , + "+BTRH:1" , "OK" , "+CIEV: 2,0" , "AT+BRSF=951" , @@ -3578,7 +3578,7 @@ const char * TC_HF_RHH_BV_06_I[] = { "AT+VGS=9" , "OK", "+BSIR: 0" , - "+BTRH: 1" , + "+BTRH:1" , "+CIEV: 2,0" , "AT+BRSF=951" , "+BRSF: 511" , @@ -3600,7 +3600,7 @@ const char * TC_HF_RHH_BV_06_I[] = { "OK", "+BSIR: 0" , "USER:}" , // "AT+BTRH=2" , - "+BTRH: 2" , + "+BTRH:2" , "OK" , "+CIEV: 2,0" }; @@ -3627,7 +3627,7 @@ const char * TC_HF_RHH_BV_07_I[] = { "AT+VGS=9" , "OK", "+BSIR: 0" , - "+BTRH: 2" , + "+BTRH:2" , "+CIEV: 2,0" , "AT+BRSF=951" , "+BRSF: 511" , @@ -3725,11 +3725,11 @@ const char * TC_HF_RHH_BV_07_I[] = { "RING" , "RING" , "USER:]" , // "AT+BTRH=0" , - "+BTRH: 0" , + "+BTRH:0" , "OK" , "+CIEV: 2,1" , "+CIEV: 3,0" , - "+BTRH: 2" , + "+BTRH:2" , "+CIEV: 2,0" , "AT+BRSF=951" , "+BRSF: 511" , @@ -3753,10 +3753,10 @@ const char * TC_HF_RHH_BV_07_I[] = { "+CIEV: 3,1" , "RING" , "+CLIP: \"1234567\",129" , - "+BTRH: 0" , + "+BTRH:0" , "+CIEV: 2,1" , "+CIEV: 3,0" , - "+BTRH: 2" , + "+BTRH:2" , "+CIEV: 2,0" , "AT+BRSF=951" , "+BRSF: 511" , @@ -3778,7 +3778,7 @@ const char * TC_HF_RHH_BV_07_I[] = { "OK", "+BSIR: 0" , "USER:{" , // "AT+BTRH=1" , - "+BTRH: 1" , + "+BTRH:1" , "OK" , "+CIEV: 2,0" , "AT+BRSF=951" , @@ -3800,7 +3800,7 @@ const char * TC_HF_RHH_BV_07_I[] = { "AT+VGS=9" , "OK", "+BSIR: 0" , - "+BTRH: 1" , + "+BTRH:1" , "+CIEV: 2,0" , "AT+BRSF=951" , "+BRSF: 511" , @@ -3822,7 +3822,7 @@ const char * TC_HF_RHH_BV_07_I[] = { "OK", "+BSIR: 0" , "USER:}" , // "AT+BTRH=2" , - "+BTRH: 2" , + "+BTRH:2" , "OK" , "+CIEV: 2,0" , "AT+BRSF=951" , @@ -3844,7 +3844,7 @@ const char * TC_HF_RHH_BV_07_I[] = { "AT+VGS=9" , "OK", "+BSIR: 0" , - "+BTRH: 2" , + "+BTRH:2" , "+CIEV: 2,0" }; @@ -3869,7 +3869,7 @@ const char * TC_HF_RHH_BV_08_I[] = { "AT+VGS=9" , "OK", "+BSIR: 0" , - "+BTRH: 2" , + "+BTRH:2" , "+CIEV: 2,0" , "AT+BRSF=951" , "+BRSF: 511" , @@ -3967,11 +3967,11 @@ const char * TC_HF_RHH_BV_08_I[] = { "RING" , "RING" , "USER:]" , // "AT+BTRH=0" , - "+BTRH: 0" , + "+BTRH:0" , "OK" , "+CIEV: 2,1" , "+CIEV: 3,0" , - "+BTRH: 2" , + "+BTRH:2" , "+CIEV: 2,0" , "AT+BRSF=951" , "+BRSF: 511" , @@ -3995,10 +3995,10 @@ const char * TC_HF_RHH_BV_08_I[] = { "+CIEV: 3,1" , "RING" , "+CLIP: \"1234567\",129" , - "+BTRH: 0" , + "+BTRH:0" , "+CIEV: 2,1" , "+CIEV: 3,0" , - "+BTRH: 2" , + "+BTRH:2" , "+CIEV: 2,0" , "AT+BRSF=951" , "+BRSF: 511" , @@ -4020,7 +4020,7 @@ const char * TC_HF_RHH_BV_08_I[] = { "OK", "+BSIR: 0" , "USER:{" , // "AT+BTRH=1" , - "+BTRH: 1" , + "+BTRH:1" , "OK" , "+CIEV: 2,0" , "AT+BRSF=951" , @@ -4042,7 +4042,7 @@ const char * TC_HF_RHH_BV_08_I[] = { "AT+VGS=9" , "OK", "+BSIR: 0" , - "+BTRH: 1" , + "+BTRH:1" , "+CIEV: 2,0" , "AT+BRSF=951" , "+BRSF: 511" , @@ -4064,7 +4064,7 @@ const char * TC_HF_RHH_BV_08_I[] = { "OK", "+BSIR: 0" , "USER:}" , // "AT+BTRH=2" , - "+BTRH: 2" , + "+BTRH:2" , "OK" , "+CIEV: 2,0" , "AT+BRSF=951" , @@ -4086,7 +4086,7 @@ const char * TC_HF_RHH_BV_08_I[] = { "AT+VGS=9" , "OK", "+BSIR: 0" , - "+BTRH: 2" , + "+BTRH:2" , "+CIEV: 2,0" , "AT+BRSF=951" , "+BRSF: 511" , @@ -4107,7 +4107,7 @@ const char * TC_HF_RHH_BV_08_I[] = { "AT+VGS=9" , "OK", "+BSIR: 0" , - "+BTRH: 2" , + "+BTRH:2" , "+CIEV: 2,0" };