projects
/
fw
/
altos
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
libaltos: Use cross compilers to build libaltos for i686, amd64, aarch64, armel and...
[fw/altos]
/
libaltos
/
libaltos_common.c
diff --git
a/libaltos/libaltos_common.c
b/libaltos/libaltos_common.c
index 713a775c6f70c9acee6011705b5aa6256cd06bc2..fb8c314e3ae1b5f233d605090bbed39147f8a8e2 100644
(file)
--- a/
libaltos/libaltos_common.c
+++ b/
libaltos/libaltos_common.c
@@
-49,12
+49,17
@@
PUBLIC int
altos_getchar(struct altos_file *file, int timeout)
{
int ret;
altos_getchar(struct altos_file *file, int timeout)
{
int ret;
+
+ file->busy = 1;
while (file->in_read == file->in_used) {
ret = altos_fill(file, timeout);
if (ret)
while (file->in_read == file->in_used) {
ret = altos_fill(file, timeout);
if (ret)
-
return ret
;
+
goto done
;
}
}
- return file->in_data[file->in_read++];
+ ret = file->in_data[file->in_read++];
+done:
+ file->busy = 0;
+ return ret;
}
PUBLIC int
}
PUBLIC int
@@
-115,6
+120,9
@@
int altos_bt_port(struct altos_bt_device *device) {
PUBLIC void
altos_free(struct altos_file *file)
{
PUBLIC void
altos_free(struct altos_file *file)
{
+ int i;
altos_close(file);
altos_close(file);
+ for (i = 0; i < 10 && file->busy; i++)
+ altos_pause_one_second();
free(file);
}
free(file);
}