int get_cols(uchar **row,uchar *fmt,...) { int cnt=0; va_list va; void *p; va_start(va,fmt); while(*fmt) { uchar *col; p = va_arg(va,void*); //if (*row[0]==0) return cnt; // eof ??? col = get_col(row); //printf("EX:%c,COL:%s\n",*fmt,col); switch(*fmt) { case 'i': if (sscanf(col,"%d",(int*)p)!=1) return -2; break; case 's': c_decode(col,col,-1); // decode C constructs *(uchar**)p=col; // remember it here break; default: return -1; // unknown format } fmt++; cnt++; } va_end(va); return cnt; }
uchar *get_col(uchar **row) { uchar *str = *row,*ret=str; int i; for(i=0; str[i]&&str[i]!='\t'; i++); // till the end if (str[i]) { str[i]=0; i++; } *row=str+i; // to the end c_decode(ret,ret,-1); return ret; // ok }
int app_main() { int rc; int pool_id; // int i; // myprintf("app main start\n"); //do some init work rc = init_system(); if(rc) { myprintf("system init failed, progame is exiting... \n"); return rc; } #ifdef __TEST__ init_test_data(); trigger_test(pool_id); #endif //MAIN PROCESS while(1) { //poll S frame pool_id = S_select_recv(); if((pool_id == 0) || (pool_id == 1)) { s_decode(pool_id); if(g_s_sample_full[pool_id]) { release_fpga_buffer(S_MODE, pool_id); g_s_sample_full[pool_id]=0; gSReleaseCnt[pool_id]++; } } //poll C frame pool_id = C_select_recv(); if((pool_id == 0) || (pool_id == 1)) { c_decode(pool_id); if(g_c_sample_full[pool_id]) { release_fpga_buffer(C_MODE, pool_id); g_c_sample_full[pool_id]=0; gCReleaseCnt[pool_id]++; } } } }