예제 #1
0
int main(int c, char **v)
{
	usb_init();
	usb_dev_handle *handle = device_open();
	
	if(handle == NULL){
		return 0;
	}
	switch(c){
	case 1:
		echo(handle);
		printf("work time %3.1f second\n", ((double) clock() / (double) CLOCKS_PER_SEC));
		fflush(stdout);
		system("pause");
		break;
	case 2:
		firmware_version(handle);
		break;
	case 3:
		switch(v[1][0]){
		case 'w':
			firmware_update(handle, v[2]);
			break;
		case 'r':
			firmware_download(handle, v[2]);
			break;
		case 'v':
			firmware_verify(handle, v[2]);
			break;
		case 'p':{
			if(DEBUG == 0){
				break;
			}
			int i = 0x1000;
			const char *ret = "test ok";
			while(i != 0){
				if(ppu_read(handle, i) == false){
					ret = "test ng";
					break;
				}
				if((i+1) % 100 == 0){
					fprintf(stderr, "\r%05d", i+1);
					fflush(stderr);
				}
				i--;
			}
			puts(ret);
			}break;
		case 'd':
			if(DEBUG == 1){
				write_memory(handle, REQUEST_FIRMWARE_PROGRAM, 0x200, 0x0000, 0, NULL);
			}
			break;
		}
		break;
	}
	usb_close(handle);
	return 0;
}
예제 #2
0
파일: flash.c 프로젝트: Keeward/pilight
int main(int argc, char **argv) {

	log_shell_enable();
	log_file_disable();
	log_level_set(LOG_DEBUG);

	struct options_t *options = NULL;

	char *args = NULL;
	char fwfile[4096] = {'\0'};

	progname = malloc(15);
	if(!progname) {
		logprintf(LOG_ERR, "out of memory");
		exit(EXIT_FAILURE);
	}
	strcpy(progname, "pilight-flash");

	options_add(&options, 'H', "help", OPTION_NO_VALUE, 0, JSON_NULL, NULL, NULL);
	options_add(&options, 'V', "version", OPTION_NO_VALUE, 0, JSON_NULL, NULL, NULL);
	options_add(&options, 'f', "file", OPTION_HAS_VALUE, 0, JSON_NULL, NULL, NULL);

	while (1) {
		int c;
		c = options_parse(&options, argc, argv, 1, &args);
		if(c == -1)
			break;
		if(c == -2)
			c = 'H';
		switch (c) {
			case 'H':
				printf("Usage: %s [options]\n", progname);
				printf("\t -H --help\t\tdisplay usage summary\n");
				printf("\t -V --version\t\tdisplay version\n");
				printf("\t -f --file=firmware\tfirmware file\n");
				goto close;
			break;
			case 'V':
				printf("%s %s\n", progname, VERSION);
				goto close;
			break;
			case 'f':
				if(access(args, F_OK) != -1) {
					strcpy(fwfile, args);
				} else {
					fprintf(stderr, "%s: the firmware file %s does not exists\n", progname, args);
					goto close;
				}
			break;
			default:
				printf("Usage: %s -f pilight_firmware_tX5_v3.hex\n", progname);
				goto close;
			break;
		}
	}
	options_delete(options);

#ifdef FIRMWARE
	if(strlen(fwfile) == 0) {
		printf("Usage: %s -f pilight_firmware_tX5_vX.hex\n", progname);
		goto close;
	}

	firmware.version = 0;
	logprintf(LOG_INFO, "**** START UPD. FW ****");
	firmware_getmp();
	if(firmware_update(fwfile) != 0) {
		logprintf(LOG_INFO, "**** FAILED UPD. FW ****");
	} else {
		logprintf(LOG_INFO, "**** DONE UPD. FW ****");
	}
#else
	logprintf(LOG_ERR, "pilight was compiled without firmware flashing support");
#endif

close:
	log_shell_disable();
	options_gc();
	log_gc();
	sfree((void *)&progname);
	return (EXIT_SUCCESS);
}