diff options
author | Lukasz Rymanowski <lukasz.rymanowski@tieto.com> | 2014-12-08 14:56:30 +0100 |
---|---|---|
committer | Szymon Janc <szymon.janc@tieto.com> | 2014-12-10 13:28:12 +0100 |
commit | 344e3bab53ec1117bc800e7d257663d00c783c8f (patch) | |
tree | 2ae411700b5160175f239b7102517c81b2c56142 /android/handsfree-client.c | |
parent | 6c01cf54333e6ad393949adb3c0bb2ee347ca24a (diff) | |
download | bluez-344e3bab53ec1117bc800e7d257663d00c783c8f.tar.gz |
android/handsfree-client: Decrease number of memcpy
Some strings we can directly copy from context to IPC event struct.
Diffstat (limited to 'android/handsfree-client.c')
-rw-r--r-- | android/handsfree-client.c | 27 |
1 files changed, 13 insertions, 14 deletions
diff --git a/android/handsfree-client.c b/android/handsfree-client.c index a9828e9b3..e1f2c1635 100644 --- a/android/handsfree-client.c +++ b/android/handsfree-client.c @@ -85,6 +85,9 @@ #define CODEC_ID_CVSD 0x01 #define CODEC_ID_MSBC 0x02 +#define MAX_NUMBER_LEN 33 +#define MAX_OPERATOR_NAME_LEN 17 + enum hfp_indicator { HFP_INDICATOR_SERVICE = 0, HFP_INDICATOR_CALL, @@ -941,7 +944,6 @@ static void clcc_cb(struct hfp_context *context, void *user_data) uint8_t buf[IPC_MTU]; struct hal_ev_hf_client_current_call *ev = (void *) buf; unsigned int val; - char number[33]; DBG(""); @@ -983,10 +985,9 @@ static void clcc_cb(struct hfp_context *context, void *user_data) ev->multiparty = val; - if (hfp_context_get_string(context, number, sizeof(number))) { - ev->number_len = strlen(number) + 1; - memcpy(ev->number, number, ev->number_len); - } + if (hfp_context_get_string(context, (char *) &ev->number[0], + MAX_NUMBER_LEN)) + ev->number_len = strlen((char *) ev->number) + 1; ipc_send_notif(hal_ipc, HAL_SERVICE_ID_HANDSFREE_CLIENT, HAL_EV_HF_CLIENT_CURRENT_CALL, @@ -1023,7 +1024,6 @@ static void cnum_cb(struct hfp_context *context, void *user_data) { uint8_t buf[IPC_MTU]; struct hal_ev_hf_client_subscriber_service_info *ev = (void *) buf; - char number[33]; unsigned int service; DBG(""); @@ -1031,11 +1031,14 @@ static void cnum_cb(struct hfp_context *context, void *user_data) /* Alpha field is empty string, just skip it */ hfp_context_skip_field(context); - if (!hfp_context_get_string(context, number, sizeof(number))) { + if (!hfp_context_get_string(context, (char *) &ev->name[0], + MAX_NUMBER_LEN)) { error("hf-client: Could not get number"); return; } + ev->name_len = strlen((char *) &ev->name[0]) + 1; + /* Type is not used in Android */ hfp_context_skip_field(context); @@ -1045,9 +1048,6 @@ static void cnum_cb(struct hfp_context *context, void *user_data) if (!hfp_context_get_number(context, &service)) return; - ev->name_len = strlen(number) + 1; - memcpy(ev->name, number, ev->name_len); - switch (service) { case 4: ev->type = HAL_HF_CLIENT_SUBSCR_TYPE_VOICE; @@ -1069,7 +1069,6 @@ static void cops_cb(struct hfp_context *context, void *user_data) { uint8_t buf[IPC_MTU]; struct hal_ev_hf_client_operator_name *ev = (void *) buf; - char name[17]; unsigned int format; DBG(""); @@ -1083,13 +1082,13 @@ static void cops_cb(struct hfp_context *context, void *user_data) if (format != 0) info("hf-client: Not correct string format in +COSP"); - if (!hfp_context_get_string(context, name, sizeof(name))) { + if (!hfp_context_get_string(context, (char *) &ev->name[0], + MAX_OPERATOR_NAME_LEN)) { error("hf-client: incorrect COPS response"); return; } - ev->name_len = strlen(name) + 1; - memcpy(ev->name, name, ev->name_len); + ev->name_len = strlen((char *) &ev->name[0]) + 1; ipc_send_notif(hal_ipc, HAL_SERVICE_ID_HANDSFREE_CLIENT, HAL_EV_HF_CLIENT_OPERATOR_NAME, |