mirror of https://github.com/rusefi/rusefi-1.git
200 lines
9.9 KiB
Diff
200 lines
9.9 KiB
Diff
diff -uwr Chibios.17_original/.git/FETCH_HEAD Chibios.17_rusefi/.git/FETCH_HEAD
|
|
--- Chibios.17_original/.git/FETCH_HEAD 2018-01-30 21:31:37.600033400 -0500
|
|
+++ Chibios.17_rusefi/.git/FETCH_HEAD 2018-01-30 21:41:12.360907800 -0500
|
|
@@ -1,11 +1,11 @@
|
|
-5b4a1f5837a83f32fd5e5e439eaa370cc7399237 branch 'stable_17.6.x' of https://github.com/rusefi/ChibiOS
|
|
+da33521329932cb7a0bb494dd3df9c1c9bd9af1a branch 'stable_17.6.rusefi' of https://github.com/rusefi/ChibiOS
|
|
b263680b98fbb41e939ce62e55916254ece4acc7 not-for-merge branch 'master' of https://github.com/rusefi/ChibiOS
|
|
a4b2c113e74e026dfc7cc02060b32ab3f047ae8d not-for-merge branch 'revert-10-master' of https://github.com/rusefi/ChibiOS
|
|
e61ff3aa1c1fd0f1057e08ae4551abbc01595550 not-for-merge branch 'stable_1.0.x' of https://github.com/rusefi/ChibiOS
|
|
3957b74f871e2ac11b8447aa067b1cece4861970 not-for-merge branch 'stable_1.2.x' of https://github.com/rusefi/ChibiOS
|
|
06c45ae2ef94ff95bbdab317bc53aebe7c51aacc not-for-merge branch 'stable_1.4.x' of https://github.com/rusefi/ChibiOS
|
|
c8198eb36c2174484141f0119f720bcf0468a0b9 not-for-merge branch 'stable_16.1.x' of https://github.com/rusefi/ChibiOS
|
|
-da33521329932cb7a0bb494dd3df9c1c9bd9af1a not-for-merge branch 'stable_17.6.rusefi' of https://github.com/rusefi/ChibiOS
|
|
+5b4a1f5837a83f32fd5e5e439eaa370cc7399237 not-for-merge branch 'stable_17.6.x' of https://github.com/rusefi/ChibiOS
|
|
e324eb668a8399c5e5342d3111d175f42f14b50b not-for-merge branch 'stable_2.0.x' of https://github.com/rusefi/ChibiOS
|
|
c807840cdcec4e09b3fd0d2268370d9a317f0b90 not-for-merge branch 'stable_2.2.x' of https://github.com/rusefi/ChibiOS
|
|
062803674562e117754c051992535d69a3762573 not-for-merge branch 'stable_2.4.x' of https://github.com/rusefi/ChibiOS
|
|
diff -uwr Chibios.17_original/.git/HEAD Chibios.17_rusefi/.git/HEAD
|
|
--- Chibios.17_original/.git/HEAD 2018-01-30 21:25:23.689646900 -0500
|
|
+++ Chibios.17_rusefi/.git/HEAD 2018-01-30 21:33:39.406000300 -0500
|
|
@@ -1 +1 @@
|
|
-ref: refs/heads/stable_17.6.x
|
|
+ref: refs/heads/stable_17.6.rusefi
|
|
diff -uwr Chibios.17_original/.git/ORIG_HEAD Chibios.17_rusefi/.git/ORIG_HEAD
|
|
--- Chibios.17_original/.git/ORIG_HEAD 2018-01-30 21:32:00.640351200 -0500
|
|
+++ Chibios.17_rusefi/.git/ORIG_HEAD 2018-01-30 21:41:17.857222200 -0500
|
|
@@ -1 +1 @@
|
|
-5b4a1f5837a83f32fd5e5e439eaa370cc7399237
|
|
+da33521329932cb7a0bb494dd3df9c1c9bd9af1a
|
|
diff -uwr Chibios.17_original/.git/config Chibios.17_rusefi/.git/config
|
|
--- Chibios.17_original/.git/config 2018-01-30 21:25:23.731649300 -0500
|
|
+++ Chibios.17_rusefi/.git/config 2018-01-30 21:33:39.550008500 -0500
|
|
@@ -9,6 +9,6 @@
|
|
[remote "origin"]
|
|
url = https://github.com/rusefi/ChibiOS
|
|
fetch = +refs/heads/*:refs/remotes/origin/*
|
|
-[branch "stable_17.6.x"]
|
|
+[branch "stable_17.6.rusefi"]
|
|
remote = origin
|
|
- merge = refs/heads/stable_17.6.x
|
|
+ merge = refs/heads/stable_17.6.rusefi
|
|
Binary files Chibios.17_original/.git/index and Chibios.17_rusefi/.git/index differ
|
|
diff -uwr Chibios.17_original/.git/logs/HEAD Chibios.17_rusefi/.git/logs/HEAD
|
|
--- Chibios.17_original/.git/logs/HEAD 2018-01-30 21:25:23.711648200 -0500
|
|
+++ Chibios.17_rusefi/.git/logs/HEAD 2018-01-30 21:33:39.538007800 -0500
|
|
@@ -1 +1 @@
|
|
-0000000000000000000000000000000000000000 5b4a1f5837a83f32fd5e5e439eaa370cc7399237 rusEfi <russianefi@gmail.com> 1517365523 -0500 clone: from https://github.com/rusefi/ChibiOS
|
|
+0000000000000000000000000000000000000000 da33521329932cb7a0bb494dd3df9c1c9bd9af1a rusEfi <russianefi@gmail.com> 1517366019 -0500 clone: from https://github.com/rusefi/ChibiOS
|
|
Only in Chibios.17_rusefi/.git/logs/refs/heads: stable_17.6.rusefi
|
|
Only in Chibios.17_original/.git/logs/refs/heads: stable_17.6.x
|
|
diff -uwr Chibios.17_original/.git/logs/refs/remotes/origin/HEAD Chibios.17_rusefi/.git/logs/refs/remotes/origin/HEAD
|
|
--- Chibios.17_original/.git/logs/refs/remotes/origin/HEAD 2018-01-30 21:25:23.687646800 -0500
|
|
+++ Chibios.17_rusefi/.git/logs/refs/remotes/origin/HEAD 2018-01-30 21:33:39.283993300 -0500
|
|
@@ -1 +1 @@
|
|
-0000000000000000000000000000000000000000 b263680b98fbb41e939ce62e55916254ece4acc7 rusEfi <russianefi@gmail.com> 1517365523 -0500 clone: from https://github.com/rusefi/ChibiOS
|
|
+0000000000000000000000000000000000000000 b263680b98fbb41e939ce62e55916254ece4acc7 rusEfi <russianefi@gmail.com> 1517366019 -0500 clone: from https://github.com/rusefi/ChibiOS
|
|
Only in Chibios.17_rusefi/.git/refs/heads: stable_17.6.rusefi
|
|
Only in Chibios.17_original/.git/refs/heads: stable_17.6.x
|
|
diff -uwr Chibios.17_original/os/hal/include/hal_uart.h Chibios.17_rusefi/os/hal/include/hal_uart.h
|
|
--- Chibios.17_original/os/hal/include/hal_uart.h 2018-01-30 21:27:32.434010700 -0500
|
|
+++ Chibios.17_rusefi/os/hal/include/hal_uart.h 2018-01-30 21:36:52.840064100 -0500
|
|
@@ -275,6 +275,26 @@
|
|
}
|
|
|
|
/**
|
|
+ * @brief Common ISR code for RX half-transfer data.
|
|
+ * @details This code handles the portable part of the ISR code:
|
|
+ * - Callback invocation.
|
|
+ * - Waiting thread wakeup, if any.
|
|
+ * - Driver state transitions.
|
|
+ * .
|
|
+ * @note This macro is meant to be used in the low level drivers
|
|
+ * implementation only.
|
|
+ *
|
|
+ * @param[in] uartp pointer to the @p UARTDriver object
|
|
+ * @param[in] full flag set to 1 for the second half, and 0 for the first half
|
|
+ *
|
|
+ * @notapi
|
|
+ */
|
|
+#define _uart_rx_half_isr_code(uartp, full) { \
|
|
+ if ((uartp)->config->rxhalf_cb != NULL) \
|
|
+ (uartp)->config->rxhalf_cb(uartp, full); \
|
|
+}
|
|
+
|
|
+/**
|
|
* @brief Common ISR code for RX error.
|
|
* @details This code handles the portable part of the ISR code:
|
|
* - Callback invocation.
|
|
diff -uwr Chibios.17_original/os/hal/ports/STM32/LLD/USARTv1/hal_uart_lld.c Chibios.17_rusefi/os/hal/ports/STM32/LLD/USARTv1/hal_uart_lld.c
|
|
--- Chibios.17_original/os/hal/ports/STM32/LLD/USARTv1/hal_uart_lld.c 2018-01-30 21:27:40.457469600 -0500
|
|
+++ Chibios.17_rusefi/os/hal/ports/STM32/LLD/USARTv1/hal_uart_lld.c 2018-01-30 21:37:06.091822000 -0500
|
|
@@ -226,6 +226,11 @@
|
|
/* Mustn't ever set TCIE here - if done, it causes an immediate
|
|
interrupt.*/
|
|
cr1 = USART_CR1_UE | USART_CR1_PEIE | USART_CR1_TE | USART_CR1_RE;
|
|
+
|
|
+ /* Add Idle interrupt if needed */
|
|
+ if (uartp->config->timeout_cb != NULL)
|
|
+ cr1 |= USART_CR1_IDLEIE;
|
|
+
|
|
u->CR1 = uartp->config->cr1 | cr1;
|
|
|
|
/* Starting the receiver idle loop.*/
|
|
@@ -254,6 +259,15 @@
|
|
received character and then the driver stays in the same state.*/
|
|
_uart_rx_idle_code(uartp);
|
|
}
|
|
+ /* DMA half-transter interrupt handling - for the 1st/2nd half transfers. */
|
|
+ else if (uartp->config->rxhalf_cb != NULL) {
|
|
+ if ((flags & STM32_DMA_ISR_HTIF) != 0) {
|
|
+ _uart_rx_half_isr_code(uartp, 0);
|
|
+ }
|
|
+ else if ((flags & STM32_DMA_ISR_TCIF) != 0) {
|
|
+ _uart_rx_half_isr_code(uartp, 1);
|
|
+ }
|
|
+ }
|
|
else {
|
|
/* Receiver in active state, a callback is generated, if enabled, after
|
|
a completed transfer.*/
|
|
@@ -312,6 +326,11 @@
|
|
/* End of transmission, a callback is generated.*/
|
|
_uart_tx2_isr_code(uartp);
|
|
}
|
|
+
|
|
+ /* Idle interrupt sources are only checked if enabled in CR1.*/
|
|
+ if ((sr & USART_SR_IDLE) && (cr1 & USART_CR1_IDLEIE)) {
|
|
+ _uart_timeout_isr_code(uartp);
|
|
+ }
|
|
}
|
|
|
|
/*===========================================================================*/
|
|
@@ -779,8 +798,14 @@
|
|
/* RX DMA channel preparation.*/
|
|
dmaStreamSetMemory0(uartp->dmarx, rxbuf);
|
|
dmaStreamSetTransactionSize(uartp->dmarx, n);
|
|
- dmaStreamSetMode(uartp->dmarx, uartp->dmamode | STM32_DMA_CR_DIR_P2M |
|
|
- STM32_DMA_CR_MINC | STM32_DMA_CR_TCIE);
|
|
+
|
|
+ uint32_t mode = STM32_DMA_CR_DIR_P2M | STM32_DMA_CR_MINC | STM32_DMA_CR_TCIE;
|
|
+
|
|
+ /* DMA half-transfer interrupt & circular mode, if needed */
|
|
+ if (uartp->config->rxhalf_cb != NULL)
|
|
+ mode |= STM32_DMA_CR_HTIE | STM32_DMA_CR_CIRC;
|
|
+
|
|
+ dmaStreamSetMode(uartp->dmarx, uartp->dmamode | mode);
|
|
|
|
/* Starting transfer.*/
|
|
dmaStreamEnable(uartp->dmarx);
|
|
diff -uwr Chibios.17_original/os/hal/ports/STM32/LLD/USARTv1/hal_uart_lld.h Chibios.17_rusefi/os/hal/ports/STM32/LLD/USARTv1/hal_uart_lld.h
|
|
--- Chibios.17_original/os/hal/ports/STM32/LLD/USARTv1/hal_uart_lld.h 2018-01-30 21:27:40.460469800 -0500
|
|
+++ Chibios.17_rusefi/os/hal/ports/STM32/LLD/USARTv1/hal_uart_lld.h 2018-01-30 21:37:06.388839000 -0500
|
|
@@ -463,6 +463,14 @@
|
|
typedef void (*uartecb_t)(UARTDriver *uartp, uartflags_t e);
|
|
|
|
/**
|
|
+ * @brief Receive Half-transfer UART notification callback type.
|
|
+ *
|
|
+ * @param[in] uartp pointer to the @p UARTDriver object
|
|
+ * @param[in] full flag set to 1 for the second half, and 0 for the first half
|
|
+ */
|
|
+typedef void (*uarthcb_t)(UARTDriver *uartp, uartflags_t full);
|
|
+
|
|
+/**
|
|
* @brief Driver configuration structure.
|
|
* @note It could be empty on some architectures.
|
|
*/
|
|
@@ -504,6 +512,16 @@
|
|
* @brief Initialization value for the CR3 register.
|
|
*/
|
|
uint16_t cr3;
|
|
+ /* Additional (optional) handlers. Placed here for the struct compatibility.*/
|
|
+ /**
|
|
+ * @brief Receiver timeout (idle) callback.
|
|
+ * @details Handles an idle interrupt for USARTv1.
|
|
+ */
|
|
+ uartcb_t timeout_cb;
|
|
+ /**
|
|
+ * @brief Half-transfer receive buffer callback.
|
|
+ */
|
|
+ uarthcb_t rxhalf_cb;
|
|
} UARTConfig;
|
|
|
|
/**
|
|
diff -uwr Chibios.17_original/os/rt/include/chdebug.h Chibios.17_rusefi/os/rt/include/chdebug.h
|
|
--- Chibios.17_original/os/rt/include/chdebug.h 2018-01-30 21:27:57.446441300 -0500
|
|
+++ Chibios.17_rusefi/os/rt/include/chdebug.h 2018-01-30 21:37:18.955557800 -0500
|
|
@@ -60,9 +60,10 @@
|
|
/* Module macros. */
|
|
/*===========================================================================*/
|
|
|
|
+//rusEfi additional hooks
|
|
#if CH_DBG_SYSTEM_STATE_CHECK == TRUE
|
|
-#define _dbg_enter_lock() (ch.dbg.lock_cnt = (cnt_t)1)
|
|
-#define _dbg_leave_lock() (ch.dbg.lock_cnt = (cnt_t)0)
|
|
+#define _dbg_enter_lock() {(ch.dbg.lock_cnt = (cnt_t)1); ON_LOCK_HOOK;}
|
|
+#define _dbg_leave_lock() {ON_UNLOCK_HOOK;(ch.dbg.lock_cnt = (cnt_t)0);}
|
|
#endif
|
|
|
|
/* When the state checker feature is disabled then the following functions
|