void loop() { static uint32_t kit_hold = 0; if (millis() > kit_hold) { display::update_kit(0, 0, 0x20); } while (Console.available() > 0) { String input = Console.readStringUntil('\n'); input.trim(); if (!input.length()) { continue; } String command; int start_index = 0; int end_index = -1; parse_arg_string(input, start_index, end_index, command); command.toUpperCase(); if (command == "BEEP") { int duration = 500; parse_arg_int(input, start_index, end_index, duration); Audio::play(duration); } else if (command == "DISPLAY") { int red = 0; int green = 0; int blue = 0; int duration = 1000; parse_arg_int(input, start_index, end_index, red); parse_arg_int(input, start_index, end_index, green); parse_arg_int(input, start_index, end_index, blue); parse_arg_int(input, start_index, end_index, duration); display::update_all(red, green, blue); if (duration) { kit_hold = millis() + duration; } else { kit_hold = 1UL << 31; } } else if (command == "HELP") { Console.print(F( "Available commands: \n" "BEEP [duration]\n" " duration: interger, in ms - default 500\n" "DISPLAY <R> <G> <B> [duration]\n" " R, G, B: color values, 0-255 - default 255, 255, 255\n" " duration: integer, in ms - default 1000\n" )); } else { Console.print(F("Unknown command: ")); Console.print(input); Console.println(); } } delay(200); }
int main (int argc, char* argv[]) { int maxgv; char * console_string = (char*)calloc(3000,sizeof(char)); lastclickx=lastclicky=-1; active_param='\0'; num_images_side_by_side=2; int no_frontend; parse_arg_int (argc,argv,"bordersizex",&bx,2,console_string); parse_arg_int (argc,argv,"bordersizey",&by,2,console_string); parse_arg_float (argc,argv,"alpha",&alpha,100,console_string); parse_arg_float (argc,argv,"epsilon_d",&epsilon_d,0.01f,console_string); parse_arg_int (argc,argv,"diffusivity_type_d",&diffusivity_type_d,0,console_string); parse_arg_int (argc,argv,"iterations_inner",&num_iterations_inner,30,console_string); parse_arg_int (argc,argv,"iterations_outer",&num_iterations_outer,5,console_string); parse_arg_float (argc,argv,"omega",&omega,1.9f,console_string); parse_arg_float (argc,argv,"eta",&warp_eta,0.5f,console_string); parse_arg_int (argc,argv,"max_warp_levels",&max_warp_levels,200,console_string); parse_arg_float (argc,argv,"max_displacement",&max_displacement,5.0f,console_string); parse_arg_string(argc,argv,"basename",basename,"../images/yos",console_string); parse_arg_int (argc,argv,"no_frontend",&no_frontend,0,console_string); char filename[200]; printf("------\n%s---------\n",console_string); sprintf(filename,"%s1.pgm",basename); f1 = read_pgm_image(filename,&nx,&ny,bx,by,&maxgv); sprintf(filename,"%s2.pgm",basename); f2 = read_pgm_image(filename,&nx,&ny,bx,by,&maxgv); //printf("f1[100][150] =%f\n",f1[100][150]); //printf("f1[150][20] =%f\n",f1[150][20]); calloc_multi(1,3,sizeof(float),3,nx,ny,0,bx,by,0,0,0,&of_rgb); calloc_multi(4,2,sizeof(float),nx,ny,bx,by,0,0,&u,&v,&u_truth,&v_truth); calloc_multi(1,3,sizeof(uchar),num_images_side_by_side*nx,ny, 3, 0,0,0, 0,0,0, &p6); // printf("f1[150][20] =%f\n",f1[150][20]); sprintf(filename,"%st.F",basename); read_barron_data(filename,u_truth,v_truth,nx,ny,bx,by);//------------------------------uncomment for computing errors.!!!!!!!!!!!!!!!!!!!! /* rewrite the barron file to txt file */ // FILE* UT; // FILE* VT; // int i,j; // UT = fopen("utruth.txt","w"); // VT = fopen("vtruth.txt","w"); // for(i = bx; i <nx+bx; i++){ // for(j = by; j < by+ny; j++) // { // fprintf(UT,"%f\t",u_truth[i][j]); // fprintf(VT,"%f\t",v_truth[i][j]); // } // fprintf(UT,"\n"); // fprintf(VT,"\n"); // } // fclose(UT); // fclose(VT); if(!no_frontend) { glutInit(&argc, argv); glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB); glutInitWindowSize(num_images_side_by_side*nx,ny); glutCreateWindow("Frontend Skeleton"); glutDisplayFunc(handleDraw); glutKeyboardFunc(handleKeyboard); glutSpecialFunc(handleKeyboardspecial); glutMouseFunc(handleMouse); glutReshapeFunc(ReSizeGLScene); glEnable(GL_TEXTURE_2D); glGenTextures(1, &gl_rgb_tex); glBindTexture(GL_TEXTURE_2D, gl_rgb_tex); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); if(ny%4) glPixelStorei(GL_UNPACK_ALIGNMENT, 1) ; compute(); showParams(); glutMainLoop(); } else { compute(); showParams(); } return(0); }