From f7a18ec4494b9c5c9ef3fd440bbf68ffc6425e18 Mon Sep 17 00:00:00 2001
From: yy1717 <fctom1215@outlook.com>
Date: 星期四, 08 十二月 2022 15:40:56 +0800
Subject: [PATCH] 智慧驾培首次提交

---
 lib/src/main/cpp/common/serial_port.h |   30 ++++++++++++++++++++----------
 1 files changed, 20 insertions(+), 10 deletions(-)

diff --git a/lib/src/main/cpp/common/serial_port.h b/lib/src/main/cpp/common/serial_port.h
index e20f27c..762f0a7 100644
--- a/lib/src/main/cpp/common/serial_port.h
+++ b/lib/src/main/cpp/common/serial_port.h
@@ -6,12 +6,10 @@
 #define JNICALLBACK_SERIAL_PORT_H
 
 #include <stdint.h>
-
-#define UART_0            0
-#define UART_1            1
+#include <mutex>
 
 struct serial_config {
-    char name[32];
+    char name[64];
     int baud;
     int data_bit;
     char verify_bit;
@@ -19,12 +17,24 @@
     int flow_ctrl;
 };
 
-int InitSerialPort(int id, int baud, int dataBits, char parity, int stopBits, int flowctrl);
-void UninitSerialPort(int id);
+class SerialPort {
+private:
+    int fd = -1;
+    std::mutex mtx;
+    struct serial_config cfg;
+    int setRTS(int level);
+    int SetSerialPort(int fd, int speed, int databits, char parity, int stopbits, int flowctrl);
+    int OpenSerialPort(const char *name);
+    void CloseSerialPort(int fd);
+    void UninitSerialPort(void);
+public:
+    SerialPort(struct serial_config cfg);
+    virtual ~SerialPort();
+    int InitSerialPort(void);
+    int WriteSerialPort(const void *buf, int len);
+    int ReadSerialPort(uint8_t *out, uint16_t length);
+};
 
-int GetSerialPort(int id);
-int ReadSerialPort(int id, uint8_t *out, uint16_t length);
-int WriteSerialPort(int id, const void *buf, int len);
-int setRTS(int fd, int level);
+typedef int (SerialPort::*pSerialPortClassFun)(const void *buf, int len);
 
 #endif //JNICALLBACK_SERIAL_PORT_H

--
Gitblit v1.8.0