projects
/
fw
/
altos
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
altos: Reset interrupt flags before TX in CC1200 driver
[fw/altos]
/
src
/
drivers
/
ao_bufio.c
diff --git
a/src/drivers/ao_bufio.c
b/src/drivers/ao_bufio.c
index 9a5e801ba5830390baaee986774082861b9a3b3a..70e30b67fee98897f22dd473b114b72063d991dc 100644
(file)
--- a/
src/drivers/ao_bufio.c
+++ b/
src/drivers/ao_bufio.c
@@
-19,10
+19,15
@@
#include "ao.h"
#endif
#include "ao.h"
#endif
+/* Include bufio commands */
+#ifndef AO_FAT_TEST
+#define BUFIO_COMMANDS 0
+#endif
+
#include "ao_sdcard.h"
#include "ao_bufio.h"
#include "ao_sdcard.h"
#include "ao_bufio.h"
-#define AO_NUM_BUF
4
+#define AO_NUM_BUF
16
#define AO_BUFSIZ 512
struct ao_bufio {
#define AO_BUFSIZ 512
struct ao_bufio {
@@
-40,7
+45,7
@@
static uint8_t ao_bufio_mutex;
#if 0
#define DBG(...) printf(__VA_ARGS__)
#else
#if 0
#define DBG(...) printf(__VA_ARGS__)
#else
-#define DBG(...)
+#define DBG(...)
(void) 0
#endif
static inline void
#endif
static inline void
@@
-205,10
+210,13
@@
ao_bufio_get(uint32_t block)
bufio->block = 0xffffffff;
bufio = NULL;
}
bufio->block = 0xffffffff;
bufio = NULL;
}
- }
+ } else
+ ao_panic(AO_PANIC_BUFIO);
}
if (bufio) {
bufio->busy++;
}
if (bufio) {
bufio->busy++;
+ if (!bufio->busy)
+ ao_panic(AO_PANIC_BUFIO);
buf = ao_bufio_to_buf(bufio);
}
ao_bufio_unlock();
buf = ao_bufio_to_buf(bufio);
}
ao_bufio_unlock();
@@
-227,6
+235,9
@@
ao_bufio_put(uint8_t *buf, uint8_t write)
ao_bufio_lock();
bufio = ao_buf_to_bufio(buf);
ao_bufio_lock();
bufio = ao_buf_to_bufio(buf);
+ if (!bufio->busy)
+ ao_panic(AO_PANIC_BUFIO);
+
DBG ("idle buffer %d write %d\n", ao_bufio_to_num(bufio), write);
bufio->dirty |= write;
if (!--bufio->busy) {
DBG ("idle buffer %d write %d\n", ao_bufio_to_num(bufio), write);
bufio->dirty |= write;
if (!--bufio->busy) {
@@
-262,6
+273,7
@@
ao_bufio_flush(void)
ao_bufio_unlock();
}
ao_bufio_unlock();
}
+#if BUFIO_COMMANDS
static void
ao_bufio_test_read(void)
{
static void
ao_bufio_test_read(void)
{
@@
-284,15
+296,26
@@
static const struct ao_cmds ao_bufio_cmds[] = {
{ ao_bufio_test_read, "q\0Test bufio read" },
{ 0, NULL },
};
{ ao_bufio_test_read, "q\0Test bufio read" },
{ 0, NULL },
};
+#endif
void
void
-ao_bufio_
init
(void)
+ao_bufio_
setup
(void)
{
int b;
{
int b;
- for (b = 0; b < AO_NUM_BUF; b++)
+ for (b = 0; b < AO_NUM_BUF; b++) {
+ ao_bufio[b].dirty = 0;
+ ao_bufio[b].busy = 0;
ao_bufio[b].block = 0xffffffff;
ao_bufio[b].block = 0xffffffff;
- ao_sdcard_init();
+ }
+}
+void
+ao_bufio_init(void)
+{
+ ao_bufio_setup();
+ ao_sdcard_init();
+#if BUFIO_COMMANDS
ao_cmd_register(&ao_bufio_cmds[0]);
ao_cmd_register(&ao_bufio_cmds[0]);
+#endif
}
}