[Cryptech-Commits] [sw/stm32] 01/02: Sudden realization that initializing the uart from the ekermit library is Just Wrong.

git at cryptech.is git at cryptech.is
Tue Jun 21 23:31:04 UTC 2016


This is an automated email from the git hooks/post-receive script.

paul at psgd.org pushed a commit to branch ekermit
in repository sw/stm32.

commit 035ad220df784f71e2424c86d5ffe015c764ae69
Author: Paul Selkirk <paul at psgd.org>
AuthorDate: Tue Jun 21 16:05:48 2016 -0400

    Sudden realization that initializing the uart from the ekermit library is Just Wrong.
---
 libraries/thirdparty/ekermit/stm-kermit.c | 24 ++----------------------
 projects/ekermit-test/ekermit-test.c      | 26 ++++++++++++++++++++++++++
 2 files changed, 28 insertions(+), 22 deletions(-)

diff --git a/libraries/thirdparty/ekermit/stm-kermit.c b/libraries/thirdparty/ekermit/stm-kermit.c
index 09eca96..870730e 100644
--- a/libraries/thirdparty/ekermit/stm-kermit.c
+++ b/libraries/thirdparty/ekermit/stm-kermit.c
@@ -55,27 +55,8 @@
 #undef SUCCESS
 
 #include "stm-uart.h"
-#include "ringbuf.h"
 #include "stm-kermit.h"
 
-static ringbuf_t uart_ringbuf;
-
-/* current character received from UART */
-static uint8_t uart_rx;
-
-/* Callback for HAL_UART_Receive_IT(). Must be public. */
-void HAL_UART1_RxCpltCallback(UART_HandleTypeDef *huart)
-{
-    ringbuf_write_char(&uart_ringbuf, uart_rx);
-    HAL_UART_Receive_IT(huart, &uart_rx, 1);
-}
-
-static void uart_init(void)
-{
-    ringbuf_init(&uart_ringbuf);
-    HAL_UART_Receive_IT(&huart_mgmt, &uart_rx, 1);
-}
-
 #ifdef DEBUG
 /* This is public because it's prototyped in debug.h */
 void
@@ -181,11 +162,10 @@ readpkt(struct k_data * k, UCHAR *p, int len)
     p2 = p;
 #endif
 
-    uart_init();
-
     while (1) {
         /* wait for the next character */
-        while (ringbuf_read_char(&uart_ringbuf, &x) == 0) { ; }
+        extern int uart1_read_char(uint8_t *c);
+        while (uart1_read_char(&x) == 0) { ; }
 
         c = (k->parity) ? x & 0x7f : x & 0xff; /* Strip parity */
 
diff --git a/projects/ekermit-test/ekermit-test.c b/projects/ekermit-test/ekermit-test.c
index 3b71a69..ba9a2f8 100644
--- a/projects/ekermit-test/ekermit-test.c
+++ b/projects/ekermit-test/ekermit-test.c
@@ -44,6 +44,8 @@
 #include "stm-sdram.h"
 #include "sdram-malloc.h"
 #include "stm-kermit.h"
+#include "stm-uart.h"
+#include "ringbuf.h"
 
 /* alignment for file allocations */
 #define ALIGN 16
@@ -62,6 +64,29 @@ typedef struct {
 filetab_t filetab[NFILE], *curfile;
 int nfile;
 
+static ringbuf_t uart_ringbuf;
+
+/* current character received from UART */
+static uint8_t uart_rx;
+
+/* Callback for HAL_UART_Receive_IT(). Must be public. */
+void HAL_UART1_RxCpltCallback(UART_HandleTypeDef *huart)
+{
+    ringbuf_write_char(&uart_ringbuf, uart_rx);
+    HAL_UART_Receive_IT(huart, &uart_rx, 1);
+}
+
+void uart1_init(void)
+{
+    ringbuf_init(&uart_ringbuf);
+    HAL_UART_Receive_IT(&huart_mgmt, &uart_rx, 1);
+}
+
+int uart1_read_char(uint8_t *c)
+{
+    return ringbuf_read_char(&uart_ringbuf, c);
+}
+
 #ifdef DUMP
 static void hexdump(uint8_t *buf, int len)
 {
@@ -149,6 +174,7 @@ int main(void)
 {
     stm_init();
     sdram_init();
+    uart1_init();
 
     while (1) {
         memset((void *)filetab, 0, sizeof(filetab));



More information about the Commits mailing list