feat(ble_audio): Add specific libs for BLE Audio log compression

This commit is contained in:
Liu Linyan
2026-09-04 09:26:24 +08:00
parent cf73b0c616
commit 30fd193df0
30 changed files with 567 additions and 450 deletions
+20 -46
View File
@@ -34,18 +34,16 @@ static void iso_timer_cb(void *arg)
err = bt_le_iso_task_post(ISO_QUEUE_ITEM_TYPE_TIMER_EVENT, work, 0);
if (err) {
LOG_ERR("IsoTimerPostFail[%d]", err);
LOG_ERR("TimerCbPostFail[%d]", err);
}
}
int k_work_submit(struct k_work *work)
{
LOG_DBG("WorkSubmit[%p]", work);
assert(work);
if (work->handler == NULL) {
LOG_WRN("WorkHdlrNull");
LOG_WRN("TimerSubmitHdlrNull");
return -EINVAL;
}
@@ -67,62 +65,52 @@ bool k_work_is_pending(struct k_work *work)
{
bool is_pending;
LOG_DBG("WorkIsPending[%p]", work);
assert(work);
if (work->handler == NULL) {
LOG_WRN("WorkHdlrNull");
LOG_WRN("TimerIsPendingHdlrNull");
return false;
}
is_pending = (work->timer ? esp_timer_is_active(work->timer) : false);
LOG_DBG("%sPending", is_pending ? "Is" : "Not");
LOG_DBG("TimerIsPendingRet[%s]", is_pending ? "Is" : "Not");
return is_pending;
}
void k_work_init(struct k_work *work, k_work_handler_t handler)
{
LOG_DBG("WorkInit[%p]", work);
assert(work);
work->handler = handler;
}
struct k_work_delayable *k_work_delayable_from_work(struct k_work *work)
{
LOG_DBG("DworkFromWork[%p]", work);
assert(work);
return (struct k_work_delayable *)work;
}
void k_work_init_delayable(struct k_work_delayable *dwork,
k_work_handler_t handler)
{
LOG_DBG("DworkInit[%p]", dwork);
assert(dwork);
const esp_timer_create_args_t timer_args = {
.callback = &iso_timer_cb,
.arg = &dwork->work,
.name = "iso_timer",
.name = "IsoTimer",
};
int err;
if (dwork->work.timer) {
LOG_WRN("TimerCreated");
LOG_WRN("TimerInitAlreadyCreated");
return;
}
err = esp_timer_create(&timer_args, (esp_timer_handle_t *)&dwork->work.timer);
if (err) {
LOG_ERR("CreateTimerFail[%d]", err);
LOG_ERR("TimerInitCreateFail[%d]", err);
/* Reset handler so the object remains in a clean uninitialized state */
dwork->work.handler = NULL;
return;
@@ -135,18 +123,16 @@ void k_work_deinit_delayable(struct k_work_delayable *dwork)
{
int err;
LOG_DBG("DworkDeinit[%p]", dwork);
assert(dwork);
if (dwork->work.timer == NULL) {
LOG_INF("TimerNotCreated");
LOG_INF("TimerDeinitNotCreated");
return;
}
err = esp_timer_delete(dwork->work.timer);
if (err) {
LOG_ERR("DeleteTimerFail[%d]", err);
LOG_ERR("TimerDeinitDelFail[%d]", err);
return;
}
@@ -155,12 +141,10 @@ void k_work_deinit_delayable(struct k_work_delayable *dwork)
int k_work_cancel_delayable(struct k_work_delayable *dwork)
{
LOG_DBG("DworkCancel[%p]", dwork);
assert(dwork);
if (dwork->work.timer == NULL) {
LOG_INF("TimerNotCreated");
LOG_INF("TimerCancelNotCreated");
return -EINVAL;
}
@@ -172,14 +156,12 @@ int k_work_cancel_delayable(struct k_work_delayable *dwork)
bool k_work_cancel_delayable_sync(struct k_work_delayable *dwork,
struct k_work_sync *sync)
{
LOG_DBG("DworkCancelSync[%p]", dwork);
assert(dwork);
ARG_UNUSED(sync);
if (dwork->work.timer == NULL) {
LOG_INF("TimerNotCreated");
LOG_INF("TimerCancelSyncNotCreated");
return false;
}
@@ -193,12 +175,10 @@ int k_work_schedule(struct k_work_delayable *dwork, k_timeout_t ms)
{
int err;
LOG_DBG("WorkSchedule[%p][%u]", dwork, ms);
assert(dwork);
if (dwork->work.timer == NULL) {
LOG_WRN("TimerNotCreated");
LOG_WRN("TimerSchNotCreated");
return -EINVAL;
}
@@ -213,7 +193,7 @@ int k_work_schedule(struct k_work_delayable *dwork, k_timeout_t ms)
err = esp_timer_start_once(dwork->work.timer, ms * 1000);
if (err) {
LOG_ERR("StartTimerFail[%d]", err);
LOG_ERR("TimerSchStartFail[%d]", err);
return -EIO;
}
@@ -224,12 +204,10 @@ int k_work_reschedule(struct k_work_delayable *dwork, k_timeout_t ms)
{
int err;
LOG_DBG("WorkReschedule[%p][%u]", dwork, ms);
assert(dwork);
if (dwork->work.timer == NULL) {
LOG_WRN("TimerNotCreated");
LOG_WRN("TimerReschNotCreated");
return -EINVAL;
}
@@ -244,7 +222,7 @@ int k_work_reschedule(struct k_work_delayable *dwork, k_timeout_t ms)
err = esp_timer_start_once(dwork->work.timer, ms * 1000);
if (err) {
LOG_ERR("RestartTimerFail[%d]", err);
LOG_ERR("TimerReschStartFail[%d]", err);
return -EIO;
}
@@ -255,13 +233,11 @@ int k_work_schedule_periodic_us(struct k_work_delayable *dwork, uint64_t period_
{
int err;
LOG_DBG("WorkSchedulePeriodicUs[%p][%llu]", dwork, (unsigned long long)period_us);
assert(dwork);
assert(period_us > 0);
if (dwork->work.timer == NULL) {
LOG_WRN("TimerNotCreated");
LOG_WRN("TimerPeriodicNotCreated");
return -EINVAL;
}
@@ -269,7 +245,7 @@ int k_work_schedule_periodic_us(struct k_work_delayable *dwork, uint64_t period_
err = esp_timer_start_periodic(dwork->work.timer, period_us);
if (err) {
LOG_ERR("StartPeriodicTimerFail[%d]", err);
LOG_ERR("TimerPeriodicStartFail[%d]", err);
return -EIO;
}
@@ -289,17 +265,15 @@ k_timeout_t k_work_delayable_remaining_get(struct k_work_delayable *dwork)
k_timeout_t timeout;
int64_t delta_us;
LOG_DBG("DworkRemainingGet[%p]", dwork);
assert(dwork);
if (dwork->work.timer == NULL) {
LOG_WRN("TimerNotCreated");
LOG_WRN("TimerRemainingNotCreated");
return 0;
}
if (dwork->work.timeout_us == 0) {
LOG_DBG("WorkTimeoutZero");
LOG_DBG("TimerRemainingTimeoutZero");
return 0;
}
@@ -307,7 +281,7 @@ k_timeout_t k_work_delayable_remaining_get(struct k_work_delayable *dwork)
timeout = (delta_us > 0 ? (k_timeout_t)(delta_us / 1000) : 0);
LOG_DBG("Timeout[%u]", timeout);
LOG_DBG("TimerRemaining[%u]", timeout);
return timeout;
}