#include "include.h"
#include "func.h"
#include "usb_com.h"
#include "usb_hid.h"
#include "usb_audio.h"
#include "usb_vendor.h"

#if FUNC_USBD_EN


AT(.text.app.proc.bt)
void func_usbd_process(void)
{
    func_process();

#if USB_EN
    usb_device_process();
#endif
    
#if SYS_OFF_TIME
    if(sys_cb.pwroff_delay == 0) {
        func_cb.sta = FUNC_PWROFF;
        return;
    }
#endif

#if SYS_SLEEP_LEVEL
    if(sleep_process(bt_is_sleep)) {

    }
#endif
}

AT(.text.func.bt)
void func_usbd_enter(void)
{
    msg_queue_clear();
    bsp_mouse_sense_enable(true, BSP_MOUSE_TMR_PERIOD_CFG);

    lowpwr_pwroff_auto_dis();
    lowpwr_sleep_auto_dis();
}

AT(.text.func.bt)
void func_usbd_exit(void)
{
    bsp_audio_mic_allow_set(false);
    bsp_sdadc_mic_cmd(false);
    bsp_mouse_sense_enable(false, 0);

    lowpwr_pwroff_auto_en();
    lowpwr_sleep_auto_en();

    func_cb.last = FUNC_USBD;
}

AT(.text.func.bt)
void func_usbd(void)
{
    printf("%s\n", __func__);

    func_usbd_enter();

    while (func_cb.sta == FUNC_USBD) {
        func_usbd_process();
        func_usbd_message(msg_dequeue());
    }

    func_usbd_exit();
}

#endif
