summaryrefslogtreecommitdiff
path: root/firmware
diff options
context:
space:
mode:
Diffstat (limited to 'firmware')
-rw-r--r--firmware/export/usb_serial.h2
-rw-r--r--firmware/usb_serial.c23
2 files changed, 25 insertions, 0 deletions
diff --git a/firmware/export/usb_serial.h b/firmware/export/usb_serial.h
index 5daefeeff2..32bb8525b4 100644
--- a/firmware/export/usb_serial.h
+++ b/firmware/export/usb_serial.h
@@ -22,5 +22,7 @@
22void usb_serial_init(void); 22void usb_serial_init(void);
23void usb_serial_put_byte(int b); 23void usb_serial_put_byte(int b);
24int usb_serial_get_byte(void); 24int usb_serial_get_byte(void);
25int usb_serial_try_put_byte(int b);
26int usb_serial_try_get_byte(void);
25 27
26#endif 28#endif
diff --git a/firmware/usb_serial.c b/firmware/usb_serial.c
index acf19e3b1a..0c4fb9d896 100644
--- a/firmware/usb_serial.c
+++ b/firmware/usb_serial.c
@@ -1081,6 +1081,17 @@ int usb_serial_get_byte(void)
1081 return fifo_get_byte(&serial_in_fifo); 1081 return fifo_get_byte(&serial_in_fifo);
1082} 1082}
1083 1083
1084int usb_serial_try_get_byte(void)
1085{
1086 int r;
1087 if (fifo_empty(&serial_in_fifo))
1088 r = -1;
1089 else
1090 r = fifo_get_byte(&serial_in_fifo);
1091 usb_serial_handle();
1092 return r;
1093}
1094
1084/* 1095/*
1085 Not used: 1096 Not used:
1086static int usb_serial_out_full(void) 1097static int usb_serial_out_full(void)
@@ -1097,6 +1108,18 @@ void usb_serial_put_byte(int b)
1097 usb_serial_handle(); 1108 usb_serial_handle();
1098} 1109}
1099 1110
1111int usb_serial_try_put_byte(int b)
1112{
1113 int r = -1;
1114 if (!fifo_full(&serial_out_fifo))
1115 {
1116 fifo_put_byte(&serial_out_fifo, b);
1117 r = 0;
1118 }
1119 usb_serial_handle();
1120 return r;
1121}
1122
1100void usb_serial_init(void) 1123void usb_serial_init(void)
1101{ 1124{
1102 fifo_init(&serial_in_fifo); 1125 fifo_init(&serial_in_fifo);