]> cloudbase.mooo.com Git - z180-stamp.git/blob - avr/con-utils.c
430ba98ae6407fbdc964f42e87a207b34766aa08
[z180-stamp.git] / avr / con-utils.c
1
2 #include <string.h>
3 #include <stdio.h>
4
5 #include "serial.h"
6 #include "con-utils.h"
7
8
9 uint_fast8_t tstc(void)
10 {
11 return serial_tstc();
12 }
13
14 int my_getchar(void)
15 {
16 int c;
17
18 while((c = serial_getc()) < 0)
19 ;
20 return c;
21 }
22
23
24 /* test if ctrl-c was pressed */
25
26 static uint_fast8_t ctrlc_disabled = 0; /* see disable_ctrl() */
27 static uint_fast8_t ctrlc_was_pressed = 0;
28
29 uint_fast8_t ctrlc(void)
30 {
31 if (!ctrlc_disabled) {
32 switch (serial_getc()) {
33 case 0x03: /* ^C - Control C */
34 ctrlc_was_pressed = 1;
35 return 1;
36 default:
37 break;
38 }
39 }
40 return 0;
41 }
42
43 /* Reads user's confirmation.
44 Returns 1 if user's input is "y", "Y", "yes" or "YES"
45 */
46 uint_fast8_t confirm_yesno(void)
47 {
48 unsigned int i;
49 char str_input[5];
50
51 /* Flush input */
52 while (serial_getc())
53 ;
54 i = 0;
55 while (i < sizeof(str_input)) {
56 str_input[i] = my_getchar();
57 putchar(str_input[i]);
58 if (str_input[i] == '\r')
59 break;
60 i++;
61 }
62 putchar('\n');
63 if (strncmp(str_input, "y\r", 2) == 0 ||
64 strncmp(str_input, "Y\r", 2) == 0 ||
65 strncmp(str_input, "yes\r", 4) == 0 ||
66 strncmp(str_input, "YES\r", 4) == 0)
67 return 1;
68 return 0;
69 }
70
71 /* pass 1 to disable ctrlc() checking, 0 to enable.
72 * returns previous state
73 */
74 uint_fast8_t disable_ctrlc(uint_fast8_t disable)
75 {
76 uint_fast8_t prev = ctrlc_disabled; /* save previous state */
77
78 ctrlc_disabled = disable;
79 return prev;
80 }
81
82 uint_fast8_t had_ctrlc (void)
83 {
84 return ctrlc_was_pressed;
85 }
86
87 void clear_ctrlc(void)
88 {
89 ctrlc_was_pressed = 0;
90 }
91