Commit Graph

16 Commits

Author SHA1 Message Date
Kangping Dong
98015f3373 [Thread] clear calling identity before invoking app-supplied callback
Per API council feedback and API guideline at
go/android-api-guidelines#provide-executor, it should call
Binder.clearCallingIdentity() before invoking the app-supplied callbacks
so that the app doesn't use the system-server's identity for permission
check in the callback.

Bug: 309952666
Test: atest ThreadNetworkUnitTests
Change-Id: I3cfbce29c0a516506bb76a44b151a583c8477806
2023-11-22 01:54:34 +00:00
Kangping Dong
d9fe1c5eae Merge "[Thread] add documentation for Delay Timer of Pending Dataset" into main 2023-11-15 04:29:03 +00:00
Kangping Dong
8e44412f7c [Thread] add @RequiresPermissions for unregisterXxxCallback APIs
Per API council review suggestions in b/309952666, add the same
permission requirements for the unregister APIs.

Bug: 309952666
Test: atest CtsThreadNetworkTestCases
Change-Id: Idc481c7676ddc5d748fe7803f74dd63981186c09
2023-11-13 17:29:07 +08:00
Kangping Dong
d8c30214b8 [Thread] add documentation for Delay Timer of Pending Dataset
Make it clear that Duration#ZERO is used for automatically selecting a
reasonable value by the system.

Bug: 307939803
Test: atest CtsThreadNetworkTestCases
Change-Id: I880dca187902464fbe45ed6f2a64e9f88a5493ab
2023-11-09 18:31:01 +08:00
Kangping Dong
ac94d2cec6 Merge "[Thread] add documentation for Pending Dataset constructor" into main 2023-11-09 02:55:16 +00:00
Kangping Dong
a925218c4f [Thread] add documentation for Pending Dataset constructor
Per API council review feedback in b/307939803

Bug: 307939803
Test: atest CtsThreadNetworkTestCases
Change-Id: Ia5fbb38e24d09c4a8d95ce0dfd6058a65d5d4614
2023-11-09 02:55:53 +08:00
Kangping Dong
af4f1f576c [Thread] move createRandomDataset to ThreadNetworkController
This commit renames `createRandomDataset` to `createRandomizedDataset`
and moves this method to ThreadNetworkController class.

The reason for moving this method is that we rely on the service side to
know which channels are currently supported by this device and there is
no safe way for ActiveOperationalDataset to created a randomized full
dataset by its own. Moving this method to ThreadNetworkController also
allows us to support future platform-dependend configurations.

Bug: 308117328
Bug: 307939803
Change-Id: I0b0b7b727c3b326ab59bb1299ace15df1ff1ad5e
2023-11-08 22:39:33 +08:00
Kangping Dong
b1c75dbe8c [Thread] add ThreadNetworkController APIs
The ThreadNetworkController class provides APIs for managing the Thread
network, for example, attach to a specific network, form a network with
given dataset or update/migrate an existing network.

Bug: 262683651
Test: atest CtsThreadNetworkTestCases
Change-Id: Ib3c267d2c81a8c3c7772ed3c9cd2092487cc941a
2023-11-08 17:56:16 +08:00
Kangping Dong
9efc28e6d0 Merge "[Thread] fix OperationalDatasetTimestamp#toTlvValue is not loss-less" into main 2023-11-07 19:20:44 +00:00
Kangping Dong
160b4d38f9 [Thread] fix OperationalDatasetTimestamp#toTlvValue is not loss-less
OperationalDatasetTimestamp is saving the timestamp as an Instant
object, and this has the problem that when the dataset timestamp is
written to a TLV, it's going to loss precision as the nanoseconds
of the Instant is converted to "Ticks". This results in bug that
the dataset timestamp doesn't equal to the same value when it's
converted back from a TLV:

```
var timestamp1 = OperationalDatasetTimestamp.fromInstant(Instant.ofEpochSecond(100, 999938900));
byte[] tlv = timestamp1.toTlvValue();
timestamp2 = OperationalDatasetTimestamp.fromTlvValue(tlv);

assertThat(timestamp2).isEqualTo(timestamp1); // This fails!!!
```

Bug: 308408536
Test: atest ThreadNetworkUnitTests CtsThreadNetworkTestCases
Change-Id: I81b482a05337b6d1150edaa28b860034592a4347
2023-11-07 13:13:06 +08:00
Kangping Dong
7dffade561 [Thread] add a script for make-pretty
This make-pretty.sh can be called from any where and it formats only
java code under packages/modules/Connectivity/thread/

Test: ./thread/scripts/make-pretty.sh
Change-Id: I1b24025cf0267c81a7b133d1e8a08f77cc7ddc0e
2023-11-07 12:41:42 +08:00
Kangping Dong
5e1d430d33 [Thread] make the Manager and Controller class 'final'
Per the API review council, the classes should be "final" by default

Bug: 301076593
Test: build && atest CtsThreadNetworkTestCases
Change-Id: I85f0b4fabe5b1bcec2be052620b38a07c58181d7
2023-10-25 22:03:11 +08:00
Kangping Dong
7fea5fa6a2 [Thread] add Thread Operational Dataset API
Design doc: go/thread-android-api
Android FR: b/235016403

Bug: 262683651
Change-Id: Icbd4ee4150e3fd78df627c2e726c259e7ee50871
2023-10-25 18:13:07 +08:00
Kangping Dong
75aa485604 [Thread] flagging Android Thread APIs
This commit declares the initial "thread_enabled" feature flag and use
this to flag all existing and future Thread system APIs with @FlaggedApi

Bug: 301473012
Test: build
Change-Id: I43f64ce38f7fd0806733b21c4f393e4563e6a467
2023-10-24 19:45:04 +08:00
Kangping Dong
1cec48f3c0 [Thread] initial Thread network service
This commit sets up the initial Thread network service for the
Android Thread feature which allows an Android device to create
a Thread network and being a Border Router.

See https://www.threadgroup.org/What-is-Thread for background of
Thread.

See b/235016403 for the Android Thread feature request.

Test: lunch aosp_cf_x86_64_tv-userdebug
      m && launch_cvd
      atest CtsThreadNetworkTestCases
Bug: 262683651
Change-Id: Ie1bb23084531f67165ec068ea3ca39592dbc01d1
2023-09-12 21:48:57 +08:00
Kangping Dong
e7fef8938a [Thread] move Thread into com.android.tethering
Bug: 296211911
Change-Id: Ifd4f7cd06f1aeaba739d27d2328e89031ca73235
2023-08-23 14:28:50 +08:00