pbap_client: handle OBEX_RESP_NOT_ACCEPTABLE

This commit is contained in:
Matthias Ringwald 2018-09-27 17:39:13 +02:00
parent e47802fe3c
commit 16ded4fec1
3 changed files with 89 additions and 74 deletions

View File

@ -184,6 +184,7 @@ typedef uint8_t sm_key_t[16];
#define OBEX_CONNECT_FAILED 0xB1
#define OBEX_DISCONNECTED 0xB2
#define OBEX_NOT_FOUND 0xB3
#define OBEX_NOT_ACCEPTABLE 0xB4
#define AVDTP_SEID_DOES_NOT_EXIST 0xC0
#define AVDTP_CONNECTION_DOES_NOT_EXIST 0xC1

View File

@ -54,7 +54,7 @@
#define OBEX_RESP_UNAUTHORIZED 0xC1
#define OBEX_RESP_FORBIDDEN 0xC3
#define OBEX_RESP_NOT_FOUND 0xC4
#define OBEX_RESP_REFUSED 0xC6
#define OBEX_RESP_NOT_ACCEPTABLE 0xC6
#define OBEX_HEADER_BODY 0x48
#define OBEX_HEADER_END_OF_BODY 0x49

View File

@ -504,15 +504,20 @@ static void pbap_packet_handler(uint8_t packet_type, uint16_t channel, uint8_t *
pbap_client->client_handler(PBAP_DATA_PACKET, pbap_client->cid, (uint8_t *) data, data_len);
}
}
if (packet[0] == OBEX_RESP_CONTINUE){
switch(packet[0]){
case OBEX_RESP_CONTINUE:
pbap_client->state = PBAP_W2_PULL_PHONEBOOK;
goep_client_request_can_send_now(pbap_client->goep_cid);
} else if (packet[0] == OBEX_RESP_SUCCESS){
break;
case OBEX_RESP_SUCCESS:
pbap_client->state = PBAP_CONNECTED;
pbap_client_emit_operation_complete_event(pbap_client, 0);
} else {
break;
default:
log_info("unexpected response 0x%02x", packet[0]);
pbap_client->state = PBAP_CONNECTED;
pbap_client_emit_operation_complete_event(pbap_client, OBEX_UNKNOWN_ERROR);
break;
}
break;
case PBAP_W4_GET_PHONEBOOK_SIZE_COMPLETE:
@ -546,10 +551,12 @@ static void pbap_packet_handler(uint8_t packet_type, uint16_t channel, uint8_t *
pbap_client_emit_phonebook_size_event(pbap_client, OBEX_UNKNOWN_ERROR, 0);
break;
case PBAP_W4_GET_CARD_LIST_COMPLETE:
if (packet[0] == OBEX_RESP_CONTINUE){
switch (packet[0]){
case OBEX_RESP_CONTINUE:
pbap_client->state = PBAP_W2_GET_CARD_LIST;
goep_client_request_can_send_now(pbap_client->goep_cid);
} else if (packet[0] == OBEX_RESP_SUCCESS){
break;
case OBEX_RESP_SUCCESS:
for (obex_iterator_init_with_response_packet(&it, goep_client_get_request_opcode(pbap_client->goep_cid), packet, size); obex_iterator_has_more(&it) ; obex_iterator_next(&it)){
uint8_t hi = obex_iterator_get_hi(&it);
if (hi == OBEX_HEADER_END_OF_BODY){
@ -614,9 +621,16 @@ static void pbap_packet_handler(uint8_t packet_type, uint16_t channel, uint8_t *
pbap_client_emit_operation_complete_event(pbap_client, 0);
}
}
} else {
// ?
break;
case OBEX_RESP_NOT_ACCEPTABLE:
pbap_client->state = PBAP_CONNECTED;
pbap_client_emit_operation_complete_event(pbap_client, OBEX_NOT_ACCEPTABLE);
break;
default:
log_info("unexpected response 0x%02x", packet[0]);
pbap_client->state = PBAP_CONNECTED;
pbap_client_emit_operation_complete_event(pbap_client, OBEX_UNKNOWN_ERROR);
break;
}
break;
default: