static void do_control_request(int direction) { switch (USB_ControlRequest.bRequest) { case REQUEST_REGISTER: do_register(direction, USB_ControlRequest.wValue); break; case REQUEST_FREQUENCY: do_frequency(direction, USB_ControlRequest.wValue); break; case REQUEST_RXTX_MODE: do_rxtx_mode(direction, USB_ControlRequest.wValue); break; case REQUEST_MODINDEX: do_modindex(direction, USB_ControlRequest.wValue); break; case REQUEST_CSMA_RSSI: do_csma_rssi(direction, USB_ControlRequest.wValue); break; case REQUEST_POWER: do_power(direction, USB_ControlRequest.wValue); break; case REQUEST_AFC: do_acf(direction, USB_ControlRequest.wValue); break; case REQUEST_IFBW: do_ifbw(direction, USB_ControlRequest.wValue); break; case REQUEST_TRAINING: do_training(direction, USB_ControlRequest.wValue); break; case REQUEST_SYNCWORD: do_syncword(direction, USB_ControlRequest.wValue); break; case REQUEST_BITRATE: do_bitrate(direction, USB_ControlRequest.wValue); break; case REQUEST_TX: do_tx(direction, USB_ControlRequest.wValue); break; case REQUEST_RX: do_rx(direction, USB_ControlRequest.wValue); break; case REQUEST_TX_FREQUENCY: do_tx_frequency(direction, USB_ControlRequest.wValue); break; case REQUEST_RX_FREQUENCY: do_rx_frequency(direction, USB_ControlRequest.wValue); break; case REQUEST_SERIALNUMBER: do_serialnumber(direction, USB_ControlRequest.wValue); break; case REQUEST_FWREVISION: do_fw_revision(direction, USB_ControlRequest.wValue); break; case REQUEST_RESET: reboot(); break; case REQUEST_DFU: jump_to_bootloader(); break; } }
int main_TrainingTagger(int argc,char* const argv[]) { if (argc==1) { usage(); return 0; } int val,index=-1,binaries=1,r_forms=1,i_forms=1; int semitic=0; struct OptVars* vars=new_OptVars(); char text[FILENAME_MAX]=""; char raw_forms[FILENAME_MAX]=""; char inflected_forms[FILENAME_MAX]=""; char output[FILENAME_MAX]=""; Encoding encoding_output = DEFAULT_ENCODING_OUTPUT; int bom_output = DEFAULT_BOM_OUTPUT; int mask_encoding_compatibility_input = DEFAULT_MASK_ENCODING_COMPATIBILITY_INPUT; while (EOF!=(val=getopt_long_TS(argc,argv,optstring_TrainingTagger,lopts_TrainingTagger,&index,vars))) { switch(val) { case 'o': if (vars->optarg[0]=='\0') { fatal_error("You must specify a non empty pattern\n"); } strcpy(output,vars->optarg); break; case 'b': binaries = 1; break; case 'n': binaries = 0; break; case 'a': break; case 'c': i_forms = 0; break; case 'm': r_forms = 0; break; case 'S': semitic=1; break; case 'k': if (vars->optarg[0]=='\0') { fatal_error("Empty input_encoding argument\n"); } decode_reading_encoding_parameter(&mask_encoding_compatibility_input,vars->optarg); break; case 'q': if (vars->optarg[0]=='\0') { fatal_error("Empty output_encoding argument\n"); } decode_writing_encoding_parameter(&encoding_output,&bom_output,vars->optarg); break; case 'h': usage(); return 0; case ':': if (index==-1) fatal_error("Missing argument for option -%c\n",vars->optopt); else fatal_error("Missing argument for option --%s\n",lopts_TrainingTagger[index].name); case '?': if (index==-1) fatal_error("Invalid option -%c\n",vars->optopt); else fatal_error("Invalid option --%s\n",vars->optarg); break; } index=-1; } if (vars->optind!=argc-1) { free_OptVars(vars); error("Invalid arguments: rerun with --help\n"); return 1; } strcpy(text,argv[vars->optind]); U_FILE* input_text=u_fopen_existing_versatile_encoding(mask_encoding_compatibility_input,text,U_READ); if (input_text==NULL) { free_OptVars(vars); fatal_error("cannot open file %s\n",text); return 1; } if(output[0]=='\0'){ remove_path_and_extension(text,output); } char path[FILENAME_MAX],filename[FILENAME_MAX]; get_path(text,path); if(strlen(path) == 0){ strcpy(path,"."); } /* we create files which will contain statistics extracted from the tagged corpus */ U_FILE* rforms_file = NULL, *iforms_file = NULL; if(r_forms == 1){ sprintf(filename,"%s_data_cat.dic",output); new_file(path,filename,raw_forms); rforms_file=u_fopen_creating_versatile_encoding(encoding_output,bom_output,raw_forms,U_WRITE); } if(i_forms == 1){ sprintf(filename,"%s_data_morph.dic",output); new_file(path,filename,inflected_forms); iforms_file=u_fopen_creating_versatile_encoding(encoding_output,bom_output,inflected_forms,U_WRITE); } u_printf("Gathering statistics from tagged corpus...\n"); do_training(input_text,rforms_file,iforms_file); /* we close all files and then we sort text dictionaries */ u_fclose(input_text); char disclaimer[FILENAME_MAX]; if(rforms_file != NULL){ u_fclose(rforms_file); pseudo_main_SortTxt(DEFAULT_ENCODING_OUTPUT,DEFAULT_BOM_OUTPUT,ALL_ENCODING_BOM_POSSIBLE,0,0,NULL,NULL,0,raw_forms); strcpy(disclaimer,raw_forms); remove_extension(disclaimer); strcat(disclaimer,".txt"); create_disclaimer(disclaimer); } if(iforms_file != NULL){ u_fclose(iforms_file); pseudo_main_SortTxt(DEFAULT_ENCODING_OUTPUT,DEFAULT_BOM_OUTPUT,ALL_ENCODING_BOM_POSSIBLE,0,0,NULL,NULL,0,inflected_forms); strcpy(disclaimer,inflected_forms); remove_extension(disclaimer); strcat(disclaimer,".txt"); create_disclaimer(disclaimer); } /* we compress dictionaries if option is specified by user (output is ".bin") */ if(binaries == 1){ /* simple forms dictionary */ if(r_forms == 1){ pseudo_main_Compress(DEFAULT_ENCODING_OUTPUT,DEFAULT_BOM_OUTPUT,ALL_ENCODING_BOM_POSSIBLE,0,semitic,raw_forms); } /* compound forms dictionary */ if(i_forms == 1){ pseudo_main_Compress(DEFAULT_ENCODING_OUTPUT,DEFAULT_BOM_OUTPUT,ALL_ENCODING_BOM_POSSIBLE,0,semitic,inflected_forms); } } free_OptVars(vars); u_printf("Done.\n"); return 0; }