Commit Graph
66 Commits
Author SHA1 Message Date
Nick Bourdakos 9d2cfc19c9 Add Objective-C++ GATT server wrapper
PiperOrigin-RevId: 552636264
2023-07-31 17:20:14 -07:00
Nick Bourdakos c1d74120a0 Add initial BLEv2 Bluetooth Adapter
PiperOrigin-RevId: 551922301
2023-07-28 12:32:27 -07:00
Nick Bourdakos 0a13ce51f4 Make GNCBLEGATTServer thread safe
Fixes an issue where if a characteristic is created and then updated with a non-nil value, and a new characteristic under the same service is added, then when the service is re-added the old characteristic will be permanently cached and the dynamic reads will stop working.

This also eliminates the issue when characteristics are created concurrently, since service additions are batched, if the service addition fails then only one of the characteristics will know that it failed to get added.

This change also introduces the nuance of "success" does not mean the CoreBluetooth method has completed successfully, but instead means that the intended state has been recorded and the class will do its best to maintain that state. For example, a successful "start advertising" call means that we have the advertisement cached and we will start advertising as soon as we can (like BT transitions from off to on) and will do our best to keep advertising (like BT transitions from on to off to on again).

PiperOrigin-RevId: 551660634
2023-07-27 15:40:30 -07:00
Nick Bourdakos a42cdc7346 Move Server Socket and its dependencies to their own files
PiperOrigin-RevId: 551330682
2023-07-26 15:21:46 -07:00
Thomas Van Lenten 7e1f286d93 Don't compile utils.mm twice.
PiperOrigin-RevId: 551315072
2023-07-26 14:25:24 -07:00
Nick Bourdakos de3f638129 Extract BLE code into its own target
PiperOrigin-RevId: 551074383
2023-07-25 20:23:59 -07:00
Nick Bourdakos 0f8e5283a4 Add GATT server
PiperOrigin-RevId: 549080231
2023-07-18 12:37:23 -07:00
Nick Bourdakos 96348b6ba7 Add BLE conversion utils
PiperOrigin-RevId: 547958170
2023-07-13 16:20:04 -07:00
Nick Bourdakos e0b2e176c8 Add Objective-C GATT characteristic container.
PiperOrigin-RevId: 547954006
2023-07-13 16:05:18 -07:00
Guogang Li 4a71c4d2d0 Move NS implementation to third party folder
PiperOrigin-RevId: 546966492
2023-07-10 13:39:42 -07:00
Nick Bourdakos 12f9512a19 Use IOS_LATEST for the test runner to prevent Xcode 14.3 issues
PiperOrigin-RevId: 541053739
2023-06-16 17:37:39 -07:00
Nick Bourdakos 8fc0d93ce1 Fix potential deadlock by running timer callback in another thread
PiperOrigin-RevId: 538469916
2023-06-07 06:37:21 -07:00
Dave MacLachlan 1d68d2fe10 Remove unneeded noRetainObjectArgs
PiperOrigin-RevId: 537896949
2023-06-05 09:25:58 -07:00
Nick Bourdakos 3c72e4f40c Fix EXC_BAD_ACCESS crash when calling payload delegate methods.
Objective-C objects cannot be captured by reference in C++ lambdas and must always be captured by value.

This also takes a copy of the data returned from the Wi-Fi LAN reader, to prevent potential intermittent empty packet issues.

Fixes: #1702
PiperOrigin-RevId: 533925980
2023-05-21 19:19:18 -07:00
Nick Bourdakos 17ba32c68b Fix a macOS bug with web request when decoding data
PiperOrigin-RevId: 532940555
2023-05-17 16:07:38 -07:00
Crisrael Lucero 01c8e1ed05 Convert absl::string_view to const std::string&
PiperOrigin-RevId: 531634295
2023-05-12 16:40:50 -07:00
Chun Zhang b07700629d Replace std::string with absl::string_view
PiperOrigin-RevId: 531607615
2023-05-12 14:39:48 -07:00
Nick Bourdakos 6958edb8cc Fix Wi-Fi LAN bug where frames with all zero bytes were being sent
This was causing the receiving device to consistently (~9/10 times) get stuck in the "waiting for other device to accept" state.

PiperOrigin-RevId: 531295543
2023-05-11 13:45:48 -07:00
Janusz Sobczak b5938c0d17 Add G3 gatt server
PiperOrigin-RevId: 531287485
2023-05-11 13:15:40 -07:00
Nick Bourdakos 8886b99dde Refactor the preferences repository to be a Windows implementation detail of the preferences manager
PiperOrigin-RevId: 531086202
2023-05-10 21:26:32 -07:00
Janusz Sobczak 0901aec6e2 Add BleMedium::GetRemotePeripheral
Added:
nearby::api::ble_v2::BlePeripheral::GetUniqueId()
nearby::api::ble_v2::BleMedium::GetRemotePeripheral(...)

Moved BlePeripheral implementation from bluetooth_adapter_* to ble_v2.*
Added G3 (test) implementation for the new methods.

PiperOrigin-RevId: 531023568
2023-05-10 15:40:38 -07:00
Anay Wadhera f21b1e7089 internal change
PiperOrigin-RevId: 529179617
2023-05-03 13:32:34 -07:00
hai007 6b25d430d9 copybara update
PiperOrigin-RevId: 528861897
2023-05-02 12:48:09 -07:00
Nick Bourdakos 84f480fdd1 Fix IP address bug where 4 byte version wasn't converted to dotted decimal form
Introduces a tested `GNCIPAddress` class to make it more explicit of which IP address format is being used at call sites to prevent similar issues in the future.

PiperOrigin-RevId: 528572993
2023-05-01 14:20:12 -07:00
Eiden Kim aea5b223d3 Create min iOS and test runner under third_party/nearby for common test target.
PiperOrigin-RevId: 527754820
2023-04-27 19:52:01 -07:00
hai007 5dfe7094c3 Update unit test minimum IOS version to 13.7
PiperOrigin-RevId: 527738714
2023-04-27 18:09:15 -07:00
Eiden Kim b0985c70b4 Update iOS unit test min version to have IOS_MINIMUM_OS
PiperOrigin-RevId: 527675057
2023-04-27 13:56:15 -07:00
Chun Zhang 2e7f7a7d90 Migrate PreferencesManager from location/nearby to third_party/nearby
PiperOrigin-RevId: 524900136
2023-04-17 11:23:01 -07:00
Chun Zhang 00bba36219 Migrate PreferencesRepository from location/nearby to third_party/nearby
PiperOrigin-RevId: 524185819
2023-04-13 21:19:12 -07:00
Nick Bourdakos 472a1d847b Fix logging bug
PiperOrigin-RevId: 523910721
2023-04-12 23:40:50 -07:00
Nick Bourdakos c919ed73a9 Update custom save path logic to include parent folder and prevent duplicate names from overwriting other files.
PiperOrigin-RevId: 522123924
2023-04-05 12:31:06 -07:00
Nick Bourdakos 1d2b0272d3 Fix crash when closing Wi-Fi LAN server socket
PiperOrigin-RevId: 521883606
2023-04-04 15:36:43 -07:00
Nick Bourdakos f7edb0c858 Add Apple implementation for device info
PiperOrigin-RevId: 521834323
2023-04-04 12:27:43 -07:00
Nick Bourdakos d6f66237b0 Update Apple implementation to cancel the timer before calling the callback
This fixes a crash where the Timer is destroyed as soon as the callback is called, so Timer::Stop can't be safely called.

PiperOrigin-RevId: 521760888
2023-04-04 07:47:14 -07:00
hai007 17ce9c7dd2 Add the missing apple SDK framework dependencies.
PiperOrigin-RevId: 520936213
2023-03-31 09:07:14 -07:00
Edwin Wu 94ff506d1e Fixes HelloConnections that can't discover Pixel device from iPhone for Ble_v2 medium.
PiperOrigin-RevId: 517318035
2023-03-16 22:25:21 -07:00
Qin Wang 1e4497d59c Add Write Type enum to specify what type of GATT write should be performed
PiperOrigin-RevId: 515487102
2023-03-09 17:28:09 -08:00
Qin Wang 0c078b3528 Convet ByteArray to std::string in ble_gatt_client
PiperOrigin-RevId: 514786088
2023-03-07 11:10:34 -08:00
Qin Wang ba8d60b8a9 Implement subscription for a GATT characteristic value changed
PiperOrigin-RevId: 513960871
2023-03-06 07:08:08 -08:00
Qin Wang 4727861f5d Refactor GattCharactristic to support bitwise combination of Permission and Property
PiperOrigin-RevId: 513339751
2023-03-01 14:21:04 -08:00
Anay Wadhera abe68db97d Add GattServer#NotifyCharacteristicChanged to ble_v2
PiperOrigin-RevId: 512124578
2023-02-24 11:46:33 -08:00
Anay Wadhera f3ebf77ed2 Add GattClient#SetCharacteristicNotification for subscribing to a GATT characteristic
PiperOrigin-RevId: 511862183
2023-02-23 12:54:41 -08:00
Nick Bourdakos b59ed0b70f Add Apple implementation for timer
PiperOrigin-RevId: 511201457
2023-02-21 08:03:09 -08:00
Nick Bourdakos f655636db7 Implement SendRequest for Apple platform
PiperOrigin-RevId: 510539758
2023-02-17 15:49:15 -08:00
Nick Bourdakos 179c67291c Remove old Wi-Fi LAN package
PiperOrigin-RevId: 510349290
2023-02-16 23:36:10 -08:00
Nick Bourdakos 2c47104dc9 Update the Apple Wi-Fi LAN medium to use WifiLanV2
PiperOrigin-RevId: 510228266
2023-02-16 13:28:38 -08:00
Nick Bourdakos 949d882727 Add discovery/connect implementation for Wi-Fi LAN medium that uses the Network framework
PiperOrigin-RevId: 510221769
2023-02-16 13:03:21 -08:00
Nick Bourdakos cee10e8d44 Add logging support for Apple platform
PiperOrigin-RevId: 509833510
2023-02-15 07:59:28 -08:00
Edwin Wu 1e229e31c5 [Nearby Connections] Add OS_INFO for NC C++.
PiperOrigin-RevId: 509443158
2023-02-14 00:05:17 -08:00
Nick Bourdakos 60d021b5f2 Add initial implementation for Wi-Fi LAN medium that use the Network framework
PiperOrigin-RevId: 508784614
2023-02-10 16:47:27 -08:00