Exemplo n.º 1
0
/*******************************************************************************
**
** 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();
    }
}
Exemplo n.º 4
0
/*******************************************************************************
**
** 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);
}