mirror of
https://github.com/bluekitchen/btstack.git
synced 2025-03-28 08:37:22 +00:00
hfp: generalized hfp ag cmd generator
This commit is contained in:
parent
b040a000e8
commit
e81f58c742
19
src/hfp_ag.c
19
src/hfp_ag.c
@ -383,8 +383,11 @@ static int hfp_ag_call_services_join(char * buffer, int buffer_size){
|
|||||||
return offset;
|
return offset;
|
||||||
}
|
}
|
||||||
|
|
||||||
// returns next segment to store
|
static int hfp_ag_cmd_via_generator(uint16_t cid, hfp_connection_t * context,
|
||||||
static int hfp_ag_retrieve_indicators_cmd_via_generator(uint16_t cid, hfp_connection_t * context, int start_segment){
|
int start_segment, int num_segments,
|
||||||
|
int (*get_segment_len)(hfp_connection_t * context, int segment),
|
||||||
|
void (*store_segment) (hfp_connection_t * context, int segment, uint8_t * buffer)){
|
||||||
|
|
||||||
// assumes: can send now == true
|
// assumes: can send now == true
|
||||||
// assumes: num segments > 0
|
// assumes: num segments > 0
|
||||||
rfcomm_reserve_packet_buffer();
|
rfcomm_reserve_packet_buffer();
|
||||||
@ -392,11 +395,10 @@ static int hfp_ag_retrieve_indicators_cmd_via_generator(uint16_t cid, hfp_connec
|
|||||||
uint8_t * data = rfcomm_get_outgoing_buffer();
|
uint8_t * data = rfcomm_get_outgoing_buffer();
|
||||||
int offset = 0;
|
int offset = 0;
|
||||||
int segment = start_segment;
|
int segment = start_segment;
|
||||||
int num_segments = hfp_ag_indicators_cmd_generator_num_segments(context);
|
|
||||||
while (segment < num_segments){
|
while (segment < num_segments){
|
||||||
int segment_len = hfp_ag_indicators_cmd_generator_get_segment_len(context, segment);
|
int segment_len = get_segment_len(context, segment);
|
||||||
if (offset + segment_len <= mtu){
|
if (offset + segment_len <= mtu){
|
||||||
hgp_ag_indicators_cmd_generator_store_segment(context, segment, data+offset);
|
store_segment(context, segment, data+offset);
|
||||||
offset += segment_len;
|
offset += segment_len;
|
||||||
segment++;
|
segment++;
|
||||||
}
|
}
|
||||||
@ -405,6 +407,13 @@ static int hfp_ag_retrieve_indicators_cmd_via_generator(uint16_t cid, hfp_connec
|
|||||||
return segment;
|
return segment;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// returns next segment to store
|
||||||
|
static int hfp_ag_retrieve_indicators_cmd_via_generator(uint16_t cid, hfp_connection_t * context, int start_segment){
|
||||||
|
int num_segments = hfp_ag_indicators_cmd_generator_num_segments(context);
|
||||||
|
return hfp_ag_cmd_via_generator(cid, context, start_segment, num_segments,
|
||||||
|
hfp_ag_indicators_cmd_generator_get_segment_len, hgp_ag_indicators_cmd_generator_store_segment);
|
||||||
|
}
|
||||||
|
|
||||||
static int hfp_ag_retrieve_indicators_status_cmd(uint16_t cid){
|
static int hfp_ag_retrieve_indicators_status_cmd(uint16_t cid){
|
||||||
char buffer[40];
|
char buffer[40];
|
||||||
int offset = snprintf(buffer, sizeof(buffer), "\r\n%s:", HFP_INDICATOR);
|
int offset = snprintf(buffer, sizeof(buffer), "\r\n%s:", HFP_INDICATOR);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user