Просмотр исходного кода

Update UART code to use new stream buffer API. Closes #1.

Aaron Mavrinac 3 лет назад
Родитель
Сommit
47fadfc513
2 измененных файлов с 6 добавлено и 9 удалено
  1. 5 7
      gps_uart.c
  2. 1 2
      gps_uart.h

+ 5 - 7
gps_uart.c

@@ -13,12 +13,10 @@ typedef enum {
 
 
 static void gps_uart_on_irq_cb(UartIrqEvent ev, uint8_t data, void* context) {
 static void gps_uart_on_irq_cb(UartIrqEvent ev, uint8_t data, void* context) {
     GpsUart* gps_uart = (GpsUart*)context;
     GpsUart* gps_uart = (GpsUart*)context;
-    BaseType_t xHigherPriorityTaskWoken = pdFALSE;
 
 
     if(ev == UartIrqEventRXNE) {
     if(ev == UartIrqEventRXNE) {
-        xStreamBufferSendFromISR(gps_uart->rx_stream, &data, 1, &xHigherPriorityTaskWoken);
+        furi_stream_buffer_send(gps_uart->rx_stream, &data, 1, 0);
         furi_thread_flags_set(furi_thread_get_id(gps_uart->thread), WorkerEvtRxDone);
         furi_thread_flags_set(furi_thread_get_id(gps_uart->thread), WorkerEvtRxDone);
-        portYIELD_FROM_ISR(xHigherPriorityTaskWoken);
     }
     }
 }
 }
 
 
@@ -52,7 +50,7 @@ static void gps_uart_parse_nmea(GpsUart* gps_uart, char* line)
 static int32_t gps_uart_worker(void* context) {
 static int32_t gps_uart_worker(void* context) {
     GpsUart* gps_uart = (GpsUart*)context;
     GpsUart* gps_uart = (GpsUart*)context;
 
 
-    gps_uart->rx_stream = xStreamBufferCreate(RX_BUF_SIZE * 5, 1);
+    gps_uart->rx_stream = furi_stream_buffer_alloc(RX_BUF_SIZE * 5, 1);
     size_t rx_offset = 0;
     size_t rx_offset = 0;
 
 
     gps_uart_serial_init(gps_uart);
     gps_uart_serial_init(gps_uart);
@@ -65,8 +63,8 @@ static int32_t gps_uart_worker(void* context) {
         if(events & WorkerEvtRxDone) {
         if(events & WorkerEvtRxDone) {
             size_t len = 0;
             size_t len = 0;
             do {
             do {
-                len = xStreamBufferReceive(gps_uart->rx_stream, gps_uart->rx_buf + rx_offset,
-                                           RX_BUF_SIZE - 1 - rx_offset, 0);
+                len = furi_stream_buffer_receive(gps_uart->rx_stream, gps_uart->rx_buf + rx_offset,
+                                                 RX_BUF_SIZE - 1 - rx_offset, 0);
                 if(len > 0) {
                 if(len > 0) {
                     rx_offset += len;
                     rx_offset += len;
                     gps_uart->rx_buf[rx_offset] = '\0';
                     gps_uart->rx_buf[rx_offset] = '\0';
@@ -97,7 +95,7 @@ static int32_t gps_uart_worker(void* context) {
 
 
     gps_uart_serial_deinit(gps_uart);
     gps_uart_serial_deinit(gps_uart);
 
 
-    vStreamBufferDelete(gps_uart->rx_stream);
+    furi_stream_buffer_free(gps_uart->rx_stream);
 
 
     return 0;
     return 0;
 }
 }

+ 1 - 2
gps_uart.h

@@ -1,7 +1,6 @@
 #pragma once
 #pragma once
 
 
 #include <furi_hal.h>
 #include <furi_hal.h>
-#include <stream_buffer.h>
 
 
 #define GPS_BAUDRATE 9600
 #define GPS_BAUDRATE 9600
 #define RX_BUF_SIZE 1024
 #define RX_BUF_SIZE 1024
@@ -13,7 +12,7 @@ typedef struct {
 
 
 typedef struct {
 typedef struct {
     FuriThread* thread;
     FuriThread* thread;
-    StreamBufferHandle_t rx_stream;
+    FuriStreamBuffer* rx_stream;
     uint8_t rx_buf[RX_BUF_SIZE];
     uint8_t rx_buf[RX_BUF_SIZE];
 
 
     GpsStatus status;
     GpsStatus status;