Skip to content

Commit 83d168a

Browse files
Jeremy WuChromeos LUCI
Jeremy Wu
authored and
Chromeos LUCI
committed
floss: implement |cras_lea_manager|
This CL implements |cras_lea_manager|, the component that resolves events and issues requests while managing iodev resources for LEA. BUG=b:317682584 TEST=Apply full patch series and verify unicast works Change-Id: I014b5295d3740be9f25a1356faf84d234fadca04 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/adhd/+/5467607 Tested-by: [email protected] <[email protected]> Commit-Queue: Jeremy Wu <[email protected]> Reviewed-by: Hsinyu Chao <[email protected]>
1 parent 2bfebaf commit 83d168a

File tree

9 files changed

+891
-5
lines changed

9 files changed

+891
-5
lines changed

cras/src/server/BUILD.bazel

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -439,6 +439,8 @@ cc_library(
439439
"cras_audio_thread_monitor.h",
440440
"cras_lea_iodev.c",
441441
"cras_lea_iodev.h",
442+
"cras_lea_manager.c",
443+
"cras_lea_manager.h",
442444
"cras_bt_adapter.c",
443445
"cras_bt_adapter.h",
444446
"cras_bt_battery_provider.c",

cras/src/server/cras_fl_media_adapter.c

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
#include "cras/common/check.h"
1717
#include "cras/server/platform/features/features.h"
1818
#include "cras/src/server/cras_a2dp_manager.h"
19+
#include "cras/src/server/cras_lea_manager.h"
1920
#include "cras/src/server/cras_bt_io.h"
2021
#include "cras/src/server/cras_bt_log.h"
2122
#include "cras/src/server/cras_bt_policy.h"
@@ -74,7 +75,11 @@ int handle_on_lea_group_connected(struct fl_media* active_fm,
7475
return -EINVAL;
7576
}
7677

77-
// TODO: notify BLE manager
78+
if (!active_fm->lea) {
79+
active_fm->lea = cras_floss_lea_create(active_fm);
80+
}
81+
82+
cras_floss_lea_add_group(active_fm->lea, name, group_id);
7883

7984
return 0;
8085
}
@@ -91,7 +96,7 @@ int handle_on_lea_group_disconnected(struct fl_media* active_fm, int group_id) {
9196
return -EINVAL;
9297
}
9398

94-
// TODO: notify BLE manager
99+
cras_floss_lea_remove_group(active_fm->lea, group_id);
95100

96101
return 0;
97102
}
@@ -117,7 +122,9 @@ int handle_on_lea_audio_conf(struct fl_media* active_fm,
117122
return -EINVAL;
118123
}
119124

120-
// TODO: notify BLE manager
125+
cras_floss_lea_audio_conf_updated(active_fm->lea, direction, group_id,
126+
snk_audio_location, src_audio_location,
127+
available_contexts);
121128

122129
return 0;
123130
}

cras/src/server/cras_fl_media_adapter.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,8 @@ struct fl_media {
3636
DBusConnection* conn;
3737
// Object representing the connected A2DP headset.
3838
struct cras_a2dp* a2dp;
39+
// Object representing the LEA service.
40+
struct cras_lea* lea;
3941
// Object representing the connected HFP headset.
4042
struct cras_hfp* hfp;
4143
struct bt_io_manager* bt_io_mgr;

cras/src/server/cras_lea_iodev.c

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
#include "cras/src/server/audio_thread_log.h"
2020
#include "cras/src/server/cras_audio_area.h"
2121
#include "cras/src/server/cras_audio_thread_monitor.h"
22+
#include "cras/src/server/cras_lea_manager.h"
2223
#include "cras/src/server/cras_iodev.h"
2324
#include "cras/src/server/cras_iodev_list.h"
2425
#include "cras/src/server/cras_utf8.h"
@@ -41,6 +42,8 @@ struct lea_io {
4142
// How many frames of audio samples we prefer to write in one
4243
// socket write.
4344
unsigned int write_block;
45+
// The associated |cras_lea| object.
46+
struct cras_lea* lea;
4447
// The associated ID of the corresponding LE audio group.
4548
int group_id;
4649
// If the device has been configured and attached with any stream.
@@ -59,7 +62,8 @@ static void lea_free_base_resources(struct lea_io* leaio) {
5962
free(leaio->base.supported_formats);
6063
}
6164

62-
struct cras_iodev* lea_iodev_create(const char* name,
65+
struct cras_iodev* lea_iodev_create(struct cras_lea* lea,
66+
const char* name,
6367
int group_id,
6468
enum CRAS_STREAM_DIRECTION dir) {
6569
struct lea_io* leaio;
@@ -73,6 +77,7 @@ struct cras_iodev* lea_iodev_create(const char* name,
7377
}
7478

7579
leaio->started = 0;
80+
leaio->lea = lea;
7681
leaio->group_id = group_id;
7782

7883
iodev = &leaio->base;

cras/src/server/cras_lea_iodev.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,13 @@ extern "C" {
1818
* Note that if a group supports both input and output, two `lea_iodev`s
1919
* will be instantiated.
2020
* Args:
21+
* lea - The associated |cras_lea| object.
2122
* name - Name associated to the LE audio group.
2223
* group - ID of the associated group.
2324
* dir - The direction of the iodev.
2425
*/
25-
struct cras_iodev* lea_iodev_create(const char* name,
26+
struct cras_iodev* lea_iodev_create(struct cras_lea* lea,
27+
const char* name,
2628
int group_id,
2729
enum CRAS_STREAM_DIRECTION dir);
2830

0 commit comments

Comments
 (0)