From 1532fd1ef9f98cdc072ff7dd7b988a0794d86789 Mon Sep 17 00:00:00 2001 From: Matthias Ringwald Date: Wed, 30 Mar 2016 10:21:23 +0200 Subject: [PATCH] hfp_ag: fix sending outgoing cmds in chunks --- src/hfp_ag.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/hfp_ag.c b/src/hfp_ag.c index 81f87a1fd..112966dd5 100644 --- a/src/hfp_ag.c +++ b/src/hfp_ag.c @@ -370,6 +370,7 @@ static int hfp_ag_cmd_via_generator(uint16_t cid, hfp_connection_t * hfp_connect // assumes: can send now == true // assumes: num segments > 0 + // assumes: individual segments are smaller than MTU rfcomm_reserve_packet_buffer(); int mtu = rfcomm_get_max_frame_size(cid); uint8_t * data = rfcomm_get_outgoing_buffer(); @@ -377,11 +378,11 @@ static int hfp_ag_cmd_via_generator(uint16_t cid, hfp_connection_t * hfp_connect int segment = start_segment; while (segment < num_segments){ int segment_len = get_segment_len(hfp_connection, segment); - if (offset + segment_len <= mtu){ - store_segment(hfp_connection, segment, data+offset); - offset += segment_len; - segment++; - } + if (offset + segment_len > mtu) break; + // append segement + store_segment(hfp_connection, segment, data+offset); + offset += segment_len; + segment++; } rfcomm_send_prepared(cid, offset); return segment;