JNIEXPORT jlong JNICALL Java_lejos_pc_comm_NXTCommLibnxt_jlibnxt_1find(JNIEnv *env, jobject obj) { nxt_t *nxt; nxt_error_t nxt_err; nxt_err = nxt_init(&nxt); if (nxt_err == NXT_OK) { nxt_err = nxt_find(nxt); if (nxt_err == NXT_OK && !(nxt_in_reset_mode(nxt))) { return (jlong) (unsigned long) nxt; } } return (jlong) 0; }
static nxweb_result tmpl_on_request(nxweb_http_server_connection* conn, nxweb_http_request* req, nxweb_http_response* resp) { nxweb_set_response_content_type(resp, "text/html"); const char* tmpl="{% extends \"ttt\"%} {% block title %}The Very {% parent %}{% endblock %}"; tmpl=nxb_copy_obj(req->nxb, tmpl, strlen(tmpl)+1); nxt_context ctx; nxt_init(&ctx, req->nxb, tmpl_load); nxt_parse(&ctx, req->uri, (char*)tmpl, strlen(tmpl)); nxt_merge(&ctx); resp->content=nxt_serialize(&ctx); resp->content_length=strlen(resp->content); return NXWEB_OK; }
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) { const char *filename; tx_data_t data; nxt_link_t nxt; uint8_t buffer[USB_BUFSIZE]; size_t read, sent; ssize_t total; FILE *ro_data; if (argc < 2) { fprintf(stderr, "Provide the ROM image as first parameter.\n"); exit(1); } filename = argv[1]; // FIXME this should be parametrized. Basically it's the address of // the first unlocked flash memory location. data.start_address = 0x108000; total = data.length = get_ro_size(filename); if (total == -1) { fprintf(stderr, "Invalid ROM image\n"); exit(1); } if (nxt_init(&nxt)) { fprintf(stderr, "Initialization failed\n"); exit(1); } ro_data = fopen(filename, "rb"); if (ro_data == NULL) { fprintf(stderr, "Error in opening %s\n", filename); nxt_free(&nxt); } fprintf(stdout, "Sync sent: %d bytes\n" " start=%p\n" " length=%d\n", (int)nxt_send(&nxt, (void *)&data, sizeof(tx_data_t)), (void *)(uintmax_t)data.start_address, data.length); while ((read = fread((void *)buffer, 1, USB_BUFSIZE, ro_data)) > 0) { sent = nxt_send(&nxt, (void *)buffer, read); data.length -= sent; data.start_address += sent; display_percentage(total, &data); if (sent == -1) { fprintf(stderr, "Send failed: %s\r", nxt_libusb_strerr(&nxt)); break; } usleep(DELAY_uSECS); } fprintf(stdout, "\nCompleted\n"); if (ferror(ro_data)) { fprintf(stderr, "File error in %s\n", filename); } fclose(ro_data); nxt_free(&nxt); exit(0); }
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; }