annotate target-utils/loadagent/sertimeout.c @ 644:69acf5e0a21d

loadagent: implemented sertimeout calibration command
author Mychaela Falconia <falcon@freecalypso.org>
date Sun, 01 Mar 2020 23:49:31 +0000
parents
children 880c6d31e487
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
644
69acf5e0a21d loadagent: implemented sertimeout calibration command
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1 /*
69acf5e0a21d loadagent: implemented sertimeout calibration command
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
2 * Here we are going to implement a function for serial input with a timeout.
69acf5e0a21d loadagent: implemented sertimeout calibration command
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
3 */
69acf5e0a21d loadagent: implemented sertimeout calibration command
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
4
69acf5e0a21d loadagent: implemented sertimeout calibration command
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
5 #include <stdlib.h>
69acf5e0a21d loadagent: implemented sertimeout calibration command
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
6
69acf5e0a21d loadagent: implemented sertimeout calibration command
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
7 serial_in_timeout(count)
69acf5e0a21d loadagent: implemented sertimeout calibration command
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
8 unsigned count;
69acf5e0a21d loadagent: implemented sertimeout calibration command
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
9 {
69acf5e0a21d loadagent: implemented sertimeout calibration command
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
10 int c;
69acf5e0a21d loadagent: implemented sertimeout calibration command
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
11
69acf5e0a21d loadagent: implemented sertimeout calibration command
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
12 do
69acf5e0a21d loadagent: implemented sertimeout calibration command
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
13 c = serial_in_poll();
69acf5e0a21d loadagent: implemented sertimeout calibration command
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
14 while (c < 0 && --count);
69acf5e0a21d loadagent: implemented sertimeout calibration command
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
15 return c;
69acf5e0a21d loadagent: implemented sertimeout calibration command
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
16 }
69acf5e0a21d loadagent: implemented sertimeout calibration command
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
17
69acf5e0a21d loadagent: implemented sertimeout calibration command
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
18 void
69acf5e0a21d loadagent: implemented sertimeout calibration command
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
19 cmd_sertimeout(argbulk)
69acf5e0a21d loadagent: implemented sertimeout calibration command
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
20 char *argbulk;
69acf5e0a21d loadagent: implemented sertimeout calibration command
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
21 {
69acf5e0a21d loadagent: implemented sertimeout calibration command
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
22 char *argv[2];
69acf5e0a21d loadagent: implemented sertimeout calibration command
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
23 int count, c;
69acf5e0a21d loadagent: implemented sertimeout calibration command
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
24
69acf5e0a21d loadagent: implemented sertimeout calibration command
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
25 if (parse_args(argbulk, 1, 1, argv, 0) < 0)
69acf5e0a21d loadagent: implemented sertimeout calibration command
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
26 return;
69acf5e0a21d loadagent: implemented sertimeout calibration command
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
27 count = atoi(argv[0]);
69acf5e0a21d loadagent: implemented sertimeout calibration command
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
28 c = serial_in_timeout(count);
69acf5e0a21d loadagent: implemented sertimeout calibration command
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
29 if (c >= 0)
69acf5e0a21d loadagent: implemented sertimeout calibration command
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
30 printf("Got char\n");
69acf5e0a21d loadagent: implemented sertimeout calibration command
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
31 else
69acf5e0a21d loadagent: implemented sertimeout calibration command
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
32 printf("Timeout\n");
69acf5e0a21d loadagent: implemented sertimeout calibration command
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
33 }