annotate target-utils/loadagent/sertimeout.c @ 1000:39a6090a052a

doc/How-flash-really-works: article written
author Mychaela Falconia <falcon@freecalypso.org>
date Sat, 09 Dec 2023 09:08:19 +0000
parents 880c6d31e487
children
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];
645
880c6d31e487 loadagent sertimeout calibration command simplified
Mychaela Falconia <falcon@freecalypso.org>
parents: 644
diff changeset
23 int count;
644
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]);
645
880c6d31e487 loadagent sertimeout calibration command simplified
Mychaela Falconia <falcon@freecalypso.org>
parents: 644
diff changeset
28 serial_in_timeout(count);
644
69acf5e0a21d loadagent: implemented sertimeout calibration command
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
29 }