128 lines
4.7 KiB
C
128 lines
4.7 KiB
C
//////////////////////////////////////////////////
|
|
//Title : pub_basic.c
|
|
//Auhtor : Liu Wei
|
|
//Desc : public basic function
|
|
//Created : 2007-06-23
|
|
//Revision :
|
|
//
|
|
//Revision :
|
|
//
|
|
//////////////////////////////////////////////////
|
|
|
|
#ifndef _PUB_BASE_H_
|
|
#define _PUB_BASE_H_
|
|
|
|
typedef struct VALUE_STRING
|
|
{
|
|
u32 dValue;
|
|
u8 *pStr;
|
|
} StringVal;
|
|
|
|
#define ALPHA_TABLE_LOWER "abcdefghijklmnopqrstuvwsyz"
|
|
#define ALPHA_TABLE_UPPER "ABCDEFGHIJKLMNOPQRSTUVWSYZ"
|
|
|
|
#define NOTSO(n) ( !(n) )
|
|
#define IsNull(n) ( ((n) == NULL) )
|
|
#define CNULL '\0'
|
|
#define IsChNull(ch) ( ch==CNULL )
|
|
#define STR_CHECK_LAST(str,ch) ( str[strlen(str)-1] == ch )
|
|
#define STR_CHECK_FIRST(str,ch) ( str[0] == ch )
|
|
#define STR_CUT_LAST(str) ( str[strlen(str)-1] = CNULL )
|
|
|
|
|
|
#define BitSet(arg,posn) ((arg) | (1L << (posn)))
|
|
#define BitClr(arg,posn) ((arg) & ~(1L << (posn)))
|
|
#define BitFlp(arg,posn) ((arg) ^ (1L << (posn)))
|
|
#define BitTst(arg,posn) (!(!((arg) & (1L << (posn)))))
|
|
|
|
|
|
#define HexToChar(ch) ( (ch) + ( ((ch) > 9)? 'A'-10 : '0') )
|
|
|
|
///////////////////////////////////////////////////////////////////////////
|
|
//
|
|
///////////////////////////////////////////////////////////////////////////
|
|
|
|
#ifndef MAX
|
|
#define MAX(a, b) ( (a) > (b) ? (a) : (b) )
|
|
#define MIN(a, b) ( (a) < (b) ? (a) : (b) )
|
|
#endif
|
|
|
|
///////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// Name : GET_U8 GET_U16 GET_U32
|
|
// Function : Return the u8 /u16 / u32 value of the pointer memery
|
|
// Parameter: x : pointer
|
|
//
|
|
///////////////////////////////////////////////////////////////////////////
|
|
#define GET_U8( x ) ( *( (u8 *) (x) ) )
|
|
#define GET_U16( x ) ( *( (u16 *) (x) ) )
|
|
#define GET_U32( x ) ( *( (u32 *) (x) ) )
|
|
|
|
///////////////////////////////////////////////////////////////////////////
|
|
//
|
|
///////////////////////////////////////////////////////////////////////////
|
|
#define U16_LOW_BYTE ( x ) ( (u8 )( ((u16) (x) ) & 0xFF ) )
|
|
#define U16_HIG_BYTE ( x ) ( (u8 )( ((u16) (x) ) >> 8 ) )
|
|
|
|
#define LSB_BYTE2WORD( uVal ) ( (((u16) (uVal)[0]) * 256) + (uVal)[1] )
|
|
#define MSB_BYTE2WORD( uVal ) ( (((u16) (uVal)[1]) * 256) + (uVal)[0] )
|
|
|
|
#define LSB_WORD2BYTE( wVal , uVal ) \
|
|
(uVal)[0] = ((wVal) / 256); \
|
|
(uVal)[1] = ((wVal) & 0xFF )
|
|
|
|
#define MSB_WORD2BYTE( wVal , uVal ) \
|
|
(uVal)[1] = ((wVal) / 256 ); \
|
|
(uVal)[0] = ((wVal) & 0xFF)
|
|
|
|
///////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// Name : ARR_SIZE
|
|
// Function : Return array size of a
|
|
// Parameter: a : array
|
|
//
|
|
///////////////////////////////////////////////////////////////////////////
|
|
#define ARR_SIZE( a ) ( sizeof( (a) ) / sizeof( (a[0]) ) )
|
|
|
|
///////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// Name : STR
|
|
// Function : Convert the s to string
|
|
// Parameter: a : a value you want to Convert to string but no need ""
|
|
// e.g. : printf(STR(if(NOTSO(a)) return 0));
|
|
///////////////////////////////////////////////////////////////////////////
|
|
#define STR(s) #s
|
|
#define FILL_VALSTR(n) {n,#n}
|
|
#define GET_FILE_NAME(fn) \
|
|
{ \
|
|
static char fn[] = STR(_FILE_); \
|
|
}
|
|
|
|
#define GetValueString(i,p,Maxtrix,IdMax) \
|
|
{ \
|
|
if( (i) >= (IdMax) ) \
|
|
{ \
|
|
(p) = Maxtrix[(IdMax)].pStr; \
|
|
} \
|
|
else \
|
|
{ \
|
|
(p) = Maxtrix[(i)].pStr; \
|
|
} \
|
|
}
|
|
|
|
#define GET_MODULE_VER(x) (x##_VERSION)
|
|
|
|
#define FPOS( type, field ) \
|
|
/*lint -e545 */ ( ( dword ) & ( ( type * ) 0 )->field ) /*lint +e545 */
|
|
|
|
#define FSIZ( type, field ) sizeof( ((type *) 0)->field )
|
|
|
|
///////////////////////////////////////////////////////////////////////////
|
|
// DivRndUp: Divide and Round Up ///
|
|
///////////////////////////////////////////////////////////////////////////
|
|
|
|
#define DivRndUp(Num,Div) ( ((Num) % (Div))?((Num)/(Div) + 1):((Num)/(Div)) )
|
|
|
|
|
|
#endif
|