From 59b8bd0a547011c2ebdc717961947459df5d911a Mon Sep 17 00:00:00 2001 From: Allen Hill Date: Thu, 18 Jun 2026 19:40:31 -0700 Subject: [PATCH] Delay starting status timer until state has been normalized --- src/avclandrv.c | 10 +++++++--- src/avclandrv.h | 6 +++--- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/src/avclandrv.c b/src/avclandrv.c index 7004cd0..95c02b1 100644 --- a/src/avclandrv.c +++ b/src/avclandrv.c @@ -1067,8 +1067,7 @@ response_t AVCLAN_handleframe(const AVCLAN_frame_t *in, AVCLAN_frame_t *out) { cd_status.state = cd_SEEKING | cd_SEEKING_TRACK; cd_status.flags2 = 0xc0; AVCLAN_generateStatus(out, true, dev_STATUS); - AVCLAN_startPlaying(); - respond = r_NormalizeState; + respond = r_StartPlaying; } break; case PACK3(dev_COMM_v1, dev_COMM_CTRL, Ping_Req): @@ -1327,8 +1326,13 @@ RFrame_t *AVCLAN_statemachine(RFrame_t *resp) { resp->r = r_Handled; break; case r_StartPlaying: + AVCLAN_normalizeState(); AVCLAN_generateStatus(out, true, dev_STATUS); - resp->r = r_NormalizeState; + resp->r = r_BeganPlaying; + break; + case r_BeganPlaying: + AVCLAN_startPlaying(); // only start PIT after normalizing state + resp->r = r_Nothing; break; case r_StatusReport: AVCLAN_generateStatus(out, true, dev_STATUS); diff --git a/src/avclandrv.h b/src/avclandrv.h index f7b5869..bb3774d 100644 --- a/src/avclandrv.h +++ b/src/avclandrv.h @@ -176,9 +176,9 @@ typedef enum : uint8_t { r_Handled, // No follow-up needed r_StatusReport = 0x02, // Needs follow-up status report r_NormalizeState, // cd_status needs normalized and resent - r_StartPlaying, // started playing; send current status and then - // normalize - r_TrackChange, // Time needs reset + r_StartPlaying, // ~equivalent to normalizeState, but cycles to BeganPlaying + r_BeganPlaying, + r_TrackChange, // Time needs reset r_Ejection, r_Report_Load, } response_t;