comparison Small_CPU/Src/uartProtocol_O2.c @ 981:c6c781a2e85b default

Merge into default
author heinrichsweikamp
date Tue, 11 Feb 2025 18:12:00 +0100
parents 0b81ac558e89
children
comparison
equal deleted inserted replaced
871:f7318457df4d 981:c6c781a2e85b
73 void uartO2_Control(void) 73 void uartO2_Control(void)
74 { 74 {
75 static uint8_t lastComState = 0; 75 static uint8_t lastComState = 0;
76 static uint8_t lastActiveSensor = 0xFF; 76 static uint8_t lastActiveSensor = 0xFF;
77 77
78 uint8_t *pmap = externalInterface_GetSensorMapPointer(0);
78 uint8_t activeSensor = externalInterface_GetActiveUartSensor(); 79 uint8_t activeSensor = externalInterface_GetActiveUartSensor();
79 80
80 uartO2Status_t localComState = externalInterface_GetSensorState(activeSensor + EXT_INTERFACE_MUX_OFFSET); 81 uartO2Status_t localComState = externalInterface_GetSensorState(activeSensor + EXT_INTERFACE_MUX_OFFSET);
81 externalInterface_GetSensorData(activeSensor + EXT_INTERFACE_MUX_OFFSET, (uint8_t*)&tmpSensorDataDiveO2); 82 externalInterface_GetSensorData(activeSensor + EXT_INTERFACE_MUX_OFFSET, (uint8_t*)&tmpSensorDataDiveO2);
82 83
94 } 95 }
95 if(localComState == UART_O2_CHECK) 96 if(localComState == UART_O2_CHECK)
96 { 97 {
97 localComState = UART_O2_IDLE; 98 localComState = UART_O2_IDLE;
98 } 99 }
99 UART_FlushRxBuffer(); 100 UART_ReadData(SENSOR_DIGO2, 1); /* flush buffer */
100 } 101 }
101 102
102 if(localComState == UART_O2_INIT) 103 if(localComState == UART_O2_INIT)
103 { 104 {
104 memset((char*) &tmpSensorDataDiveO2, 0, sizeof(tmpSensorDataDiveO2)); 105 memset((char*) &tmpSensorDataDiveO2, 0, sizeof(tmpSensorDataDiveO2));
105 externalInterface_SetSensorData(0xFF,(uint8_t*)&tmpSensorDataDiveO2); 106 externalInterface_SetSensorData(0xFF,(uint8_t*)&tmpSensorDataDiveO2);
106 107
107 localComState = UART_O2_CHECK; 108 localComState = UART_O2_CHECK;
108 lastComState = UART_O2_CHECK; 109 lastComState = UART_O2_CHECK;
110 UART_ReadData(SENSOR_DIGO2, 1); /* flush buffer */
109 uartO2_SetupCmd(localComState,cmdString,&cmdLength); 111 uartO2_SetupCmd(localComState,cmdString,&cmdLength);
110 112 UART_SendCmdString(cmdString);
113 if(pmap[EXT_INTERFACE_SENSOR_CNT-1] != SENSOR_MUX) /* stand alone mode => add some time for sensor com setup */
114 {
115 HAL_Delay(80);
116 }
111 rxState = O2RX_CONFIRM; 117 rxState = O2RX_CONFIRM;
112 respondErrorDetected = 0; 118 respondErrorDetected = 0;
113 digO2Connected = 0; 119 digO2Connected = 0;
114
115 UART_StartDMA_Receiption();
116 } 120 }
117 else 121 else
118 { 122 {
119 if(localComState == UART_O2_ERROR) 123 if(localComState == UART_O2_ERROR)
120 { 124 {
133 } 137 }
134 } 138 }
135 rxState = O2RX_CONFIRM; 139 rxState = O2RX_CONFIRM;
136 uartO2_SetupCmd(localComState,cmdString,&cmdLength); 140 uartO2_SetupCmd(localComState,cmdString,&cmdLength);
137 UART_SendCmdString(cmdString); 141 UART_SendCmdString(cmdString);
142 if(localComState == UART_O2_CHECK)
143 {
144 localComState = UART_O2_IDLE; /* confirmation seems to be send after blinking => the response could be longer as the channel switch time => ignore */
145 }
138 } 146 }
139 externalInterface_SetSensorState(activeSensor + EXT_INTERFACE_MUX_OFFSET,localComState); 147 externalInterface_SetSensorState(activeSensor + EXT_INTERFACE_MUX_OFFSET,localComState);
140 } 148 }
141 149
142 void uartO2_ProcessData(uint8_t data) 150 void uartO2_ProcessData(uint8_t data)