Exemplo n.º 1
0
void send_key(char key, int fd) {
  char cmd[64];
  if (key == 'p') {
    usleep(1*500*1000);
    return;
  } else if (key == 'P') {
    usleep(1*2000*1000);
    return;
  }
  key = toupper(key);
  if (key >= '0' && key <= '9') {
    key -= '0';
  } else if (key >= 'A' && key <= 'F') {
    key = key - 'A' + 10;
  } else if (key == 'R') {
    key = 16;
  } else if (key == 'G') {
    key = 20;
  } else if (key == 'I' || key == ' ') {
    key = 24;
  } else if (key == 'S') {
    key = 28;
  } else {
    fprintf(stderr, "Bad key code: '%c', %d\n", key, key);
    exit(1);
  }
  sprintf(cmd, "O,%d,0,0\n", key);
  run_ok(cmd, fd);
  usleep(1*40*1000);
  run_ok("PO,B,0,1\n", fd);
  usleep(1*40*1000);
}
Exemplo n.º 2
0
int main(int argc, char* argv[]) {
  char const* const dev = argc >= 3 ? argv[2] : "/dev/cu.usbmodem411";
  int fd = ubw_init(dev);
  printf("%s", run("V\n", fd));
  if (argc < 2) return 0;
  run_ok("O,0,255,0\n", fd);
  run_ok("C,0,0,0,0\n", fd);
  char const* code = argv[1];
  printf("Code: [%s]\n", code);
  while (*code) {
    send_key(*code, fd);
    code += 1;
  }
}  
Exemplo n.º 3
0
void test_benchmark_tap(int argc, char **argv)
{
	struct pg_error *error = NULL;
	struct pg_brick *tap_enter;
	struct pg_brick *tap_exit;
	struct pg_bench bench;
	struct pg_bench_stats stats;
	struct ether_addr mac1 = {{0x52,0x54,0x00,0x12,0x34,0x11}};
	struct ether_addr mac2 = {{0x52,0x54,0x00,0x12,0x34,0x21}};
	uint32_t len;

	tap_enter = pg_tap_new("tap 0", "bench0", &error);
	g_assert(tap_enter);
	g_assert(!error);
	tap_exit = pg_tap_new("tap 1", "bench1", &error);
	g_assert(tap_exit);
	g_assert(!error);
	/* put both tap in a linux bridge */
	run_ok("brctl -h &> /dev/null");
	run("ip netns del bench &> /dev/null");
	run_ok("ip netns add bench");
	run_ok("ip netns exec bench ip link set dev lo up");
	run_ok("ip link set bench0 up netns bench");
	run_ok("ip link set bench1 up netns bench");
	run_ok("ip netns exec bench brctl addbr br0");
	run_ok("ip netns exec bench brctl addif br0 bench0");
	run_ok("ip netns exec bench brctl addif br0 bench1");
	run_ok("ip netns exec bench ip link set br0 up");

	g_assert(!pg_bench_init(&bench, "tap", argc, argv, &error));
	bench.input_brick = tap_enter;
	bench.input_side = WEST_SIDE;
	bench.output_brick = tap_exit;
	bench.output_side = WEST_SIDE;
	bench.output_poll = true;
	bench.max_burst_cnt = 100000;
	bench.count_brick = NULL;
	bench.pkts_nb = 64;
	bench.pkts_mask = pg_mask_firsts(64);
	bench.pkts = pg_packets_create(bench.pkts_mask);
	bench.pkts = pg_packets_append_ether(
		bench.pkts,
		bench.pkts_mask,
		&mac1, &mac2,
		ETHER_TYPE_IPv4);
	len = sizeof(struct ipv4_hdr) + sizeof(struct udp_hdr) + 1400;
	pg_packets_append_ipv4(
		bench.pkts,
		bench.pkts_mask,
		0x000000EE, 0x000000CC, len, 17);
	bench.pkts = pg_packets_append_udp(
		bench.pkts,
		bench.pkts_mask,
		1000, 2000, 1400);
	bench.pkts = pg_packets_append_blank(bench.pkts, bench.pkts_mask, 1400);

	g_assert(!pg_bench_run(&bench, &stats, &error));
	pg_bench_print(&stats);

	pg_packets_free(bench.pkts, bench.pkts_mask);
	pg_brick_destroy(tap_enter);
	pg_brick_destroy(tap_exit);
	run("ip netns del bench");
}