Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Workaround for Infineon CYW55573 initialization #643

Closed
wants to merge 1 commit into from
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 17 additions & 0 deletions src/hci.c
Original file line number Diff line number Diff line change
Expand Up @@ -2540,6 +2540,23 @@ static void hci_initializing_event_handler(const uint8_t * packet, uint16_t size
return;

#ifndef HAVE_HOST_CONTROLLER_API
case HCI_INIT_W4_SEND_READ_LOCAL_VERSION_INFORMATION:
if (hci_event_packet_get_type(packet) == HCI_EVENT_COMMAND_COMPLETE){
uint16_t lmp_subversion = little_endian_read_16(packet, 12);
if (hci_stack->manufacturer == BLUETOOTH_COMPANY_ID_BROADCOM_CORPORATION &&
lmp_subversion == 0x2257){
// Workaround for CYW55573.
// CYW55573(on my Murata TYPE 2EA) doesn't respond to READ_LOCAL_NAME or BAUD_CHANGE after HCI_RESET,
// Go to HCI_INIT_CUSTOM_INIT when received LOCAL_VERSION_INFORMATION.
//
// NOTE:
// hci_stack->manufacturer and manufacturer in the response packet were modified to BLUETOOTH_COMPANY_ID_BROADCOM_CORPORATION before.
// Refer to function hci.c/handle_command_complete_event.
hci_stack->substate = HCI_INIT_CUSTOM_INIT;
return;
}
}
break;
case HCI_INIT_W4_SEND_BAUD_CHANGE:
// for STLC2500D, baud rate change already happened.
// for others, baud rate gets changed now
Expand Down