diff --git a/example/spp_and_le_counter.c b/example/spp_and_le_counter.c index 2b0271a33..0fc2389dc 100644 --- a/example/spp_and_le_counter.c +++ b/example/spp_and_le_counter.c @@ -121,23 +121,22 @@ static void packet_handler (uint8_t packet_type, uint16_t channel, uint8_t *pack case RFCOMM_EVENT_INCOMING_CONNECTION: // data: event (8), len(8), address(48), channel (8), rfcomm_cid (16) - reverse_bd_addr(&packet[2], - event_addr); - rfcomm_channel_nr = packet[8]; - rfcomm_channel_id = little_endian_read_16(packet, 9); - printf("RFCOMM channel %u requested for %s\n", rfcomm_channel_nr, bd_addr_to_str(event_addr)); + rfcomm_event_incoming_connection_get_bd_addr(packet, event_addr); + rfcomm_channel_nr = rfcomm_event_incoming_connection_get_server_channel(packet); + rfcomm_channel_id = rfcomm_event_incoming_connection_get_rfcomm_cid(packet); + printf("RFCOMM channel %u requested for %s\n", rfcomm_channel_nr, bd_addr_to_str(event_addr)); rfcomm_accept_connection(rfcomm_channel_id); break; case RFCOMM_EVENT_CHANNEL_OPENED: // data: event(8), len(8), status (8), address (48), server channel(8), rfcomm_cid(16), max frame size(16) - if (packet[2]) { - printf("RFCOMM channel open failed, status %u\n", packet[2]); - } else { - rfcomm_channel_id = little_endian_read_16(packet, 12); - mtu = little_endian_read_16(packet, 14); - printf("\nRFCOMM channel open succeeded. New RFCOMM Channel ID %u, max frame size %u\n", rfcomm_channel_id, mtu); - } + if (rfcomm_event_channel_opened_get_status(packet)) { + printf("RFCOMM channel open failed, status %u\n", rfcomm_event_channel_opened_get_status(packet)); + } else { + rfcomm_channel_id = rfcomm_event_channel_opened_get_rfcomm_cid(packet); + mtu = rfcomm_event_channel_opened_get_max_frame_size(packet); + printf("RFCOMM channel open succeeded. New RFCOMM Channel ID %u, max frame size %u\n", rfcomm_channel_id, mtu); + } break; case RFCOMM_EVENT_CHANNEL_CLOSED: diff --git a/example/spp_counter.c b/example/spp_counter.c index 7f562cc56..d7b439a15 100644 --- a/example/spp_counter.c +++ b/example/spp_counter.c @@ -201,20 +201,20 @@ static void packet_handler (uint8_t packet_type, uint16_t channel, uint8_t *pack case RFCOMM_EVENT_INCOMING_CONNECTION: // data: event (8), len(8), address(48), channel (8), rfcomm_cid (16) - reverse_bd_addr(&packet[2], event_addr); - rfcomm_channel_nr = packet[8]; - rfcomm_channel_id = little_endian_read_16(packet, 9); + rfcomm_event_incoming_connection_get_bd_addr(packet, event_addr); + rfcomm_channel_nr = rfcomm_event_incoming_connection_get_server_channel(packet); + rfcomm_channel_id = rfcomm_event_incoming_connection_get_rfcomm_cid(packet); printf("RFCOMM channel %u requested for %s\n", rfcomm_channel_nr, bd_addr_to_str(event_addr)); rfcomm_accept_connection(rfcomm_channel_id); break; case RFCOMM_EVENT_CHANNEL_OPENED: // data: event(8), len(8), status (8), address (48), server channel(8), rfcomm_cid(16), max frame size(16) - if (packet[2]) { - printf("RFCOMM channel open failed, status %u\n", packet[2]); + if (rfcomm_event_channel_opened_get_status(packet)) { + printf("RFCOMM channel open failed, status %u\n", rfcomm_event_channel_opened_get_status(packet)); } else { - rfcomm_channel_id = little_endian_read_16(packet, 12); - mtu = little_endian_read_16(packet, 14); + rfcomm_channel_id = rfcomm_event_channel_opened_get_rfcomm_cid(packet); + mtu = rfcomm_event_channel_opened_get_max_frame_size(packet); printf("RFCOMM channel open succeeded. New RFCOMM Channel ID %u, max frame size %u\n", rfcomm_channel_id, mtu); } break; diff --git a/example/spp_flowcontrol.c b/example/spp_flowcontrol.c index b0022497c..c76e257eb 100644 --- a/example/spp_flowcontrol.c +++ b/example/spp_flowcontrol.c @@ -168,21 +168,21 @@ static void packet_handler (uint8_t packet_type, uint16_t channel, uint8_t *pack case RFCOMM_EVENT_INCOMING_CONNECTION: // data: event (8), len(8), address(48), channel (8), rfcomm_cid (16) - reverse_bd_addr(&packet[2], event_addr); - rfcomm_channel_nr = packet[8]; - rfcomm_channel_id = little_endian_read_16(packet, 9); - printf("RFCOMM channel %u requested for %s\n\r", rfcomm_channel_nr, bd_addr_to_str(event_addr)); + rfcomm_event_incoming_connection_get_bd_addr(packet, event_addr); + rfcomm_channel_nr = rfcomm_event_incoming_connection_get_server_channel(packet); + rfcomm_channel_id = rfcomm_event_incoming_connection_get_rfcomm_cid(packet); + printf("RFCOMM channel %u requested for %s\n", rfcomm_channel_nr, bd_addr_to_str(event_addr)); rfcomm_accept_connection(rfcomm_channel_id); break; - + case RFCOMM_EVENT_CHANNEL_OPENED: // data: event(8), len(8), status (8), address (48), server channel(8), rfcomm_cid(16), max frame size(16) - if (packet[2]) { - printf("RFCOMM channel open failed, status %u\n\r", packet[2]); + if (rfcomm_event_channel_opened_get_status(packet)) { + printf("RFCOMM channel open failed, status %u\n", rfcomm_event_channel_opened_get_status(packet)); } else { - rfcomm_channel_id = little_endian_read_16(packet, 12); - mtu = little_endian_read_16(packet, 14); - printf("\n\rRFCOMM channel open succeeded. New RFCOMM Channel ID %u, max frame size %u\n\r", rfcomm_channel_id, mtu); + rfcomm_channel_id = rfcomm_event_channel_opened_get_rfcomm_cid(packet); + mtu = rfcomm_event_channel_opened_get_max_frame_size(packet); + printf("RFCOMM channel open succeeded. New RFCOMM Channel ID %u, max frame size %u\n", rfcomm_channel_id, mtu); } break; diff --git a/platform/daemon/example/rfcomm_echo.c b/platform/daemon/example/rfcomm_echo.c index 6489dcb2a..c7f40e46b 100644 --- a/platform/daemon/example/rfcomm_echo.c +++ b/platform/daemon/example/rfcomm_echo.c @@ -114,26 +114,25 @@ void packet_handler(uint8_t packet_type, uint16_t channel, uint8_t *packet, uint bt_send_cmd(&hci_pin_code_request_reply, &event_addr, 4, "0000"); break; - case RFCOMM_EVENT_INCOMING_CONNECTION: - // data: event (8), len(8), address(48), channel (8), rfcomm_cid (16) - reverse_bd_addr(&packet[2], - event_addr); - rfcomm_channel_nr = packet[8]; - rfcomm_channel_id = little_endian_read_16(packet, 9); - printf("RFCOMM channel %u requested for %s\n", rfcomm_channel_nr, bd_addr_to_str(event_addr)); - bt_send_cmd(&rfcomm_accept_connection_cmd, rfcomm_channel_id); - break; - - case RFCOMM_EVENT_CHANNEL_OPENED: - // data: event(8), len(8), status (8), address (48), handle(16), server channel(8), rfcomm_cid(16), max frame size(16) - if (packet[2]) { - printf("RFCOMM channel open failed, status %u\n", packet[2]); - } else { - rfcomm_channel_id = little_endian_read_16(packet, 12); - mtu = little_endian_read_16(packet, 14); - printf("RFCOMM channel open succeeded. New RFCOMM Channel ID %u, max frame size %u\n", rfcomm_channel_id, mtu); - } - break; + case RFCOMM_EVENT_INCOMING_CONNECTION: + // data: event (8), len(8), address(48), channel (8), rfcomm_cid (16) + rfcomm_event_incoming_connection_get_bd_addr(packet, event_addr); + rfcomm_channel_nr = rfcomm_event_incoming_connection_get_server_channel(packet); + rfcomm_channel_id = rfcomm_event_incoming_connection_get_rfcomm_cid(packet); + printf("RFCOMM channel %u requested for %s\n", rfcomm_channel_nr, bd_addr_to_str(event_addr)); + rfcomm_accept_connection(rfcomm_channel_id); + break; + + case RFCOMM_EVENT_CHANNEL_OPENED: + // data: event(8), len(8), status (8), address (48), server channel(8), rfcomm_cid(16), max frame size(16) + if (rfcomm_event_channel_opened_get_status(packet)) { + printf("RFCOMM channel open failed, status %u\n", rfcomm_event_channel_opened_get_status(packet)); + } else { + rfcomm_channel_id = rfcomm_event_channel_opened_get_rfcomm_cid(packet); + mtu = rfcomm_event_channel_opened_get_max_frame_size(packet); + printf("RFCOMM channel open succeeded. New RFCOMM Channel ID %u, max frame size %u\n", rfcomm_channel_id, mtu); + } + break; case HCI_EVENT_DISCONNECTION_COMPLETE: // connection closed -> quit test app diff --git a/platform/daemon/example/rfcomm_test.c b/platform/daemon/example/rfcomm_test.c index 023fe2e3f..0b59c9d2f 100644 --- a/platform/daemon/example/rfcomm_test.c +++ b/platform/daemon/example/rfcomm_test.c @@ -134,30 +134,27 @@ void packet_handler(uint8_t packet_type, uint16_t channel, uint8_t *packet, uint hci_event_pin_code_request_get_bd_addr(packet, event_addr); bt_send_cmd(&hci_pin_code_request_reply, &event_addr, 4, "0000"); break; - - case RFCOMM_EVENT_INCOMING_CONNECTION: - // data: event (8), len(8), address(48), channel (8), rfcomm_cid (16) - reverse_bd_addr(&packet[2], - event_addr); - rfcomm_channel_nr = packet[8]; - rfcomm_channel_id = little_endian_read_16(packet, 9); - printf("RFCOMM channel %u requested for %s\n", rfcomm_channel_nr, bd_addr_to_str(event_addr)); - bt_send_cmd(&rfcomm_accept_connection_cmd, rfcomm_channel_id); - break; - - case RFCOMM_EVENT_CHANNEL_OPENED: - // data: event(8), len(8), status (8), address (48), handle(16), server channel(8), rfcomm_cid(16), max frame size(16) - if (packet[2]) { - printf("RFCOMM channel open failed, status %u\n", packet[2]); - } else { - // data: event(8), len(8), status (8), address (48), handle (16), server channel(8), rfcomm_cid(16), max frame size(16) - rfcomm_channel_id = little_endian_read_16(packet, 12); - mtu = little_endian_read_16(packet, 14); - - printf("RFCOMM channel open succeeded. New RFCOMM Channel ID %u, max frame size %u\n", rfcomm_channel_id, mtu); + + case RFCOMM_EVENT_INCOMING_CONNECTION: + // data: event (8), len(8), address(48), channel (8), rfcomm_cid (16) + rfcomm_event_incoming_connection_get_bd_addr(packet, event_addr); + rfcomm_channel_nr = rfcomm_event_incoming_connection_get_server_channel(packet); + rfcomm_channel_id = rfcomm_event_incoming_connection_get_rfcomm_cid(packet); + printf("RFCOMM channel %u requested for %s\n", rfcomm_channel_nr, bd_addr_to_str(event_addr)); + rfcomm_accept_connection(rfcomm_channel_id); + break; + + case RFCOMM_EVENT_CHANNEL_OPENED: + // data: event(8), len(8), status (8), address (48), server channel(8), rfcomm_cid(16), max frame size(16) + if (rfcomm_event_channel_opened_get_status(packet)) { + printf("RFCOMM channel open failed, status %u\n", rfcomm_event_channel_opened_get_status(packet)); + } else { + rfcomm_channel_id = rfcomm_event_channel_opened_get_rfcomm_cid(packet); + mtu = rfcomm_event_channel_opened_get_max_frame_size(packet); + printf("RFCOMM channel open succeeded. New RFCOMM Channel ID %u, max frame size %u\n", rfcomm_channel_id, mtu); } - break; - + break; + case HCI_EVENT_DISCONNECTION_COMPLETE: // connection closed -> quit test app printf("Basebank connection closed\n"); diff --git a/port/ez430-rf2560/example/ant_test.c b/port/ez430-rf2560/example/ant_test.c index e1d477035..b075e9e03 100644 --- a/port/ez430-rf2560/example/ant_test.c +++ b/port/ez430-rf2560/example/ant_test.c @@ -124,25 +124,24 @@ static void packet_handler (uint8_t packet_type, uint16_t channel, uint8_t *pack break; case RFCOMM_EVENT_INCOMING_CONNECTION: - // data: event (8), len(8), address(48), channel (8), rfcomm_cid (16) - reverse_bd_addr(&packet[2], - event_addr); - rfcomm_channel_nr = packet[8]; - rfcomm_channel_id = little_endian_read_16(packet, 9); - printf("RFCOMM channel %u requested for %s\n\r", rfcomm_channel_nr, bd_addr_to_str(event_addr)); + // data: event (8), len(8), address(48), channel (8), rfcomm_cid (16) + rfcomm_event_incoming_connection_get_bd_addr(packet, event_addr); + rfcomm_channel_nr = rfcomm_event_incoming_connection_get_server_channel(packet); + rfcomm_channel_id = rfcomm_event_incoming_connection_get_rfcomm_cid(packet); + printf("RFCOMM channel %u requested for %s\n", rfcomm_channel_nr, bd_addr_to_str(event_addr)); rfcomm_accept_connection(rfcomm_channel_id); - break; - - case RFCOMM_EVENT_CHANNEL_OPENED: - // data: event(8), len(8), status (8), address (48), server channel(8), rfcomm_cid(16), max frame size(16) - if (packet[2]) { - printf("RFCOMM channel open failed, status %u\n\r", packet[2]); - } else { - rfcomm_channel_id = little_endian_read_16(packet, 12); - mtu = little_endian_read_16(packet, 14); - printf("\n\rRFCOMM channel open succeeded. New RFCOMM Channel ID %u, max frame size %u\n\r", rfcomm_channel_id, mtu); - } - break; + break; + + case RFCOMM_EVENT_CHANNEL_OPENED: + // data: event(8), len(8), status (8), address (48), server channel(8), rfcomm_cid(16), max frame size(16) + if (rfcomm_event_channel_opened_get_status(packet)) { + printf("RFCOMM channel open failed, status %u\n", rfcomm_event_channel_opened_get_status(packet)); + } else { + rfcomm_channel_id = rfcomm_event_channel_opened_get_rfcomm_cid(packet); + mtu = rfcomm_event_channel_opened_get_max_frame_size(packet); + printf("RFCOMM channel open succeeded. New RFCOMM Channel ID %u, max frame size %u\n", rfcomm_channel_id, mtu); + } + break; case RFCOMM_EVENT_CHANNEL_CLOSED: rfcomm_channel_id = 0; diff --git a/port/ez430-rf2560/example/spp_accel.c b/port/ez430-rf2560/example/spp_accel.c index f97711626..3506c775f 100644 --- a/port/ez430-rf2560/example/spp_accel.c +++ b/port/ez430-rf2560/example/spp_accel.c @@ -162,21 +162,21 @@ static void packet_handler (uint8_t packet_type, uint16_t channel, uint8_t *pack case RFCOMM_EVENT_INCOMING_CONNECTION: // data: event (8), len(8), address(48), channel (8), rfcomm_cid (16) - reverse_bd_addr(&packet[2], event_addr); - rfcomm_channel_nr = packet[8]; - rfcomm_channel_id = little_endian_read_16(packet, 9); - printf("RFCOMM channel %u requested for %s\n\r", rfcomm_channel_nr, bd_addr_to_str(event_addr)); + rfcomm_event_incoming_connection_get_bd_addr(packet, event_addr); + rfcomm_channel_nr = rfcomm_event_incoming_connection_get_server_channel(packet); + rfcomm_channel_id = rfcomm_event_incoming_connection_get_rfcomm_cid(packet); + printf("RFCOMM channel %u requested for %s\n", rfcomm_channel_nr, bd_addr_to_str(event_addr)); rfcomm_accept_connection(rfcomm_channel_id); break; - + case RFCOMM_EVENT_CHANNEL_OPENED: // data: event(8), len(8), status (8), address (48), server channel(8), rfcomm_cid(16), max frame size(16) - if (packet[2]) { - printf("RFCOMM channel open failed, status %u\n\r", packet[2]); + if (rfcomm_event_channel_opened_get_status(packet)) { + printf("RFCOMM channel open failed, status %u\n", rfcomm_event_channel_opened_get_status(packet)); } else { - rfcomm_channel_id = little_endian_read_16(packet, 12); - mtu = little_endian_read_16(packet, 14); - printf("\n\rRFCOMM channel open succeeded. New RFCOMM Channel ID %u, max frame size %u\n\r", rfcomm_channel_id, mtu); + rfcomm_channel_id = rfcomm_event_channel_opened_get_rfcomm_cid(packet); + mtu = rfcomm_event_channel_opened_get_max_frame_size(packet); + printf("RFCOMM channel open succeeded. New RFCOMM Channel ID %u, max frame size %u\n", rfcomm_channel_id, mtu); } break; diff --git a/port/msp-exp430f5438-cc2564b/example/ant_test.c b/port/msp-exp430f5438-cc2564b/example/ant_test.c index 89bfb6d32..ac4e33728 100644 --- a/port/msp-exp430f5438-cc2564b/example/ant_test.c +++ b/port/msp-exp430f5438-cc2564b/example/ant_test.c @@ -123,25 +123,24 @@ static void packet_handler (uint8_t packet_type, uint16_t channel, uint8_t *pack break; case RFCOMM_EVENT_INCOMING_CONNECTION: - // data: event (8), len(8), address(48), channel (8), rfcomm_cid (16) - reverse_bd_addr(&packet[2], - event_addr); - rfcomm_channel_nr = packet[8]; - rfcomm_channel_id = little_endian_read_16(packet, 9); - printf("RFCOMM channel %u requested for %s\n\r", rfcomm_channel_nr, bd_addr_to_str(event_addr)); + // data: event (8), len(8), address(48), channel (8), rfcomm_cid (16) + rfcomm_event_incoming_connection_get_bd_addr(packet, event_addr); + rfcomm_channel_nr = rfcomm_event_incoming_connection_get_server_channel(packet); + rfcomm_channel_id = rfcomm_event_incoming_connection_get_rfcomm_cid(packet); + printf("RFCOMM channel %u requested for %s\n", rfcomm_channel_nr, bd_addr_to_str(event_addr)); rfcomm_accept_connection(rfcomm_channel_id); - break; - - case RFCOMM_EVENT_CHANNEL_OPENED: - // data: event(8), len(8), status (8), address (48), server channel(8), rfcomm_cid(16), max frame size(16) - if (packet[2]) { - printf("RFCOMM channel open failed, status %u\n\r", packet[2]); - } else { - rfcomm_channel_id = little_endian_read_16(packet, 12); - mtu = little_endian_read_16(packet, 14); - printf("\n\rRFCOMM channel open succeeded. New RFCOMM Channel ID %u, max frame size %u\n\r", rfcomm_channel_id, mtu); - } - break; + break; + + case RFCOMM_EVENT_CHANNEL_OPENED: + // data: event(8), len(8), status (8), address (48), server channel(8), rfcomm_cid(16), max frame size(16) + if (rfcomm_event_channel_opened_get_status(packet)) { + printf("RFCOMM channel open failed, status %u\n", rfcomm_event_channel_opened_get_status(packet)); + } else { + rfcomm_channel_id = rfcomm_event_channel_opened_get_rfcomm_cid(packet); + mtu = rfcomm_event_channel_opened_get_max_frame_size(packet); + printf("RFCOMM channel open succeeded. New RFCOMM Channel ID %u, max frame size %u\n", rfcomm_channel_id, mtu); + } + break; case RFCOMM_EVENT_CHANNEL_CLOSED: rfcomm_channel_id = 0; diff --git a/port/msp-exp430f5438-cc2564b/example/spp_accel.c b/port/msp-exp430f5438-cc2564b/example/spp_accel.c index b6c2d1114..be0f87581 100644 --- a/port/msp-exp430f5438-cc2564b/example/spp_accel.c +++ b/port/msp-exp430f5438-cc2564b/example/spp_accel.c @@ -163,21 +163,21 @@ static void packet_handler (uint8_t packet_type, uint16_t channel, uint8_t *pack case RFCOMM_EVENT_INCOMING_CONNECTION: // data: event (8), len(8), address(48), channel (8), rfcomm_cid (16) - reverse_bd_addr(&packet[2], event_addr); - rfcomm_channel_nr = packet[8]; - rfcomm_channel_id = little_endian_read_16(packet, 9); - printf("RFCOMM channel %u requested for %s\n\r", rfcomm_channel_nr, bd_addr_to_str(event_addr)); + rfcomm_event_incoming_connection_get_bd_addr(packet, event_addr); + rfcomm_channel_nr = rfcomm_event_incoming_connection_get_server_channel(packet); + rfcomm_channel_id = rfcomm_event_incoming_connection_get_rfcomm_cid(packet); + printf("RFCOMM channel %u requested for %s\n", rfcomm_channel_nr, bd_addr_to_str(event_addr)); rfcomm_accept_connection(rfcomm_channel_id); break; - + case RFCOMM_EVENT_CHANNEL_OPENED: // data: event(8), len(8), status (8), address (48), server channel(8), rfcomm_cid(16), max frame size(16) - if (packet[2]) { - printf("RFCOMM channel open failed, status %u\n\r", packet[2]); + if (rfcomm_event_channel_opened_get_status(packet)) { + printf("RFCOMM channel open failed, status %u\n", rfcomm_event_channel_opened_get_status(packet)); } else { - rfcomm_channel_id = little_endian_read_16(packet, 12); - mtu = little_endian_read_16(packet, 14); - printf("\n\rRFCOMM channel open succeeded. New RFCOMM Channel ID %u, max frame size %u\n\r", rfcomm_channel_id, mtu); + rfcomm_channel_id = rfcomm_event_channel_opened_get_rfcomm_cid(packet); + mtu = rfcomm_event_channel_opened_get_max_frame_size(packet); + printf("RFCOMM channel open succeeded. New RFCOMM Channel ID %u, max frame size %u\n", rfcomm_channel_id, mtu); } break; diff --git a/src/classic/hfp.c b/src/classic/hfp.c index 31e3ecfdd..6cda9a808 100644 --- a/src/classic/hfp.c +++ b/src/classic/hfp.c @@ -452,12 +452,11 @@ void hfp_handle_hci_event(uint8_t packet_type, uint8_t *packet, uint16_t size){ case RFCOMM_EVENT_INCOMING_CONNECTION: // data: event (8), len(8), address(48), channel (8), rfcomm_cid (16) - reverse_bd_addr(&packet[2], event_addr); + rfcomm_event_incoming_connection_get_bd_addr(packet, event_addr); hfp_connection = provide_hfp_connection_context_for_bd_addr(event_addr); - if (!hfp_connection || hfp_connection->state != HFP_IDLE) return; - hfp_connection->rfcomm_cid = little_endian_read_16(packet, 9); + hfp_connection->rfcomm_cid = rfcomm_event_incoming_connection_get_rfcomm_cid(packet); hfp_connection->state = HFP_W4_RFCOMM_CONNECTED; printf("RFCOMM channel %u requested for %s\n", hfp_connection->rfcomm_cid, bd_addr_to_str(hfp_connection->remote_addr)); rfcomm_accept_connection(hfp_connection->rfcomm_cid); @@ -467,19 +466,17 @@ void hfp_handle_hci_event(uint8_t packet_type, uint8_t *packet, uint16_t size){ // data: event(8), len(8), status (8), address (48), handle(16), server channel(8), rfcomm_cid(16), max frame size(16) printf("RFCOMM_EVENT_CHANNEL_OPENED packet_handler type %u, size %u\n", packet_type, size); - reverse_bd_addr(&packet[3], event_addr); + rfcomm_event_incoming_connection_get_bd_addr(packet, event_addr); hfp_connection = get_hfp_connection_context_for_bd_addr(event_addr); if (!hfp_connection || hfp_connection->state != HFP_W4_RFCOMM_CONNECTED) return; - if (packet[2]) { - hfp_emit_event(hfp_callback, HFP_SUBEVENT_SERVICE_LEVEL_CONNECTION_ESTABLISHED, packet[2]); + if (rfcomm_event_channel_opened_get_status(packet)) { + hfp_emit_event(hfp_callback, HFP_SUBEVENT_SERVICE_LEVEL_CONNECTION_ESTABLISHED, rfcomm_event_channel_opened_get_status(packet)); remove_hfp_connection_context(hfp_connection); } else { - hfp_connection->acl_handle = little_endian_read_16(packet, 9); - printf("RFCOMM_EVENT_CHANNEL_OPENED con_handle 0x%02x\n", hfp_connection->acl_handle); - - hfp_connection->rfcomm_cid = little_endian_read_16(packet, 12); - uint16_t mtu = little_endian_read_16(packet, 14); + hfp_connection->acl_handle = rfcomm_event_channel_opened_get_con_handle(packet); + hfp_connection->rfcomm_cid = rfcomm_event_channel_opened_get_rfcomm_cid(packet); + uint16_t mtu = rfcomm_event_channel_opened_get_max_frame_size(packet); printf("RFCOMM channel open succeeded. hfp_connection %p, RFCOMM Channel ID 0x%02x, max frame size %u\n", hfp_connection, hfp_connection->rfcomm_cid, mtu); switch (hfp_connection->state){ diff --git a/src/classic/hsp_ag.c b/src/classic/hsp_ag.c index b177256da..334cedad6 100644 --- a/src/classic/hsp_ag.c +++ b/src/classic/hsp_ag.c @@ -604,8 +604,8 @@ static void packet_handler (uint8_t packet_type, uint16_t channel, uint8_t *pack // data: event (8), len(8), address(48), channel (8), rfcomm_cid (16) if (hsp_state != HSP_IDLE) return; - reverse_bd_addr(&packet[2], event_addr); - rfcomm_cid = little_endian_read_16(packet, 9); + rfcomm_event_incoming_connection_get_bd_addr(packet, event_addr); + rfcomm_cid = rfcomm_event_incoming_connection_get_server_channel(packet); log_info("RFCOMM channel %u requested for %s", packet[8], bd_addr_to_str(event_addr)); hsp_state = HSP_W4_RFCOMM_CONNECTED; rfcomm_accept_connection(rfcomm_cid); @@ -614,15 +614,15 @@ static void packet_handler (uint8_t packet_type, uint16_t channel, uint8_t *pack case RFCOMM_EVENT_CHANNEL_OPENED: log_info("RFCOMM_EVENT_CHANNEL_OPENED packet_handler type %u, packet[0] %x", packet_type, packet[0]); // data: event(8), len(8), status (8), address (48), handle(16), server channel(8), rfcomm_cid(16), max frame size(16) - if (packet[2]) { - log_info("RFCOMM channel open failed, status %u§", packet[2]); + if (rfcomm_event_channel_opened_get_status(packet)) { + log_info("RFCOMM channel open failed, status %u§", rfcomm_event_channel_opened_get_status(packet)); hsp_ag_reset_state(); hsp_state = HSP_IDLE; } else { // data: event(8) , len(8), status (8), address (48), handle (16), server channel(8), rfcomm_cid(16), max frame size(16) - rfcomm_handle = little_endian_read_16(packet, 9); - rfcomm_cid = little_endian_read_16(packet, 12); - mtu = little_endian_read_16(packet, 14); + rfcomm_handle = rfcomm_event_channel_opened_get_con_handle(packet); + rfcomm_cid = rfcomm_event_channel_opened_get_rfcomm_cid(packet); + mtu = rfcomm_event_channel_opened_get_max_frame_size(packet); log_info("RFCOMM channel open succeeded. New RFCOMM Channel ID %u, max frame size %u, state %d", rfcomm_cid, mtu, hsp_state); hsp_state = HSP_RFCOMM_CONNECTION_ESTABLISHED; } diff --git a/test/pts/classic_test.c b/test/pts/classic_test.c index e31cebb47..5dd9dfdf1 100644 --- a/test/pts/classic_test.c +++ b/test/pts/classic_test.c @@ -348,20 +348,20 @@ static void packet_handler (uint8_t packet_type, uint16_t channel, uint8_t *pack case RFCOMM_EVENT_INCOMING_CONNECTION: // data: event (8), len(8), address(48), channel (8), rfcomm_cid (16) - reverse_bd_addr(&packet[2], remote); - rfcomm_channel_nr = packet[8]; - rfcomm_channel_id = little_endian_read_16(packet, 9); + rfcomm_event_incoming_connection_get_bd_addr(packet, remote); + rfcomm_channel_nr = rfcomm_event_incoming_connection_get_server_channel(packet); + rfcomm_channel_id = rfcomm_event_incoming_connection_get_rfcomm_cid(packet); printf("RFCOMM channel %u requested for %s\n\r", rfcomm_channel_nr, bd_addr_to_str(remote)); rfcomm_accept_connection(rfcomm_channel_id); break; case RFCOMM_EVENT_CHANNEL_OPENED: // data: event(8), len(8), status (8), address (48), server channel(8), rfcomm_cid(16), max frame size(16) - if (packet[2]) { - printf("RFCOMM channel open failed, status %u\n\r", packet[2]); + if (rfcomm_event_channel_opened_get_status(packet)) { + printf("RFCOMM channel open failed, status %u\n\r", rfcomm_event_channel_opened_get_status(packet)); } else { - rfcomm_channel_id = little_endian_read_16(packet, 12); - mtu = little_endian_read_16(packet, 14); + rfcomm_channel_id = rfcomm_event_channel_opened_get_rfcomm_cid(packet); + mtu = rfcomm_event_channel_opened_get_max_frame_size(packet); if (mtu > 60){ printf("BTstack libusb hack: using reduced MTU for sending instead of %u\n", mtu); mtu = 60;