/* The base should be a integral between MIN_BASE~MAX_BASE return values: -1: invalid base -2: base is not in MIN_BASE~MAX_BASE else: the base coverted to int */ int test_base(const char* base) { int i; const char* p; p=base; while(*p) { if(!isdigit(*p)) return -1; p++; } //ignore leading zeros p=base; while(*p=='0' && *p) p++; // all zeros if(!*p) return -2; // >MAX_BASE if(strlen(p) > strlen(MACRO2STR(MAX_BASE))) return -2; else if(strlen(p)==strlen(MACRO2STR(MAX_BASE))) { if(strcmp(p,MACRO2STR(MAX_BASE))>0) return -2; } i=atoi(p); if(i<2) return -2; return i; }
static char* busStatToStr(const unsigned long flag) { char* tempStr = NULL; #define MACRO2STR(x) case x: tempStr = #x; break switch (flag) { MACRO2STR( CHIPSTAT_BUSOFF ); MACRO2STR( CHIPSTAT_ERROR_PASSIVE ); MACRO2STR( CHIPSTAT_ERROR_WARNING ); MACRO2STR( CHIPSTAT_ERROR_ACTIVE ); default: tempStr = ""; break; } #undef MACRO2STR return tempStr; }