⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 typedef.h

📁 通过车载终端采集GPS数据
💻 H
字号:
/*H**************************************************************************
* NAME:         typedef.h        
*----------------------------------------------------------------------------
* Copyright (c) 
*----------------------------------------------------------------------------
* RELEASE:            
* REVISION:       
*----------------------------------------------------------------------------
* PURPOSE:
* This file contains the type definitions
*****************************************************************************/
#ifndef TYPE_DEFINITION
#define TYPE_DEFINITION


#define VALID_DATA 1
#define INVALID_DATA 0

#ifndef NULL
 #define NULL ((void *) 0L)
#endif

typedef unsigned char       U8 ;
typedef unsigned short      U16;
typedef unsigned long       U32;
typedef char                S8 ;
typedef short               S16;
typedef long                S32;

// U16/U32 endian handlers
#ifdef LITTLE_ENDIAN     // => 16bit: (LSB,MSB), 32bit: (LSW,MSW) or (LSB0,LSB1,LSB2,LSB3) or (MSB3,MSB2,MSB1,MSB0)
#  define MSB(u16)        (((U8* )&u16)[1])
#  define LSB(u16)        (((U8* )&u16)[0])
#  define MSW(u32)        (((U16*)&u32)[1])
#  define LSW(u32)        (((U16*)&u32)[0])
#  define MSB0(u32)       (((U8* )&u32)[3])
#  define MSB1(u32)       (((U8* )&u32)[2])
#  define MSB2(u32)       (((U8* )&u32)[1])
#  define MSB3(u32)       (((U8* )&u32)[0])
#  define LSB0(u32)       MSB3(u32)
#  define LSB1(u32)       MSB2(u32)
#  define LSB2(u32)       MSB1(u32)
#  define LSB3(u32)       MSB0(u32)
#else // BIG_ENDIAN         => 16bit: (MSB,LSB), 32bit: (MSW,LSW) or (LSB3,LSB2,LSB1,LSB0) or (MSB0,MSB1,MSB2,MSB3)
#  define MSB(u16)        (((U8* )&u16)[0])
#  define LSB(u16)        (((U8* )&u16)[1])
#  define MSW(u32)        (((U16*)&u32)[0])
#  define LSW(u32)        (((U16*)&u32)[1])
#  define MSB0(u32)       (((U8* )&u32)[0])
#  define MSB1(u32)       (((U8* )&u32)[1])
#  define MSB2(u32)       (((U8* )&u32)[2])
#  define MSB3(u32)       (((U8* )&u32)[3])
#  define LSB0(u32)       MSB3(u32)
#  define LSB1(u32)       MSB2(u32)
#  define LSB2(u32)       MSB1(u32)
#  define LSB3(u32)       MSB0(u32)
#endif

// Endian converters
#define Le16(b)                        \
   (  ((U16)(     (b) &   0xFF) << 8)  \
   |  (     ((U16)(b) & 0xFF00) >> 8)  \
   )
#define Le32(b)                             \
   (  ((U32)(     (b) &       0xFF) << 24)  \
   |  ((U32)((U16)(b) &     0xFF00) <<  8)  \
   |  (     ((U32)(b) &   0xFF0000) >>  8)  \
   |  (     ((U32)(b) & 0xFF000000) >> 24)  \
   )

  // host to network conversion: used for Intel HEX format, TCP/IP, ...
// Convert a 16-bit value from host-byte order to network-byte order
// Standard Unix, POSIX 1003.1g (draft)
#ifdef LITTLE_ENDIAN
#  define htons(a)    LE16(a)
#  define ntohs(a)    htons(a)
#  define htonl(a)    LE32(a)
#  define ntohl(a)    htonl(a)
#else
#  define htons(a)    (a)
#  define ntohs(a)    (a)
#  define htonl(a)    (a)
#  define ntohl(a)    (a)
#endif

// Bit and bytes manipulations
#define Low(u16)                ((U8)u16)
#define High(u16)               ((U8)(u16>>8))
#define Tst_bit_x(addrx,mask)   (*addrx & mask)
#define Set_bit_x(addrx,mask)   (*addrx = (*addrx |  mask))
#define Clr_bit_x(addrx,mask)   (*addrx = (*addrx & ~mask))
#define Out_x(addrx,value)      (*addrx = value)
#define In_x(addrx)             (*addrx)

typedef unsigned char       Uint8;   
typedef unsigned char       Uchar;   
typedef unsigned char       Byte;    
typedef unsigned int        Uint16;  
typedef unsigned long int   Uint32;  
typedef char                Int8;    
typedef int                 Int16;   
typedef long int            Int32;   
typedef unsigned int        Word;    
typedef unsigned long int   DWord;   

#define LOW(U16)                ((U8)U16)                     
#define HIGH(U16)               ((U8)(U16>>8))                
#define TST_BIT_X(addrx,mask)   (*addrx & mask)               
#define SET_BIT_X(addrx,mask)   (*addrx = (*addrx |  mask))   
#define CLR_BIT_X(addrx,mask)   (*addrx = (*addrx & ~mask))   
#define OUT_X(addrx,value)      (*addrx = value)              
#define IN_X(addrx)             (*addrx)                      

#define OK 1//函数返回成功
#define KO 0//函数返回失败

#define TRUE 1
#define FALSE 0

#define RETRY_NOENTRY 0//重传队列中无元素
#define RETRY_DATAVALID 1//重传队列中有元素

/**********************************************
*公用的延迟函数,在main.c中被定义
**********************************************/
#define REMOTE_BUFFER_ID 3
#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -