浏览代码

添加串口驱动v1、v2适配;解决keil下大小端判断不正常问题 (#22)

* [update] 适配串口驱动v1 v2

* [fix]解决 keil 工程下大小端判断问题

* fix some error

* adjust code
Yanlineng 3 年之前
父节点
当前提交
a9b47f5001
共有 2 个文件被更改,包括 11 次插入0 次删除
  1. 4 0
      SConscript
  2. 7 0
      nimble/transport/rtthread/src/ble_hci_rtthread_uart.c

+ 4 - 0
SConscript

@@ -305,6 +305,10 @@ LOCAL_CCFLAGS = ''
 
 if rtconfig.CROSS_TOOL == 'keil':
     LOCAL_CCFLAGS += ' --gnu --diag_suppress=111'
+    # __BYTE_ORDER__ & __ORDER_BIG_ENDIAN__ & __ORDER_LITTLE_ENDIAN__ is not defined in keil, the specific values comes from gcc.
+    CPPDEFINES.append('__ORDER_LITTLE_ENDIAN__=1234')
+    CPPDEFINES.append('__ORDER_BIG_ENDIAN__=4321')
+    CPPDEFINES.append('__BYTE_ORDER__=1234')
     
 if rtconfig.CROSS_TOOL == 'gcc':
     LOCAL_CCFLAGS += ' -Wno-format -Wno-unused-variable -Wno-unused-but-set-variable'

+ 7 - 0
nimble/transport/rtthread/src/ble_hci_rtthread_uart.c

@@ -76,12 +76,19 @@ static int rtthread_hci_uart_init(void)
     config.baud_rate = BAUD_RATE_115200;
     config.data_bits = DATA_BITS_8;
     config.stop_bits = STOP_BITS_1;
+#ifdef RT_USING_SERIAL_V2
+#else
     config.bufsz     = 128;
+#endif
     config.parity    = PARITY_NONE;
 
     rt_device_control(g_serial, RT_DEVICE_CTRL_CONFIG, &config);
 
+#ifdef RT_USING_SERIAL_V2
+    rt_device_open(g_serial, RT_DEVICE_FLAG_RX_NON_BLOCKING | RT_DEVICE_FLAG_TX_BLOCKING);
+#else
     rt_device_open(g_serial, RT_DEVICE_FLAG_INT_RX);
+#endif
 
     rt_thread_t rx_thread = rt_thread_create("hci_uart_rx", rtthread_uart_rx_entry,
                                             RT_NULL, 1024, 25, 10);