mirror of
https://github.com/bluekitchen/btstack.git
synced 2025-02-03 20:54:18 +00:00
rfcomm: pass packet handler for create service or channel. store in service and channel structs
This commit is contained in:
parent
7298da4764
commit
ccb8ddfbd8
@ -260,7 +260,7 @@ int btstack_main(void)
|
||||
|
||||
rfcomm_init();
|
||||
rfcomm_register_packet_handler(packet_handler);
|
||||
rfcomm_register_service(RFCOMM_SERVER_CHANNEL, 0xffff);
|
||||
rfcomm_register_service(packet_handler, RFCOMM_SERVER_CHANNEL, 0xffff);
|
||||
|
||||
// init SDP, create record for SPP and register with SDP
|
||||
sdp_init();
|
||||
|
@ -101,7 +101,7 @@ static void spp_service_setup(void){
|
||||
|
||||
rfcomm_init();
|
||||
rfcomm_register_packet_handler(packet_handler);
|
||||
rfcomm_register_service(RFCOMM_SERVER_CHANNEL, 0xffff); // reserved channel, mtu limited by l2cap
|
||||
rfcomm_register_service(packet_handler, RFCOMM_SERVER_CHANNEL, 0xffff); // reserved channel, mtu limited by l2cap
|
||||
|
||||
// init SDP, create record for SPP and register with SDP
|
||||
sdp_init();
|
||||
|
@ -176,7 +176,7 @@ static void handle_query_rfcomm_event(uint8_t packet_type, uint8_t *packet, uint
|
||||
// connect
|
||||
printf("Requested SPP Service found, creating RFCOMM channel\n");
|
||||
state = W4_RFCOMM_CHANNEL;
|
||||
rfcomm_create_channel(remote, channel_nr, NULL);
|
||||
rfcomm_create_channel(packet_handler, remote, channel_nr, NULL);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
|
@ -1050,7 +1050,7 @@ static int btstack_command_handler(connection_t *connection, uint8_t *packet, ui
|
||||
case RFCOMM_REGISTER_SERVICE:
|
||||
rfcomm_channel = packet[3];
|
||||
mtu = little_endian_read_16(packet, 4);
|
||||
status = rfcomm_register_service(rfcomm_channel, mtu);
|
||||
status = rfcomm_register_service(rfcomm_packet_handler, rfcomm_channel, mtu);
|
||||
rfcomm_emit_service_registered(connection, status, rfcomm_channel);
|
||||
break;
|
||||
case RFCOMM_REGISTER_SERVICE_WITH_CREDITS:
|
||||
|
@ -226,7 +226,7 @@ int btstack_main(int argc, const char * argv[]){
|
||||
// init RFCOMM
|
||||
rfcomm_init();
|
||||
rfcomm_register_packet_handler(packet_handler);
|
||||
rfcomm_register_service(rfcomm_channel_nr, 100); // reserved channel, mtu=100
|
||||
rfcomm_register_service(packet_handler, rfcomm_channel_nr, 100); // reserved channel, mtu=100
|
||||
|
||||
// init SDP, create record for SPP and register with SDP
|
||||
sdp_init();
|
||||
|
@ -216,7 +216,7 @@ int btstack_main(int argc, const char * argv[]){
|
||||
// init RFCOMM
|
||||
rfcomm_init();
|
||||
rfcomm_register_packet_handler(packet_handler);
|
||||
rfcomm_register_service(rfcomm_channel_nr, 100); // reserved channel, mtu=100
|
||||
rfcomm_register_service(rfcomm_packet_handler, rfcomm_channel_nr, 100); // reserved channel, mtu=100
|
||||
|
||||
// init SDP, create record for SPP and register with SDP
|
||||
sdp_init();
|
||||
|
@ -226,7 +226,7 @@ int btstack_main(int argc, const char * argv[]){
|
||||
// init RFCOMM
|
||||
rfcomm_init();
|
||||
rfcomm_register_packet_handler(packet_handler);
|
||||
rfcomm_register_service(rfcomm_channel_nr, 100); // reserved channel, mtu=100
|
||||
rfcomm_register_service(packet_handler, rfcomm_channel_nr, 100); // reserved channel, mtu=100
|
||||
|
||||
// init SDP, create record for SPP and register with SDP
|
||||
sdp_init();
|
||||
|
@ -217,7 +217,7 @@ int btstack_main(int argc, const char * argv[]){
|
||||
// init RFCOMM
|
||||
rfcomm_init();
|
||||
rfcomm_register_packet_handler(packet_handler);
|
||||
rfcomm_register_service(rfcomm_channel_nr, 100); // reserved channel, mtu=100
|
||||
rfcomm_register_service(packet_handler, rfcomm_channel_nr, 100); // reserved channel, mtu=100
|
||||
|
||||
// init SDP, create record for SPP and register with SDP
|
||||
sdp_init();
|
||||
|
@ -1272,8 +1272,7 @@ static void parse_sequence(hfp_connection_t * context){
|
||||
}
|
||||
}
|
||||
|
||||
void hfp_init(uint16_t rfcomm_channel_nr){
|
||||
rfcomm_register_service(rfcomm_channel_nr, 0xffff);
|
||||
void hfp_init(void){
|
||||
sdp_query_rfcomm_register_callback(handle_query_rfcomm_event);
|
||||
}
|
||||
|
||||
|
@ -632,7 +632,7 @@ void set_hfp_generic_status_indicators(hfp_generic_status_indicator_t * indicato
|
||||
btstack_linked_list_t * hfp_get_connections(void);
|
||||
void hfp_parse(hfp_connection_t * context, uint8_t byte, int isHandsFree);
|
||||
|
||||
void hfp_init(uint16_t rfcomm_channel_nr);
|
||||
void hfp_init(void);
|
||||
void hfp_establish_service_level_connection(bd_addr_t bd_addr, uint16_t service_uuid);
|
||||
void hfp_release_service_level_connection(hfp_connection_t * connection);
|
||||
void hfp_reset_context_flags(hfp_connection_t * context);
|
||||
|
@ -1997,8 +1997,8 @@ void hfp_ag_init(uint16_t rfcomm_channel_nr, uint32_t supported_features,
|
||||
l2cap_init();
|
||||
|
||||
rfcomm_register_packet_handler(packet_handler);
|
||||
|
||||
hfp_init(rfcomm_channel_nr);
|
||||
rfcomm_register_service(packet_handler, rfcomm_channel_nr, 0xffff);
|
||||
hfp_init();
|
||||
|
||||
hfp_supported_features = supported_features;
|
||||
hfp_codecs_nr = codecs_nr;
|
||||
|
@ -1057,7 +1057,8 @@ void hfp_hf_init(uint16_t rfcomm_channel_nr, uint32_t supported_features, uint16
|
||||
|
||||
l2cap_init();
|
||||
rfcomm_register_packet_handler(packet_handler);
|
||||
hfp_init(rfcomm_channel_nr);
|
||||
rfcomm_register_service(packet_handler, rfcomm_channel_nr, 0xffff);
|
||||
hfp_init();
|
||||
|
||||
hfp_supported_features = supported_features;
|
||||
|
||||
|
@ -267,7 +267,7 @@ void hsp_ag_init(uint8_t rfcomm_channel_nr){
|
||||
|
||||
rfcomm_init();
|
||||
rfcomm_register_packet_handler(packet_handler);
|
||||
rfcomm_register_service(rfcomm_channel_nr, 0xffff); // reserved channel, mtu limited by l2cap
|
||||
rfcomm_register_service(packet_handler, rfcomm_channel_nr, 0xffff); // reserved channel, mtu limited by l2cap
|
||||
|
||||
sdp_query_rfcomm_register_callback(handle_query_rfcomm_event);
|
||||
|
||||
|
@ -265,7 +265,7 @@ void hsp_hs_init(uint8_t rfcomm_channel_nr){
|
||||
|
||||
rfcomm_init();
|
||||
rfcomm_register_packet_handler(packet_handler);
|
||||
rfcomm_register_service(rfcomm_channel_nr, 0xffff); // reserved channel, mtu limited by l2cap
|
||||
rfcomm_register_service(packet_handler, rfcomm_channel_nr, 0xffff); // reserved channel, mtu limited by l2cap
|
||||
|
||||
sdp_query_rfcomm_register_callback(handle_query_rfcomm_event);
|
||||
|
||||
@ -588,7 +588,7 @@ static void handle_query_rfcomm_event(uint8_t packet_type, uint8_t *packet, uint
|
||||
if (channel_nr > 0){
|
||||
hsp_state = HSP_W4_RFCOMM_CONNECTED;
|
||||
printf("RFCOMM create channel.\n");
|
||||
rfcomm_create_channel(remote, channel_nr, NULL);
|
||||
rfcomm_create_channel(packet_handler, remote, channel_nr, NULL);
|
||||
break;
|
||||
}
|
||||
hsp_hs_reset_state();
|
||||
@ -602,7 +602,3 @@ void hsp_hs_press_button(void){
|
||||
hs_send_button_press = 1;
|
||||
hsp_run();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -299,40 +299,38 @@ static void rfcomm_channel_initialize(rfcomm_channel_t *channel, rfcomm_multiple
|
||||
// setup channel
|
||||
memset(channel, 0, sizeof(rfcomm_channel_t));
|
||||
|
||||
channel->state = RFCOMM_CHANNEL_CLOSED;
|
||||
channel->state_var = RFCOMM_CHANNEL_STATE_VAR_NONE;
|
||||
// set defaults for port configuration (even for services)
|
||||
rfcomm_rpn_data_set_defaults(&channel->rpn_data);
|
||||
|
||||
channel->state = RFCOMM_CHANNEL_CLOSED;
|
||||
channel->state_var = RFCOMM_CHANNEL_STATE_VAR_NONE;
|
||||
|
||||
channel->multiplexer = multiplexer;
|
||||
channel->service = service;
|
||||
channel->rfcomm_cid = rfcomm_client_cid_generator++;
|
||||
channel->max_frame_size = multiplexer->max_frame_size;
|
||||
|
||||
channel->credits_incoming = 0;
|
||||
channel->credits_outgoing = 0;
|
||||
|
||||
// set defaults for port configuration (even for services)
|
||||
rfcomm_rpn_data_set_defaults(&channel->rpn_data);
|
||||
|
||||
// incoming flow control not active
|
||||
channel->new_credits_incoming =RFCOMM_CREDITS;
|
||||
channel->new_credits_incoming = RFCOMM_CREDITS;
|
||||
channel->incoming_flow_control = 0;
|
||||
|
||||
channel->rls_line_status = RFCOMM_RLS_STATUS_INVALID;
|
||||
|
||||
channel->rls_line_status = RFCOMM_RLS_STATUS_INVALID;
|
||||
|
||||
channel->service = service;
|
||||
if (service) {
|
||||
// incoming connection
|
||||
channel->outgoing = 0;
|
||||
channel->dlci = (server_channel << 1) | multiplexer->outgoing;
|
||||
channel->dlci = (server_channel << 1) | multiplexer->outgoing;
|
||||
if (channel->max_frame_size > service->max_frame_size) {
|
||||
channel->max_frame_size = service->max_frame_size;
|
||||
}
|
||||
channel->incoming_flow_control = service->incoming_flow_control;
|
||||
channel->new_credits_incoming = service->incoming_initial_credits;
|
||||
channel->packet_handler = service->packet_handler;
|
||||
} else {
|
||||
// outgoing connection
|
||||
channel->outgoing = 1;
|
||||
channel->dlci = (server_channel << 1) | (multiplexer->outgoing ^ 1);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -2016,7 +2014,7 @@ int rfcomm_query_port_configuration(uint16_t rfcomm_cid){
|
||||
}
|
||||
|
||||
|
||||
static uint8_t rfcomm_create_channel_internal(bd_addr_t addr, uint8_t server_channel, uint8_t incoming_flow_control, uint8_t initial_credits, uint16_t * out_rfcomm_cid){
|
||||
static uint8_t rfcomm_channel_create_internal(btstack_packet_handler_t packet_handler, bd_addr_t addr, uint8_t server_channel, uint8_t incoming_flow_control, uint8_t initial_credits, uint16_t * out_rfcomm_cid){
|
||||
log_info("RFCOMM_CREATE_CHANNEL addr %s channel #%u init credits %u", bd_addr_to_str(addr), server_channel, initial_credits);
|
||||
|
||||
// create new multiplexer if necessary
|
||||
@ -2041,9 +2039,11 @@ static uint8_t rfcomm_create_channel_internal(bd_addr_t addr, uint8_t server_cha
|
||||
status = BTSTACK_MEMORY_ALLOC_FAILED;
|
||||
goto fail;
|
||||
}
|
||||
|
||||
// rfcomm_cid is already assigned by rfcomm_channel_create
|
||||
channel->incoming_flow_control = incoming_flow_control;
|
||||
channel->new_credits_incoming = initial_credits;
|
||||
channel->packet_handler = packet_handler;
|
||||
|
||||
// return rfcomm_cid
|
||||
if (out_rfcomm_cid){
|
||||
@ -2072,12 +2072,12 @@ fail:
|
||||
return status;
|
||||
}
|
||||
|
||||
uint8_t rfcomm_create_channel_with_initial_credits(bd_addr_t addr, uint8_t server_channel, uint8_t initial_credits, uint16_t * out_rfcomm_cid){
|
||||
return rfcomm_create_channel_internal(addr, server_channel, 1, initial_credits, out_rfcomm_cid);
|
||||
uint8_t rfcomm_create_channel_with_initial_credits(btstack_packet_handler_t packet_handler, bd_addr_t addr, uint8_t server_channel, uint8_t initial_credits, uint16_t * out_rfcomm_cid){
|
||||
return rfcomm_channel_create_internal(packet_handler, addr, server_channel, 1, initial_credits, out_rfcomm_cid);
|
||||
}
|
||||
|
||||
uint8_t rfcomm_create_channel(bd_addr_t addr, uint8_t server_channel, uint16_t * out_rfcomm_cid){
|
||||
return rfcomm_create_channel_internal(addr, server_channel, 0, RFCOMM_CREDITS, out_rfcomm_cid);
|
||||
uint8_t rfcomm_create_channel(btstack_packet_handler_t packet_handler, bd_addr_t addr, uint8_t server_channel, uint16_t * out_rfcomm_cid){
|
||||
return rfcomm_channel_create_internal(packet_handler, addr, server_channel, 0, RFCOMM_CREDITS, out_rfcomm_cid);
|
||||
}
|
||||
|
||||
void rfcomm_disconnect(uint16_t rfcomm_cid){
|
||||
@ -2091,7 +2091,10 @@ void rfcomm_disconnect(uint16_t rfcomm_cid){
|
||||
rfcomm_run();
|
||||
}
|
||||
|
||||
static uint8_t rfcomm_register_service_internal(uint8_t channel, uint16_t max_frame_size, uint8_t incoming_flow_control, uint8_t initial_credits){ log_info("RFCOMM_REGISTER_SERVICE channel #%u mtu %u flow_control %u credits %u",
|
||||
static uint8_t rfcomm_register_service_internal(btstack_packet_handler_t packet_handler,
|
||||
uint8_t channel, uint16_t max_frame_size, uint8_t incoming_flow_control, uint8_t initial_credits){
|
||||
|
||||
log_info("RFCOMM_REGISTER_SERVICE channel #%u mtu %u flow_control %u credits %u",
|
||||
channel, max_frame_size, incoming_flow_control, initial_credits);
|
||||
|
||||
// check if already registered
|
||||
@ -2112,6 +2115,7 @@ static uint8_t rfcomm_register_service_internal(uint8_t channel, uint16_t max_fr
|
||||
}
|
||||
|
||||
// fill in
|
||||
service->packet_handler = packet_handler;
|
||||
service->server_channel = channel;
|
||||
service->max_frame_size = max_frame_size;
|
||||
service->incoming_flow_control = incoming_flow_control;
|
||||
@ -2123,12 +2127,16 @@ static uint8_t rfcomm_register_service_internal(uint8_t channel, uint16_t max_fr
|
||||
return 0;
|
||||
}
|
||||
|
||||
uint8_t rfcomm_register_service_with_initial_credits(uint8_t channel, uint16_t max_frame_size, uint8_t initial_credits){
|
||||
return rfcomm_register_service_internal(channel, max_frame_size, 1, initial_credits);
|
||||
uint8_t rfcomm_register_service_with_initial_credits(btstack_packet_handler_t packet_handler,
|
||||
uint8_t channel, uint16_t max_frame_size, uint8_t initial_credits){
|
||||
|
||||
return rfcomm_register_service_internal(packet_handler, channel, max_frame_size, 1, initial_credits);
|
||||
}
|
||||
|
||||
uint8_t rfcomm_register_service(uint8_t channel, uint16_t max_frame_size){
|
||||
return rfcomm_register_service_internal(channel, max_frame_size, 0,RFCOMM_CREDITS);
|
||||
uint8_t rfcomm_register_service(btstack_packet_handler_t packet_handler, uint8_t channel,
|
||||
uint16_t max_frame_size){
|
||||
|
||||
return rfcomm_register_service_internal(packet_handler, channel, max_frame_size, 0,RFCOMM_CREDITS);
|
||||
}
|
||||
|
||||
void rfcomm_unregister_service(uint8_t service_channel){
|
||||
|
@ -175,6 +175,9 @@ typedef struct {
|
||||
// linked list - assert: first field
|
||||
btstack_linked_item_t item;
|
||||
|
||||
// packet handler
|
||||
btstack_packet_handler_t packet_handler;
|
||||
|
||||
// server channel
|
||||
uint8_t server_channel;
|
||||
|
||||
@ -187,8 +190,6 @@ typedef struct {
|
||||
// initial incoming credits
|
||||
uint8_t incoming_initial_credits;
|
||||
|
||||
// internal connection
|
||||
btstack_packet_handler_t packet_handler;
|
||||
|
||||
} rfcomm_service_t;
|
||||
|
||||
@ -231,12 +232,23 @@ typedef struct {
|
||||
|
||||
// info regarding an actual connection
|
||||
typedef struct {
|
||||
|
||||
// linked list - assert: first field
|
||||
btstack_linked_item_t item;
|
||||
|
||||
rfcomm_multiplexer_t *multiplexer;
|
||||
uint16_t rfcomm_cid;
|
||||
uint8_t outgoing;
|
||||
// packet handler
|
||||
btstack_packet_handler_t packet_handler;
|
||||
|
||||
// server channel (see rfcomm_service_t) - NULL => outgoing channel
|
||||
rfcomm_service_t * service;
|
||||
|
||||
// muliplexer for this channel
|
||||
rfcomm_multiplexer_t *multiplexer;
|
||||
|
||||
// RFCOMM Channel ID
|
||||
uint16_t rfcomm_cid;
|
||||
|
||||
//
|
||||
uint8_t dlci;
|
||||
|
||||
// credits for outgoing traffic
|
||||
@ -271,12 +283,6 @@ typedef struct {
|
||||
|
||||
// msc modem status.
|
||||
uint8_t msc_modem_status;
|
||||
|
||||
// server channel (see rfcomm_service_t) - NULL => outgoing channel
|
||||
rfcomm_service_t * service;
|
||||
|
||||
// internal connection
|
||||
btstack_packet_handler_t packet_handler;
|
||||
|
||||
} rfcomm_channel_t;
|
||||
|
||||
@ -305,7 +311,7 @@ void rfcomm_register_packet_handler(void (*handler)(uint8_t packet_type, uint16_
|
||||
* @param out_cid
|
||||
* @result status
|
||||
*/
|
||||
uint8_t rfcomm_create_channel(bd_addr_t addr, uint8_t server_channel, uint16_t * out_cid);
|
||||
uint8_t rfcomm_create_channel(btstack_packet_handler_t packet_handler, bd_addr_t addr, uint8_t server_channel, uint16_t * out_cid);
|
||||
|
||||
/*
|
||||
* @brief Create RFCOMM connection to a given server channel on a remote deivce.
|
||||
@ -316,7 +322,7 @@ uint8_t rfcomm_create_channel(bd_addr_t addr, uint8_t server_channel, uint16_t *
|
||||
* @param out_cid
|
||||
* @result status
|
||||
*/
|
||||
uint8_t rfcomm_create_channel_with_initial_credits(bd_addr_t addr, uint8_t server_channel, uint8_t initial_credits, uint16_t * out_cid);
|
||||
uint8_t rfcomm_create_channel_with_initial_credits(btstack_packet_handler_t packet_handler, bd_addr_t addr, uint8_t server_channel, uint8_t initial_credits, uint16_t * out_cid);
|
||||
|
||||
/**
|
||||
* @brief Disconnects RFCOMM channel with given identifier.
|
||||
@ -324,14 +330,23 @@ uint8_t rfcomm_create_channel_with_initial_credits(bd_addr_t addr, uint8_t serve
|
||||
void rfcomm_disconnect(uint16_t rfcomm_cid);
|
||||
|
||||
/**
|
||||
* @brief Registers RFCOMM service for a server channel and a maximum frame size, and assigns a packet handler. On embedded systems, use NULL for connection parameter. This channel provides automatically enough credits to the remote side.
|
||||
* @brief Registers RFCOMM service for a server channel and a maximum frame size, and assigns a packet handler.
|
||||
* This channel provides credits automatically to the remote side -> no flow control
|
||||
* @param packet handler for all channels of this service
|
||||
* @param channel
|
||||
* @param max_frame_size
|
||||
*/
|
||||
uint8_t rfcomm_register_service(uint8_t channel, uint16_t max_frame_size);
|
||||
uint8_t rfcomm_register_service(btstack_packet_handler_t packet_handler, uint8_t channel, uint16_t max_frame_size);
|
||||
|
||||
/**
|
||||
* @brief Registers RFCOMM service for a server channel and a maximum frame size, and assigns a packet handler. On embedded systems, use NULL for connection parameter. This channel will use explicit credit management. During channel establishment, an initial amount of credits is provided.
|
||||
* @brief Registers RFCOMM service for a server channel and a maximum frame size, and assigns a packet handler.
|
||||
* This channel will use explicit credit management. During channel establishment, an initial amount of credits is provided.
|
||||
* @param packet handler for all channels of this service
|
||||
* @param channel
|
||||
* @param max_frame_size
|
||||
* @param initial_credits
|
||||
*/
|
||||
uint8_t rfcomm_register_service_with_initial_credits(uint8_t channel, uint16_t max_frame_size, uint8_t initial_credits);
|
||||
uint8_t rfcomm_register_service_with_initial_credits(btstack_packet_handler_t packet_handler, uint8_t channel, uint16_t max_frame_size, uint8_t initial_credits);
|
||||
|
||||
/**
|
||||
* @brief Unregister RFCOMM service.
|
||||
|
@ -270,8 +270,9 @@ void rfcomm_register_packet_handler(void (*handler)(uint8_t packet_type, uint16_
|
||||
registered_rfcomm_packet_handler = handler;
|
||||
}
|
||||
|
||||
uint8_t rfcomm_register_service(uint8_t channel, uint16_t max_frame_size){
|
||||
uint8_t rfcomm_register_service(btstack_packet_handler_t packet_handler, uint8_t channel, uint16_t max_frame_size){
|
||||
printf("rfcomm_register_service\n");
|
||||
registered_rfcomm_packet_handler = handler;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -781,7 +781,7 @@ int btstack_main(int argc, const char * argv[]){
|
||||
|
||||
rfcomm_init();
|
||||
rfcomm_register_packet_handler(packet_handler);
|
||||
rfcomm_register_service(RFCOMM_SERVER_CHANNEL, 150); // reserved channel, mtu=100
|
||||
rfcomm_register_service(packet_handler, RFCOMM_SERVER_CHANNEL, 150); // reserved channel, mtu=100
|
||||
|
||||
// init SDP, create record for SPP and register with SDP
|
||||
sdp_init();
|
||||
|
@ -147,7 +147,7 @@ static void hci_event_handler(uint8_t packet_type, uint8_t * packet, uint16_t si
|
||||
}
|
||||
|
||||
|
||||
void handle_query_rfcomm_event(uint8_t packet_type, uint8_t *packet, uint16_t size, void * context){
|
||||
void handle_query_rfcomm_event(uint8_t packet_type, uint8_t *packet, uint16_t size){
|
||||
switch (event->type){
|
||||
case SDP_EVENT_QUERY_RFCOMM_SERVICE:
|
||||
channel_nr = sdp_event_query_rfcomm_service_get_name(packet);
|
||||
@ -156,7 +156,7 @@ void handle_query_rfcomm_event(uint8_t packet_type, uint8_t *packet, uint16_t si
|
||||
case SDP_EVENT_QUERY_COMPLETE:
|
||||
if (channel_nr > 0) {
|
||||
printf("RFCOMM create channel.\n");
|
||||
rfcomm_create_channel_internal(NULL, remote, channel_nr);
|
||||
rfcomm_create_channel(packet_handler, remote, channel_nr);
|
||||
break;
|
||||
}
|
||||
printf("Service not found.\n");
|
||||
@ -179,7 +179,7 @@ int btstack_main(int argc, const char * argv[]){
|
||||
rfcomm_init();
|
||||
rfcomm_register_packet_handler(packet_handler);
|
||||
|
||||
sdp_query_rfcomm_register_callback(handle_query_rfcomm_event, NULL);
|
||||
sdp_query_rfcomm_register_callback(handle_query_rfcomm_event);
|
||||
|
||||
// turn on!
|
||||
hci_power_control(HCI_POWER_ON);
|
||||
|
Loading…
x
Reference in New Issue
Block a user