Mercurial > public > ostc4
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) |
