Commit Graph

1926 Commits (0c3879a55302eaad84a028e2a1e836b447bab17c)

Author SHA1 Message Date
Paul Szczeanek beb56320eb Add a new implementation of security db for KVStore
This works similar to filesystem db but uses the KVStore which it assumes is initialised. This is checked by open_db. On initialisation it either reads the present db or writes a new db into all entries thus guaranteeing that after the initialisation we will not run out of space for the keys and no extra error handling is needed.
2020-06-10 16:03:16 +01:00
Paul Szczeanek f661ce0c81 Relax the integrity requirement to allow private functions to call themselves 2020-06-10 16:03:16 +01:00
Paul Szczeanek 07bcbeb8f1 Make kvstore and fs store configured in the lib json 2020-06-10 16:03:16 +01:00
Paul Szczeanek fe98309063 mention tx power in the readme 2020-06-10 15:49:55 +01:00
Paul Szczeanek 056f46d629 add tx power to cordio hci driver 2020-06-10 15:49:55 +01:00
Martin Kojtal f858000252
Merge pull request #13039 from pan-/fix-legacy-payload-update
BLE: remove limitation in the Cordio to update adv payload
2020-06-10 12:09:54 +02:00
Martin Kojtal 2466411b83
Merge pull request #13037 from paul-szczepanek-arm/ble-sm-fix
BLE: Fix privacy and signing handling in Security Manager
2020-06-10 12:09:32 +02:00
Martin Kojtal 6a431ffc58
Merge pull request #13055 from paul-szczepanek-arm/cordio-rf-tester
BLE: RF tester commands (and Cordio unhandled command complete)
2020-06-10 12:07:30 +02:00
Martin Kojtal d971d4e021
Merge pull request #13060 from paul-szczepanek-arm/direct-advertising
BLE: fix direct advertising on Cordio
2020-06-10 12:06:17 +02:00
jeromecoutant 28f8307afa STM32WB baremetal support
move BLE files to FEATURE_BLE
2020-06-08 12:06:01 +02:00
Martin Kojtal 49c1d947fa
Merge pull request #13044 from hugueskamba/hk_nrf_implicit_declaration
NRF: fix implicit declarations
2020-06-05 14:44:31 +02:00
Martin Kojtal c7cf9a9aed
Merge pull request #13035 from pan-/fix-ble-service-data-addition
Fix capacity check when service data are added to BLE advertising payload
2020-06-05 10:49:43 +02:00
Martin Kojtal 35a0e5d4f9
Merge pull request #13041 from hugueskamba/hk_remove_cordio_warnings
Cordio: put parentheses to correct order of precedence in ternary expressions
2020-06-05 10:47:36 +02:00
Paul Szczeanek a882d2d35f mention the rf tester commands in the readme 2020-06-03 18:46:20 +01:00
Paul Szczeanek 9d54c56562 reinitialise identity and signing when bond table reset 2020-06-03 17:36:06 +01:00
Paul Szczeanek 110b190b38 fix privacy initialisation and give access to local identity
Initialises identity addres when privacy is enabled. Stores the identity. Retrieves local identity if previously stored.
2020-06-03 17:35:23 +01:00
Paul Szczeanek 73b4bebee0 add connection addresses to whitelist 2020-06-03 17:30:21 +01:00
Paul Szczeanek bfdbcc7b4a add accessor for local irk 2020-06-03 17:29:51 +01:00
Paul Szczeanek fff0247ae5 fix infinite recursive call 2020-06-03 17:29:20 +01:00
Paul Szczeanek 05f7685a79 store local csrk and identity in the security db 2020-06-03 17:27:26 +01:00
Paul Szczeanek 94a6cac838 expose identity address used by controller 2020-06-03 17:24:11 +01:00
Paul Szczeanek d6a5bd2825 make number of db entries configurable 2020-06-03 17:07:47 +01:00
Paul Szczeanek dd615f7943 Add direct advertising support.
To start direct connectable advertising on the cordio stack, the programmer should call the function DmConnAccept instead of the function DmAdvStart .
This functions expect the target address and address type as parameter, which are passed to the controller when the programmer sets the advertising parameters and not known when advertising_enable is called.
Therefore, this information should be kept in memory when advertising parameters are set and retrieved when advertising is enable to choose the right call to start (or stop) advertising.
Timeout of direct advertising is also handled in an uncommon way, a connection timeout is received. Similarly, DmConnClose should be called to stop connectable direct advertising.

The state is kept in an array of direct_adv_cb_t. Each items contains a peer address, the peer address type, the connection handle and the advertising handle as well as a state which indicate if the advertising is running, pending or not used.
When advertising parameters are set, the state is updated to match the target address or disable direct advertising management for the advertising set being configured.
When advertising is enabled, the pal dispatch the operation to the right calls (DmAdvStart/DmConnAccept or DmAdvStop/DmConnClose).
When an advertising timeout happen or a connection is made, the pal cleans any direct advertising state of this advertising set
2020-06-03 16:25:23 +01:00
Paul Szczeanek fbe93123a5 Add rf tester commands to cordio hci driver. This adds commands that allow you to send the HCI commands HCI_LE_Receiver_Test, HCI_LE_Transmitter_Test and HCI_LE_Test_End. The results of the test are obtained by the command complete command for HCI_LE_Test_End and passed to the user by the callback register in the test start calls. 2020-06-03 15:21:32 +01:00
Paul Szczeanek 51d1a30b8e Route unhandled cmd cmpl events to mbed. Cordio ignores command complete events for all commands that it doesn't have a specific handler for. This adds a catch-all handler that allows the user application to handle any command complete that isn't already handled by the stack. This involves adding a new type of event and routing the event through the stack to the device where it's forwarded to the existing event handling in mbed-os. 2020-06-03 15:21:05 +01:00
Paul Szczeanek 0affb73747 Fix bounds check using a define instead of table size. The bounds check was incorrectly picking a define that wasn't even the last in the table. It now uses the size of the table. 2020-06-03 15:19:39 +01:00
Paul Szczeanek 8285ecdefb connection update handled elsewhere 2020-06-02 10:01:10 +01:00
Paul Szczeanek 157c54bfc7 fix inverted meaning of _user_manage_connection_parameter_requests 2020-06-02 09:39:07 +01:00
Hugues Kamba 992133be50 NRF: fix implicit declarations
As a result removes warnings
2020-06-01 10:26:51 +01:00
Hugues Kamba 4d939ccdbe Cordio: put parentheses to correct order of precedence in ternary expressions
Also remove extraneous parentheses in comparison.
2020-05-29 19:11:25 +01:00
Vincent Coubard 2bbc8a0bae BLE: remove limitation in the Cordio to update adv payload
Nothing in the Bluetooth standard prevents update of advertising payload while advertising is active.
This limitation wasn't present in previous version of the stack and is not present for extended advertising.
2020-05-29 17:52:05 +01:00
Vincent Coubard 23e39a1dbd Fix capacity check when service data are added to BLE advertising payload. 2020-05-29 15:06:38 +01:00
Lingkai Dong 3b48d3f198 NRFCordioHCIDriver: remove idle_hook
In PR #8876 when we added Cordio support for nRF52* targets,
we attempted to use an RTOS idle hook to workaround sleep
latency issues. However, the condition to bypass sleeps
never gets satisfied, and BLE nRF52* targets have generally
worked fine over the past year.

This commit removes the hook to avoid dependency on RTOS,
enabling BLE on bare metal.
2020-05-11 17:34:07 +01:00
Lingkai Dong 50928fbcff BLE whitelist can only contain public or random static addresses 2020-04-17 09:59:17 +01:00
Lingkai Dong a6810ddc37 Remove a few leftovers in BLE namespace 2020-04-17 09:59:16 +01:00
Lingkai Dong 3c922acec4 Gap.tpp: remove misleading deprecation header 2020-04-17 09:59:15 +01:00
Lingkai Dong 8de604d485 Rename ConnectionParams_t -> PreferredConnectionParams_t
For actual connections, full ConnectionParameters is used. But
as per BLE specification, Generic Access Service can display
preferred connection parameters which is a smaller subset and
ConnectionParams_t matches exactly. Thus we rename/repurpose
it to PreferredConnectionParams_t.
2020-04-17 09:59:14 +01:00
Lingkai Dong 76b92b82e2 BLE: correct misspelling: prefered -> preferred 2020-04-17 09:59:14 +01:00
Lingkai Dong 7c49aeb01f Remove connection_params from internal on_connected()
The callback on_connected() in ConnectionEventMonitorEventHandler
contains a parameter ConnectionParams_t which is superceded by
ConnectionParameters. Since it's not used, remove it.
2020-04-17 09:59:13 +01:00
Lingkai Dong d6eeab1744 Cordio: bring back device name & appearance function
Functions in Cordio for device name & appearance are currently
unused as they are both part of and dependent on deprecated
Mbed OS BLE APIs.

Nonetheless we want to keep them (and disable using macros)
so we can reintroduce them and make improvements in the future
as needed.
2020-04-17 09:59:12 +01:00
Lingkai Dong 53550bb63b Gap: create legacy advertising set only when required 2020-04-17 09:59:11 +01:00
Lingkai Dong 0341d5c898 disconnection_reason_t from raw uint8_t should be explicited an undocumented 2020-04-17 09:59:11 +01:00
Lingkai Dong 0b163ffbe1 Add default initialisation of own_address_type_t 2020-04-17 09:59:10 +01:00
Lingkai Dong 25608eede1 Remove BLEProtocol.h 2020-04-17 09:59:09 +01:00
Lingkai Dong 9455f86954 BLE: replace legacy address types (BLEProtocol) with new ones 2020-04-17 09:59:08 +01:00
Lingkai Dong ae86c119d2 Add whitelist_t::entry_t which will replace Address_t to store addr type and value 2020-04-17 09:59:08 +01:00
Lingkai Dong 7fed75b356 BLE: remove ResolutionStrategy type 2020-04-17 09:59:07 +01:00
Lingkai Dong 7ce73d414e BLE LinkLossService: use new EventHandler API to handle disconnection 2020-04-17 09:59:06 +01:00
Lingkai Dong eba5821fd8 GenericGap: ensure legacy advertising set exists when setting data 2020-04-17 09:59:06 +01:00
Lingkai Dong 2422efc9bb GenericGap: clean up unused helper functions 2020-04-17 09:59:05 +01:00
Lingkai Dong 09a81a9972 GenericAccessService: remove unused device name/appearance functions due to API changes 2020-04-17 09:59:04 +01:00
Lingkai Dong 55ecc57ac9 BLE: use up-to-date structs for disconnections 2020-04-17 09:59:04 +01:00
Lingkai Dong c17cf0f3f3 Add to Gap/GenericGap non-deprecated APIs originally in LegacyGap 2020-04-17 09:59:03 +01:00
Lingkai Dong 2989466b01 BLE: construct disconnection_reason_t from uint8_t (received from HCI) 2020-04-17 09:59:02 +01:00
Lingkai Dong d2d09b2bce BLE: Remove LegacyGap and related types 2020-04-17 09:59:02 +01:00
Lingkai Dong af6f32e584 Cordio: remove LegacyGap implementation 2020-04-17 09:59:01 +01:00
Lingkai Dong be3858cec2 BLE: update to use whitelist_t from ble namespace 2020-04-17 09:58:58 +01:00
Lingkai Dong e97582bd23 Move BLE whitelist APIs from LegacyGap to ble::Gap 2020-04-17 09:56:25 +01:00
Lingkai Dong eee3b687c4 GenericGap: prepare legacy advertising set
This is based on (and supercedes) PR #10772.

As the switches between old and new APIs do not exist anymore,
we create a function for legacy advertising set creation.
2020-04-17 09:56:24 +01:00
Lingkai Dong a2a99291d4 BLE Gap: remove version one scan API 2020-04-17 09:56:24 +01:00
Lingkai Dong db14f196e7 GenericGap: remove legacy timeout callback signalling 2020-04-17 09:56:23 +01:00
Lingkai Dong d35a6b88a9 GenericGap: remove legacy dis/connection callbacks signalling 2020-04-17 09:56:22 +01:00
Lingkai Dong 6f701cd6ef Remove deprecated implementations from GenericGap & LegacyGap 2020-04-17 09:56:21 +01:00
Lingkai Dong 55edb6131d ble/Gap.h: remove deprecated APIs 2020-04-17 09:56:21 +01:00
Martin Kojtal 7b0c38aabb
Merge pull request #12742 from LDong-Arm/gatt_sm_deprecated_cleanup
BLE: remove deprecated APIs from Gatt and SecurityManager
2020-04-16 17:21:52 +02:00
Lingkai Dong a85c157952 Remove Nordic SoftDevice BLE driver 2020-04-15 09:57:42 +01:00
Lingkai Dong 4cb729fb49 Remove Maxim BLE stack which does not implement the new API 2020-04-15 09:51:14 +01:00
Martin Kojtal 4128efdf3d
Merge pull request #12785 from LDong-Arm/port_packetcraft_ltk_improvements
Cordio: Apply Packetcraft's fix for possible SweynTooth vulnerabilities
2020-04-15 09:08:24 +02:00
Lingkai Dong c927773115 Port Cordio LE Secure Connections check from PacketCraft
This change is provided by Packetcraft (which maintains the
Cordio BLE stack) to address possible Sweyntooth vulnerabilities.
2020-04-09 16:01:28 +01:00
Lingkai Dong 0402fe4efb Port Cordio SMP control block improvements from Packetcraft
This change is provided by Packetcraft (which maintains the
Cordio BLE stack) to address possible Sweyntooth vulnerabilities.
2020-04-09 15:57:59 +01:00
MarceloSalazar a15f6a43ad General clean-up of unsupported targets 2020-04-09 15:36:21 +01:00
Rajkumar Kanagaraj 9739b565b2 Fix the CI build issue 2020-04-08 10:35:07 +01:00
Rajkumar Kanagaraj 83be3f24a5 Remove mbed wait deprecated APIs 2020-04-08 10:35:07 +01:00
Lingkai Dong 07c25bba16 GattCharacteristic: remove deprecated APIs and helper function SecurityModeToAttSecurity 2020-04-07 10:27:16 +01:00
Lingkai Dong 70a564e7de GattClient: remove deprecated onDataWrite 2020-04-07 10:27:16 +01:00
Lingkai Dong 1a89b7718c BLE SecurityManager: remove legacy event callbacks and deprecated API 2020-04-07 10:27:16 +01:00
Martin Kojtal c8ab263388
Merge pull request #12701 from dustin-crossman/pr/custom-bt-firmware
Add custom BT Firmware image for CYW9P62S1_43012EVB_01
2020-04-03 09:09:46 +02:00
Martin Kojtal 548e1c6766
Merge pull request #12676 from LDong-Arm/ble_deprecation_cleanup
Remove deprecated BLE:: APIs and unsupported services
2020-04-03 08:36:38 +02:00
Ryan Morse f060b6afd7 Add custom BT Firmware image for CYW9P62S1_43012EVB_01 2020-04-02 09:30:17 -07:00
Martin Kojtal 8b929726e1
Merge pull request #12609 from rajkan01/semwait_remove_deprecation
Remove Semaphore deprecated APIs
2020-03-31 10:36:43 +02:00
Lingkai Dong de89b9a572 BLE DeviceInformationService: fix deprecated addService usage 2020-03-23 16:37:21 +00:00
Lingkai Dong 682927d0a7 Remove deprecated BLE:: API
Note: The BLE() constructor is now private.
2020-03-23 16:14:20 +00:00
Lingkai Dong 266de6a69a Remove BLE services that are not maintained anymore 2020-03-23 16:14:19 +00:00
Martin Kojtal 4f4c8c48e1
Merge pull request #12637 from armPelionEdge/#12625-BLE-Cardio-Patch
Cordio: fix for issue #12625
2020-03-23 14:47:52 +01:00
Martin Kojtal cc799a83fc
Merge pull request #12661 from kbarm/feature-fix-documentation-ascii-art
Adjusted SecurityManager Doxygen ASCII art
2020-03-23 10:18:54 +01:00
Anna Bridge ab483c2ead
Merge pull request #12654 from kbarm/feature-remove-cc-arm-macro
Removed all references to __CC_ARM
2020-03-20 15:22:03 +00:00
Anna Bridge d048cd4c83
Merge pull request #12410 from rajkan01/serial_remove_deprecate
Remove the deprecated RawSerial, UARTSerial, Serial
2020-03-20 15:19:32 +00:00
Krzysztof Borowczyk a624acd45c Adjusted SecurityManager Doxygen ASCII art to make it display correctly on mbed.com 2020-03-20 10:20:58 +01:00
Krzysztof Borowczyk 4465295332 Remove ARMC5 reference from Mbed OS platform (removed all references to __CC_ARM) 2020-03-19 16:00:45 +01:00
Vishal Bhargava 4ea64cb6c6
Update hci_tr.c
Indent formating
2020-03-17 12:13:07 +05:30
Vishal Bhargava 5b65d3b119
Update hci_tr.c
Handled fragmented packet case also.
2020-03-17 11:57:14 +05:30
Rajkumar Kanagaraj a6b78c6429 Remove Semaphore deprecated APIs 2020-03-16 09:37:45 -07:00
Martin Kojtal b4034dc547
Merge pull request #12551 from rajkan01/mpm_remove_deprecated
Remove mbed power management deprecated API
2020-03-04 08:22:52 +00:00
Rajkumar Kanagaraj df32091c7b Remove the deprecated RawSerial, UARTSerial, Serial class and SerialBase attach API 2020-03-03 05:19:42 -08:00
Rajkumar Kanagaraj 35f1b4ab53 Remove mbed power management deprecated API 2020-03-02 15:06:26 -08:00
Rajkumar Kanagaraj 6e969ec5ab Remove the deprecated CallChain class and its APIs. 2020-02-28 07:41:44 -08:00
jeromecoutant f0370222d8 STM32WB BLE : add FW version when trace is enabled 2020-02-20 09:20:43 +01:00
jeromecoutant 55b42a683e STM32WB HCIDriver trace update 2020-02-20 09:20:36 +01:00
jeromecoutant f000b87911 STM32 TRACE_GROUP update
Only 4 characters is allowed
2020-02-17 16:38:42 +01:00
Vincent Coubard cb340f8f55
BLE: Fix documentation of set_random_static_address
Co-Authored-By: Lingkai Dong <lingkai.dong@arm.com>
2020-01-29 09:53:12 +00:00