diff options
author | Tom Hughes <tomhughes@chromium.org> | 2022-09-21 14:10:01 -0700 |
---|---|---|
committer | Tom Hughes <tomhughes@chromium.org> | 2022-09-22 12:49:33 -0700 |
commit | 2bcf863b492fe7ed8105c853814dba6ed32ba719 (patch) | |
tree | fcf6ce5810f9ff9e3c8cce434812dd75492269ed /common/btle_ll.c | |
parent | e5fb0b9ba488614b5684e640530f00821ab7b943 (diff) | |
parent | 28712dae9d7ed1e694f7622cc083afa71090d4d5 (diff) | |
download | chrome-ec-firmware-fpmcu-bloonchipper-release.tar.gz |
Merge remote-tracking branch cros/main into firmware-fpmcu-bloonchipper-releasefirmware-fpmcu-bloonchipper-release
Generated by: ./util/update_release_branch.py --board bloonchipper
--relevant_paths_file ./util/fingerprint-relevant-paths.txt firmware-
fpmcu-bloonchipper-release
Relevant changes:
git log --oneline e5fb0b9ba4..28712dae9d -- board/hatch_fp
board/bloonchipper common/fpsensor docs/fingerprint driver/fingerprint
util/getversion.sh
ded9307b79 util/getversion.sh: Fix version when not in a git repo
956055e692 board: change Google USB vendor info
71b2ef709d Update license boilerplate text in source code files
33e11afda0 Revert "fpsensor: Build fpsensor source file with C++"
c8d0360723 fpsensor: Build fpsensor source file with C++
bc113abd53 fpsensor: Fix g++ compiler error
150a58a0dc fpsensor: Fix fp_set_sensor_mode return type
b33b5ce85b fpsensor: Remove nested designators for C++ compatibility
2e864b2539 tree-wide: const-ify argv for console commands
56d8b360f9 test: Add test for get ikm failure when seed not set
3a3d6c3690 test: Add test for fpsensor trivial key failure
233e6bbd08 fpsensor_crypto: Abstract calls to hmac_SHA256
0a041b285b docs/fingerprint: Typo correction
c03fab67e2 docs/fingerprint: Fix the path of fputils.py
0b5d4baf5a util/getversion.sh: Fix empty file list handling
6e128fe760 FPMCU dev board environment with Satlab
3eb29b6aa5 builtin: Move ssize_t to sys/types.h
345d62ebd1 docs/fingerprint: Update power numbers for latest dartmonkey release
c25ffdb316 common: Conditionally support printf %l and %i modifiers
9a3c514b45 test: Add a test to check if the debugger is connected
54e603413f Move standard library tests to their own file
43fa6b4bf8 docs/fingerprint: Update power numbers for latest bloonchipper release
25536f9a84 driver/fingerprint/fpc/bep/fpc_sensor_spi.c: Format with clang-format
4face99efd driver/fingerprint/fpc/libfp/fpc_sensor_pal.h: Format with clang-format
738de2b575 trng: Rename rand to trng_rand
14b8270edd docs/fingerprint: Update dragonclaw power numbers
0b268f93d1 driver/fingerprint/fpc/libfp/fpc_private.c: Format with clang-format
f80da163f2 driver/fingerprint/fpc/libfp/fpc_private.h: Format with clang-format
5e9c85c9b1 driver/fingerprint/fpc/libfp/fpc_sensor_pal.c: Format with clang-format
c1f9dd3cf8 driver/fingerprint/fpc/libfp/fpc_bio_algorithm.h: Format with clang-format
eb1e1bed8d driver/fingerprint/fpc/libfp/fpc1145_private.h: Format with clang-format
6e7b611821 driver/fingerprint/fpc/bep/fpc_bio_algorithm.h: Format with clang-format
e0589cd5e2 driver/fingerprint/fpc/bep/fpc1035_private.h: Format with clang-format
7905e556a0 common/fpsensor/fpsensor_crypto.c: Format with clang-format
21289d170c driver/fingerprint/fpc/bep/fpc1025_private.h: Format with clang-format
98a20f937e common/fpsensor/fpsensor_state.c: Format with clang-format
a2d255d8af common/fpsensor/fpsensor.c: Format with clang-format
73055eeb3f driver/fingerprint/fpc/bep/fpc_private.c: Format with clang-format
0f7b5cb509 common/fpsensor/fpsensor_private.h: Format with clang-format
1ceade6e65 driver/fingerprint/fpc/bep/fpc_private.h: Format with clang-format
dc3e9008b8 board/hatch_fp/board.h: Format with clang-format
dca9d74321 Revert "trng: Rename rand to trng_rand"
a6b0b3554f trng: Rename rand to trng_rand
28d0b75b70 third_party/boringssl: Remove unused header
BRANCH=None
BUG=b:246424843 b:234181908 b:244781166 b:234181908 b:244387210
BUG=b:242720240 chromium:1098010 b:180945056 b:236025198 b:234181908
BUG=b:234181908 b:237344361 b:131913998 b:236386294 b:234143158
BUG=b:234781655 b:215613183 b:242720910
TEST=`make -j buildall`
TEST=./test/run_device_tests.py --board bloonchipper
Test "aes": PASSED
Test "cec": PASSED
Test "cortexm_fpu": PASSED
Test "crc": PASSED
Test "flash_physical": PASSED
Test "flash_write_protect": PASSED
Test "fpsensor_hw": PASSED
Test "fpsensor_spi_ro": PASSED
Test "fpsensor_spi_rw": PASSED
Test "fpsensor_uart_ro": PASSED
Test "fpsensor_uart_rw": PASSED
Test "mpu_ro": PASSED
Test "mpu_rw": PASSED
Test "mutex": PASSED
Test "pingpong": PASSED
Test "printf": PASSED
Test "queue": PASSED
Test "rollback_region0": PASSED
Test "rollback_region1": PASSED
Test "rollback_entropy": PASSED
Test "rtc": PASSED
Test "sha256": PASSED
Test "sha256_unrolled": PASSED
Test "static_if": PASSED
Test "stdlib": PASSED
Test "system_is_locked_wp_on": PASSED
Test "system_is_locked_wp_off": PASSED
Test "timer_dos": PASSED
Test "utils": PASSED
Test "utils_str": PASSED
Test "stm32f_rtc": PASSED
Test "panic_data_bloonchipper_v2.0.4277": PASSED
Test "panic_data_bloonchipper_v2.0.5938": PASSED
Force-Relevant-Builds: all
Signed-off-by: Tom Hughes <tomhughes@chromium.org>
Change-Id: I264ad0ffe7afcd507a1e483c6e934a9c4fea47c3
Diffstat (limited to 'common/btle_ll.c')
-rw-r--r-- | common/btle_ll.c | 153 |
1 files changed, 76 insertions, 77 deletions
diff --git a/common/btle_ll.c b/common/btle_ll.c index d57eb3bfd3..71ca108565 100644 --- a/common/btle_ll.c +++ b/common/btle_ll.c @@ -1,4 +1,4 @@ -/* Copyright 2016 The Chromium OS Authors. All rights reserved. +/* Copyright 2016 The ChromiumOS Authors * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ @@ -16,8 +16,8 @@ #ifdef CONFIG_BLUETOOTH_LL_DEBUG #define CPUTS(outstr) cputs(CC_BLUETOOTH_LL, outstr) -#define CPRINTS(format, args...) cprints(CC_BLUETOOTH_LL, format, ## args) -#define CPRINTF(format, args...) cprintf(CC_BLUETOOTH_LL, format, ## args) +#define CPRINTS(format, args...) cprints(CC_BLUETOOTH_LL, format, ##args) +#define CPRINTF(format, args...) cprintf(CC_BLUETOOTH_LL, format, ##args) #else /* CONFIG_BLUETOOTH_LL_DEBUG */ @@ -57,7 +57,7 @@ uint8_t is_first_data_packet; static uint64_t ll_random_address = 0xC5BADBADBAD1; /* Uninitialized */ static uint64_t ll_public_address = 0xC5BADBADBADF; /* Uninitialized */ -static uint8_t ll_channel_map[5] = {0xff, 0xff, 0xff, 0xff, 0x1f}; +static uint8_t ll_channel_map[5] = { 0xff, 0xff, 0xff, 0xff, 0x1f }; static uint8_t ll_filter_duplicates; @@ -161,8 +161,8 @@ static uint8_t ll_state_change_request(enum ll_state_t next_state) { /* Initialize the radio if it hasn't been initialized */ if (ll_state == UNINITIALIZED) { - if (ble_radio_init(BLE_ADV_ACCESS_ADDRESS, BLE_ADV_CRCINIT) - != EC_SUCCESS) + if (ble_radio_init(BLE_ADV_ACCESS_ADDRESS, BLE_ADV_CRCINIT) != + EC_SUCCESS) return HCI_ERR_Hardware_Failure; ll_state = STANDBY; } @@ -236,50 +236,50 @@ uint8_t initialize_connection(void) num_consecutive_failures = 0; /* Copy data into the appropriate portions of memory */ - memcpy((uint8_t *)&(conn_params.init_a), - payload_start, CONNECT_REQ_INITA_LEN); + memcpy((uint8_t *)&(conn_params.init_a), payload_start, + CONNECT_REQ_INITA_LEN); cur_offset += CONNECT_REQ_INITA_LEN; - memcpy((uint8_t *)&(conn_params.adv_a), - payload_start+cur_offset, CONNECT_REQ_ADVA_LEN); + memcpy((uint8_t *)&(conn_params.adv_a), payload_start + cur_offset, + CONNECT_REQ_ADVA_LEN); cur_offset += CONNECT_REQ_ADVA_LEN; - memcpy(&(conn_params.access_addr), - payload_start+cur_offset, CONNECT_REQ_ACCESS_ADDR_LEN); + memcpy(&(conn_params.access_addr), payload_start + cur_offset, + CONNECT_REQ_ACCESS_ADDR_LEN); cur_offset += CONNECT_REQ_ACCESS_ADDR_LEN; conn_params.crc_init_val = 0; - memcpy(&(conn_params.crc_init_val), - payload_start+cur_offset, CONNECT_REQ_CRC_INIT_VAL_LEN); + memcpy(&(conn_params.crc_init_val), payload_start + cur_offset, + CONNECT_REQ_CRC_INIT_VAL_LEN); cur_offset += CONNECT_REQ_CRC_INIT_VAL_LEN; - memcpy(&(conn_params.win_size), - payload_start+cur_offset, CONNECT_REQ_WIN_SIZE_LEN); + memcpy(&(conn_params.win_size), payload_start + cur_offset, + CONNECT_REQ_WIN_SIZE_LEN); cur_offset += CONNECT_REQ_WIN_SIZE_LEN; - memcpy(&(conn_params.win_offset), - payload_start+cur_offset, CONNECT_REQ_WIN_OFFSET_LEN); + memcpy(&(conn_params.win_offset), payload_start + cur_offset, + CONNECT_REQ_WIN_OFFSET_LEN); cur_offset += CONNECT_REQ_WIN_OFFSET_LEN; - memcpy(&(conn_params.interval), - payload_start+cur_offset, CONNECT_REQ_INTERVAL_LEN); + memcpy(&(conn_params.interval), payload_start + cur_offset, + CONNECT_REQ_INTERVAL_LEN); cur_offset += CONNECT_REQ_INTERVAL_LEN; - memcpy(&(conn_params.latency), - payload_start+cur_offset, CONNECT_REQ_LATENCY_LEN); + memcpy(&(conn_params.latency), payload_start + cur_offset, + CONNECT_REQ_LATENCY_LEN); cur_offset += CONNECT_REQ_LATENCY_LEN; - memcpy(&(conn_params.timeout), - payload_start+cur_offset, CONNECT_REQ_TIMEOUT_LEN); + memcpy(&(conn_params.timeout), payload_start + cur_offset, + CONNECT_REQ_TIMEOUT_LEN); cur_offset += CONNECT_REQ_TIMEOUT_LEN; conn_params.channel_map = 0; - memcpy(&(conn_params.channel_map), - payload_start+cur_offset, CONNECT_REQ_CHANNEL_MAP_LEN); + memcpy(&(conn_params.channel_map), payload_start + cur_offset, + CONNECT_REQ_CHANNEL_MAP_LEN); cur_offset += CONNECT_REQ_CHANNEL_MAP_LEN; - memcpy(&final_octet, payload_start+cur_offset, - CONNECT_REQ_HOP_INCREMENT_AND_SCA_LEN); + memcpy(&final_octet, payload_start + cur_offset, + CONNECT_REQ_HOP_INCREMENT_AND_SCA_LEN); /* last 5 bits of final_octet: */ conn_params.hop_increment = final_octet & 0x1f; @@ -288,9 +288,9 @@ uint8_t initialize_connection(void) /* Set up channel mapping table */ for (i = 0; i < 5; ++i) - remap_arr[i] = *(((uint8_t *)&(conn_params.channel_map))+i); + remap_arr[i] = *(((uint8_t *)&(conn_params.channel_map)) + i); fill_remapping_table(&remap_table, remap_arr, - conn_params.hop_increment); + conn_params.hop_increment); /* Calculate transmission window parameters */ conn_params.transmitWindowSize = conn_params.win_size * 1250; @@ -332,7 +332,7 @@ uint8_t ll_read_allow_list_size(uint8_t *return_params) uint8_t ll_add_device_to_allow_list(uint8_t *params) { if (ble_radio_add_device_to_allow_list(¶ms[1], params[0]) == - EC_SUCCESS) + EC_SUCCESS) return HCI_SUCCESS; else return HCI_ERR_Host_Rejected_Due_To_Limited_Resources; @@ -341,7 +341,7 @@ uint8_t ll_add_device_to_allow_list(uint8_t *params) uint8_t ll_remove_device_from_allow_list(uint8_t *params) { if (ble_radio_remove_device_from_allow_list(¶ms[1], params[0]) == - EC_SUCCESS) + EC_SUCCESS) return HCI_SUCCESS; else return HCI_ERR_Hardware_Failure; @@ -449,27 +449,28 @@ uint8_t ll_set_advertising_params(uint8_t *params) case BLE_ADV_HEADER_PDU_TYPE_ADV_NONCONN_IND: case BLE_ADV_HEADER_PDU_TYPE_ADV_SCAN_IND: if (ll_adv_params.advIntervalMin < - (100000 / LL_ADV_INTERVAL_UNIT_US)) /* 100ms */ + (100000 / LL_ADV_INTERVAL_UNIT_US)) /* 100ms */ return HCI_ERR_Invalid_HCI_Command_Parameters; /* Fall through */ case BLE_ADV_HEADER_PDU_TYPE_ADV_IND: if (ll_adv_params.advIntervalMin > ll_adv_params.advIntervalMax) return HCI_ERR_Invalid_HCI_Command_Parameters; if (ll_adv_params.advIntervalMin < - (20000 / LL_ADV_INTERVAL_UNIT_US) || /* 20ms */ + (20000 / LL_ADV_INTERVAL_UNIT_US) || /* 20ms */ ll_adv_params.advIntervalMax > - (10240000 / LL_ADV_INTERVAL_UNIT_US)) /* 10.24s */ + (10240000 / LL_ADV_INTERVAL_UNIT_US)) /* 10.24s */ return HCI_ERR_Invalid_HCI_Command_Parameters; ll_adv_interval_us = (((ll_adv_params.advIntervalMin + - ll_adv_params.advIntervalMax) / 2) * - LL_ADV_INTERVAL_UNIT_US); + ll_adv_params.advIntervalMax) / + 2) * + LL_ADV_INTERVAL_UNIT_US); /* Don't time out */ ll_adv_timeout_us = -1; - break; + break; case BLE_ADV_HEADER_PDU_TYPE_ADV_DIRECT_IND: ll_adv_interval_us = LL_ADV_DIRECT_INTERVAL_US; ll_adv_timeout_us = LL_ADV_DIRECT_TIMEOUT_US; - break; + break; default: return HCI_ERR_Invalid_HCI_Command_Parameters; } @@ -563,25 +564,25 @@ int ble_ll_adv(int chan) case BLE_ADV_HEADER_PDU_TYPE_SCAN_REQ: /* Scan requests are only allowed for ADV_IND and SCAN_IND */ if ((ll_adv_pdu.header.adv.type != - BLE_ADV_HEADER_PDU_TYPE_ADV_IND && + BLE_ADV_HEADER_PDU_TYPE_ADV_IND && ll_adv_pdu.header.adv.type != - BLE_ADV_HEADER_PDU_TYPE_ADV_SCAN_IND) || - /* The advertising address needs to match */ + BLE_ADV_HEADER_PDU_TYPE_ADV_SCAN_IND) || + /* The advertising address needs to match */ (memcmp(&ll_rcv_packet.payload[BLUETOOTH_ADDR_OCTETS], &ll_adv_pdu.payload[0], BLUETOOTH_ADDR_OCTETS))) { /* Don't send the scan response */ radio_disable(); return rv; } - break; + break; case BLE_ADV_HEADER_PDU_TYPE_CONNECT_REQ: /* Don't send a scan response */ radio_disable(); /* Connecting is only allowed for ADV_IND and ADV_DIRECT_IND */ if (ll_adv_pdu.header.adv.type != - BLE_ADV_HEADER_PDU_TYPE_ADV_IND && + BLE_ADV_HEADER_PDU_TYPE_ADV_IND && ll_adv_pdu.header.adv.type != - BLE_ADV_HEADER_PDU_TYPE_ADV_DIRECT_IND) + BLE_ADV_HEADER_PDU_TYPE_ADV_DIRECT_IND) return rv; /* The advertising address needs to match */ if (memcmp(&ll_rcv_packet.payload[BLUETOOTH_ADDR_OCTETS], @@ -589,9 +590,9 @@ int ble_ll_adv(int chan) return rv; /* The InitAddr address needs to match for ADV_DIRECT_IND */ if (ll_adv_pdu.header.adv.type == - BLE_ADV_HEADER_PDU_TYPE_ADV_DIRECT_IND && - memcmp(&ll_adv_pdu.payload[BLUETOOTH_ADDR_OCTETS], - &ll_rcv_packet.payload[0], BLUETOOTH_ADDR_OCTETS)) + BLE_ADV_HEADER_PDU_TYPE_ADV_DIRECT_IND && + memcmp(&ll_adv_pdu.payload[BLUETOOTH_ADDR_OCTETS], + &ll_rcv_packet.payload[0], BLUETOOTH_ADDR_OCTETS)) return rv; /* Mark time that connect was received */ @@ -604,11 +605,11 @@ int ble_ll_adv(int chan) ll_state = CONNECTION; return rv; - break; + break; default: /* Unhandled response packet */ radio_disable(); return rv; - break; + break; } CPRINTF("ADV %u Response %u %u\n", tx_end, rsp_end, tx_rsp_end); @@ -632,7 +633,6 @@ int ble_ll_adv_event(void) return rv; } - void print_connection_state(void) { CPRINTF("vvvvvvvvvvvvvvvvvvvCONNECTION STATEvvvvvvvvvvvvvvvvvvv\n"); @@ -663,12 +663,12 @@ int connected_communicate(void) if (num_consecutive_failures > 0) { ble_radio_init(conn_params.access_addr, - conn_params.crc_init_val); + conn_params.crc_init_val); NRF51_RADIO_FREQUENCY = NRF51_RADIO_FREQUENCY_VAL(chan2freq(comm_channel)); NRF51_RADIO_DATAWHITEIV = comm_channel; - listen_time = last_receive_time + conn_params.connInterval - - get_time().val + conn_params.transmitWindowSize; + listen_time = last_receive_time + conn_params.connInterval - + get_time().val + conn_params.transmitWindowSize; /* * This listens for 1.25 times the expected amount @@ -680,12 +680,12 @@ int connected_communicate(void) * slightly longer than expected in the case that * there was a timing disagreement. */ - rv = ble_rx(&ll_rcv_packet, - listen_time + (listen_time >> 2), 0); + rv = ble_rx(&ll_rcv_packet, listen_time + (listen_time >> 2), + 0); } else { if (!is_first_data_packet) { - sleep_time = receive_time + - conn_params.connInterval - get_time().val; + sleep_time = receive_time + conn_params.connInterval - + get_time().val; /* * The time slept is 31/32 (96.875%) of the calculated * required sleep time because the code to receive @@ -695,8 +695,8 @@ int connected_communicate(void) } else { last_receive_time = time_of_connect_req; sleep_time = TRANSMIT_WINDOW_OFFSET_CONSTANT + - conn_params.transmitWindowOffset + - time_of_connect_req - get_time().val; + conn_params.transmitWindowOffset + + time_of_connect_req - get_time().val; if (sleep_time >= 0) { /* * Radio is on for longer than needed for first @@ -709,7 +709,7 @@ int connected_communicate(void) } ble_radio_init(conn_params.access_addr, - conn_params.crc_init_val); + conn_params.crc_init_val); NRF51_RADIO_FREQUENCY = NRF51_RADIO_FREQUENCY_VAL(chan2freq(comm_channel)); NRF51_RADIO_DATAWHITEIV = comm_channel; @@ -722,14 +722,13 @@ int connected_communicate(void) * how early the window opens in microseconds. */ if (!is_first_data_packet) - offset = last_receive_time + conn_params.connInterval - - get_time().val; + offset = last_receive_time + conn_params.connInterval - + get_time().val; else offset = 0; rv = ble_rx(&ll_rcv_packet, - offset + conn_params.transmitWindowSize, - 0); + offset + conn_params.transmitWindowSize, 0); } /* @@ -766,9 +765,9 @@ void bluetooth_ll_task(void) case ADVERTISING: if (deadline.val == 0) { - CPRINTS("ADV @%pP", &ll_adv_pdu); + CPRINTS("ADV @%p", &ll_adv_pdu); deadline.val = get_time().val + - (uint32_t)ll_adv_timeout_us; + (uint32_t)ll_adv_timeout_us; ll_adv_events = 0; } @@ -786,7 +785,7 @@ void bluetooth_ll_task(void) ll_state = STANDBY; break; } - break; + break; case STANDBY: deadline.val = 0; CPRINTS("Standby %d events", ll_adv_events); @@ -795,20 +794,20 @@ void bluetooth_ll_task(void) task_wait_event(-1); connection_initialized = 0; errors_recovered = 0; - break; + break; case TEST_RX: if (ble_test_rx() == HCI_SUCCESS) ll_test_packets++; /* Packets come every 625us, sleep to save power */ usleep(300); - break; + break; case TEST_TX: start = get_time().le.lo; ble_test_tx(); ll_test_packets++; end = get_time().le.lo; - usleep(625 - 82 - (end-start)); /* 625us */ - break; + usleep(625 - 82 - (end - start)); /* 625us */ + break; case UNINITIALIZED: ble_radio_init(BLE_ADV_ACCESS_ADDRESS, BLE_ADV_CRCINIT); ll_adv_events = 0; @@ -816,7 +815,7 @@ void bluetooth_ll_task(void) connection_initialized = 0; packet_tb_sent = &tx_packet_1; set_empty_data_packet(&tx_packet_1); - break; + break; case CONNECTION: if (!connection_initialized) { if (initialize_connection() != HCI_SUCCESS) { @@ -835,8 +834,7 @@ void bluetooth_ll_task(void) } else { num_consecutive_failures++; if ((get_time().val - last_rx_time) > - conn_params.connSupervisionTimeout) { - + conn_params.connSupervisionTimeout) { ll_state = STANDBY; CPRINTF("EXITING CONNECTION STATE " "DUE TO TIMEOUT.\n"); @@ -847,10 +845,11 @@ void bluetooth_ll_task(void) if (ll_state == STANDBY) { CPRINTF("Exiting connection state/Entering " "Standby state after %d connections " - "events\n", ll_conn_events); + "events\n", + ll_conn_events); print_connection_state(); } - break; + break; default: CPRINTS("Unhandled State ll_state = %d", ll_state); ll_state = UNINITIALIZED; |