annotate Small_CPU/Src/uart.c @ 889:cf3967fe6924 Evo_2_23

GNSS work in progress
author heinrichsweikamp
date Fri, 06 Sep 2024 16:46:22 +0200
parents ad96f99ebc78
children 651d21777b61
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1 /**
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2 ******************************************************************************
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3 * @file uart.c
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
4 * @author heinrichs weikamp gmbh
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
5 * @version V0.0.1
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
6 * @date 27-March-2014
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
7 * @brief button control
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
8 *
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
9 @verbatim
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
10 ==============================================================================
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
11 ##### How to use #####
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
12 ==============================================================================
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
13 @endverbatim
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
14 ******************************************************************************
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
15 * @attention
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
16 *
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
17 * <h2><center>&copy; COPYRIGHT(c) 2015 heinrichs weikamp</center></h2>
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
18 *
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
19 ******************************************************************************
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
20 */
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
21 /* Includes ------------------------------------------------------------------*/
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
22 #include "uart.h"
794
bb37d4f3e50e Restructure UART based sensor handling:
Ideenmodellierer
parents: 787
diff changeset
23 #include "uartProtocol_O2.h"
798
e9eba334b942 Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents: 794
diff changeset
24 #include "uartProtocol_Co2.h"
842
c3dd461ca3f9 Migrated Sentinel protocol to new UART structure:
Ideenmodellierer
parents: 809
diff changeset
25 #include "uartProtocol_Sentinel.h"
662
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 38
diff changeset
26 #include "externalInterface.h"
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 38
diff changeset
27 #include "data_exchange.h"
704
f1b40364b0af Added protocol functions for UART DiveO2 sensor:
Ideenmodellierer
parents: 690
diff changeset
28 #include <string.h> /* memset */
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
29
889
cf3967fe6924 GNSS work in progress
heinrichsweikamp
parents: 861
diff changeset
30
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
31 /* Private variables ---------------------------------------------------------*/
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
32
794
bb37d4f3e50e Restructure UART based sensor handling:
Ideenmodellierer
parents: 787
diff changeset
33
787
aeb72882f30a Dev Bugfx Empty buffer indication and stability improvments:
Ideenmodellierer
parents: 785
diff changeset
34
781
01b3eb9d55c3 Update real multiplexer implementation:
Ideenmodellierer
parents: 779
diff changeset
35 #define CHUNK_SIZE (25u) /* the DMA will handle chunk size transfers */
01b3eb9d55c3 Update real multiplexer implementation:
Ideenmodellierer
parents: 779
diff changeset
36 #define CHUNKS_PER_BUFFER (5u)
794
bb37d4f3e50e Restructure UART based sensor handling:
Ideenmodellierer
parents: 787
diff changeset
37
889
cf3967fe6924 GNSS work in progress
heinrichsweikamp
parents: 861
diff changeset
38
662
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 38
diff changeset
39
889
cf3967fe6924 GNSS work in progress
heinrichsweikamp
parents: 861
diff changeset
40 DMA_HandleTypeDef hdma_usart1_rx, hdma_usart6_rx, hdma_usart6_tx;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
41
662
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 38
diff changeset
42 uint8_t rxBuffer[CHUNK_SIZE * CHUNKS_PER_BUFFER]; /* The complete buffer has a X * chunk size to allow fariations in buffer read time */
889
cf3967fe6924 GNSS work in progress
heinrichsweikamp
parents: 861
diff changeset
43 uint8_t rxBufferUart6[CHUNK_SIZE * CHUNKS_PER_BUFFER]; /* The complete buffer has a X * chunk size to allow fariations in buffer read time */
cf3967fe6924 GNSS work in progress
heinrichsweikamp
parents: 861
diff changeset
44 uint8_t txBufferUart6[CHUNK_SIZE * CHUNKS_PER_BUFFER]; /* The complete buffer has a X * chunk size to allow fariations in buffer read time */
cf3967fe6924 GNSS work in progress
heinrichsweikamp
parents: 861
diff changeset
45
729
d646a0f724a7 Added auto detection functionality for sensors connected to the external interface:
Ideenmodellierer
parents: 725
diff changeset
46 static uint8_t rxWriteIndex; /* Index of the data item which is analysed */
d646a0f724a7 Added auto detection functionality for sensors connected to the external interface:
Ideenmodellierer
parents: 725
diff changeset
47 static uint8_t rxReadIndex; /* Index at which new data is stared */
d646a0f724a7 Added auto detection functionality for sensors connected to the external interface:
Ideenmodellierer
parents: 725
diff changeset
48 static uint8_t lastCmdIndex; /* Index of last command which has not been completly received */
d646a0f724a7 Added auto detection functionality for sensors connected to the external interface:
Ideenmodellierer
parents: 725
diff changeset
49 static uint8_t dmaActive; /* Indicator if DMA reception needs to be started */
794
bb37d4f3e50e Restructure UART based sensor handling:
Ideenmodellierer
parents: 787
diff changeset
50
798
e9eba334b942 Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents: 794
diff changeset
51
889
cf3967fe6924 GNSS work in progress
heinrichsweikamp
parents: 861
diff changeset
52
cf3967fe6924 GNSS work in progress
heinrichsweikamp
parents: 861
diff changeset
53
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
54 /* Exported functions --------------------------------------------------------*/
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
55
794
bb37d4f3e50e Restructure UART based sensor handling:
Ideenmodellierer
parents: 787
diff changeset
56
662
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 38
diff changeset
57 void MX_USART1_UART_Init(void)
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
58 {
662
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 38
diff changeset
59 /* regular init */
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 38
diff changeset
60
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 38
diff changeset
61 huart1.Instance = USART1;
803
96ffad0a4e57 Cleanup initialisation / deinitialization:
Ideenmodellierer
parents: 798
diff changeset
62 huart1.Init.BaudRate = 19200;
662
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 38
diff changeset
63 huart1.Init.WordLength = UART_WORDLENGTH_8B;
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 38
diff changeset
64 huart1.Init.StopBits = UART_STOPBITS_1;
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 38
diff changeset
65 huart1.Init.Parity = UART_PARITY_NONE;
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 38
diff changeset
66 huart1.Init.Mode = UART_MODE_TX_RX;
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 38
diff changeset
67 huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 38
diff changeset
68 huart1.Init.OverSampling = UART_OVERSAMPLING_16;
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 38
diff changeset
69
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 38
diff changeset
70 HAL_UART_Init(&huart1);
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 38
diff changeset
71
704
f1b40364b0af Added protocol functions for UART DiveO2 sensor:
Ideenmodellierer
parents: 690
diff changeset
72 MX_USART1_DMA_Init();
f1b40364b0af Added protocol functions for UART DiveO2 sensor:
Ideenmodellierer
parents: 690
diff changeset
73
787
aeb72882f30a Dev Bugfx Empty buffer indication and stability improvments:
Ideenmodellierer
parents: 785
diff changeset
74 memset(rxBuffer,BUFFER_NODATA,sizeof(rxBuffer));
662
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 38
diff changeset
75 rxReadIndex = 0;
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 38
diff changeset
76 lastCmdIndex = 0;
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 38
diff changeset
77 rxWriteIndex = 0;
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 38
diff changeset
78 dmaActive = 0;
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 38
diff changeset
79 }
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
80
889
cf3967fe6924 GNSS work in progress
heinrichsweikamp
parents: 861
diff changeset
81
cf3967fe6924 GNSS work in progress
heinrichsweikamp
parents: 861
diff changeset
82
662
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 38
diff changeset
83 void MX_USART1_UART_DeInit(void)
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 38
diff changeset
84 {
704
f1b40364b0af Added protocol functions for UART DiveO2 sensor:
Ideenmodellierer
parents: 690
diff changeset
85 HAL_DMA_Abort(&hdma_usart1_rx);
662
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 38
diff changeset
86 HAL_DMA_DeInit(&hdma_usart1_rx);
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 38
diff changeset
87 HAL_UART_DeInit(&huart1);
803
96ffad0a4e57 Cleanup initialisation / deinitialization:
Ideenmodellierer
parents: 798
diff changeset
88 dmaActive = 0;
662
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 38
diff changeset
89 }
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 38
diff changeset
90
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 38
diff changeset
91 void MX_USART1_DMA_Init()
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 38
diff changeset
92 {
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 38
diff changeset
93 /* DMA controller clock enable */
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 38
diff changeset
94 __DMA2_CLK_ENABLE();
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 38
diff changeset
95
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 38
diff changeset
96 /* Peripheral DMA init*/
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 38
diff changeset
97 hdma_usart1_rx.Instance = DMA2_Stream5;
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 38
diff changeset
98 hdma_usart1_rx.Init.Channel = DMA_CHANNEL_4;
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 38
diff changeset
99 hdma_usart1_rx.Init.Direction = DMA_PERIPH_TO_MEMORY; //DMA_MEMORY_TO_PERIPH;
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 38
diff changeset
100 hdma_usart1_rx.Init.PeriphInc = DMA_PINC_DISABLE;
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 38
diff changeset
101 hdma_usart1_rx.Init.MemInc = DMA_MINC_ENABLE;
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 38
diff changeset
102 hdma_usart1_rx.Init.PeriphDataAlignment = DMA_MDATAALIGN_BYTE;
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 38
diff changeset
103 hdma_usart1_rx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE;
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 38
diff changeset
104 hdma_usart1_rx.Init.Mode = DMA_NORMAL;
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 38
diff changeset
105 hdma_usart1_rx.Init.Priority = DMA_PRIORITY_LOW;
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 38
diff changeset
106 hdma_usart1_rx.Init.FIFOMode = DMA_FIFOMODE_DISABLE;
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 38
diff changeset
107 HAL_DMA_Init(&hdma_usart1_rx);
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 38
diff changeset
108
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 38
diff changeset
109 __HAL_LINKDMA(&huart1,hdmarx,hdma_usart1_rx);
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 38
diff changeset
110
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 38
diff changeset
111 /* DMA interrupt init */
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 38
diff changeset
112 HAL_NVIC_SetPriority(DMA2_Stream5_IRQn, 0, 0);
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 38
diff changeset
113 HAL_NVIC_EnableIRQ(DMA2_Stream5_IRQn);
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
114 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
115
889
cf3967fe6924 GNSS work in progress
heinrichsweikamp
parents: 861
diff changeset
116 void GNSS_IO_init() {
cf3967fe6924 GNSS work in progress
heinrichsweikamp
parents: 861
diff changeset
117
cf3967fe6924 GNSS work in progress
heinrichsweikamp
parents: 861
diff changeset
118 GPIO_InitTypeDef GPIO_InitStruct = { 0 };
cf3967fe6924 GNSS work in progress
heinrichsweikamp
parents: 861
diff changeset
119 /* Peripheral clock enable */
cf3967fe6924 GNSS work in progress
heinrichsweikamp
parents: 861
diff changeset
120 __HAL_RCC_USART6_CLK_ENABLE();
cf3967fe6924 GNSS work in progress
heinrichsweikamp
parents: 861
diff changeset
121
cf3967fe6924 GNSS work in progress
heinrichsweikamp
parents: 861
diff changeset
122 __HAL_RCC_GPIOA_CLK_ENABLE();
cf3967fe6924 GNSS work in progress
heinrichsweikamp
parents: 861
diff changeset
123 /**USART6 GPIO Configuration
cf3967fe6924 GNSS work in progress
heinrichsweikamp
parents: 861
diff changeset
124 PA11 ------> USART6_TX
cf3967fe6924 GNSS work in progress
heinrichsweikamp
parents: 861
diff changeset
125 PA12 ------> USART6_RX
cf3967fe6924 GNSS work in progress
heinrichsweikamp
parents: 861
diff changeset
126 */
cf3967fe6924 GNSS work in progress
heinrichsweikamp
parents: 861
diff changeset
127 GPIO_InitStruct.Pin = GPIO_PIN_11 | GPIO_PIN_12;
cf3967fe6924 GNSS work in progress
heinrichsweikamp
parents: 861
diff changeset
128 GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
cf3967fe6924 GNSS work in progress
heinrichsweikamp
parents: 861
diff changeset
129 GPIO_InitStruct.Pull = GPIO_NOPULL;
cf3967fe6924 GNSS work in progress
heinrichsweikamp
parents: 861
diff changeset
130 GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
cf3967fe6924 GNSS work in progress
heinrichsweikamp
parents: 861
diff changeset
131 GPIO_InitStruct.Alternate = GPIO_AF8_USART6;
cf3967fe6924 GNSS work in progress
heinrichsweikamp
parents: 861
diff changeset
132 HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
cf3967fe6924 GNSS work in progress
heinrichsweikamp
parents: 861
diff changeset
133
cf3967fe6924 GNSS work in progress
heinrichsweikamp
parents: 861
diff changeset
134 /* USART6 DMA Init */
cf3967fe6924 GNSS work in progress
heinrichsweikamp
parents: 861
diff changeset
135 /* USART6_RX Init */
cf3967fe6924 GNSS work in progress
heinrichsweikamp
parents: 861
diff changeset
136 hdma_usart6_rx.Instance = DMA2_Stream2;
cf3967fe6924 GNSS work in progress
heinrichsweikamp
parents: 861
diff changeset
137 hdma_usart6_rx.Init.Channel = DMA_CHANNEL_5;
cf3967fe6924 GNSS work in progress
heinrichsweikamp
parents: 861
diff changeset
138 hdma_usart6_rx.Init.Direction = DMA_PERIPH_TO_MEMORY;
cf3967fe6924 GNSS work in progress
heinrichsweikamp
parents: 861
diff changeset
139 hdma_usart6_rx.Init.PeriphInc = DMA_PINC_DISABLE;
cf3967fe6924 GNSS work in progress
heinrichsweikamp
parents: 861
diff changeset
140 hdma_usart6_rx.Init.MemInc = DMA_MINC_ENABLE;
cf3967fe6924 GNSS work in progress
heinrichsweikamp
parents: 861
diff changeset
141 hdma_usart6_rx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE;
cf3967fe6924 GNSS work in progress
heinrichsweikamp
parents: 861
diff changeset
142 hdma_usart6_rx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE;
cf3967fe6924 GNSS work in progress
heinrichsweikamp
parents: 861
diff changeset
143 hdma_usart6_rx.Init.Mode = DMA_NORMAL;
cf3967fe6924 GNSS work in progress
heinrichsweikamp
parents: 861
diff changeset
144 hdma_usart6_rx.Init.Priority = DMA_PRIORITY_LOW;
cf3967fe6924 GNSS work in progress
heinrichsweikamp
parents: 861
diff changeset
145 hdma_usart6_rx.Init.FIFOMode = DMA_FIFOMODE_DISABLE;
cf3967fe6924 GNSS work in progress
heinrichsweikamp
parents: 861
diff changeset
146 HAL_DMA_Init(&hdma_usart6_rx);
cf3967fe6924 GNSS work in progress
heinrichsweikamp
parents: 861
diff changeset
147
cf3967fe6924 GNSS work in progress
heinrichsweikamp
parents: 861
diff changeset
148 __HAL_LINKDMA(&huart6, hdmarx, hdma_usart6_rx);
cf3967fe6924 GNSS work in progress
heinrichsweikamp
parents: 861
diff changeset
149
cf3967fe6924 GNSS work in progress
heinrichsweikamp
parents: 861
diff changeset
150 /* USART6_TX Init */
cf3967fe6924 GNSS work in progress
heinrichsweikamp
parents: 861
diff changeset
151 hdma_usart6_tx.Instance = DMA2_Stream6;
cf3967fe6924 GNSS work in progress
heinrichsweikamp
parents: 861
diff changeset
152 hdma_usart6_tx.Init.Channel = DMA_CHANNEL_5;
cf3967fe6924 GNSS work in progress
heinrichsweikamp
parents: 861
diff changeset
153 hdma_usart6_tx.Init.Direction = DMA_MEMORY_TO_PERIPH;
cf3967fe6924 GNSS work in progress
heinrichsweikamp
parents: 861
diff changeset
154 hdma_usart6_tx.Init.PeriphInc = DMA_PINC_DISABLE;
cf3967fe6924 GNSS work in progress
heinrichsweikamp
parents: 861
diff changeset
155 hdma_usart6_tx.Init.MemInc = DMA_MINC_ENABLE;
cf3967fe6924 GNSS work in progress
heinrichsweikamp
parents: 861
diff changeset
156 hdma_usart6_tx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE;
cf3967fe6924 GNSS work in progress
heinrichsweikamp
parents: 861
diff changeset
157 hdma_usart6_tx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE;
cf3967fe6924 GNSS work in progress
heinrichsweikamp
parents: 861
diff changeset
158 hdma_usart6_tx.Init.Mode = DMA_NORMAL;
cf3967fe6924 GNSS work in progress
heinrichsweikamp
parents: 861
diff changeset
159 hdma_usart6_tx.Init.Priority = DMA_PRIORITY_LOW;
cf3967fe6924 GNSS work in progress
heinrichsweikamp
parents: 861
diff changeset
160 hdma_usart6_tx.Init.FIFOMode = DMA_FIFOMODE_DISABLE;
cf3967fe6924 GNSS work in progress
heinrichsweikamp
parents: 861
diff changeset
161 HAL_DMA_Init(&hdma_usart6_tx);
cf3967fe6924 GNSS work in progress
heinrichsweikamp
parents: 861
diff changeset
162
cf3967fe6924 GNSS work in progress
heinrichsweikamp
parents: 861
diff changeset
163 __HAL_LINKDMA(&huart6, hdmatx, hdma_usart6_tx);
cf3967fe6924 GNSS work in progress
heinrichsweikamp
parents: 861
diff changeset
164
cf3967fe6924 GNSS work in progress
heinrichsweikamp
parents: 861
diff changeset
165 /* USART6 interrupt Init */
cf3967fe6924 GNSS work in progress
heinrichsweikamp
parents: 861
diff changeset
166 HAL_NVIC_SetPriority(USART6_IRQn, 0, 0);
cf3967fe6924 GNSS work in progress
heinrichsweikamp
parents: 861
diff changeset
167 HAL_NVIC_EnableIRQ(USART6_IRQn);
cf3967fe6924 GNSS work in progress
heinrichsweikamp
parents: 861
diff changeset
168 /* USER CODE BEGIN USART6_MspInit 1 */
cf3967fe6924 GNSS work in progress
heinrichsweikamp
parents: 861
diff changeset
169
cf3967fe6924 GNSS work in progress
heinrichsweikamp
parents: 861
diff changeset
170 /* USER CODE END USART6_MspInit 1 */
cf3967fe6924 GNSS work in progress
heinrichsweikamp
parents: 861
diff changeset
171
cf3967fe6924 GNSS work in progress
heinrichsweikamp
parents: 861
diff changeset
172 MX_USART6_DMA_Init();
cf3967fe6924 GNSS work in progress
heinrichsweikamp
parents: 861
diff changeset
173
cf3967fe6924 GNSS work in progress
heinrichsweikamp
parents: 861
diff changeset
174 }
cf3967fe6924 GNSS work in progress
heinrichsweikamp
parents: 861
diff changeset
175
cf3967fe6924 GNSS work in progress
heinrichsweikamp
parents: 861
diff changeset
176 void MX_USART6_DMA_Init() {
cf3967fe6924 GNSS work in progress
heinrichsweikamp
parents: 861
diff changeset
177 /* DMA controller clock enable */
cf3967fe6924 GNSS work in progress
heinrichsweikamp
parents: 861
diff changeset
178 __HAL_RCC_DMA2_CLK_ENABLE();
cf3967fe6924 GNSS work in progress
heinrichsweikamp
parents: 861
diff changeset
179
cf3967fe6924 GNSS work in progress
heinrichsweikamp
parents: 861
diff changeset
180 /* DMA interrupt init */
cf3967fe6924 GNSS work in progress
heinrichsweikamp
parents: 861
diff changeset
181 /* DMA2_Stream2_IRQn interrupt configuration */
cf3967fe6924 GNSS work in progress
heinrichsweikamp
parents: 861
diff changeset
182 HAL_NVIC_SetPriority(DMA2_Stream2_IRQn, 0, 0);
cf3967fe6924 GNSS work in progress
heinrichsweikamp
parents: 861
diff changeset
183 HAL_NVIC_EnableIRQ(DMA2_Stream2_IRQn);
cf3967fe6924 GNSS work in progress
heinrichsweikamp
parents: 861
diff changeset
184 /* DMA2_Stream6_IRQn interrupt configuration */
cf3967fe6924 GNSS work in progress
heinrichsweikamp
parents: 861
diff changeset
185 HAL_NVIC_SetPriority(DMA2_Stream6_IRQn, 0, 0);
cf3967fe6924 GNSS work in progress
heinrichsweikamp
parents: 861
diff changeset
186 HAL_NVIC_EnableIRQ(DMA2_Stream6_IRQn);
cf3967fe6924 GNSS work in progress
heinrichsweikamp
parents: 861
diff changeset
187 }
cf3967fe6924 GNSS work in progress
heinrichsweikamp
parents: 861
diff changeset
188
cf3967fe6924 GNSS work in progress
heinrichsweikamp
parents: 861
diff changeset
189 /**
cf3967fe6924 GNSS work in progress
heinrichsweikamp
parents: 861
diff changeset
190 * @brief USART6 Initialization Function
cf3967fe6924 GNSS work in progress
heinrichsweikamp
parents: 861
diff changeset
191 * @param None
cf3967fe6924 GNSS work in progress
heinrichsweikamp
parents: 861
diff changeset
192 * @retval None
cf3967fe6924 GNSS work in progress
heinrichsweikamp
parents: 861
diff changeset
193 */
cf3967fe6924 GNSS work in progress
heinrichsweikamp
parents: 861
diff changeset
194 void MX_USART6_UART_Init(void)
cf3967fe6924 GNSS work in progress
heinrichsweikamp
parents: 861
diff changeset
195 {
cf3967fe6924 GNSS work in progress
heinrichsweikamp
parents: 861
diff changeset
196 /* USER CODE BEGIN USART6_Init 0 */
cf3967fe6924 GNSS work in progress
heinrichsweikamp
parents: 861
diff changeset
197
cf3967fe6924 GNSS work in progress
heinrichsweikamp
parents: 861
diff changeset
198 /* USER CODE END USART6_Init 0 */
cf3967fe6924 GNSS work in progress
heinrichsweikamp
parents: 861
diff changeset
199
cf3967fe6924 GNSS work in progress
heinrichsweikamp
parents: 861
diff changeset
200 /* USER CODE BEGIN USART6_Init 1 */
cf3967fe6924 GNSS work in progress
heinrichsweikamp
parents: 861
diff changeset
201
cf3967fe6924 GNSS work in progress
heinrichsweikamp
parents: 861
diff changeset
202 /* USER CODE END USART6_Init 1 */
cf3967fe6924 GNSS work in progress
heinrichsweikamp
parents: 861
diff changeset
203 huart6.Instance = USART6;
cf3967fe6924 GNSS work in progress
heinrichsweikamp
parents: 861
diff changeset
204 huart6.Init.BaudRate = 9600;
cf3967fe6924 GNSS work in progress
heinrichsweikamp
parents: 861
diff changeset
205 huart6.Init.WordLength = UART_WORDLENGTH_8B;
cf3967fe6924 GNSS work in progress
heinrichsweikamp
parents: 861
diff changeset
206 huart6.Init.StopBits = UART_STOPBITS_1;
cf3967fe6924 GNSS work in progress
heinrichsweikamp
parents: 861
diff changeset
207 huart6.Init.Parity = UART_PARITY_NONE;
cf3967fe6924 GNSS work in progress
heinrichsweikamp
parents: 861
diff changeset
208 huart6.Init.Mode = UART_MODE_TX_RX;
cf3967fe6924 GNSS work in progress
heinrichsweikamp
parents: 861
diff changeset
209 huart6.Init.HwFlowCtl = UART_HWCONTROL_NONE;
cf3967fe6924 GNSS work in progress
heinrichsweikamp
parents: 861
diff changeset
210 huart6.Init.OverSampling = UART_OVERSAMPLING_16;
cf3967fe6924 GNSS work in progress
heinrichsweikamp
parents: 861
diff changeset
211 HAL_UART_Init(&huart6);
cf3967fe6924 GNSS work in progress
heinrichsweikamp
parents: 861
diff changeset
212
cf3967fe6924 GNSS work in progress
heinrichsweikamp
parents: 861
diff changeset
213 /* USER CODE BEGIN USART6_Init 2 */
cf3967fe6924 GNSS work in progress
heinrichsweikamp
parents: 861
diff changeset
214
cf3967fe6924 GNSS work in progress
heinrichsweikamp
parents: 861
diff changeset
215 /* USER CODE END USART6_Init 2 */
cf3967fe6924 GNSS work in progress
heinrichsweikamp
parents: 861
diff changeset
216 }
cf3967fe6924 GNSS work in progress
heinrichsweikamp
parents: 861
diff changeset
217
794
bb37d4f3e50e Restructure UART based sensor handling:
Ideenmodellierer
parents: 787
diff changeset
218 void UART_MUX_SelectAddress(uint8_t muxAddress)
779
0b5f45448eb6 Added UART multiplexer support for DiveO2:
Ideenmodellierer
parents: 747
diff changeset
219 {
0b5f45448eb6 Added UART multiplexer support for DiveO2:
Ideenmodellierer
parents: 747
diff changeset
220 uint8_t indexstr[4];
0b5f45448eb6 Added UART multiplexer support for DiveO2:
Ideenmodellierer
parents: 747
diff changeset
221
794
bb37d4f3e50e Restructure UART based sensor handling:
Ideenmodellierer
parents: 787
diff changeset
222 if(muxAddress <= MAX_MUX_CHANNEL)
779
0b5f45448eb6 Added UART multiplexer support for DiveO2:
Ideenmodellierer
parents: 747
diff changeset
223 {
794
bb37d4f3e50e Restructure UART based sensor handling:
Ideenmodellierer
parents: 787
diff changeset
224 indexstr[0] = '~';
bb37d4f3e50e Restructure UART based sensor handling:
Ideenmodellierer
parents: 787
diff changeset
225 indexstr[1] = muxAddress;
bb37d4f3e50e Restructure UART based sensor handling:
Ideenmodellierer
parents: 787
diff changeset
226 indexstr[2] = 0x0D;
bb37d4f3e50e Restructure UART based sensor handling:
Ideenmodellierer
parents: 787
diff changeset
227 indexstr[3] = 0x0A;
bb37d4f3e50e Restructure UART based sensor handling:
Ideenmodellierer
parents: 787
diff changeset
228
bb37d4f3e50e Restructure UART based sensor handling:
Ideenmodellierer
parents: 787
diff changeset
229 HAL_UART_Transmit(&huart1,indexstr,4,10);
779
0b5f45448eb6 Added UART multiplexer support for DiveO2:
Ideenmodellierer
parents: 747
diff changeset
230 }
0b5f45448eb6 Added UART multiplexer support for DiveO2:
Ideenmodellierer
parents: 747
diff changeset
231 }
0b5f45448eb6 Added UART multiplexer support for DiveO2:
Ideenmodellierer
parents: 747
diff changeset
232
794
bb37d4f3e50e Restructure UART based sensor handling:
Ideenmodellierer
parents: 787
diff changeset
233
bb37d4f3e50e Restructure UART based sensor handling:
Ideenmodellierer
parents: 787
diff changeset
234 void UART_SendCmdString(uint8_t *cmdString)
729
d646a0f724a7 Added auto detection functionality for sensors connected to the external interface:
Ideenmodellierer
parents: 725
diff changeset
235 {
794
bb37d4f3e50e Restructure UART based sensor handling:
Ideenmodellierer
parents: 787
diff changeset
236 uint8_t cmdLength = strlen((char*)cmdString);
bb37d4f3e50e Restructure UART based sensor handling:
Ideenmodellierer
parents: 787
diff changeset
237
bb37d4f3e50e Restructure UART based sensor handling:
Ideenmodellierer
parents: 787
diff changeset
238 if(cmdLength < 20) /* A longer string is an indication for a missing 0 termination */
729
d646a0f724a7 Added auto detection functionality for sensors connected to the external interface:
Ideenmodellierer
parents: 725
diff changeset
239 {
794
bb37d4f3e50e Restructure UART based sensor handling:
Ideenmodellierer
parents: 787
diff changeset
240 if(dmaActive == 0)
bb37d4f3e50e Restructure UART based sensor handling:
Ideenmodellierer
parents: 787
diff changeset
241 {
bb37d4f3e50e Restructure UART based sensor handling:
Ideenmodellierer
parents: 787
diff changeset
242 UART_StartDMA_Receiption();
bb37d4f3e50e Restructure UART based sensor handling:
Ideenmodellierer
parents: 787
diff changeset
243 }
bb37d4f3e50e Restructure UART based sensor handling:
Ideenmodellierer
parents: 787
diff changeset
244 HAL_UART_Transmit(&huart1,cmdString,cmdLength,10);
bb37d4f3e50e Restructure UART based sensor handling:
Ideenmodellierer
parents: 787
diff changeset
245 }
bb37d4f3e50e Restructure UART based sensor handling:
Ideenmodellierer
parents: 787
diff changeset
246 }
bb37d4f3e50e Restructure UART based sensor handling:
Ideenmodellierer
parents: 787
diff changeset
247
729
d646a0f724a7 Added auto detection functionality for sensors connected to the external interface:
Ideenmodellierer
parents: 725
diff changeset
248
d646a0f724a7 Added auto detection functionality for sensors connected to the external interface:
Ideenmodellierer
parents: 725
diff changeset
249 void StringToInt(char *pstr, uint32_t *puInt32)
d646a0f724a7 Added auto detection functionality for sensors connected to the external interface:
Ideenmodellierer
parents: 725
diff changeset
250 {
d646a0f724a7 Added auto detection functionality for sensors connected to the external interface:
Ideenmodellierer
parents: 725
diff changeset
251 uint8_t index = 0;
d646a0f724a7 Added auto detection functionality for sensors connected to the external interface:
Ideenmodellierer
parents: 725
diff changeset
252 uint32_t result = 0;
d646a0f724a7 Added auto detection functionality for sensors connected to the external interface:
Ideenmodellierer
parents: 725
diff changeset
253 while((pstr[index] >= '0') && (pstr[index] <= '9'))
d646a0f724a7 Added auto detection functionality for sensors connected to the external interface:
Ideenmodellierer
parents: 725
diff changeset
254 {
d646a0f724a7 Added auto detection functionality for sensors connected to the external interface:
Ideenmodellierer
parents: 725
diff changeset
255 result *=10;
d646a0f724a7 Added auto detection functionality for sensors connected to the external interface:
Ideenmodellierer
parents: 725
diff changeset
256 result += pstr[index] - '0';
d646a0f724a7 Added auto detection functionality for sensors connected to the external interface:
Ideenmodellierer
parents: 725
diff changeset
257 index++;
d646a0f724a7 Added auto detection functionality for sensors connected to the external interface:
Ideenmodellierer
parents: 725
diff changeset
258 }
d646a0f724a7 Added auto detection functionality for sensors connected to the external interface:
Ideenmodellierer
parents: 725
diff changeset
259 *puInt32 = result;
d646a0f724a7 Added auto detection functionality for sensors connected to the external interface:
Ideenmodellierer
parents: 725
diff changeset
260 }
d646a0f724a7 Added auto detection functionality for sensors connected to the external interface:
Ideenmodellierer
parents: 725
diff changeset
261
d646a0f724a7 Added auto detection functionality for sensors connected to the external interface:
Ideenmodellierer
parents: 725
diff changeset
262 void StringToUInt64(char *pstr, uint64_t *puint64)
d646a0f724a7 Added auto detection functionality for sensors connected to the external interface:
Ideenmodellierer
parents: 725
diff changeset
263 {
d646a0f724a7 Added auto detection functionality for sensors connected to the external interface:
Ideenmodellierer
parents: 725
diff changeset
264 uint8_t index = 0;
d646a0f724a7 Added auto detection functionality for sensors connected to the external interface:
Ideenmodellierer
parents: 725
diff changeset
265 uint64_t result = 0;
d646a0f724a7 Added auto detection functionality for sensors connected to the external interface:
Ideenmodellierer
parents: 725
diff changeset
266 while((pstr[index] >= '0') && (pstr[index] <= '9'))
d646a0f724a7 Added auto detection functionality for sensors connected to the external interface:
Ideenmodellierer
parents: 725
diff changeset
267 {
d646a0f724a7 Added auto detection functionality for sensors connected to the external interface:
Ideenmodellierer
parents: 725
diff changeset
268 result *=10;
d646a0f724a7 Added auto detection functionality for sensors connected to the external interface:
Ideenmodellierer
parents: 725
diff changeset
269 result += pstr[index] - '0';
d646a0f724a7 Added auto detection functionality for sensors connected to the external interface:
Ideenmodellierer
parents: 725
diff changeset
270 index++;
d646a0f724a7 Added auto detection functionality for sensors connected to the external interface:
Ideenmodellierer
parents: 725
diff changeset
271 }
d646a0f724a7 Added auto detection functionality for sensors connected to the external interface:
Ideenmodellierer
parents: 725
diff changeset
272 *puint64 = result;
d646a0f724a7 Added auto detection functionality for sensors connected to the external interface:
Ideenmodellierer
parents: 725
diff changeset
273 }
662
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 38
diff changeset
274
742
e23fe82cbf8c Update Sentinel protocol:
Ideenmodellierer
parents: 731
diff changeset
275 void UART_StartDMA_Receiption()
e23fe82cbf8c Update Sentinel protocol:
Ideenmodellierer
parents: 731
diff changeset
276 {
798
e9eba334b942 Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents: 794
diff changeset
277 if(dmaActive == 0)
742
e23fe82cbf8c Update Sentinel protocol:
Ideenmodellierer
parents: 731
diff changeset
278 {
798
e9eba334b942 Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents: 794
diff changeset
279 if(HAL_OK == HAL_UART_Receive_DMA (&huart1, &rxBuffer[rxWriteIndex], CHUNK_SIZE))
e9eba334b942 Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents: 794
diff changeset
280 {
e9eba334b942 Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents: 794
diff changeset
281 dmaActive = 1;
e9eba334b942 Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents: 794
diff changeset
282 }
742
e23fe82cbf8c Update Sentinel protocol:
Ideenmodellierer
parents: 731
diff changeset
283 }
e23fe82cbf8c Update Sentinel protocol:
Ideenmodellierer
parents: 731
diff changeset
284 }
690
fca2bd25e6e2 Added Sentinel protocoll support:
Ideenmodellierer
parents: 662
diff changeset
285
798
e9eba334b942 Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents: 794
diff changeset
286 void UART_ChangeBaudrate(uint32_t newBaudrate)
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
287 {
809
9602a7338f28 DevBugfix CO2 sensor in streaming mode:
Ideenmodellierer
parents: 803
diff changeset
288 uint8_t dmaWasActive = dmaActive;
798
e9eba334b942 Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents: 794
diff changeset
289 // HAL_DMA_Abort(&hdma_usart1_rx);
e9eba334b942 Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents: 794
diff changeset
290 MX_USART1_UART_DeInit();
e9eba334b942 Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents: 794
diff changeset
291 //HAL_UART_Abort(&huart1);
e9eba334b942 Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents: 794
diff changeset
292 //HAL_DMA_DeInit(&hdma_usart1_rx);
e9eba334b942 Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents: 794
diff changeset
293
e9eba334b942 Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents: 794
diff changeset
294
e9eba334b942 Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents: 794
diff changeset
295 // huart1.Instance->BRR = UART_BRR_SAMPLING8(HAL_RCC_GetPCLK2Freq()/2, newBaudrate);
e9eba334b942 Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents: 794
diff changeset
296 huart1.Init.BaudRate = newBaudrate;
e9eba334b942 Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents: 794
diff changeset
297 HAL_UART_Init(&huart1);
e9eba334b942 Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents: 794
diff changeset
298 MX_USART1_DMA_Init();
809
9602a7338f28 DevBugfix CO2 sensor in streaming mode:
Ideenmodellierer
parents: 803
diff changeset
299 if(dmaWasActive)
794
bb37d4f3e50e Restructure UART based sensor handling:
Ideenmodellierer
parents: 787
diff changeset
300 {
809
9602a7338f28 DevBugfix CO2 sensor in streaming mode:
Ideenmodellierer
parents: 803
diff changeset
301 memset(rxBuffer,BUFFER_NODATA,sizeof(rxBuffer));
798
e9eba334b942 Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents: 794
diff changeset
302 rxReadIndex = 0;
e9eba334b942 Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents: 794
diff changeset
303 rxWriteIndex = 0;
e9eba334b942 Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents: 794
diff changeset
304 dmaActive = 0;
742
e23fe82cbf8c Update Sentinel protocol:
Ideenmodellierer
parents: 731
diff changeset
305 UART_StartDMA_Receiption();
662
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 38
diff changeset
306 }
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
307 }
690
fca2bd25e6e2 Added Sentinel protocoll support:
Ideenmodellierer
parents: 662
diff changeset
308
662
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 38
diff changeset
309 void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
310 {
662
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 38
diff changeset
311 if(huart == &huart1)
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 38
diff changeset
312 {
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 38
diff changeset
313 dmaActive = 0;
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 38
diff changeset
314 rxWriteIndex+=CHUNK_SIZE;
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 38
diff changeset
315 if(rxWriteIndex >= CHUNK_SIZE * CHUNKS_PER_BUFFER)
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 38
diff changeset
316 {
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 38
diff changeset
317 rxWriteIndex = 0;
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 38
diff changeset
318 }
787
aeb72882f30a Dev Bugfx Empty buffer indication and stability improvments:
Ideenmodellierer
parents: 785
diff changeset
319 if((rxWriteIndex / CHUNK_SIZE) != (rxReadIndex / CHUNK_SIZE) || (rxWriteIndex == rxReadIndex)) /* start next transfer if we did not catch up with read index */
662
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 38
diff changeset
320 {
809
9602a7338f28 DevBugfix CO2 sensor in streaming mode:
Ideenmodellierer
parents: 803
diff changeset
321 UART_StartDMA_Receiption();
662
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 38
diff changeset
322 }
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 38
diff changeset
323 }
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
324 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
325
794
bb37d4f3e50e Restructure UART based sensor handling:
Ideenmodellierer
parents: 787
diff changeset
326 void UART_ReadData(uint8_t sensorType)
bb37d4f3e50e Restructure UART based sensor handling:
Ideenmodellierer
parents: 787
diff changeset
327 {
bb37d4f3e50e Restructure UART based sensor handling:
Ideenmodellierer
parents: 787
diff changeset
328 uint8_t localRX = rxReadIndex;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
329
794
bb37d4f3e50e Restructure UART based sensor handling:
Ideenmodellierer
parents: 787
diff changeset
330 while((rxBuffer[localRX]!=BUFFER_NODATA))
bb37d4f3e50e Restructure UART based sensor handling:
Ideenmodellierer
parents: 787
diff changeset
331 {
bb37d4f3e50e Restructure UART based sensor handling:
Ideenmodellierer
parents: 787
diff changeset
332 switch (sensorType)
bb37d4f3e50e Restructure UART based sensor handling:
Ideenmodellierer
parents: 787
diff changeset
333 {
bb37d4f3e50e Restructure UART based sensor handling:
Ideenmodellierer
parents: 787
diff changeset
334 case SENSOR_MUX:
bb37d4f3e50e Restructure UART based sensor handling:
Ideenmodellierer
parents: 787
diff changeset
335 case SENSOR_DIGO2: uartO2_ProcessData(rxBuffer[localRX]);
bb37d4f3e50e Restructure UART based sensor handling:
Ideenmodellierer
parents: 787
diff changeset
336 break;
798
e9eba334b942 Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents: 794
diff changeset
337 #ifdef ENABLE_CO2_SUPPORT
e9eba334b942 Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents: 794
diff changeset
338 case SENSOR_CO2: uartCo2_ProcessData(rxBuffer[localRX]);
794
bb37d4f3e50e Restructure UART based sensor handling:
Ideenmodellierer
parents: 787
diff changeset
339 break;
798
e9eba334b942 Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents: 794
diff changeset
340 #endif
842
c3dd461ca3f9 Migrated Sentinel protocol to new UART structure:
Ideenmodellierer
parents: 809
diff changeset
341 #ifdef ENABLE_SENTINEL_MODE
c3dd461ca3f9 Migrated Sentinel protocol to new UART structure:
Ideenmodellierer
parents: 809
diff changeset
342 case SENSOR_SENTINEL: uartSentinel_ProcessData(rxBuffer[localRX]);
c3dd461ca3f9 Migrated Sentinel protocol to new UART structure:
Ideenmodellierer
parents: 809
diff changeset
343 break;
c3dd461ca3f9 Migrated Sentinel protocol to new UART structure:
Ideenmodellierer
parents: 809
diff changeset
344 #endif
794
bb37d4f3e50e Restructure UART based sensor handling:
Ideenmodellierer
parents: 787
diff changeset
345 default:
bb37d4f3e50e Restructure UART based sensor handling:
Ideenmodellierer
parents: 787
diff changeset
346 break;
bb37d4f3e50e Restructure UART based sensor handling:
Ideenmodellierer
parents: 787
diff changeset
347 }
bb37d4f3e50e Restructure UART based sensor handling:
Ideenmodellierer
parents: 787
diff changeset
348
bb37d4f3e50e Restructure UART based sensor handling:
Ideenmodellierer
parents: 787
diff changeset
349 rxBuffer[localRX] = BUFFER_NODATA;
bb37d4f3e50e Restructure UART based sensor handling:
Ideenmodellierer
parents: 787
diff changeset
350 localRX++;
bb37d4f3e50e Restructure UART based sensor handling:
Ideenmodellierer
parents: 787
diff changeset
351 rxReadIndex++;
bb37d4f3e50e Restructure UART based sensor handling:
Ideenmodellierer
parents: 787
diff changeset
352 if(rxReadIndex >= CHUNK_SIZE * CHUNKS_PER_BUFFER)
bb37d4f3e50e Restructure UART based sensor handling:
Ideenmodellierer
parents: 787
diff changeset
353 {
bb37d4f3e50e Restructure UART based sensor handling:
Ideenmodellierer
parents: 787
diff changeset
354 localRX = 0;
bb37d4f3e50e Restructure UART based sensor handling:
Ideenmodellierer
parents: 787
diff changeset
355 rxReadIndex = 0;
bb37d4f3e50e Restructure UART based sensor handling:
Ideenmodellierer
parents: 787
diff changeset
356 }
bb37d4f3e50e Restructure UART based sensor handling:
Ideenmodellierer
parents: 787
diff changeset
357 }
bb37d4f3e50e Restructure UART based sensor handling:
Ideenmodellierer
parents: 787
diff changeset
358 }
bb37d4f3e50e Restructure UART based sensor handling:
Ideenmodellierer
parents: 787
diff changeset
359
bb37d4f3e50e Restructure UART based sensor handling:
Ideenmodellierer
parents: 787
diff changeset
360 void UART_FlushRxBuffer(void)
bb37d4f3e50e Restructure UART based sensor handling:
Ideenmodellierer
parents: 787
diff changeset
361 {
bb37d4f3e50e Restructure UART based sensor handling:
Ideenmodellierer
parents: 787
diff changeset
362 while(rxBuffer[rxReadIndex] != BUFFER_NODATA)
bb37d4f3e50e Restructure UART based sensor handling:
Ideenmodellierer
parents: 787
diff changeset
363 {
bb37d4f3e50e Restructure UART based sensor handling:
Ideenmodellierer
parents: 787
diff changeset
364 rxBuffer[rxReadIndex] = BUFFER_NODATA;
bb37d4f3e50e Restructure UART based sensor handling:
Ideenmodellierer
parents: 787
diff changeset
365 rxReadIndex++;
bb37d4f3e50e Restructure UART based sensor handling:
Ideenmodellierer
parents: 787
diff changeset
366 if(rxReadIndex >= CHUNK_SIZE * CHUNKS_PER_BUFFER)
bb37d4f3e50e Restructure UART based sensor handling:
Ideenmodellierer
parents: 787
diff changeset
367 {
bb37d4f3e50e Restructure UART based sensor handling:
Ideenmodellierer
parents: 787
diff changeset
368 rxReadIndex = 0;
bb37d4f3e50e Restructure UART based sensor handling:
Ideenmodellierer
parents: 787
diff changeset
369 }
bb37d4f3e50e Restructure UART based sensor handling:
Ideenmodellierer
parents: 787
diff changeset
370 }
bb37d4f3e50e Restructure UART based sensor handling:
Ideenmodellierer
parents: 787
diff changeset
371 }
662
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 38
diff changeset
372
861
ad96f99ebc78 Synchronize ADC and UART activities:
Ideenmodellierer
parents: 842
diff changeset
373 uint8_t UART_isComActive(uint8_t sensorId)
ad96f99ebc78 Synchronize ADC and UART activities:
Ideenmodellierer
parents: 842
diff changeset
374 {
ad96f99ebc78 Synchronize ADC and UART activities:
Ideenmodellierer
parents: 842
diff changeset
375 uint8_t active = 1;
809
9602a7338f28 DevBugfix CO2 sensor in streaming mode:
Ideenmodellierer
parents: 803
diff changeset
376
861
ad96f99ebc78 Synchronize ADC and UART activities:
Ideenmodellierer
parents: 842
diff changeset
377 uint8_t ComState = externalInterface_GetSensorState(sensorId + EXT_INTERFACE_MUX_OFFSET);
ad96f99ebc78 Synchronize ADC and UART activities:
Ideenmodellierer
parents: 842
diff changeset
378
ad96f99ebc78 Synchronize ADC and UART activities:
Ideenmodellierer
parents: 842
diff changeset
379 if((ComState == UART_COMMON_INIT) || (ComState == UART_COMMON_IDLE) || (ComState == UART_COMMON_ERROR))
ad96f99ebc78 Synchronize ADC and UART activities:
Ideenmodellierer
parents: 842
diff changeset
380 {
ad96f99ebc78 Synchronize ADC and UART activities:
Ideenmodellierer
parents: 842
diff changeset
381 active = 0;
ad96f99ebc78 Synchronize ADC and UART activities:
Ideenmodellierer
parents: 842
diff changeset
382 }
ad96f99ebc78 Synchronize ADC and UART activities:
Ideenmodellierer
parents: 842
diff changeset
383 return active;
ad96f99ebc78 Synchronize ADC and UART activities:
Ideenmodellierer
parents: 842
diff changeset
384 }
809
9602a7338f28 DevBugfix CO2 sensor in streaming mode:
Ideenmodellierer
parents: 803
diff changeset
385
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
386 /************************ (C) COPYRIGHT heinrichs weikamp *****END OF FILE****/