Пример #1
0
static int
parse_args(int argc, char* argv[])
{
    int opt, ret = 0;
    while ((opt = getopt(argc, argv, "ni:h:d:s:g:")) != -1) {
        switch (opt) {
        case 'i':
            _ifname = optarg;
            break;
        case 'n':
            _is_pdump_file = 0; /* output to stderr */
            break;
        case 'h':
            _remote_host = optarg;
            break;
        case 'd':
            _eoj_code.cgc = parse_uchar(optarg);
            _eoj_code.clc = parse_uchar(optarg + 2);
            _eoj_code.inc = parse_uchar(optarg + 4);
            break;
        case 'g':
            _get_prop[_get_prop_len].epc = (unsigned char)strtoul(optarg, NULL, 16);
            _get_prop_len++;
            break;
        case 's':
            _set_prop[_set_prop_len].epc = (unsigned char)strtoul(optarg, NULL, 16);
            _set_prop[_set_prop_len].data = argv[optind++];
            _set_prop_len++;
            break;
        default: /* '?' */ 
            usage(argv[0]);
            break;
        }
    }
    if (!_remote_host || (0 == _get_prop_len && 0 == _set_prop_len))
    {
        usage(argv[0]);
    }

    _esv_code = _select_esv();

#if 0
    {
        int i;
        errlog("%s,%s,%x,%x,%x\n",
               _ifname, _remote_host, 
               _eoj_code.cgc, _eoj_code.clc, _eoj_code.inc);
        for (i = 0; i < _set_prop_len; i++) {
            errlog("SET:%d: %x=%s\n", i, _set_prop[i].epc, _set_prop[i].data);
        }
        for (i = 0; i < _get_prop_len; i++) {
            errlog("GET:%d: %x\n", i, _get_prop[i].epc);
        }
        exit(0);
    }
#endif
    return ret;
}
Пример #2
0
static int
parse_rawdata(char *data, unsigned char *rawdata, unsigned char* rawdata_len)
{
    int i, len = strlen(data);
    char *str = data;

    *rawdata_len = 0;
    for (i = 0, str = data; i < len; i += 2, str += 2) {
        *rawdata = parse_uchar(str);
        rawdata += 1;
        *rawdata_len += 1;
    }

    return (int)*rawdata_len;
}
Пример #3
0
static int proc_args(int argc, char *argv[]) {

	unsigned short base_addr;
	unsigned long bits, stop, parity, rate;
	unsigned char tx;
	int i, stringc = 1;
	char **strings;
	char *temp;

	/* check the function to test: if the first characters match, accept it */
	if (argc == 1) {
		print_usage(argv);
		return 1;
	}

	else if (strncmp(argv[1], "conf", strlen("conf")) == 0) {
		if (argc != 3) {
			printf("VBE: wrong no of arguments for conf() \n");
			return 1;
		}

		if ((base_addr = parse_ushort(argv[2], 16)) == USHRT_MAX)
			return 1;

		printf("lab7:: conf(%d)\n", base_addr);

		ser_test_conf(base_addr);

		return 0;
	}

	else if (strncmp(argv[1], "set", strlen("set")) == 0) {
		if (argc != 7) {
			printf("lab7: wrong no of arguments for set() \n");
			return 1;
		}

		if ((base_addr = parse_ushort(argv[2], 10)) == USHRT_MAX)
			return 1;

		if ((bits = parse_ulong(argv[3], 10)) == ULONG_MAX)
			return 1;

		if ((stop = parse_ulong(argv[4], 10)) == ULONG_MAX)
			return 1;

		if(strncmp(argv[5],"even",strlen("even")) == 0)
			parity = 2;

		else if(strncmp(argv[5], "odd",strlen("odd")) == 0)
			parity = 1;

		else if(strncmp(argv[5],"none",strlen("none")) == 0)
			parity = 0;

		if((rate = parse_ulong(argv[6],10)) == ULONG_MAX)
			return 1;

		printf("lab7::set(%d, %d, %d, %d, %d)\n", base_addr, bits, stop,
				parity, rate);
		return ser_test_set(base_addr, bits, stop, parity, rate);
	}

	else if (strncmp(argv[1], "com", strlen("com")) == 0) {
		if (argc !=	 8) {
			printf("lab7::wrong num of args for com() \n");
			return 1;
		}

		if (base_addr = parse_ushort(argv[2], 10) == USHRT_MAX)
			return 1;

		if ((tx = parse_uchar(argv[3],10)) == UCHAR_MAX)
			return 1;

		if((bits = parse_ulong(argv[4],10)) == ULONG_MAX)
			return 1;

		if((stop = parse_ulong(argv[5],10)) == ULONG_MAX)
			return 1;

		if((rate = parse_ulong(argv[7],10)) == ULONG_MAX)
			return 1;

		if(strncmp(argv[6],"even",strlen("even")) == 0)
			parity = 2;

		else if(strncmp(argv[6], "odd",strlen("odd")) == 0)
			parity = 1;

		else if(strncmp(argv[6],"none",strlen("none")) == 0)
			parity = 0;

		/*strings = (char **)malloc(0);

		for(i = 8; i < argc; i++){

			strings = realloc(strings,stringc * sizeof(char*));
			strings[stringc - 1] =(char *) malloc(sizeof(argv[i]));
			strings[stringc - 1] = argv[i];
			printf("%s ", strings[stringc - 1]);
			stringc++;
		}*/

		printf("lab7::set(%d, %d, %d, %d, %d, %d)\n", base_addr,
				tx, bits, stop, parity, rate, stringc);
		return ser_test_poll(1, tx, bits, stop, parity, rate);
	}

	else {
		printf("lab7: non valid function \"%s\" to test\n", argv[1]);
		return 1;
	}
}