4 * Created on: 17.7.2012
7 * Definition of IO. This implementation uses queues as buffers, which are than used for input and output.
11 #include "cmdio_tisci.h"
17 outBuffer.buf = xQueueCreate(MAX_BUFFER_LEN, sizeof(uint8_t));
18 outBuffer.mutex = xSemaphoreCreateMutex();
19 outBuffer.initialized = 1;
20 inBuffer.buf = xQueueCreate(MAX_BUFFER_LEN, sizeof(uint8_t));
21 inBuffer.mutex = xSemaphoreCreateMutex();
22 inBuffer.initialized = 1;
24 portBASE_TYPE print(const uint8_t * string, uint32_t length) {
25 return genericPrint(&outBuffer, string, length);
27 portBASE_TYPE read(uint8_t * ch) {
28 return genericRead(&inBuffer, ch);
30 portBASE_TYPE genericRead(tBuffer* buffer, uint8_t * ch) {
31 if (!buffer->initialized) return errBUFFER_NOT_INITIALIZED;
33 ret = xQueueReceive(buffer->buf, ch, portMAX_DELAY);
36 portBASE_TYPE genericPrint(tBuffer* buffer, const uint8_t * string, uint32_t length) {
37 if (!buffer->initialized) return errBUFFER_NOT_INITIALIZED;
39 portBASE_TYPE ret = pdPASS;
40 xSemaphoreTake(buffer->mutex, portMAX_DELAY);
41 while (i < length && string[i] != '\0') {
42 if (xQueueSend(buffer->buf, (void*)&string[i], 0) == pdPASS) {
45 else sciSend(sciREG, 1, NULL);
47 sciSend(sciREG, 1, NULL);
48 xSemaphoreGive(buffer->mutex);
51 portBASE_TYPE clearInputBuffer() {
52 return clearBuffer(&inBuffer);
54 portBASE_TYPE clearOutputBuffer() {
55 return clearBuffer(&outBuffer);
57 portBASE_TYPE clearBuffer(tBuffer * buffer) {
58 if (!buffer->initialized) return errBUFFER_NOT_INITIALIZED;
59 while ((xQueueReceive(buffer->buf, NULL, 0)) != errQUEUE_EMPTY) // Delete content of queue
64 int tisci_putc(cmd_io_t *cmd_io, int ch) {
65 uint8_t c = (uint8_t)ch;
66 if (print((uint8_t *)&c, 1) != pdPASS) {
72 int tisci_getc(cmd_io_t *cmd_io) {
74 if (read(&ret) != pdPASS) {
79 int tisci_write(cmd_io_t *cmd_io, const void *buf, int count) {
80 const char *tmpBuf = buf;
81 if (print((uint8_t *)tmpBuf, count) != pdPASS)
85 int tisci_read(cmd_io_t *cmd_io, void *buf, int count) {
89 if (read((uint8_t *)&tmpBuf[i]) != pdPASS)
96 /* Setting io stack for cmdProc */