summaryrefslogtreecommitdiff
path: root/driver/mcdp28x0.c
diff options
context:
space:
mode:
Diffstat (limited to 'driver/mcdp28x0.c')
-rw-r--r--driver/mcdp28x0.c26
1 files changed, 18 insertions, 8 deletions
diff --git a/driver/mcdp28x0.c b/driver/mcdp28x0.c
index de2572c87e..7fba0bd035 100644
--- a/driver/mcdp28x0.c
+++ b/driver/mcdp28x0.c
@@ -10,6 +10,7 @@
#include "common.h"
#include "ec_commands.h"
#include "mcdp28x0.h"
+#include "stream_adaptor.h"
#include "timer.h"
#include "usart-stm32f0.h"
#include "util.h"
@@ -34,8 +35,17 @@ static inline void print_buffer(uint8_t *buf, int cnt)
static inline void print_buffer(uint8_t *buf, int cnt) {}
#endif
-USART_CONFIG(usart_mcdp, CONFIG_MCDP28X0, 115200, MCDP_INBUF_MAX,
- MCDP_OUTBUF_MAX, NULL, NULL);
+QUEUE_CONFIG(rx_queue, MCDP_INBUF_MAX, uint8_t);
+QUEUE_CONFIG(tx_queue, MCDP_OUTBUF_MAX, uint8_t);
+
+struct usart_config const usart_mcdp;
+
+IN_STREAM_FROM_PRODUCER(usart_in, usart_mcdp.producer, rx_queue, NULL)
+OUT_STREAM_FROM_CONSUMER(usart_out, usart_mcdp.consumer, tx_queue, NULL)
+
+USART_CONFIG(usart_mcdp, CONFIG_MCDP28X0, 115200, rx_queue, tx_queue,
+ usart_in.consumer, usart_out.producer);
+
/**
* Compute checksum.
@@ -73,16 +83,16 @@ static int tx_serial(const uint8_t *msg, int cnt)
uint8_t out = cnt + 2;
uint8_t chksum = compute_checksum(msg, cnt);
- if (out_stream_write(&usart_mcdp.out, &out, 1) != 1)
+ if (out_stream_write(&usart_out.out, &out, 1) != 1)
return EC_ERROR_UNKNOWN;
- if (out_stream_write(&usart_mcdp.out, msg, cnt) != cnt)
+ if (out_stream_write(&usart_out.out, msg, cnt) != cnt)
return EC_ERROR_UNKNOWN;
- if (out_stream_write(&usart_mcdp.out, &chksum, 1) != 1)
+ if (out_stream_write(&usart_out.out, &chksum, 1) != 1)
return EC_ERROR_UNKNOWN;
- print_buffer(usart_mcdp_tx_buffer, cnt + 2);
+ print_buffer(tx_queue_buffer, cnt + 2);
return EC_SUCCESS;
}
@@ -99,10 +109,10 @@ static int rx_serial(uint8_t *msg, int cnt)
size_t read;
int retry = 2;
- read = in_stream_read(&usart_mcdp.in, msg, cnt);
+ read = in_stream_read(&usart_in.in, msg, cnt);
while ((read < cnt) && retry) {
usleep(100*MSEC);
- read += in_stream_read(&usart_mcdp.in, msg + read,
+ read += in_stream_read(&usart_in.in, msg + read,
cnt - read);
retry--;
}