diff --git a/components/st3m/st3m_io.c b/components/st3m/st3m_io.c index c4265bbf561371c5b2c0a2afed427bbe367d0318..a02abc3b6611942fd3c5f2f7b4cd07e3ca5840ad 100644 --- a/components/st3m/st3m_io.c +++ b/components/st3m/st3m_io.c @@ -75,6 +75,8 @@ static int8_t st3m_io_badge_link_set(uint8_t mask, bool state) { bool left_ring = (mask & BADGE_LINK_PIN_MASK_LINE_OUT_RING) > 0; bool right_tip = (mask & BADGE_LINK_PIN_MASK_LINE_IN_TIP) > 0; bool right_ring = (mask & BADGE_LINK_PIN_MASK_LINE_IN_RING) > 0; + + // Apply request to badge_link_enabled. if(state) { if (left_tip || left_ring) { if(!st3m_audio_headphones_are_connected()) { @@ -94,6 +96,13 @@ static int8_t st3m_io_badge_link_set(uint8_t mask, bool state) { if (!right_ring) badge_link_enabled &= ~BADGE_LINK_PIN_MASK_LINE_IN_RING; } + // Convert badge_link_enabled back to {left,right}_{tip,ring}, but this + // time as requested state. + left_tip = (badge_link_enabled & BADGE_LINK_PIN_MASK_LINE_OUT_TIP) > 0; + left_ring = (badge_link_enabled & BADGE_LINK_PIN_MASK_LINE_OUT_RING) > 0; + right_tip = (badge_link_enabled & BADGE_LINK_PIN_MASK_LINE_IN_TIP) > 0; + right_ring = (badge_link_enabled & BADGE_LINK_PIN_MASK_LINE_IN_RING) > 0; + flow3r_bsp_spio_badgelink_left_enable(left_tip, left_ring); flow3r_bsp_spio_badgelink_right_enable(right_tip, right_ring); return st3m_io_badge_link_get_active(mask); @@ -134,4 +143,4 @@ void st3m_io_init(void) { xTaskCreate(&_task, "io", 4096, NULL, configMAX_PRIORITIES-1, NULL); ESP_LOGI(TAG, "IO task started"); -} \ No newline at end of file +}