static int handle_error(nxt_t *nxt, char *msg, nxt_error_t err) { printf("%s: %s\n", msg, nxt_str_error(err)); if (nxt != NULL) nxt_close(nxt); exit(err); }
int main(int argc,char *argv[]) { char *name = NULL; char *msg; int box = 0; int clear = 0; int verbose = 0; int c,newbox; while ((c = getopt(argc,argv,":hn:m:cv"))!=-1) { switch(c) { case 'h': usage(argv[0],0); break; case 'n': name = strdup(optarg); break; case 'm': newbox = atoi(optarg)-1; if (NXT_VALID_MAILBOX(newbox)) box = newbox; else { fprintf(stderr,"Invalid mailbox: %d",newbox+1); usage(argv[0],1); } break; case 'v': verbose = 1; break; case 'c': clear = 1; break; case ':': fprintf(stderr,"Option -%c requires an operand\n",optopt); usage(argv[0],1); break; case '?': fprintf(stderr,"Unrecognized option: -%c\n", optopt); usage(argv[0],1); break; } } nxt_t *nxt = nxt_open(name); if (nxt==NULL) { fprintf(stderr,"Could not find NXT\n"); return 1; } if ((msg = nxt_recv_msg(nxt,box,clear))!=NULL) { if (verbose) printf("Mailbox %d: ",box+1); printf("%s%c",msg,verbose?'\n':0); free(msg); } else fprintf(stderr,"Error: %s\n",nxt_strerror(nxt_error(nxt))); int ret = nxt_error(nxt); if (name!=NULL) free(name); nxt_close(nxt); return ret; }
static void quit() { SDL_JoystickClose(joy); nxt_motor_stop(nxt, NXT_MOTORA, 0); nxt_motor_stop(nxt, NXT_MOTORB, 0); nxt_motor_stop(nxt, NXT_MOTORC, 0); nxt_close(nxt); SDL_Quit(); }
int main(int argc,char *argv[]) { char *name = NULL; int btn = NXT_UI_BUTTON_ENTER; int c,newbtn; while ((c = getopt(argc,argv,":hn:b:"))!=-1) { switch (c) { case 'h': usage(argv[0],0); break; case 'b': newbtn = nxt_str2button(optarg); if (!NXT_VALID_BUTTON(newbtn)) { fprintf(stderr,"Invalid button: %s\n",optarg); return 1; } else btn = newbtn; break; case 'n': name = strdup(optarg); break; case ':': fprintf(stderr,"Option -%c requires an operand\n",optopt); usage(argv[0],1); break; case '?': fprintf(stderr,"Unrecognized option: -%c\n", optopt); usage(argv[0],1); break; } } nxt_t *nxt = nxt_open(name); if (nxt==NULL) { fprintf(stderr,"Could not find NXT\n"); return 1; } nxt_set_button(nxt,btn); int ret = nxt_error(nxt); if (name!=NULL) free(name); nxt_close(nxt); return ret; }
int main(int argc,char *argv[]) { char *name = NULL; int c; nxt_t *nxt; char *prog; while ((c = getopt(argc,argv,":hn:"))!=-1) { switch(c) { case 'h': usage(argv[0],0); break; case 'n': name = strdup(optarg); break; case ':': fprintf(stderr,"Option -%c requires an operand\n",optopt); usage(argv[0],1); break; case '?': fprintf(stderr,"Unrecognized option: -%c\n", optopt); usage(argv[0],1); break; } } nxt = nxt_open(name); if (nxt==NULL) { fprintf(stderr,"Could not find NXT\n"); return 1; } prog = nxt_get_program(nxt); if (prog!=NULL) { printf("%s\n",prog); free(prog); } else fprintf(stderr,"Error: %s\n",nxt_strerror(nxt_error(nxt))); int ret = nxt_error(nxt); if (name!=NULL) free(name); nxt_close(nxt); return ret; }
int main(int argc,char *argv[]) { int ret = 0; struct fuse_args args = FUSE_ARGS_INIT(argc,argv); memset(&options,0,sizeof(struct options)); if (fuse_opt_parse(&args,&options,nxtfs_opts,NULL)==-1) return 1; nxt = nxt_open(options.name); if (nxt!=NULL) { get_modules(); #ifdef FUSE_VERSION_2_5 ret = fuse_main(args.argc,args.argv,&nxtfs_oper); #else ret = fuse_main(args.argc,args.argv,&nxtfs_oper,NULL); #endif nxt_close(nxt); } else ret = 1; fuse_opt_free_args(&args); return ret; }
int main(int argc, char *argv[]) { nxt_t *nxt; nxt_error_t err; char *bios_file; printf("#==========================================================#\n"); printf("# NXT BIOS Flash Utility #\n"); printf("#==========================================================#\n\n"); if (argc == 1) { bios_file = (char *) calloc(1,256); strcat(bios_file,"../ecrobot/bios/nxt_bios_rom.bin"); } else if (argc != 2) { printf("Syntax: %s [<NXT BIOS binary>]\n" "\n" "Example: %s nxt_bios_rom.bin\n", argv[0], argv[0]); exit(1); } else { bios_file = argv[1]; } printf("Checking NXT BIOS %s ... ", bios_file); NXT_HANDLE_ERR(nxt_firmware_validate(bios_file, MAX_BIOS_FLASH_PAGE ), NULL, "Error in NXT BIOS file"); printf("NXT BIOS OK.\n"); NXT_HANDLE_ERR(nxt_init(&nxt), NULL, "Error during library initialization"); err = nxt_find(nxt); if (err) { if (err == NXT_NOT_PRESENT) printf("NXT not found. Is it properly plugged in via USB?\n"); else NXT_HANDLE_ERR(0, NULL, "Error while scanning for NXT"); exit(1); } if (!nxt_in_reset_mode(nxt)) { printf("NXT found, but not running in reset mode.\n"); printf("Please reset your NXT manually and restart this program.\n"); exit(2); } NXT_HANDLE_ERR(nxt_open(nxt), NULL, "Error while connecting to NXT"); printf("NXT device in reset mode located and opened.\n" "Starting NXT BIOS flash procedure now...\n"); NXT_HANDLE_ERR(nxt_firmware_flash(nxt, bios_file, 0, MAX_BIOS_FLASH_PAGE, 1, 0), nxt, "Error flashing NXT BIOS"); printf("NXT BIOS flash complete.\n"); NXT_HANDLE_ERR(nxt_jump(nxt, 0x00100000), nxt, "Error booting new NXT BIOS"); printf("New NXT BIOS started!\n"); NXT_HANDLE_ERR(nxt_close(nxt), NULL, "Error while closing connection to NXT"); return 0; }
int main(int argc,char *argv[]) { char *name = NULL; int c,i,n,newport; int port = 0; int verbose = 1; int reset = 0; int mode = -1; nxt_cam_object_t objects[8]; while ((c = getopt(argc,argv,":hn:s:qrl"))!=-1) { switch(c) { case 'h': usage(argv[0],0); break; case 'n': name = optarg; break; case 'q': verbose = 0; break; case 'r': reset = 1; break; case 's': newport = atoi(optarg)-1; if (NXT_VALID_SENSOR(newport)) port = newport; else { fprintf(stderr,"Invalid sensor: %s\n",optarg); usage(argv[0],1); } break; case 'o': mode = NXT_CAM_TRACKING_OBJECT; break; case 'l': mode = NXT_CAM_TRACKING_LINE; break; case ':': fprintf(stderr,"Option -%c requires an operand\n",optopt); usage(argv[0],1); break; case '?': fprintf(stderr,"Unrecognized option: -%c\n", optopt); usage(argv[0],1); break; } } nxt_t *nxt = nxt_open(name); if (nxt==NULL) { fprintf(stderr,"Could not find NXT\n"); return 1; } nxt_set_sensor_mode(nxt,port,NXT_SENSOR_TYPE_LOWSPEED,NXT_SENSOR_MODE_RAW); nxt_wait_after_communication_command(); if (mode!=-1) { nxt_cam_set_trackingmode(nxt,port,mode); nxt_wait_after_communication_command(); } nxt_cam_enable_tracking(nxt,port,1); nxt_wait_after_communication_command(); n = nxt_cam_num_objects(nxt,port); nxt_wait_after_communication_command(); if (n==-1) { fprintf(stderr,"Error: %s\n",nxt_strerror(nxt_error(nxt))); } else if (nxt_cam_get_objects(nxt,port,0,n,objects)==-1) { fprintf(stderr,"Error: %s\n",nxt_strerror(nxt_error(nxt))); } else { if (verbose) { printf("Sensor %d:\n",port+1); printf("Objects: %d\n",n); for (i=0;i<n;i++) { printf("pos = (%d, %d);\tsize = (%d, %d);\tcolor = %d\n", objects[i].x, objects[i].y, objects[i].w, objects[i].h, objects[i].color); } } else { printf("%d\n",n); for (i=0;i<n;i++) { printf("%d %d %d %d %d\n", objects[i].x, objects[i].y, objects[i].w, objects[i].h, objects[i].color); } } } if (reset) { nxt_cam_enable_tracking(nxt,port,0); nxt_wait_after_communication_command(); nxt_set_sensor_mode(nxt,port,NXT_SENSOR_TYPE_NONE,NXT_SENSOR_MODE_RAW); } int ret = nxt_error(nxt); nxt_close(nxt); return ret; }
int main(int argc,char *argv[]) { SDL_Event event; SDL_Surface *screen; SDL_Surface *bg,*left,*enter,*right,*exit,*display_surface; SDL_Rect rect_left = { .x = 51, .y = 172, .w = 27, .h = 31, }; SDL_Rect rect_enter = { .x = 91, .y = 173, .w = 32, .h = 31, }; SDL_Rect rect_right = { .x = 136, .y = 172, .w = 27, .h = 31, }; SDL_Rect rect_exit = { .x = 91, .y = 216, .w = 31, .h = 20, }; SDL_Rect rect_display = { .x = 57, .y = 62, .w = 100, .h = 64, }; int c; char *name = NULL; int force = 0; while ((c = getopt(argc,argv,":hn:f"))!=-1) { switch (c) { case 'h': usage(argv[0],0); break; case 'f': force = 1; break; case 'n': name = optarg; break; case ':': fprintf(stderr,"Option -%c requires an operand\n",optopt); usage(argv[0],1); break; case '?': fprintf(stderr,"Unrecognized option: -%c\n", optopt); usage(argv[0],1); break; } } // init NXT nxt_t *nxt = nxt_open(name); if (nxt==NULL) { fprintf(stderr,"Could not find NXT\n"); return 1; } if (nxt_get_connection_type(nxt)==NXT_CON_BT && !force) { fprintf(stderr,"Warning! Using NXT Pilot over Bluetooth can make trouble. Are you sure to continue (y/n)[n]: "); if (fgetc(stdin)!='y') { nxt_close(nxt); return 0; } } nxt_display_t *display = nxt_display_open(nxt); if (display==NULL) { fprintf(stderr,"Could not open display\n"); nxt_close(nxt); return 1; } // init window if (SDL_Init(SDL_INIT_VIDEO)==-1) { fprintf(stderr,"Can't init SDL: %s\n",SDL_GetError()); return 1; } atexit(SDL_Quit); screen = SDL_SetVideoMode(215,322,32,SDL_HWSURFACE); if (screen==NULL) { fprintf(stderr,"Can't open window: %s\n",SDL_GetError()); return 1; } SDL_WM_SetCaption("NXT Pilot","NXT Pilot"); // load images bg = IMG_ReadXPMFromArray(pilot_bg_xpm); left = IMG_ReadXPMFromArray(pilot_left_xpm); enter = IMG_ReadXPMFromArray(pilot_enter_xpm); right = IMG_ReadXPMFromArray(pilot_right_xpm); exit = IMG_ReadXPMFromArray(pilot_exit_xpm); // display NXT SDL_BlitSurface(bg,NULL,screen,NULL); SDL_BlitSurface(left,NULL,screen,&rect_left); SDL_BlitSurface(enter,NULL,screen,&rect_enter); SDL_BlitSurface(right,NULL,screen,&rect_right); SDL_BlitSurface(exit,NULL,screen,&rect_exit); int done = 0; unsigned int pause = nxt_get_connection_type(nxt)==NXT_CON_BT?500:100; while (!done) { while (SDL_PollEvent(&event)) { switch(event.type) { case SDL_QUIT: done = 1; break; case SDL_KEYUP: if (event.key.keysym.sym==SDLK_ESCAPE) done = 1; else if (event.key.keysym.sym==SDLK_RETURN) nxt_set_button(nxt,NXT_UI_BUTTON_ENTER); else if (event.key.keysym.sym==SDLK_BACKSPACE) nxt_set_button(nxt,NXT_UI_BUTTON_EXIT); else if (event.key.keysym.sym==SDLK_LEFT) nxt_set_button(nxt,NXT_UI_BUTTON_LEFT); else if (event.key.keysym.sym==SDLK_RIGHT) nxt_set_button(nxt,NXT_UI_BUTTON_RIGHT); break; case SDL_MOUSEBUTTONUP: if (in_rect(rect_left,event.button)) nxt_set_button(nxt,NXT_UI_BUTTON_LEFT); else if (in_rect(rect_enter,event.button)) nxt_set_button(nxt,NXT_UI_BUTTON_ENTER); else if (in_rect(rect_right,event.button)) nxt_set_button(nxt,NXT_UI_BUTTON_RIGHT); else if (in_rect(rect_exit,event.button)) nxt_set_button(nxt,NXT_UI_BUTTON_EXIT); break; } } display_surface = load_display(display); if (display!=NULL) { SDL_BlitSurface(display_surface,NULL,screen,&rect_display); SDL_UpdateRect(screen,0,0,0,0); SDL_FreeSurface(display_surface); } SDL_Delay(pause); } // free images SDL_FreeSurface(bg); SDL_FreeSurface(left); SDL_FreeSurface(enter); SDL_FreeSurface(right); SDL_FreeSurface(exit); // close nxt int ret = nxt_error(nxt); nxt_display_flush(display,1); nxt_display_close(display); nxt_close(nxt); return ret; }
int main(int argc, char *argv[]) { nxt_t *nxt; nxt_error_t err; char *fw_file; FILE *f; int ret; char *buf; long lsize; if (argc != 2) { printf("Syntax: %s <C program image to write>\n" "\n" "Example: %s flashled.bin\n", argv[0], argv[0]); exit(1); } fw_file = argv[1]; NXT_HANDLE_ERR(nxt_init(&nxt), NULL, "Error during library initialization"); err = nxt_find(nxt); if (err) { if (err == NXT_NOT_PRESENT) printf("NXT not found. Is it properly plugged in via USB?\n"); else NXT_HANDLE_ERR(0, NULL, "Error while scanning for NXT"); exit(1); } f = fopen(fw_file, "rb"); if (f == NULL) NXT_HANDLE_ERR(8, NULL, "Error opening file"); fseek (f, 0, SEEK_END); lsize=ftell (f); rewind(f); buf = (char *) malloc(lsize); if (buf == NULL) NXT_HANDLE_ERR(8, NULL, "Error allocating memory"); ret = fread(buf, 1, lsize, f); if (ret != (int) lsize) NXT_HANDLE_ERR(8, NULL, "Error reading file"); printf("File size is %ld\n", lsize); fclose(f); if (!nxt_in_reset_mode(nxt)) { printf("NXT found, but not running in reset mode.\n"); printf("Please reset your NXT manually and restart this program.\n"); exit(2); } NXT_HANDLE_ERR(nxt_open(nxt), NULL, "Error while connecting to NXT"); printf("NXT device in reset mode located and opened.\n" "Starting C program now...\n"); // Send the C program NXT_HANDLE_ERR(nxt_send_file(nxt, 0x202000, buf, (int) lsize), nxt, "Error Sending file"); NXT_HANDLE_ERR(nxt_jump(nxt, 0x202000), nxt, "Error jumping to C program"); NXT_HANDLE_ERR(nxt_close(nxt), NULL, "Error while closing connection to NXT"); return 0; }
int main(int argc, char *argv[]) { nxt_t *nxt; nxt_error_t err; char *fw_file, *menu_file; char *nxj_home; if (argc == 1) { nxj_home = getenv("NXJ_HOME"); if (nxj_home == NULL || strlen(nxj_home) == 0) { printf("NXJ_HOME is not defined\n"); exit(1); } printf("NXJ_HOME is %s\n", nxj_home); fw_file = (char *) calloc(1,256); strcpy(fw_file, nxj_home); strcat(fw_file,"/bin/lejos_nxt_rom.bin"); menu_file = calloc(1,256); strcpy(menu_file,nxj_home); strcat(menu_file,"/bin/StartUpText.bin"); } else if (argc != 3) { printf("Syntax: %s [<VM binary> <java menu binary>]\n" "\n" "Example: %s lejos_nxt_rom.bin StartUpText.bin\n", argv[0], argv[0]); exit(1); } else { fw_file = argv[1]; menu_file = argv[2]; } printf("Checking VM %s ... ", fw_file); NXT_HANDLE_ERR(nxt_firmware_validate(fw_file, MAX_VM_PAGES ), NULL, "Error in VM file"); printf("VM OK.\n"); printf("Checking Menu %s ... ", menu_file); NXT_HANDLE_ERR(nxt_firmware_validate(menu_file, (MAX_MENU_PAGES ) - 4), NULL, "Error in Menu file"); printf("Menu OK.\n"); NXT_HANDLE_ERR(nxt_init(&nxt), NULL, "Error during library initialization"); err = nxt_find(nxt); if (err) { if (err == NXT_NOT_PRESENT) printf("NXT not found. Is it properly plugged in via USB?\n"); else NXT_HANDLE_ERR(0, NULL, "Error while scanning for NXT"); exit(1); } if (!nxt_in_reset_mode(nxt)) { printf("NXT found, but not running in reset mode.\n"); printf("Please reset your NXT manually and restart this program.\n"); exit(2); } NXT_HANDLE_ERR(nxt_open(nxt), NULL, "Error while connecting to NXT"); printf("NXT device in reset mode located and opened.\n" "Starting VM flash procedure now...\n"); NXT_HANDLE_ERR(nxt_firmware_flash(nxt, fw_file, 0, MAX_VM_PAGES, 1, 0), nxt, "Error flashing VM"); printf("VM flash complete.\n"); printf("Starting menu flash procedure now...\n"); NXT_HANDLE_ERR(nxt_firmware_flash(nxt, menu_file, MAX_VM_PAGES, MAX_MENU_PAGES, 0, 1), nxt, "Error flashing menu"); printf("Menu flash complete.\n"); NXT_HANDLE_ERR(nxt_jump(nxt, 0x00100000), nxt, "Error booting new firmware"); printf("New firmware started!\n"); printf("If battery level reads 0.0, remove and re-insert a battery\n"); NXT_HANDLE_ERR(nxt_close(nxt), NULL, "Error while closing connection to NXT"); return 0; }
int main(int argc,char *argv[]) { char *name = NULL; int c,newport; int port = 3; int verbose = 1; int reset = 0; int show_length = 0; double length; struct nxt_accel_vector accel; while ((c = getopt(argc,argv,":hn:s:qrm"))!=-1) { switch(c) { case 'h': usage(argv[0],0); break; case 'n': name = strdup(optarg); break; case 'q': verbose = 0; break; case 'r': reset = 1; break; case 's': newport = atoi(optarg)-1; if (NXT_VALID_SENSOR(newport)) port = newport; else { fprintf(stderr,"Invalid sensor: %s\n",optarg); usage(argv[0],1); } break; case 'm': show_length = 1; break; case ':': fprintf(stderr,"Option -%c requires an operand\n",optopt); usage(argv[0],1); break; case '?': fprintf(stderr,"Unrecognized option: -%c\n", optopt); usage(argv[0],1); break; } } nxt_t *nxt = nxt_open(name); if (nxt==NULL) { fprintf(stderr,"Could not find NXT\n"); return 1; } nxt_set_sensor_mode(nxt,port,NXT_SENSOR_TYPE_LOWSPEED,NXT_SENSOR_MODE_RAW); nxt_wait_after_communication_command(); if (nxt_accel_get_accel(nxt,port,&accel)==-1) { fprintf(stderr,"Error: %s\n",nxt_strerror(nxt_error(nxt))); } else { if (show_length) { length = sqrt(pow(0.001*accel.x, 2.)+pow(0.001*accel.y, 2.)+pow(0.001*accel.z, 2.)); } if (verbose) { printf("Sensor %d:\n",port+1); printf("x = %.3f G\n", 0.001*accel.x); printf("y = %.3f G\n", 0.001*accel.y); printf("z = %.3f G\n", 0.001*accel.z); if (show_length) { printf("m = %.3f G\n", length); } } else { if (show_length) { printf("%.3f\n%.3f\n%.3f\n%.3f\n", 0.001*accel.x, 0.001*accel.y, 0.001*accel.z, length); } else { printf("%.3f\n%.3f\n%.3f\n", 0.001*accel.x, 0.001*accel.y, 0.001*accel.z); } } } if (reset) { nxt_set_sensor_mode(nxt,port,NXT_SENSOR_TYPE_NONE,NXT_SENSOR_MODE_RAW); } int ret = nxt_error(nxt); if (name!=NULL) free(name); nxt_close(nxt); return ret; }
int main(int argc,char *argv[]) { char screen[64][100]; char *name = NULL; char *file = NULL; int format = NXT_PNG; int transparency = 0; int c,x,y,newfmt; while ((c = getopt(argc,argv,":hn:f:o:t"))!=-1) { switch(c) { case 'h': usage(argv[0],0); break; case 'n': name = optarg; break; case 'f': newfmt = nxt_str2fileformat(optarg); if (newfmt==0) { fprintf(stderr,"Invalid file format\n"); usage(argv[0],1); } else format = newfmt; break; case 'o': file = optarg; break; case 't': transparency = 1; break; case ':': fprintf(stderr,"Option -%c requires an operand\n",optopt); usage(argv[0],1); break; case '?': fprintf(stderr,"Unrecognized option: -%c\n", optopt); usage(argv[0],1); break; } } nxt_t *nxt = nxt_open(name); if (nxt==NULL) { fprintf(stderr,"Could not find NXT\n"); return 1; } nxt_display_t *display = nxt_display_open(nxt); if (display==NULL) { fprintf(stderr,"Could not open display\n"); nxt_close(nxt); return 1; } if (nxt_display_refresh(display)==0) { gdImagePtr im; int black,white; im = gdImageCreate(100,64); black = gdImageColorAllocate(im,0,0,0); white = gdImageColorAllocate(im,255,255,255); if (transparency) gdImageColorTransparent(im,white); for (y=0;y<64;y++) { for (x=0;x<100;x++) gdImageSetPixel(im,x,y,display->buffer[y][x]==NXT_DISPLAY_BLACK?black:white); } FILE *out = fopen(file!=NULL?file:(format==NXT_JPEG?"display.jpg":"display.png"),"w"); if (format==NXT_JPEG) gdImageJpeg(im,out,-1); else if (format==NXT_PNG) gdImagePng(im,out); fclose(out); gdImageDestroy(im); } int ret = nxt_error(nxt); nxt_display_flush(display,1); nxt_display_close(display); nxt_close(nxt); return ret; }