blob: 9e62fcde89510856bdbd5b6526508604961d8aa3 [file]
// SPDX-License-Identifier: LGPL-2.1-or-later
/*
*
* BlueZ - Bluetooth protocol stack for Linux
*
* Copyright (C) 2024 Asymptotic Inc.
*
* Author: Arun Raghavan <arun@asymptotic.io>
*
*
*/
#
#include <stdbool.h>
#include <stdint.h>
enum bt_asha_state_t {
ASHA_STOPPED = 0,
ASHA_STARTING,
ASHA_STARTED,
};
typedef void (*bt_asha_cb_t)(int status, void *data);
typedef void (*bt_asha_attach_cb_t)(void *data);
struct bt_asha {
struct bt_gatt_client *client;
struct gatt_db *db;
struct gatt_db_attribute *attr;
uint16_t acp_handle;
uint16_t volume_handle;
unsigned int status_notify_id;
uint16_t psm;
bool right_side;
bool binaural;
bool csis_supported;
bool coc_streaming_supported;
uint8_t hisyncid[8];
uint16_t render_delay;
uint16_t codec_ids;
int8_t volume;
enum bt_asha_state_t state;
bt_asha_cb_t state_cb;
void *state_cb_data;
bt_asha_attach_cb_t attach_cb;
void *attach_cb_data;
};
struct bt_asha_set {
uint8_t hisyncid[8];
struct bt_asha *left;
struct bt_asha *right;
};
struct bt_asha *bt_asha_new(void);
void bt_asha_reset(struct bt_asha *asha);
void bt_asha_state_reset(struct bt_asha *asha);
void bt_asha_free(struct bt_asha *asha);
unsigned int bt_asha_start(struct bt_asha *asha, bt_asha_cb_t cb,
void *user_data);
unsigned int bt_asha_stop(struct bt_asha *asha);
bool bt_asha_set_volume(struct bt_asha *asha, int8_t volume);
bool bt_asha_attach(struct bt_asha *asha, struct gatt_db *db,
struct bt_gatt_client *client, bt_asha_attach_cb_t probe_cb,
void *cb_user_data);