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

tests: Bluetooth: Update Host Launch Studio Project and ICS #64239

Merged
merged 1 commit into from
Jan 30, 2024

Conversation

sjanc
Copy link
Collaborator

@sjanc sjanc commented Oct 23, 2023

This updates host Launch Studio Project and ICS to TCRL 2023-1.

BLS file is deliberately left with Windows CRLF line terminators since otherwise Launch Studio silently fails to import such project.

@sjanc
Copy link
Collaborator Author

sjanc commented Oct 23, 2023

I updated audio profiles (and corresponding GAP requirements), and resolved MESH discrepancies (without enabling new features not v1.1)

@Thalley
Copy link
Collaborator

Thalley commented Oct 27, 2023

@sjanc sorry for not having reviewed this yet; working on something that I had hoped to finish by the weekend

@sjanc
Copy link
Collaborator Author

sjanc commented Nov 13, 2023

gentle ping

BWT I have no idea why compliance is failing...

@Thalley
Copy link
Collaborator

Thalley commented Nov 13, 2023

gentle ping

BWT I have no idea why compliance is failing...

Might be due to the size of the PR or something.

One thing that GH shows is that tests/bluetooth/qualification/Project_Zephyr_Bluetooth_Host.bls doesn't end with an empty newline.

@Thalley
Copy link
Collaborator

Thalley commented Nov 13, 2023

@sjanc I'll try to see if I can review it by the end of this week. As we also previously discussed with @MariuszSkamra last Friday, it may make sense to go through this with an online meeting. Now sure how long that would take

@sjanc
Copy link
Collaborator Author

sjanc commented Nov 13, 2023

well, I'm not saying one person should review all profiles in project :-) review can be split I guess, ie host stuff (GAP, L2CAP, SM etc) I'm quite sure is OK

@sjanc
Copy link
Collaborator Author

sjanc commented Nov 13, 2023

compliance is not failing, but timing out after 6h of idling... I already restarted job couple times..

and bls is generated file so I didn't touch it, especially that launch studio is silently failing to import if it doesn't like bls (eg due to new lines changed)

@Thalley
Copy link
Collaborator

Thalley commented Nov 14, 2023

compliance is not failing, but timing out after 6h of idling... I already restarted job couple times..

and bls is generated file so I didn't touch it, especially that launch studio is silently failing to import if it doesn't like bls (eg due to new lines changed)

Have you tried running the check_compliance.py script locally to see if it passes there?

Otherwise I'm fairly certain that we'll just manually override it if it cannot handle large files/large changes.

@sjanc
Copy link
Collaborator Author

sjanc commented Nov 14, 2023

I've run it locally and it has been hogging CPU on checkpatch for last 20 minutes with no progress

Running DevicetreeBindings tests in /home/janc/devel/zephyr/zephyr ...
Running Pylint tests in /home/janc/devel/zephyr/zephyr ...
Running Checkpatch tests in /home/janc/devel/zephyr/zephyr ...

@kartben
Copy link
Collaborator

kartben commented Nov 14, 2023

I've run it locally and it has been hogging CPU on checkpatch for last 20 minutes with no progress

Running DevicetreeBindings tests in /home/janc/devel/zephyr/zephyr ... Running Pylint tests in /home/janc/devel/zephyr/zephyr ... Running Checkpatch tests in /home/janc/devel/zephyr/zephyr ...

Ya it's a bug in the checkpatch script. However, one of the files in this PR is indeed not passing compliance for it has DOS line endings.

dos2unix tests/bluetooth/qualification/Project_Zephyr_Bluetooth_Host.bls

should get you going... if you also then add the missing commit sign-off :)

@sjanc
Copy link
Collaborator Author

sjanc commented Nov 15, 2023

missing sob added
as for DOS line ending it is explained in commit message why those are used

@Thalley
Copy link
Collaborator

Thalley commented Nov 15, 2023

missing sob added as for DOS line ending it is explained in commit message why those are used

The .bls file is also still missing an final empty line it seems (or is that just Github messing about?)

Regarding the file ending, the file ending in git should not matter. The machine that pulls this from Github should convert it to the file ending it wants (can be configured within git https://docs.github.com/en/get-started/getting-started-with-git/configuring-git-to-handle-line-endings), so even if the PTS machine expects a specific line ending, it should not be pushed to the git repository IMO.

@sjanc
Copy link
Collaborator Author

sjanc commented Nov 15, 2023

bls file is generated from and imported into Launch Studio portal, I don't think we should tamper it just to make CI happy

@sjanc
Copy link
Collaborator Author

sjanc commented Nov 30, 2023

gentle ping

@Thalley
Copy link
Collaborator

Thalley commented Dec 6, 2023

@sjanc I will go through this later today or tomorrow - Sorry for the delay

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think it makes sense to try and comment on the lines in the file, so you'll just the comments here:

I see that DIS is enabled, but not BAS which we also have in Zephyr. Is that intentional?

I see that OTS is enabled, but OTP is not. MCP uses OTP, so I guess OTP should be enabled at some point too.

MCS is also not enabled. Is that intentional?

Under "Unicast Server Requirements" the "12/17 Vendor-specific Codec Capability Setting" and "13/17 Vendor-specific Codec Capability Setting" are not enabled. I don't think we have anything stopping that from being enabled. There are a few other related things items that aren't enabled, which I think we could enable.

In Unicast Server Requirements Table 24 and Unicast Client Requirements Table 47, OOB supported is not enabled. I think we can support that in the host. (also for broadcast)

In Unicast Client Requirements Table 35, 36 and 37: We can also support vendor specific metadata

Table 58: LC3 Audio Configuration: Broadcast Source: We can enable 58/3

Table 60: GAP Requirements: Broadcast Source: I think we can enabled 60/4 as well

I see that PAST is disabled (e.g. 82/4), but we support that in the host, so we can run those tests with a non-Zephyr controller.

Table 3: Broadcast Audio Scan Service: we can enable autonomous syncing support as well

W.r.t. enabling the CAP Commander, it is still a work in progress so we won't be able to pass many tests yet, but should be nearly complete by end of year and done early 2024.

Similarly, the HAP HARC is also in PR now

For TMAP we support everything as well. If some things cannot be enabled due to lack of CAP Commander role, you can leave them out, but otherwise the remaining can be enabled.

For VOCS we support writable audio location and description as well as notifications

For GAP we also support Periodic Advertising with Responses and Periodic Advertising Connection, as well as Encrypted Data

For GAP (ISO) shouldn't 23/6, 23/7, 33/7 and 33/8 be enabled?

Should everything in GAP Table 30a: Central Link Layer Scanning Data Types be enabled? We support any data type.

For GATT, should 3a/1, 3a/2, 4a/1 and 4a/2 be enabled?

For OTS we support 3/2 and 3/3, 5/1, 5/2, 5/3, 5/4, 5/6 and 7/1

w.r.t. BAP, should we really enable support for both v1.0 and v1.0.1?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for review! comments inline

I don't think it makes sense to try and comment on the lines in the file, so you'll just the comments here:

I see that DIS is enabled, but not BAS which we also have in Zephyr. Is that intentional?

Initially it was agreed that we do only GAP/GATT/SM/L2CAP/DIS from host profiles, there is also HRS,IAS and OTS. IAS and OTS are tested only because those are required by some LE Audio stuff.

BAS implementation seems very basic (only battery level while there are 46 (sic!) options in Table 2 in ICS configuration:P), I'll enable only mandatory stuff there. Same for HRS.

I see that OTS is enabled, but OTP is not. MCP uses OTP, so I guess OTP should be enabled at some point too.

Hmm at least consistency check isn't complaining about missing dependency and in MCP 'inter-layer dependency' there is only OTS listed, not OTP. I'll leave it disabled for now.

MCS is also not enabled. Is that intentional?

From what I see only GMCS is supported.

Under "Unicast Server Requirements" the "12/17 Vendor-specific Codec Capability Setting" and "13/17 Vendor-specific Codec Capability Setting" are not enabled. I don't think we have anything stopping that from being enabled. There are a few other related things items that aren't enabled, which I think we could enable.

OK, enabled

In Unicast Server Requirements Table 24 and Unicast Client Requirements Table 47, OOB supported is not enabled. I think we can support that in the host. (also for broadcast)

OK, enabled

In Unicast Client Requirements Table 35, 36 and 37: We can also support vendor specific metadata

OK, enabled

Table 58: LC3 Audio Configuration: Broadcast Source: We can enable 58/3

OK, enabled

Table 60: GAP Requirements: Broadcast Source: I think we can enabled 60/4 as well

OK, enabled

I see that PAST is disabled (e.g. 82/4), but we support that in the host, so we can run those tests with a non-Zephyr controller.

It was agreed that we enable only features that can be validated with open source controller.

Table 3: Broadcast Audio Scan Service: we can enable autonomous syncing support as well

OK, enabled

W.r.t. enabling the CAP Commander, it is still a work in progress so we won't be able to pass many tests yet, but should be nearly complete by end of year and done early 2024.

Similarly, the HAP HARC is also in PR now

It was agreed that we enable only things that are available in main branch. I think we can simple update after those are merged.

For TMAP we support everything as well. If some things cannot be enabled due to lack of CAP Commander role, you can leave them out, but otherwise the remaining can be enabled.

I believe I enabled everything that doesn't depend on either CAP Commander or BR/EDR

For VOCS we support writable audio location and description as well as notifications

OK, enabled

For GAP we also support Periodic Advertising with Responses and Periodic Advertising Connection, as well as Encrypted Data

Same as PAST, PAwR is not supported by open source controller.
Encrypted data enabled (where missing).

For GAP (ISO) shouldn't 23/6, 23/7, 33/7 and 33/8 be enabled?

I wasn't sure about those since they have LL dependency that is not enabled for 'host only' configuration and otherwise suppose to be excluded.
"C.1: Mandatory IF LL 9/31 "Connected Isochronous Stream Central", otherwise Excluded."
"C.1: Mandatory IF LL 9/32 "Connected Isochronous Stream Peripheral", otherwise Excluded."

Should everything in GAP Table 30a: Central Link Layer Scanning Data Types be enabled? We support any data type.

Yeap, I've miss that table, enabled now (excluded PAwR thing).

For GATT, should 3a/1, 3a/2, 4a/1 and 4a/2 be enabled?

Yeap, enabled.

For OTS we support 3/2 and 3/3, 5/1, 5/2, 5/3, 5/4, 5/6 and 7/1

Enabled. I also enabled 4/3 (dependency)

w.r.t. BAP, should we really enable support for both v1.0 and v1.0.1?

Yeah, I was wondering about this too but apparently v1.0 is mandatory, ie "BAP 1/1 Unicast Server" depends on it. Maybe it is just for compatibility testing with 1.0 device... ?

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I see that OTS is enabled, but OTP is not. MCP uses OTP, so I guess OTP should be enabled at some point too.

Hmm at least consistency check isn't complaining about missing dependency and in MCP 'inter-layer dependency' there is only OTS listed, not OTP. I'll leave it disabled for now.

OTP is optional for MCP, so maybe we missed something for object transport in MCP?

For GAP (ISO) shouldn't 23/6, 23/7, 33/7 and 33/8 be enabled?

I wasn't sure about those since they have LL dependency that is not enabled for 'host only' configuration and otherwise suppose to be excluded. "C.1: Mandatory IF LL 9/31 "Connected Isochronous Stream Central", otherwise Excluded." "C.1: Mandatory IF LL 9/32 "Connected Isochronous Stream Peripheral", otherwise Excluded."

Since they also don't seem to be required for BAP, I think we can leave them as is.

w.r.t. BAP, should we really enable support for both v1.0 and v1.0.1?

Yeah, I was wondering about this too but apparently v1.0 is mandatory, ie "BAP 1/1 Unicast Server" depends on it. Maybe it is just for compatibility testing with 1.0 device... ?

When I looked, it seemed like there was a message that it was being deprecated in 2025 or something like that - Sounds to mandate something that is deprecated. So if it is mandatory, that sounds like a bug to me, and IMO it makes more sense to only support 1.0.1 if we can, as I'm not sure our BAP implementation is fully compatible with v1.0.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

OTP is optional for MCP, so maybe we missed something for object transport in MCP?

MCP simply has no dependency on OTP in Launch Studio, only OTS.
Not sure what should be enabled in OTP though

w.r.t. BAP, should we really enable support for both v1.0 and v1.0.1?

Yeah, I was wondering about this too but apparently v1.0 is mandatory, ie "BAP 1/1 Unicast Server" depends on it. Maybe it is just for compatibility testing with 1.0 device... ?

When I looked, it seemed like there was a message that it was being deprecated in 2025 or something like that - Sounds to mandate something that is deprecated. So if it is mandatory, that sounds like a bug to me, and IMO it makes more sense to only support 1.0.1 if we can, as I'm not sure our BAP implementation is fully compatible with v1.0.

The comment is "To be deprecated", 1.0 is not deprecated yet.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

MCP simply has no dependency on OTP in Launch Studio, only OTS.
Not sure what should be enabled in OTP though

That's interesting - But I guess the MCP client has its own ICS values for objects.

The comment is "To be deprecated", 1.0 is not deprecated yet.

Fair point :)

I'd rather not go through all the things again to see if anything else is missing, so I'll approve as is. Any minor things can be fixed later.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The comment is "To be deprecated", 1.0 is not deprecated yet.

Fair point :)

I'd rather not go through all the things again to see if anything else is missing, so I'll approve as is. Any minor things can be fixed later.

Yeap, I'd assume that this will be update every now and then (ie when major feature is merged or when new TCRL is released)

@sjanc sjanc force-pushed the tcrl-2023-1 branch 2 times, most recently from fd7a04f to fdd4786 Compare December 8, 2023 14:36
Thalley
Thalley previously approved these changes Dec 12, 2023
This updates host Launch Studio Project and ICS to TCRL 2023-1.

BLS file is deliberately left with Windows CRLF line terminators
since otherwise Launch Studio silently fails to import such
project.

Signed-off-by: Szymon Janc <[email protected]>
@sjanc
Copy link
Collaborator Author

sjanc commented Dec 14, 2023

removed characteristics from GAP service that are not supported by Zephyr

@Thalley
Copy link
Collaborator

Thalley commented Jan 26, 2024

@carlescufi The files in this PR are auto-generated but fails conformance because of that.

I think we should overwrite the conformance check and merge this.

@carlescufi carlescufi merged commit 8873c07 into zephyrproject-rtos:main Jan 30, 2024
17 of 18 checks passed
@sjanc sjanc deleted the tcrl-2023-1 branch January 30, 2024 08:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

7 participants