void afterBist(void) { unsigned int jumpers; unsigned int selftest; unsigned int bist; P4205_REG_READ(P4205_BOARD_CNTL_STATUS, P4205_JUMPER_STATUS_REG, jumpers); selftest = jumpers & P4205_SELFTEST_MODE_MASK; // Turn off Front Panel Leds P4205_SET_LED_STATE(0); // Display all errors detected during initialization on console printErrorLog(); // If user flash erase jumper is ON, Erase User flash if (jumpers & P4205_FLASH_BOOTPARM_RESTORE) { extern void set_console_baud_rate(int); set_console_baud_rate(9600); diag_printf("Initializing Flash Defaults\n"); argv[1] = "-i"; argv[2] = "-v"; argc = 3; do_flash_config(argc, argv); } /* If BIST in progress */ P4205_REG_READ(P4205_BOARD_CNTL_STATUS, P4205_BIST_REG, bist); if (bist & P4205_BIST_IN_PROGRESS) { } /* Run diagnostics continuously */ if (selftest == P4205_RUN_CONTINUOUS_BIST) { bist &= ~(P4205_BIST_WARM_START | P4205_BIST_IN_PROGRESS); P4205_REG_WRITE(P4205_BOARD_CNTL_STATUS, P4205_BIST_REG, bist); diag_printf("Diagnostic Only Mode, Resetting...\n"); CYGACC_CALL_IF_DELAY_US(2*100000); CYGACC_CALL_IF_RESET(); } else { bist &= ~(P4205_BIST_IN_PROGRESS); P4205_REG_WRITE(P4205_BOARD_CNTL_STATUS, P4205_BIST_REG, bist); } }
int main(int argc, char* argv[]) {getCurrentDir(self_dir);self_path=self_dir+String(path_delim)+executable_name; CWD=toString(self_dir); CWDN=basename(self_dir); prepareLogDir(); //////////////////////////////// Opt parse//////////////////////////////////////////// StringArray args; for(int i = 1; i < argc; i++){args.push_back(argv[i]);} bool skipcount=false; bool noopt=false; { //Scope for the following objects Options inc_obj("-inc","--increment-value"); Options linc_obj("-linc","--line-increment-value"); Options si_obj("-i","-si","--index","--start-index"); Options ei_obj("-ei","--end-index"); Options ifl_obj("-ifl","--index-field-length"); Options ifp_obj("-ifp","--index-field-precision"); Options iff_obj("-iff","--index-field-filler"); Options ns_obj("-ns","--name-string"); Options nsf_obj("-ns/f","--name-string-file"); Options sl_obj("-l","-sl","--line","--start-line"); Options el_obj("-el","--end-line"); Options ss_obj("-ss","--search-string"); Options ss_file_obj("-ss/f","--search-string-file"); Options rs_obj("-rs","--replace-string"); Options rs_file_obj("-rs/f","--replace-string-file"); Options re_obj("-re","--regex"); Options dp_obj("-dp","--depth"); Options if_obj("-if","--index-flags"); for(int i = 0; i < (int)args.size(); i++){ if(skipcount){skipcount=false;continue;} String opt=toLower(String(args[i])); if(!noopt){ if(opt=="-h"||opt=="--help"){ printe help_message; return 0; } else if(opt=="-v"||opt=="--version"){ printe version_info; return 0; } else if(opt=="-q"||opt=="--quiet"){ quiet=true; } else if(opt=="-fo"||opt=="--file-only"){ file_only=true; } else if(opt=="-do"||opt=="--directory-only"){ directory_only=true; } else if(opt=="-ed"||opt=="--exclude-directory"){ exclude_directory=true; } else if(opt=="-inc"||opt=="--increment-value"){ checkArgAvailability(args,i+1); mustBeAPositiveNumber("Increment Value","\nNegative increment i.e decrement will be available using name string rule:\n\ "+path_delim+"-i"+path_delim+", "+path_delim+"-ir"+path_delim+", "+path_delim+"-id"+path_delim+" etc..\n",args[i+1]); inc=stringTo<decltype(inc)>(args[i+1]); skipcount=true; inc_obj.count++; if(inc_obj.count>1){printWarningLog("Increment value overwritten");} } else if(opt=="-linc"||opt=="--line-increment-value"){ checkArgAvailability(args,i+1); mustBeAPositiveInteger("Line Increment Value",args[i+1]); linc=stringTo<decltype(linc)>(args[i+1]); skipcount=true; linc_obj.count++; if(linc_obj.count>1){printWarningLog("Line increment value overwritten");} } else if(opt=="-i"||opt=="-si"||opt=="--index"||opt=="--start-index"){ checkArgAvailability(args,i+1); mustBeANumber("Start Index",args[i+1]); start_index=stringTo<decltype(start_index)>(args[i+1]); current_index=start_index; current_index_rd=start_index; reverse_index=start_index; reverse_index_rd=start_index; DIRECTORY_INDEX=start_index; DIRECTORY_REVERSE_INDEX=start_index; skipcount=true; si_obj.count++; if(si_obj.count>1){printWarningLog("Start index overwritten");} } else if(opt=="-ei"||opt=="--end-index"){ checkArgAvailability(args,i+1); mustBeANumber("End Index",args[i+1]); end_index=stringTo<decltype(end_index)>(args[i+1]); skipcount=true; ei_obj.count++; if(ei_obj.count>1){printWarningLog("End index overwritten");} } else if(opt=="-if"||opt=="--index-flags"){ checkArgAvailability(args,i+1); parseIndexFlags(args[i+1]); skipcount=true; if_obj.count++; if(if_obj.count>1){printWarningLog("Override occurred in Index flags");} } else if(opt=="-ifl"||opt=="--index-field-length"){ checkArgAvailability(args,i+1); mustBeAPositiveInteger("Index field length",args[i+1]); index_field_length=stringTo<decltype(index_field_length)>(args[i+1]); skipcount=true; ifl_obj.count++; if(ifl_obj.count>1){printWarningLog("Index field length overwritten");} } else if(opt=="-ifp"||opt=="--index-field-precision"){ checkArgAvailability(args,i+1); mustBeAPositiveInteger("Index field precision",args[i+1]); IFP=stringTo<decltype(IFP)>(args[i+1]); skipcount=true; ifp_obj.count++; if(ifp_obj.count>1){printWarningLog("Index field precision overwritten");} } else if(opt=="-iff"||opt=="--index-field-filler"){ checkArgAvailability(args,i+1); mustBeAValidSingleCharacter("Index field filler",args[i+1]); IFF=stringTo<decltype(IFF)>(args[i+1]); IFF=replaceStringAll(IFF,"\\",""); skipcount=true; iff_obj.count++; if(iff_obj.count>1){printWarningLog("Index field filler overwritten");} } else if(opt=="-ns"||opt=="--name-string"){ checkArgAvailability(args,i+1); name_string=args[i+1]; skipcount=true; ns_obj.count++; if(ns_obj.count>1){printWarningLog("Name string overwritten");} } else if(opt=="-ns/f"||opt=="--name-string-file"){ checkArgAvailability(args,i+1); name_string_file=args[i+1]; skipcount=true; nsf_obj.count++; if(nsf_obj.count>1){printErrorLog("Only one name string file is allowed");Exit(1);} } else if(opt=="-ns/fn"||opt=="--name-string-file-null-terminated"){ checkArgAvailability(args,i+1); name_string_file=args[i+1]; nsf_n=true; skipcount=true; nsf_obj.count++; if(nsf_obj.count>1){printErrorLog("Only one name string file is allowed");Exit(1);} } else if(opt=="-l"||opt=="-sl"||opt=="--line"||opt=="--start-line"){ checkArgAvailability(args,i+1); mustBeAPositiveInteger("Start Line",args[i+1]); start_line=stringTo<decltype(start_line)>(args[i+1]); current_line=start_line; skipcount=true; sl_obj.count++; if(sl_obj.count>1){printWarningLog("Start line overwritten");} } else if(opt=="-lv"||opt=="-slv"||opt=="--line-reverse"||opt=="--start-line-reverse"){ checkArgAvailability(args,i+1); mustBeAPositiveInteger("Start Line",args[i+1]); start_line=stringTo<decltype(start_line)>(args[i+1]); current_line=start_line; skipcount=true; reverse_line=true; sl_obj.count++; if(sl_obj.count>1){printWarningLog("Start line overwritten");} } else if(opt=="-el"||opt=="--end-line"){ checkArgAvailability(args,i+1); mustBeAPositiveInteger("End Line",args[i+1]); end_line=stringTo<decltype(end_line)>(args[i+1]); skipcount=true; el_obj.count++; if(el_obj.count>1){printWarningLog("End line overwritten");} } else if(opt=="-elv"||opt=="--end-line-reverse"){ checkArgAvailability(args,i+1); mustBeAPositiveInteger("End Line",args[i+1]); end_line=stringTo<decltype(end_line)>(args[i+1]); skipcount=true; reverse_line=true; el_obj.count++; if(el_obj.count>1){printWarningLog("End line overwritten");} } else if(opt=="-ss"||opt=="--search-string"){ checkArgAvailability(args,i+1); search_string.push_back(args[i+1]); fixed_ss.push_back(false); skipcount=true; ss_obj.count++; ///multple is allowed } else if(opt=="-ss/f"||opt=="--search-string-file"){ checkArgAvailability(args,i+1); search_string_file=args[i+1]; skipcount=true; if(isFile(search_string_file)){ StringArray temp=getLineFromFileAndReturnVector(search_string_file); ///append temp to search_string search_string.insert(search_string.end(),temp.begin(),temp.end()); ///Populate fixed_ss with same number of boolean value for(Int i=0;i<(Int)temp.size();i++){ fixed_ss.push_back(false); } } else{ printErrorLog("Search string file not found: "+search_string_file); Exit(1); } ss_file_obj.count++; ///multple is allowed } else if(opt=="-ssf"||opt=="--search-string-fixed"){ checkArgAvailability(args,i+1); search_string.push_back(args[i+1]); fixed_ss.push_back(true); skipcount=true; ss_obj.count++; ///multple is allowed } else if(opt=="-ssf/f"||opt=="--search-string-fixed-file"){ checkArgAvailability(args,i+1); search_string_file=args[i+1]; skipcount=true; if(isFile(search_string_file)){ StringArray temp=getLineFromFileAndReturnVector(search_string_file); ///append temp to search_string search_string.insert(search_string.end(),temp.begin(),temp.end()); ///Populate fixed_ss with same number of boolean value for(Int i=0;i<(Int)temp.size();i++){ fixed_ss.push_back(true); } } else{ printErrorLog("Search string file not found: "+search_string_file); Exit(1); } ss_file_obj.count++; ///multple is allowed } else if(opt=="-rs"||opt=="--replace-string"){ checkArgAvailability(args,i+1); replace_string.push_back(args[i+1]); skipcount=true; rs_obj.count++; ///multple is allowed } else if(opt=="-rs/f"||opt=="--replace-string-file"){ checkArgAvailability(args,i+1); replace_string_file=args[i+1]; skipcount=true; if(isFile(replace_string_file)){ StringArray temp=getLineFromFileAndReturnVector(replace_string_file); replace_string.insert(replace_string.end(),temp.begin(),temp.end()); } else{ printErrorLog("Replace string file not found: "+replace_string_file); Exit(1); } rs_file_obj.count++; ///multple is allowed } else if(opt=="-re" || opt == "--regex"){ checkArgAvailability(args,i+1); re_type=toLower(args[i+1]); skipcount=true; re_obj.count++; if(re_obj.count>1){printWarningLog("Regex mode overwritten");} } else if(opt=="-rel"||opt=="--regex-locale"){ re_locale=true; } else if(opt=="-dp"||opt=="--depth"){ checkArgAvailability(args,i+1); mustBeAnInteger("Depth",args[i+1]); depth=stringTo<decltype(depth)>(args[i+1]); if(depth<0){depth=std::numeric_limits<Int>::max();} skipcount=true; dp_obj.count++; if(dp_obj.count>1){printWarningLog("Directory depth overwritten");} } else if(opt=="-cd"||opt=="--count-directory"){ count_directory=true; } else if(opt=="-cf"||opt=="--count-file"){ count_file=true; } else if(opt=="-s"||opt=="--sort"){ sort=true; sort_type="default"; } else if(opt=="-s/g"||opt=="--sort/g"){ sort=true; sort_type="general"; } else if(opt=="-s/n"||opt=="--sort/n"){ sort=true; sort_type="natural"; } else if(opt=="-s/none"||opt=="--sort/none"){ sort=true; sort_type="none"; } else if(opt=="-y"||opt=="--yes"){ all_yes=true; } else if(opt=="-fl"||opt=="--follow-link"){ follow_symlink=true; } else if(opt=="-shop"||opt=="--show-options"){ show_options=true; } else if(opt=="-f"||opt=="--force"){ force=true; } else if(opt=="-u"||opt=="--undo"){ undo=true; } else if(opt=="-sim"||opt=="--simulation"){ simulation=true; } else if(opt=="--"){ noopt=true; } else if(opt[0]=='-'){ printErrorLog("Invalid Option: "+opt); Exit(1); } else { files.push_back(String(args[i])); } } else {
void checkArgAvailability(const StringArray& sa,int i){ if(i>=(int)sa.size()){ printErrorLog("One or more argument/s missing"); Exit(1); } }