mirror of
https://github.com/bluekitchen/btstack.git
synced 2025-03-31 10:20:58 +00:00
avrcp_cover_art_client: use obex_srm_client module
This commit is contained in:
parent
e14fb63c33
commit
0de94e451f
@ -162,53 +162,10 @@ static void avrcp_cover_art_client_parser_callback_connect(void * user_data, uin
|
||||
|
||||
static void avrcp_cover_art_client_prepare_srm_header(avrcp_cover_art_client_t * cover_art_client){
|
||||
if (cover_art_client->flow_control_enabled == false){
|
||||
goep_client_header_add_srm_enable(cover_art_client->goep_cid);
|
||||
cover_art_client->obex_srm.srm_state = AVRCP_COVER_ART_SRM_W4_CONFIRM;
|
||||
obex_srm_client_prepare_header(&cover_art_client->obex_srm, cover_art_client->goep_cid);
|
||||
}
|
||||
}
|
||||
|
||||
static void obex_srm_init(avrcp_cover_art_obex_srm_t * obex_srm){
|
||||
obex_srm->srm_value = OBEX_SRM_DISABLE;
|
||||
obex_srm->srmp_value = OBEX_SRMP_NEXT;
|
||||
}
|
||||
|
||||
static void avrcp_cover_art_client_handle_srm_headers(avrcp_cover_art_client_t *context) {
|
||||
avrcp_cover_art_obex_srm_t * obex_srm = &context->obex_srm;
|
||||
// Update SRM state based on SRM headers
|
||||
switch (obex_srm->srm_state){
|
||||
case AVRCP_COVER_ART_SRM_W4_CONFIRM:
|
||||
switch (obex_srm->srm_value){
|
||||
case OBEX_SRM_ENABLE:
|
||||
switch (obex_srm->srmp_value){
|
||||
case OBEX_SRMP_WAIT:
|
||||
obex_srm->srm_state = AVRCP_COVER_ART_SRM_ENABLED_BUT_WAITING;
|
||||
break;
|
||||
default:
|
||||
obex_srm->srm_state = AVRCP_COVER_ART_SRM_ENABLED;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
obex_srm->srm_state = AVRCP_COVER_ART_SRM_DISABLED;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case AVRCP_COVER_ART_SRM_ENABLED_BUT_WAITING:
|
||||
switch (obex_srm->srmp_value){
|
||||
case OBEX_SRMP_WAIT:
|
||||
context->obex_srm.srm_state = AVRCP_COVER_ART_SRM_ENABLED_BUT_WAITING;
|
||||
break;
|
||||
default:
|
||||
context->obex_srm.srm_state = AVRCP_COVER_ART_SRM_ENABLED;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
log_info("SRM state %u", obex_srm->srm_state);
|
||||
}
|
||||
|
||||
static void avrcp_cover_art_client_parser_callback_get_operation(void * user_data, uint8_t header_id, uint16_t total_len, uint16_t data_offset, const uint8_t * data_buffer, uint16_t data_len){
|
||||
avrcp_cover_art_client_t *client = (avrcp_cover_art_client_t *) user_data;
|
||||
switch (header_id) {
|
||||
@ -240,7 +197,7 @@ static void avrcp_cover_art_client_parser_callback_get_operation(void * user_dat
|
||||
|
||||
static void avrcp_cover_art_client_prepare_get_operation(avrcp_cover_art_client_t * cover_art_client){
|
||||
obex_parser_init_for_response(&cover_art_client->obex_parser, OBEX_OPCODE_GET, avrcp_cover_art_client_parser_callback_get_operation, cover_art_client);
|
||||
obex_srm_init(&cover_art_client->obex_srm);
|
||||
obex_srm_client_init(&cover_art_client->obex_srm);
|
||||
cover_art_client->obex_parser_waiting_for_response = true;
|
||||
}
|
||||
|
||||
@ -255,7 +212,7 @@ static void avrcp_cover_art_client_handle_can_send_now(avrcp_cover_art_client_t
|
||||
// prepare response
|
||||
obex_parser_init_for_response(&cover_art_client->obex_parser, OBEX_OPCODE_CONNECT,
|
||||
avrcp_cover_art_client_parser_callback_connect, cover_art_client);
|
||||
obex_srm_init(&cover_art_client->obex_srm);
|
||||
obex_srm_client_init(&cover_art_client->obex_srm);
|
||||
cover_art_client->obex_parser_waiting_for_response = true;
|
||||
// send packet
|
||||
goep_client_execute(cover_art_client->goep_cid);
|
||||
@ -383,8 +340,8 @@ static void avrcp_cover_art_client_goep_data_handler(avrcp_cover_art_client_t *
|
||||
case AVRCP_COVER_ART_W4_OBJECT:
|
||||
switch (op_info.response_code) {
|
||||
case OBEX_RESP_CONTINUE:
|
||||
avrcp_cover_art_client_handle_srm_headers(cover_art_client);
|
||||
if (cover_art_client->obex_srm.srm_state == AVRCP_COVER_ART_SRM_ENABLED) {
|
||||
obex_srm_client_handle_headers(&cover_art_client->obex_srm);
|
||||
if (cover_art_client->obex_srm.srm_state == OBEX_SRM_CLIENT_STATE_ENABLED) {
|
||||
// prepare response
|
||||
avrcp_cover_art_client_prepare_get_operation(cover_art_client);
|
||||
break;
|
||||
|
@ -52,7 +52,8 @@
|
||||
#include "btstack_linked_list.h"
|
||||
#include "classic/obex_parser.h"
|
||||
#include "l2cap.h"
|
||||
#include "obex.h"
|
||||
#include "classic/obex.h"
|
||||
#include "classic/obex_srm_client.h"
|
||||
|
||||
#if defined __cplusplus
|
||||
extern "C" {
|
||||
@ -79,20 +80,6 @@ typedef enum {
|
||||
AVRCP_COVER_ART_W4_ABORT_COMPLETE,
|
||||
} avrcp_cover_art_state_t;
|
||||
|
||||
typedef enum {
|
||||
AVRCP_COVER_ART_SRM_DISABLED,
|
||||
AVRCP_COVER_ART_SRM_W4_CONFIRM,
|
||||
AVRCP_COVER_ART_SRM_ENABLED_BUT_WAITING,
|
||||
AVRCP_COVER_ART_SRM_ENABLED
|
||||
} avrcp_cover_art_srm_state_t;
|
||||
|
||||
typedef struct {
|
||||
avrcp_cover_art_srm_state_t srm_state;
|
||||
|
||||
uint8_t srm_value;
|
||||
uint8_t srmp_value;
|
||||
} avrcp_cover_art_obex_srm_t;
|
||||
|
||||
typedef struct {
|
||||
btstack_linked_item_t item;
|
||||
|
||||
@ -122,7 +109,7 @@ typedef struct {
|
||||
uint8_t obex_header_buffer[4];
|
||||
|
||||
// obex srm
|
||||
avrcp_cover_art_obex_srm_t obex_srm;
|
||||
obex_srm_client_t obex_srm;
|
||||
|
||||
// request
|
||||
const char * object_type;
|
||||
|
Loading…
x
Reference in New Issue
Block a user