#ifndef __LH_TASKMANAGER_H__
#define __LH_TASKMANAGER_H__
/*
�ļ�˵�������������Դ�ļ�
���ߣ� ����
ԭ�����룺ʹ���뱣���˶� 
�������ڣ�2020��3��27��
ע�⣺����������Ŀʵ�����Թ����ܹ������ȶ�����
Ŀǰ֧��MCU�ͺţ�STC Atmel stm32 stm8 msp430 cc2530 ���� NXP pic 
*/

#include "system.h"
#define  TaskNumber 10  //������������

#define  ENABLED_INTERRUPT__     __enable_irq();//����ȫ���ж�
#define  DISABLE_INTERRUPT__     __disable_irq(); //�ر�ȫ���ж�

struct LiuHaoTaskStruct ;
typedef struct LiuHaoTaskStruct  TaskList_Items;
typedef TaskList_Items   *LH_TaskList;
struct LiuHaoTaskStruct 
{
	 int   Task_ID;//pic��Ƭ����Ҫ��int  ������Ƭ����char����
	 int   Task_Time;
	 int   (*_Fun)(void);
	 LH_TaskList  LIst_Next;//ָ����һ���б���
};

void TaskManager_Init(void);   //    ��ʼ�����������
void TaskManager_Scheduling(void)   ;  //  ������ȹ�����  �ŵ���ʱ���ж����� �δ���� ���е���
void TaskManager_Run(void)  ;  //  ����ִ����  �ŵ�������ִ�������� 


void Add_WaitList(LH_TaskList LHpStack) ;        // ����ȴ�̬ ���Ӵ�ִ�е����� 
void Add_TimingList(LH_TaskList LHpStack) ;      //  �������񵽶�ʱ��  
void Add_SuspendList(LH_TaskList LHpStack) ;    // �������̬ �������񵽹����б�   

/*********************************************************************** 
����������,��ij��������Ϊ���񣬿�����ɶ�ʱ���õȹ���
������Task_ID������Task_ID�������ظ�����ཫ����ʧ��
_Fun: �û���������
time: ��������ʱtime * ϵͳ�δ�ʱ�� ��ִ�� _Fun���� �������0������ʱ��ִ�У���Start_Tasks��������
***********************************************************************/
char UserTask_Create(char id,int (*_Fun)(void),int time);  // �û�������ͨ����

/*********************************************************************** 
������ʱ����,��ʱtime * ϵͳ�δ�ʱ�� ��ִ�иú���***  ϵͳ�δ�ʱ��һ���ɶ�ʱ����ʱһ��10ms 
_Fun: �û���ʱ����������
time: ��������ʱtime * ϵͳ�δ�ʱ�� ��ִ�� _Fun����
***********************************************************************/
char UserTimerTask_Create(int (*_Fun)(void),int time);     //  ������ʱ������

/***********************************************************************  
��ij������ʼִ��***	
id: ����id
time: ��������ʱtime * ϵͳ�δ�ʱ�� ��ִ�У����Ϊ0������ִ��
***********************************************************************/
char Start_Tasks(char id,int time);  //  ��������������	 
//   ֹͣһ������
char Stop_Tasks(char id)   ;         //  ��ִ���������(ֹͣ)

//  ɾ������
char Delete_Tasks(char id) ;         //  ɾ������

#endif