mirror of
https://github.com/bluekitchen/btstack.git
synced 2025-03-24 04:43:36 +00:00
sdp client: extracted method can_send_now
This commit is contained in:
parent
84e56682a4
commit
c81dbccfbb
@ -66,6 +66,9 @@ SM_MINIMAL = \
|
||||
SDP_DES = \
|
||||
${BTSTACK_ROOT}/test/des_iterator/des_iterator.c \
|
||||
|
||||
PAN = \
|
||||
${BTSTACK_ROOT}/src/pan.c \
|
||||
|
||||
CORE_OBJ = $(CORE:.c=.o)
|
||||
COMMON_OBJ = $(COMMON:.c=.o)
|
||||
CC2564_OBJ = $(CC2564:.c=.o)
|
||||
@ -75,6 +78,7 @@ SM_MINIMAL_OBJ = $(SM_MINIMAL:.c=.o)
|
||||
ATT_OBJ = $(ATT:.c=.o)
|
||||
GATT_CLIENT_OBJ = $(GATT_CLIENT:.c=.o)
|
||||
GATT_SERVER_OBJ = $(GATT_SERVER:.c=.o)
|
||||
PAN_OBJ = $(PAN:.c=.o)
|
||||
|
||||
# create firmware image from common objects and example source file
|
||||
|
||||
@ -87,7 +91,7 @@ all: ${BTSTACK_ROOT}/include/btstack/version.h gatt_browser gatt_battery_query s
|
||||
${BTSTACK_ROOT}/include/btstack/version.h:
|
||||
${BTSTACK_ROOT}/tools/get_version.sh
|
||||
|
||||
sdp_rfcomm_query: ${CORE_OBJ} ${COMMON_OBJ} sdp_rfcomm_query.c
|
||||
sdp_rfcomm_query: ${CORE_OBJ} ${COMMON_OBJ} ${PAN_OBJ} sdp_rfcomm_query.c
|
||||
${CC} $^ ${CFLAGS} ${LDFLAGS} -o $@
|
||||
|
||||
sdp_general_query: ${CORE_OBJ} ${COMMON_OBJ} sdp_general_query.c
|
||||
|
@ -36,7 +36,7 @@ static bd_addr_t remote = {0x04,0x0C,0xCE,0xE4,0x85,0xD3};
|
||||
static void handle_sdp_client_query_result(sdp_query_event_t * event);
|
||||
|
||||
static void packet_handler (void * connection, uint8_t packet_type, uint16_t channel, uint8_t *packet, uint16_t size){
|
||||
printf("packet_handler type %u, packet[0] %x\n", packet_type, packet[0]);
|
||||
// printf("packet_handler type %u, packet[0] %x\n", packet_type, packet[0]);
|
||||
|
||||
if (packet_type != HCI_EVENT_PACKET) return;
|
||||
uint8_t event = packet[0];
|
||||
@ -107,6 +107,7 @@ static void handle_sdp_client_query_result(sdp_query_event_t * event){
|
||||
case SDP_QUERY_COMPLETE:
|
||||
ce = (sdp_query_complete_event_t*) event;
|
||||
printf("General query done with status %d.\n\n", ce->status);
|
||||
exit(0);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -95,12 +95,13 @@ void sdp_client_query(bd_addr_t remote, uint8_t * des_serviceSearchPattern, uint
|
||||
l2cap_create_channel_internal(NULL, sdp_packet_handler, remote, PSM_SDP, l2cap_max_mtu());
|
||||
}
|
||||
|
||||
static int can_send_now(uint16_t channel){
|
||||
if (sdp_client_state != W2_SEND) return 0;
|
||||
if (!l2cap_can_send_packet_now(channel)) return 0;
|
||||
return 1;
|
||||
}
|
||||
|
||||
static void try_to_send(uint16_t channel){
|
||||
if (sdp_client_state != W2_SEND) return;
|
||||
|
||||
if (!l2cap_can_send_packet_now(channel)) return;
|
||||
|
||||
static void send_request(uint16_t channel){
|
||||
l2cap_reserve_packet_buffer();
|
||||
uint8_t * data = l2cap_get_outgoing_buffer();
|
||||
uint16_t request_len = 0;
|
||||
@ -118,7 +119,7 @@ static void try_to_send(uint16_t channel){
|
||||
request_len = setup_service_search_attribute_request(data);
|
||||
break;
|
||||
default:
|
||||
log_error("SDP Client try_to_send :: PDU ID invalid. %u", PDU_ID);
|
||||
log_error("SDP Client send_request :: PDU ID invalid. %u", PDU_ID);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -221,7 +222,7 @@ void sdp_packet_handler(uint8_t packet_type, uint16_t channel, uint8_t *packet,
|
||||
}
|
||||
// prepare next request and send
|
||||
sdp_client_state = W2_SEND;
|
||||
try_to_send(sdp_cid);
|
||||
if (can_send_now(sdp_cid)) send_request(sdp_cid);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -245,11 +246,12 @@ void sdp_packet_handler(uint8_t packet_type, uint16_t channel, uint8_t *packet,
|
||||
log_info("SDP Client Connected, cid %x, mtu %u.", sdp_cid, mtu);
|
||||
|
||||
sdp_client_state = W2_SEND;
|
||||
try_to_send(sdp_cid);
|
||||
if (can_send_now(sdp_cid)) send_request(sdp_cid);
|
||||
|
||||
break;
|
||||
case L2CAP_EVENT_CREDITS:
|
||||
case DAEMON_EVENT_HCI_PACKET_SENT:
|
||||
try_to_send(sdp_cid);
|
||||
if (can_send_now(sdp_cid)) send_request(sdp_cid);
|
||||
break;
|
||||
case L2CAP_EVENT_CHANNEL_CLOSED: {
|
||||
if (sdp_cid != READ_BT_16(packet, 2)) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user