/******************************************************************************* ** ** Function lpm_idle_timeout ** ** Description Timeout thread of transport idle timer ** ** Returns None ** *******************************************************************************/ static void lpm_idle_timeout(union sigval arg) { BTLPMDBG("..lpm_idle_timeout.."); if ((bt_lpm_cb.state == LPM_ENABLED) && \ (bt_lpm_cb.wake_state == LPM_WAKE_W4_TIMEOUT)) { bthc_signal_event(HC_EVENT_LPM_IDLE_TIMEOUT); } }
/******************************************************************************* ** ** Function lpm_wake_deassert ** ** Description Deassert wake if allowed ** ** Returns None ** *******************************************************************************/ void lpm_wake_deassert(void) { if ((bt_lpm_cb.state == LPM_ENABLED) && (bt_lpm_cb.no_tx_data == TRUE)) { BTLPMDBG("LPM WAKE deassert"); uint8_t state = BT_VND_LPM_WAKE_DEASSERT; vendor_send_command(BT_VND_OP_LPM_WAKE_SET_STATE, &state); bt_lpm_cb.wake_state = LPM_WAKE_DEASSERTED; } }
/******************************************************************************* ** ** Function lpm_idle_timeout ** ** Description Timeout thread of transport idle timer ** ** Returns None ** *******************************************************************************/ static void lpm_idle_timeout(union sigval arg) { UNUSED(arg); BTLPMDBG("..lpm_idle_timeout.."); if ((bt_lpm_cb.state == LPM_ENABLED) && \ (bt_lpm_cb.wake_state == LPM_WAKE_W4_TIMEOUT)) { bthc_idle_timeout(); } }
/******************************************************************************* ** ** Function lpm_wake_deassert ** ** Description Deassert wake if allowed ** ** Returns None ** *******************************************************************************/ void lpm_wake_deassert(void) { if ((bt_lpm_cb.state == LPM_ENABLED) && (bt_lpm_cb.no_tx_data == TRUE)) { BTLPMDBG("LPM WAKE deassert"); /* Calling vendor-specific part */ if (bt_vnd_if) { uint8_t state = BT_VND_LPM_WAKE_DEASSERT; bt_vnd_if->op(BT_VND_OP_LPM_WAKE_SET_STATE, &state); } bt_lpm_cb.wake_state = LPM_WAKE_DEASSERTED; } }
/******************************************************************************* ** ** Function lpm_wake_assert ** ** Description Called to wake up Bluetooth chip. ** Normally this is called when there is data to be sent ** over UART. ** ** Returns TRUE/FALSE ** *******************************************************************************/ void lpm_wake_assert(void) { if (bt_lpm_cb.state != LPM_DISABLED) { BTLPMDBG("LPM WAKE assert"); /* Calling vendor-specific part */ uint8_t state = BT_VND_LPM_WAKE_ASSERT; vendor_send_command(BT_VND_OP_LPM_WAKE_SET_STATE, &state); lpm_stop_transport_idle_timer(); bt_lpm_cb.wake_state = LPM_WAKE_ASSERTED; } lpm_tx_done(FALSE); }