Mercurial > public > ostc4
comparison Small_CPU/Src/externalInterface.c @ 742:e23fe82cbf8c
Update Sentinel protocol:
The Sentinel protocol is now supported by autodetection.
Added Autodetection indicator:
In the previous version no indicator showed that an auto detection is running. A new pseudo sensor type has been introduced which now causes the auto detection string to be displayed while the detection is running in the background.
| author | Ideenmodellierer |
|---|---|
| date | Sun, 19 Feb 2023 21:43:24 +0100 |
| parents | 30717de00f3a |
| children | 7e84ae1513b6 |
comparison
equal
deleted
inserted
replaced
| 741:6a35e2e97bfb | 742:e23fe82cbf8c |
|---|---|
| 311 switch(protocol) | 311 switch(protocol) |
| 312 { | 312 { |
| 313 case 0: | 313 case 0: |
| 314 case (EXT_INTERFACE_UART_CO2 >> 8): | 314 case (EXT_INTERFACE_UART_CO2 >> 8): |
| 315 case (EXT_INTERFACE_UART_O2 >> 8): | 315 case (EXT_INTERFACE_UART_O2 >> 8): |
| 316 case (EXT_INTERFACE_UART_SENTINEL >> 8): | |
| 316 if((externalAutoDetect <= DETECTION_START) || ((protocol == EXT_INTERFACE_UART_CO2 >> 8) && (externalAutoDetect == DETECTION_CO2)) | 317 if((externalAutoDetect <= DETECTION_START) || ((protocol == EXT_INTERFACE_UART_CO2 >> 8) && (externalAutoDetect == DETECTION_CO2)) |
| 317 || ((protocol == EXT_INTERFACE_UART_O2 >> 8) && (externalAutoDetect == DETECTION_DIGO2))) | 318 || ((protocol == EXT_INTERFACE_UART_O2 >> 8) && (externalAutoDetect == DETECTION_DIGO2)) |
| 319 || ((protocol == EXT_INTERFACE_UART_SENTINEL >> 8) && (externalAutoDetect == DETECTION_SENTINEL))) | |
| 318 { | 320 { |
| 319 sensorDataId = 0; | 321 sensorDataId = 0; |
| 320 externalUART_Protocol = protocol; | 322 externalUART_Protocol = protocol; |
| 321 MX_USART1_UART_DeInit(); | 323 MX_USART1_UART_DeInit(); |
| 322 if( protocol != 0) | 324 if( protocol != 0) |
| 484 } | 486 } |
| 485 | 487 |
| 486 UART_setTargetChannel(index); | 488 UART_setTargetChannel(index); |
| 487 /* tmpSensorMap[sensorIndex++] = SENSOR_DIGO2; */ | 489 /* tmpSensorMap[sensorIndex++] = SENSOR_DIGO2; */ |
| 488 } | 490 } |
| 489 externalAutoDetect = DETECTION_CO2; | 491 externalAutoDetect++; |
| 492 #ifdef ENABLE_CO2_SUPPORT | |
| 490 externalInterface_SwitchUART(EXT_INTERFACE_UART_CO2 >> 8); | 493 externalInterface_SwitchUART(EXT_INTERFACE_UART_CO2 >> 8); |
| 491 break; | 494 break; |
| 492 case DETECTION_CO2: if(UART_isCO2Connected()) | 495 case DETECTION_CO2: if(UART_isCO2Connected()) |
| 493 { | 496 { |
| 494 for(index = 0; index < 3; index++) /* lookup a channel which may be used by CO2*/ | 497 for(index = 0; index < 3; index++) /* lookup a channel which may be used by CO2*/ |
| 506 { | 509 { |
| 507 tmpSensorMap[index] = SENSOR_CO2; | 510 tmpSensorMap[index] = SENSOR_CO2; |
| 508 } | 511 } |
| 509 | 512 |
| 510 } | 513 } |
| 511 externalAutoDetect = DETECTION_DONE; | 514 externalAutoDetect++; |
| 515 #endif | |
| 516 #ifdef ENABLE_SENTINEL_MODE | |
| 517 externalInterface_SwitchUART(EXT_INTERFACE_UART_SENTINEL >> 8); | |
| 518 UART_StartDMA_Receiption(); | |
| 519 break; | |
| 520 | |
| 521 case DETECTION_SENTINEL: | |
| 522 case DETECTION_SENTINEL2: | |
| 523 if(UART_isSentinelConnected()) | |
| 524 { | |
| 525 for(index = 0; index < 3; index++) /* Sentinel is occupiing all sensor slots */ | |
| 526 { | |
| 527 tmpSensorMap[index] = SENSOR_SENTINEL; | |
| 528 } | |
| 529 sensorIndex = 3; | |
| 530 } | |
| 531 externalAutoDetect++; | |
| 532 #endif | |
| 512 break; | 533 break; |
| 513 case DETECTION_DONE: for(index = 0; index < EXT_INTERFACE_SENSOR_CNT; index++) | 534 case DETECTION_DONE: for(index = 0; index < EXT_INTERFACE_SENSOR_CNT; index++) |
| 514 { | 535 { |
| 515 if(tmpSensorMap[index] != SENSOR_NONE) | 536 if(tmpSensorMap[index] != SENSOR_NONE) |
| 516 { | 537 { |
| 548 uint8_t index; | 569 uint8_t index; |
| 549 | 570 |
| 550 switch(Cmd & 0x00FF) /* lower byte is reserved for commands */ | 571 switch(Cmd & 0x00FF) /* lower byte is reserved for commands */ |
| 551 { | 572 { |
| 552 case EXT_INTERFACE_AUTODETECT: externalAutoDetect = DETECTION_INIT; | 573 case EXT_INTERFACE_AUTODETECT: externalAutoDetect = DETECTION_INIT; |
| 574 for(index = 0; index < 3; index++) | |
| 575 { | |
| 576 SensorMap[index] = SENSOR_SEARCH; | |
| 577 } | |
| 553 break; | 578 break; |
| 554 case EXT_INTERFACE_CO2_CALIB: cmdLength = snprintf(cmdString, 10, "G\r\n"); | 579 case EXT_INTERFACE_CO2_CALIB: cmdLength = snprintf(cmdString, 10, "G\r\n"); |
| 555 break; | 580 break; |
| 556 case EXT_INTERFACE_COPY_SENSORMAP: if(externalAutoDetect == DETECTION_OFF) | 581 case EXT_INTERFACE_COPY_SENSORMAP: if(externalAutoDetect == DETECTION_OFF) |
| 557 { | 582 { |
