/*
 * Copyright (c) 2016 Zibin Zheng <znbin@qq.com>
 * All rights reserved
 */

#ifndef _MULTI_TIMER_H_
#define _MULTI_TIMER_H_

//#include "stdint.h"
#include "TypeDef.h"
#include "string.h"

#define TIMER_TICK	10
#define TIMER_MAX	60000	//86400000	//

typedef struct Timer
{
    uint32_t timeout;
    uint32_t repeat;
    void ( *timeout_cb ) ( void );
    struct Timer* next;
} Timer;

#ifdef __cplusplus
extern "C" {
#endif

    extern void timer_init_Head ( void );
    extern void timer_init ( struct Timer* handle, void ( *timeout_cb ) (), uint32_t timeout, uint32_t repeat );
    extern int  timer_start ( struct Timer* handle );
    extern void timer_stop ( struct Timer* handle );
    extern void timer_ticks ( void );
    extern void timer_loop ( void );
    extern void timer_app ( struct Timer* handle, void ( *timeout_cb ) (), uint32_t timeout, uint32_t repeat );

// void timer_again(struct Timer* handle);
// void timer_set_repeat(struct Timer* handle, uint32_t repeat);

#ifdef __cplusplus
}
#endif

#endif
