/*************************************************  
  File name     : hal.h
  Module        : 
  Author        : amir 
  Version       : 0.1   
  Created on    : 2022-02-07  
  Description   :
      hal interface function

  Modify History:   
  1. Date:        Author:         Modification:
*************************************************/

#include "threadpool.h"
#include "hal.h"
#include "hal_interface_audio.h"

typedef struct
{
   hloop_t *loop;
}hal_loop;

static hal_loop s_hal_loop;

int32_t hal_init(hloop_t* loop){
    hlogd("%s",__func__);
    s_hal_loop.loop = loop;
    hal_audio_init();
	return 0;
}


int32_t hal_deinit(){
    memset(&s_hal_loop, 0, sizeof(s_hal_loop));
    hlogd("%s",__func__);
	return 0;
}

void hal_sub(uint32_t event, int32_t priority, hevent_cb cb){
    if (s_hal_loop.loop)
    {
        return hloop_mmc_sub_event(s_hal_loop.loop, event, priority, cb);
    }
}

void hal_unsub(uint32_t event, hevent_cb cb){
    if (s_hal_loop.loop)
    {
       hloge("%s NOT SUPPORT YET", __func__); 
    }
}

void hal_pub(kpacket *packet){
    if (s_hal_loop.loop)
    {
        hloop_mmc_pub_event(s_hal_loop.loop, packet);
    }
}

htimer_t* hal_timer_start(htimer_cb cb, uint32_t timeout_ms, uint32_t repeat){
    if (s_hal_loop.loop)
    {
       return htimer_add(s_hal_loop.loop, cb, timeout_ms, repeat);
    }
}

void hal_timer_stop(htimer_t* timer){
    if (timer)
    {
        htimer_del(timer);
    }
}

void hal_dump(){
}

