Bluetooth Driver services: Difference between revisions

No edit summary
No edit summary
Line 329: Line 329:
[12.0.0+] The Enable vfunc called above for Audio does the following:
[12.0.0+] The Enable vfunc called above for Audio does the following:
* Calls a func which does the following:
* Calls a func which does the following:
** Uses BSA to enable AV. Besides the callback, the only field in the passed struct which is set is <code>features</code>. This is ORRed to set the bit for "remote control target", which with [13.0.0+] is only done if [[System_Settings|system-setting]] <code>bluetooth_debug!is_av_rc_tg</code> is set to true.
** Uses BSA to enable AV. Besides the callback, the only field in the passed struct which is set is <code>features</code>. This is ORRed to set bit0 for "remote control target", which with [13.0.0+] is only done if [[System_Settings|system-setting]] <code>bluetooth_debug!is_av_rc_tg</code> is set to true.
** Error handling + state setup is done.
** Error handling + state setup is done.
** Uses BSA to register AV twice, with the default input struct.
** Uses BSA to register AV twice, with the default input struct.
Line 1,053: Line 1,053:
== CloseAudioControlInput ==
== CloseAudioControlInput ==
Takes an input [[#Address]], no output.
Takes an input [[#Address]], no output.
This uses the BSA AV API to close the AVRCP connection.


== RegisterAudioControlNotification ==
== RegisterAudioControlNotification ==
Takes an input [[#Address]] and an u32 [[#AvrcEventType]], no output.
Takes an input [[#Address]] and an u32 [[#AvrcEventType]], no output.
This uses the BSA AV API to send a vendor control command: ctype=0x3, label={counter which is incremented}, length=0x9, data=[0x31, 0x00, 0x00, 0x05, {u8 [[#AvrcEventType]]}, {rest is zeros}].
This does nothing since BSA requires [[#EnableBluetooth|features]] bit1 and bit3 to be set in order to use this.


== SendAudioControlPassthroughCommand ==
== SendAudioControlPassthroughCommand ==
Takes an input [[#Address]], an u32 [[#AvrcOperationId]], an u32 [[#AvrcStateType]], no output.
Takes an input [[#Address]], an u32 [[#AvrcOperationId]], an u32 [[#AvrcStateType]], no output.
This uses the BSA AV API to send a remote control command: label={counter which is incremented}, rc_id=[[#AvrcOperationId]], key_state=[[#AvrcStateType]].
This does nothing since BSA requires [[#EnableBluetooth|features]] bit1 to be set in order to use this.


== SendAudioControlSetAbsoluteVolumeCommand ==
== SendAudioControlSetAbsoluteVolumeCommand ==
Takes an input [[#Address]] and a s32, no output.
Takes an input [[#Address]] and a s32, no output.
This uses the BSA AV API to send a vendor control command: ctype=0x0, label={counter which is incremented}, length=0x5, data=[0x50, 0x00, 0x00, 0x01, {input s32 value written as an u8}].
See [[#RegisterAudioControlNotification]] regarding the usage requirement.


== IsManufacturingMode ==
== IsManufacturingMode ==
Line 2,035: Line 2,049:


= AvrcOperationId =
= AvrcOperationId =
This is "nn::bluetooth::hal::AvrcOperationId".
This is "nn::bluetooth::hal::AvrcOperationId". This is the same as tBSA_AV_RC.


= AvrcStateType =
= AvrcStateType =
This is "nn::bluetooth::hal::AvrcStateType".
This is "nn::bluetooth::hal::AvrcStateType". This is the same as tBSA_AV_STATE.


= Notes =
= Notes =