summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTomasz Malesinski <tomal@rockbox.org>2006-02-03 23:28:53 +0000
committerTomasz Malesinski <tomal@rockbox.org>2006-02-03 23:28:53 +0000
commitc4d24a07abe2e6adce3cb4ba28d6e60438db89a2 (patch)
tree351bf0dec49704f198fdb162fcc95cfabde79010
parent507120c1b397320cb69eb028318c698b00397a3f (diff)
downloadrockbox-c4d24a07abe2e6adce3cb4ba28d6e60438db89a2.tar.gz
rockbox-c4d24a07abe2e6adce3cb4ba28d6e60438db89a2.zip
Added non-blocking get/put_byte routines.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@8556 a1c6a512-1295-4272-9138-f99709370657
-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);