/***********************************************************************************
* @Copyright (c)	:(C)2013, Qindao ieslab Co., Ltd
* @FileName             :type.h
* @Author       	:wf200 team
* @Version      	:V1.0
* @Date         	:2013-11-29
* @Description	:Data type definition
************************************************************************************/
#ifndef  TYPE_H
#define  TYPE_H
#include <ddl.h>
#ifdef   __cplusplus
extern "C" 
{
#endif   /* #ifdef __cplusplus */
/*---------------------------- Variable Define -------------------------------------*/

#pragma pack(1) //1字节对齐

typedef signed int         s32;
typedef	signed short int   s16;
typedef signed char  s8;

typedef signed int const   sc32;  /* Read Only */
typedef signed short const sc16;  /* Read Only */
typedef signed char  const sc8;   /* Read Only */

typedef volatile signed long  vs32;
typedef volatile signed short vs16;
typedef volatile signed char  vs8;

typedef unsigned int          u32;
typedef	unsigned short int    u16;
typedef unsigned char  u8, *PU8;;

typedef unsigned char  u8; 
typedef unsigned char  bcd;

typedef unsigned int const    uc32;	/* Read Only */
typedef unsigned short const uc16;	/* Read Only */
typedef unsigned char  const uc8;	/* Read Only */

typedef volatile unsigned int	  vu32;
typedef volatile unsigned short vu16;
typedef volatile unsigned char	vu8;

typedef unsigned long long u64;
typedef long long s64;

typedef unsigned char    BIT;
typedef unsigned char    BOOL;

typedef void    VOID;
typedef void*    PVOID;

#define U8_MAX     ((u8)255)
#define S8_MAX     ((s8)127)
#define S8_MIN     ((s8)-128)
#define U16_MAX    ((u16)65535u)
#define S16_MAX    ((s16)32767)
#define S16_MIN    ((s16)-32768)
#define U32_MAX    ((u32)4294967295uL)
#define S32_MAX    ((s32)2147483647)
#define S32_MIN    ((s32)-2147483648)

#define SUCCESS_IES		0x01
#define ERROR_IES		0x00

#define ENABLE			0x01
#define DISABLE			0x00

//GPIO Bit SET and Bit RESET enumeration
typedef enum
{
    GPIO_PIN_RESET  = 0,
    GPIO_PIN_SET    = 1,
}GPIO_PinState;


#define TASK_IDLE	1		//任务机处于空闲状态
#define TASK_BUSY	0		//任务机处于忙碌状态
#define TASK_CONTINUE  2 //任务机本步骤完成需要继续
#define TASK_COMPLETE  3 //任务机完成

#define BIT0		0x0001	//一个字节中取bit0 
#define BIT1		0x0002	//一个字节中取bit1 
#define BIT2		0x0004	//一个字节中取bit2 
#define BIT3		0x0008	//一个字节中取bit3 
#define BIT4		0x0010	//一个字节中取bit4 
#define BIT5		0x0020	//一个字节中取bit5 
#define BIT6		0x0040	//一个字节中取bit6 
#define BIT7		0x0080	//一个字节中取bit7
#define BIT8		0x0100	//一个字节中取bit0 
#define BIT9		0x0200	//一个字节中取bit1 
#define BIT10		0x0400	//一个字节中取bit2 
#define BIT11		0x0800	//一个字节中取bit3 
#define BIT12		0x1000	//一个字节中取bit4 
#define BIT13		0x2000	//一个字节中取bit5 
#define BIT14		0x4000	//一个字节中取bit6 
#define BIT15		0x8000	//一个字节中取bit7

typedef union {
	u16	to_uint16;
	s16	to_sint16;
	u8	to_uint8[2];
	s8	to_sint8[2];
} mtype16_;

#define BYTE_L 0
#define BYTE_H 1
typedef union {
	float	to_float;
	u32	to_uint32;
	s32	to_sint32;
	u16	to_uint16[2];
	s16	to_sint16[2];
	u8	to_uint8[4];
	s8	to_sint8[4];
} mtype32_;	
#define WORD_L 0
#define WORD_M 1
#define WORD_H 2
#define WORD_P 3

typedef union 
{
	struct 
	{
			u8 data0;
			u8 data1;
			u8 data2;
			u8 data3;
	} datas_map;
	u8 data_buf[4];
	u32 datas;
} UNION_4U8TOU32;

typedef union 
{
	struct 
	{
    u8 data0;
    u8 data1;
	} datas_map;
	u8 data_buf[2];
	u16 datas;
} UNION_2U8TOU16;
/*---------------------------- Function Declare -----------------------------------*/


#ifdef __cplusplus
	}
#endif

#endif	//#ifndef  __TYPE_H


