annotate frbl/test/main.c @ 351:0ca005dbab30

fluid-mnf/devices.txt: OM support, safe S71PL-J defaults
author Mychaela Falconia <falcon@freecalypso.org>
date Fri, 13 Mar 2020 07:19:37 +0000
parents cefa700d1b8f
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
323
cefa700d1b8f frbl: beginning of frbl2test
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1 #include <sys/types.h>
cefa700d1b8f frbl: beginning of frbl2test
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
2 #include <sys/file.h>
cefa700d1b8f frbl: beginning of frbl2test
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
3 #include <sys/ioctl.h>
cefa700d1b8f frbl: beginning of frbl2test
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
4 #include <stdint.h>
cefa700d1b8f frbl: beginning of frbl2test
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
5 #include <stdio.h>
cefa700d1b8f frbl: beginning of frbl2test
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
6 #include <stdlib.h>
cefa700d1b8f frbl: beginning of frbl2test
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
7 #include <string.h>
cefa700d1b8f frbl: beginning of frbl2test
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
8 #include <strings.h>
cefa700d1b8f frbl: beginning of frbl2test
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
9 #include <termios.h>
cefa700d1b8f frbl: beginning of frbl2test
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
10 #include <unistd.h>
cefa700d1b8f frbl: beginning of frbl2test
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
11 #include "srecreader.h"
cefa700d1b8f frbl: beginning of frbl2test
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
12
cefa700d1b8f frbl: beginning of frbl2test
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
13 char *target_ttydev;
cefa700d1b8f frbl: beginning of frbl2test
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
14 int target_fd;
cefa700d1b8f frbl: beginning of frbl2test
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
15 int baudrate_code;
cefa700d1b8f frbl: beginning of frbl2test
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
16 struct termios target_termios;
cefa700d1b8f frbl: beginning of frbl2test
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
17 struct srecreader srimage;
cefa700d1b8f frbl: beginning of frbl2test
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
18
cefa700d1b8f frbl: beginning of frbl2test
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
19 main(argc, argv)
cefa700d1b8f frbl: beginning of frbl2test
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
20 char **argv;
cefa700d1b8f frbl: beginning of frbl2test
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
21 {
cefa700d1b8f frbl: beginning of frbl2test
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
22 if (argc != 4) {
cefa700d1b8f frbl: beginning of frbl2test
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
23 fprintf(stderr, "usage: %s ttyport baud image.srec\n", argv[0]);
cefa700d1b8f frbl: beginning of frbl2test
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
24 exit(1);
cefa700d1b8f frbl: beginning of frbl2test
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
25 }
cefa700d1b8f frbl: beginning of frbl2test
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
26 target_ttydev = argv[1];
cefa700d1b8f frbl: beginning of frbl2test
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
27 if (!strcmp(argv[2], "115200"))
cefa700d1b8f frbl: beginning of frbl2test
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
28 baudrate_code = B115200;
cefa700d1b8f frbl: beginning of frbl2test
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
29 else if (!strcmp(argv[2], "230400"))
cefa700d1b8f frbl: beginning of frbl2test
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
30 baudrate_code = B230400;
cefa700d1b8f frbl: beginning of frbl2test
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
31 else {
cefa700d1b8f frbl: beginning of frbl2test
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
32 fprintf(stderr,
cefa700d1b8f frbl: beginning of frbl2test
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
33 "error: baud rate argument must be 115200 or 230400\n");
cefa700d1b8f frbl: beginning of frbl2test
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
34 exit(1);
cefa700d1b8f frbl: beginning of frbl2test
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
35 }
cefa700d1b8f frbl: beginning of frbl2test
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
36 srimage.filename = argv[3];
cefa700d1b8f frbl: beginning of frbl2test
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
37
cefa700d1b8f frbl: beginning of frbl2test
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
38 target_fd = open(target_ttydev, O_RDWR|O_NONBLOCK);
cefa700d1b8f frbl: beginning of frbl2test
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
39 if (target_fd < 0) {
cefa700d1b8f frbl: beginning of frbl2test
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
40 perror(target_ttydev);
cefa700d1b8f frbl: beginning of frbl2test
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
41 exit(1);
cefa700d1b8f frbl: beginning of frbl2test
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
42 }
cefa700d1b8f frbl: beginning of frbl2test
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
43 ioctl(target_fd, TIOCEXCL);
cefa700d1b8f frbl: beginning of frbl2test
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
44 target_termios.c_iflag = IGNBRK;
cefa700d1b8f frbl: beginning of frbl2test
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
45 target_termios.c_oflag = 0;
cefa700d1b8f frbl: beginning of frbl2test
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
46 target_termios.c_cflag = CLOCAL|HUPCL|CREAD|CS8;
cefa700d1b8f frbl: beginning of frbl2test
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
47 target_termios.c_lflag = 0;
cefa700d1b8f frbl: beginning of frbl2test
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
48 target_termios.c_cc[VMIN] = 1;
cefa700d1b8f frbl: beginning of frbl2test
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
49 target_termios.c_cc[VTIME] = 0;
cefa700d1b8f frbl: beginning of frbl2test
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
50 cfsetispeed(&target_termios, baudrate_code);
cefa700d1b8f frbl: beginning of frbl2test
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
51 cfsetospeed(&target_termios, baudrate_code);
cefa700d1b8f frbl: beginning of frbl2test
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
52 if (tcsetattr(target_fd, TCSAFLUSH, &target_termios) < 0) {
cefa700d1b8f frbl: beginning of frbl2test
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
53 perror("tcsetattr");
cefa700d1b8f frbl: beginning of frbl2test
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
54 exit(1);
cefa700d1b8f frbl: beginning of frbl2test
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
55 }
cefa700d1b8f frbl: beginning of frbl2test
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
56 frbl_test_main();
cefa700d1b8f frbl: beginning of frbl2test
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
57 tty_passthru();
cefa700d1b8f frbl: beginning of frbl2test
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
58 exit(0);
cefa700d1b8f frbl: beginning of frbl2test
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
59 }