Mercurial > public > ostc4
comparison Small_CPU/Src/externalInterface.c @ 1080:b02311fbb1e1 Icon_Integration tip
Added MUX operation for HUD:
Instead of adding some new detection steps to the autodetection loop (which would be another copy paste implementation) the detection loop has been reworked. Instead of having a several individual steps per sensor type the steps are now related to mux channels. A structure is used to identify the type which shall be handled during the uart channel iteration. This make the code better readable and maintanance easier.
| author | Ideenmodellierer |
|---|---|
| date | Sun, 08 Mar 2026 21:08:33 +0100 |
| parents | bd8ab302ef4a |
| children |
comparison
equal
deleted
inserted
replaced
| 1079:9e1fdb383d86 | 1080:b02311fbb1e1 |
|---|---|
| 103 static float LookupCO2PressureCorrection[LOOKUP_CO2_CORR_TABLE_MAX / LOOKUP_CO2_CORR_TABLE_SCALE]; /* lookup table for pressure compensation values */ | 103 static float LookupCO2PressureCorrection[LOOKUP_CO2_CORR_TABLE_MAX / LOOKUP_CO2_CORR_TABLE_SCALE]; /* lookup table for pressure compensation values */ |
| 104 | 104 |
| 105 static uint16_t externalInterfaceMuxReqIntervall = 0xffff; /* delay between switching from one MUX channel to the next */ | 105 static uint16_t externalInterfaceMuxReqIntervall = 0xffff; /* delay between switching from one MUX channel to the next */ |
| 106 static uint8_t activeUartChannel = 0xff; | 106 static uint8_t activeUartChannel = 0xff; |
| 107 | 107 |
| 108 /* list of uart sensor types which shall be detected during auto detection cycle */ | |
| 109 static externalInterfaceSensorType uartTypeDetection[] = { SENSOR_MUX, SENSOR_DIGO2, | |
| 110 #ifdef ENABLE_CO2_SUPPORT | |
| 111 SENSOR_CO2, | |
| 112 #endif | |
| 113 #ifdef ENABLE_HUD_SUPPORT | |
| 114 SENSOR_HUD, | |
| 115 #endif | |
| 116 SENSOR_END | |
| 117 }; | |
| 108 | 118 |
| 109 static void externalInface_MapUartToLegacyADC(uint8_t* pMap); | 119 static void externalInface_MapUartToLegacyADC(uint8_t* pMap); |
| 110 static void externalInterface_CheckBaudrate(uint8_t sensorType); | 120 static void externalInterface_CheckBaudrate(uint8_t sensorType); |
| 111 | 121 |
| 112 void externalInterface_Init(void) | 122 void externalInterface_Init(void) |
| 691 pret = SensorMap; | 701 pret = SensorMap; |
| 692 } | 702 } |
| 693 return pret; | 703 return pret; |
| 694 } | 704 } |
| 695 | 705 |
| 706 static externalInterfaceAutoDetect_t externalInterface_NextUartTypeDetection(externalInterfaceSensorType* pCurrenttype) | |
| 707 { | |
| 708 uint8_t index = 0; | |
| 709 externalInterfaceAutoDetect_t nextDetectionStep = DETECTION_DONE; | |
| 710 | |
| 711 while(uartTypeDetection[index] != SENSOR_END) | |
| 712 { | |
| 713 if(uartTypeDetection[index] == *pCurrenttype) | |
| 714 { | |
| 715 break; | |
| 716 } | |
| 717 index++; | |
| 718 } | |
| 719 | |
| 720 if(uartTypeDetection[index] != SENSOR_END) | |
| 721 { | |
| 722 index++; | |
| 723 if(uartTypeDetection[index] != SENSOR_END) | |
| 724 { | |
| 725 externalAutoDetect = DETECTION_UART0; | |
| 726 *pCurrenttype = uartTypeDetection[index]; | |
| 727 switch(*pCurrenttype) /* sensor type specific initialization */ | |
| 728 { | |
| 729 case SENSOR_DIGO2: uartO2_SetChannel(0); | |
| 730 break; | |
| 731 case SENSOR_GNSS: /* TODO: implement faster call cycles for external GNSS */ | |
| 732 /* externalInterfaceMuxReqIntervall = 500; */ | |
| 733 /* iterations needed for module config */ | |
| 734 /* detectionDelayCnt = 6; */ | |
| 735 break; | |
| 736 default: | |
| 737 break; | |
| 738 } | |
| 739 | |
| 740 activeUartChannel = 0; | |
| 741 tmpSensorMap[EXT_INTERFACE_MUX_OFFSET] = *pCurrenttype; | |
| 742 externalInterface_SensorState[EXT_INTERFACE_MUX_OFFSET] = UART_COMMON_INIT; | |
| 743 if(foundSensorMap[EXT_INTERFACE_SENSOR_CNT-1] == SENSOR_MUX) | |
| 744 { | |
| 745 externalInterface_CheckBaudrate(SENSOR_MUX); | |
| 746 UART_MUX_SelectAddress(0); | |
| 747 } | |
| 748 nextDetectionStep = DETECTION_UART0; | |
| 749 } | |
| 750 } | |
| 751 return nextDetectionStep; | |
| 752 } | |
| 753 | |
| 696 void externalInterface_AutodetectSensor() | 754 void externalInterface_AutodetectSensor() |
| 697 { | 755 { |
| 698 static uint8_t sensorIndex = 0; | 756 static uint8_t sensorIndex = 0; |
| 699 static uint8_t uartMuxChannel = 0; | 757 static uint8_t uartMuxChannel = 0; |
| 758 static externalInterfaceSensorType currentUartType = SENSOR_MUX; | |
| 700 #ifdef ENABLE_GNSS_EXTERN | 759 #ifdef ENABLE_GNSS_EXTERN |
| 701 static uint8_t detectionDelayCnt = 0; | 760 static uint8_t detectionDelayCnt = 0; |
| 702 #endif | 761 #endif |
| 703 uint8_t index = 0; | 762 uint8_t index = 0; |
| 704 | 763 uint8_t sensorFound = 0; |
| 705 uint8_t cntSensor = 0; | 764 uint8_t cntSensor = 0; |
| 706 uint8_t cntUARTSensor = 0; | 765 uint8_t cntUARTSensor = 0; |
| 766 uint8_t nextType = 0; | |
| 707 | 767 |
| 708 if(externalAutoDetect != DETECTION_OFF) | 768 if(externalAutoDetect != DETECTION_OFF) |
| 709 { | 769 { |
| 710 switch(externalAutoDetect) | 770 switch(externalAutoDetect) |
| 711 { | 771 { |
| 712 case DETECTION_INIT: externalInterfaceMuxReqIntervall = 0xffff; | 772 case DETECTION_INIT: externalInterfaceMuxReqIntervall = 0xffff; |
| 773 currentUartType = SENSOR_MUX; | |
| 713 sensorIndex = 0; | 774 sensorIndex = 0; |
| 714 uartMuxChannel = 0; | 775 uartMuxChannel = 0; |
| 715 tmpSensorMap[0] = SENSOR_OPTIC; | 776 tmpSensorMap[0] = SENSOR_OPTIC; |
| 716 tmpSensorMap[1] = SENSOR_OPTIC; | 777 tmpSensorMap[1] = SENSOR_OPTIC; |
| 717 tmpSensorMap[2] = SENSOR_OPTIC; | 778 tmpSensorMap[2] = SENSOR_OPTIC; |
| 778 } | 839 } |
| 779 else | 840 else |
| 780 { | 841 { |
| 781 tmpSensorMap[EXT_INTERFACE_SENSOR_CNT-1] = SENSOR_NONE; | 842 tmpSensorMap[EXT_INTERFACE_SENSOR_CNT-1] = SENSOR_NONE; |
| 782 } | 843 } |
| 783 externalAutoDetect = DETECTION_DIGO2_0; | 844 externalAutoDetect = externalInterface_NextUartTypeDetection(¤tUartType); |
| 784 uartO2_SetChannel(0); | 845 externalInterface_CheckBaudrate(currentUartType); |
| 785 activeUartChannel = 0; | 846 break; |
| 786 tmpSensorMap[EXT_INTERFACE_MUX_OFFSET] = SENSOR_DIGO2; | 847 case DETECTION_UART0: |
| 787 externalInterface_SensorState[EXT_INTERFACE_MUX_OFFSET] = UART_COMMON_INIT; | 848 case DETECTION_UART1: |
| 788 externalInterface_SwitchUART(EXT_INTERFACE_UART_O2); | 849 case DETECTION_UART2: |
| 789 if(foundSensorMap[EXT_INTERFACE_SENSOR_CNT-1] == SENSOR_MUX) | 850 case DETECTION_UART3: switch(currentUartType) |
| 790 { | 851 { |
| 791 UART_MUX_SelectAddress(0); | 852 case SENSOR_DIGO2: if(uartO2_isSensorConnected()) { sensorFound = 1; } |
| 853 break; | |
| 854 case SENSOR_CO2: if(uartCo2_isSensorConnected()) { sensorFound = 1; nextType = 1;} | |
| 855 break; | |
| 856 #ifdef ENABLE_HUD_SUPPORT | |
| 857 case SENSOR_HUD: if(uartHUD_isSensorConnected()) { sensorFound = 1; nextType = 1;} | |
| 858 break; | |
| 859 #endif | |
| 860 default: | |
| 861 break; | |
| 792 } | 862 } |
| 793 break; | 863 if(sensorFound) |
| 794 case DETECTION_DIGO2_0: | |
| 795 case DETECTION_DIGO2_1: | |
| 796 case DETECTION_DIGO2_2: | |
| 797 case DETECTION_DIGO2_3: | |
| 798 if(uartO2_isSensorConnected()) | |
| 799 { | 864 { |
| 800 foundSensorMap[externalAutoDetect - DETECTION_DIGO2_0 + EXT_INTERFACE_MUX_OFFSET] = SENSOR_DIGO2; | 865 foundSensorMap[externalAutoDetect - DETECTION_UART0 + EXT_INTERFACE_MUX_OFFSET] = currentUartType; |
| 801 } | 866 } |
| 802 tmpSensorMap[EXT_INTERFACE_MUX_OFFSET] = SENSOR_NONE; | 867 if((externalAutoDetect == DETECTION_UART0) && (foundSensorMap[EXT_INTERFACE_SENSOR_CNT-1] == SENSOR_MUX)) |
| 803 if(uartMuxChannel) | |
| 804 { | 868 { |
| 805 externalInterface_SwitchUART(EXT_INTERFACE_UART_O2); | 869 uartMuxChannel = 1; |
| 870 } | |
| 871 tmpSensorMap[activeUartChannel + EXT_INTERFACE_MUX_OFFSET] = SENSOR_NONE; /* reset detection slot */ | |
| 872 if((uartMuxChannel) && (externalAutoDetect != DETECTION_UART3) && (nextType == 0)) | |
| 873 { | |
| 874 externalInterface_CheckBaudrate(SENSOR_MUX); | |
| 806 UART_MUX_SelectAddress(uartMuxChannel); | 875 UART_MUX_SelectAddress(uartMuxChannel); |
| 807 externalInterface_SensorState[uartMuxChannel + EXT_INTERFACE_MUX_OFFSET] = UART_COMMON_INIT; | 876 externalInterface_SensorState[uartMuxChannel + EXT_INTERFACE_MUX_OFFSET] = UART_COMMON_INIT; |
| 808 uartO2_SetChannel(uartMuxChannel); | 877 externalInterface_CheckBaudrate(currentUartType); |
| 878 switch(currentUartType) | |
| 879 { | |
| 880 case SENSOR_DIGO2: uartO2_SetChannel(uartMuxChannel); | |
| 881 break; | |
| 882 default: | |
| 883 break; | |
| 884 } | |
| 809 activeUartChannel = uartMuxChannel; | 885 activeUartChannel = uartMuxChannel; |
| 810 tmpSensorMap[uartMuxChannel - 1 + EXT_INTERFACE_MUX_OFFSET] = SENSOR_NONE; | 886 tmpSensorMap[uartMuxChannel + EXT_INTERFACE_MUX_OFFSET] = currentUartType; |
| 811 tmpSensorMap[uartMuxChannel + EXT_INTERFACE_MUX_OFFSET] = SENSOR_DIGO2; | 887 |
| 812 | 888 uartMuxChannel++; |
| 813 if(uartMuxChannel < MAX_MUX_CHANNEL - 1) | 889 externalAutoDetect++; |
| 814 { | |
| 815 uartMuxChannel++; | |
| 816 } | |
| 817 } | 890 } |
| 818 else | 891 else |
| 819 { | 892 { |
| 820 externalAutoDetect = DETECTION_DIGO2_3; /* skip detection of other serial sensors */ | 893 externalAutoDetect = externalInterface_NextUartTypeDetection(¤tUartType); |
| 894 externalInterface_CheckBaudrate(currentUartType); | |
| 821 } | 895 } |
| 822 externalAutoDetect++; | 896 break; |
| 823 #ifdef ENABLE_CO2_SUPPORT | 897 |
| 824 if(externalAutoDetect == DETECTION_CO2_0) | |
| 825 { | |
| 826 tmpSensorMap[uartMuxChannel + EXT_INTERFACE_MUX_OFFSET] = SENSOR_NONE; | |
| 827 if(foundSensorMap[EXT_INTERFACE_SENSOR_CNT-1] == SENSOR_MUX) | |
| 828 { | |
| 829 UART_MUX_SelectAddress(0); | |
| 830 } | |
| 831 activeUartChannel = 0; | |
| 832 tmpSensorMap[uartMuxChannel - 1 + EXT_INTERFACE_MUX_OFFSET] = SENSOR_NONE; | |
| 833 uartMuxChannel = 1; | |
| 834 tmpSensorMap[EXT_INTERFACE_MUX_OFFSET] = SENSOR_CO2; | |
| 835 externalInterface_SensorState[EXT_INTERFACE_MUX_OFFSET] = UART_COMMON_INIT; | |
| 836 externalInterface_CheckBaudrate(SENSOR_CO2); | |
| 837 } | |
| 838 break; | |
| 839 case DETECTION_CO2_0: | |
| 840 case DETECTION_CO2_1: | |
| 841 case DETECTION_CO2_2: | |
| 842 case DETECTION_CO2_3: if(uartCo2_isSensorConnected()) | |
| 843 { | |
| 844 foundSensorMap[EXT_INTERFACE_MUX_OFFSET + activeUartChannel] = SENSOR_CO2; | |
| 845 #ifdef ENABLE_GNSS_EXTERN | |
| 846 externalAutoDetect = DETECTION_GNSS_0; /* only one CO2 sensor supported */ | |
| 847 #else | |
| 848 externalAutoDetect = DETECTION_DONE; /* only one CO2 sensor supported */ | |
| 849 #endif | |
| 850 } | |
| 851 else if(foundSensorMap[EXT_INTERFACE_SENSOR_CNT-1] == SENSOR_MUX) | |
| 852 { | |
| 853 externalInterface_CheckBaudrate(SENSOR_DIGO2); | |
| 854 UART_MUX_SelectAddress(uartMuxChannel); | |
| 855 activeUartChannel = uartMuxChannel; | |
| 856 tmpSensorMap[uartMuxChannel - 1 + EXT_INTERFACE_MUX_OFFSET] = SENSOR_NONE; | |
| 857 tmpSensorMap[EXT_INTERFACE_MUX_OFFSET + uartMuxChannel] = SENSOR_CO2; | |
| 858 externalInterface_SensorState[EXT_INTERFACE_MUX_OFFSET + uartMuxChannel] = UART_COMMON_INIT; | |
| 859 externalInterface_CheckBaudrate(SENSOR_CO2); | |
| 860 externalAutoDetect++; | |
| 861 uartMuxChannel++; | |
| 862 } | |
| 863 else | |
| 864 { | |
| 865 | |
| 866 | |
| 867 #if defined ENABLE_SENTINEL_MODE || defined ENABLE_GNSS_EXTERN || defined ENABLE_HUD_SUPPORT | |
| 868 #ifdef ENABLE_GNSS_EXTERN | |
| 869 externalAutoDetect = DETECTION_GNSS_0; | |
| 870 externalInterface_SwitchUART(EXT_INTERFACE_UART_GNSS); | |
| 871 #else | |
| 872 #ifdef ENABLE_SENTINEL_MODE | |
| 873 externalAutoDetect = DETECTION_SENTINEL; | |
| 874 #else | |
| 875 #ifdef ENABLE_HUD_SUPPORT | |
| 876 externalAutoDetect = DETECTION_HUD_0; | |
| 877 #endif | |
| 878 #endif | |
| 879 #endif | |
| 880 #else | |
| 881 externalAutoDetect = DETECTION_DONE; | |
| 882 #endif | |
| 883 } | |
| 884 #endif | |
| 885 | |
| 886 #ifdef ENABLE_GNSS_EXTERN | |
| 887 if(externalAutoDetect == DETECTION_GNSS_0) | |
| 888 { | |
| 889 tmpSensorMap[uartMuxChannel + EXT_INTERFACE_MUX_OFFSET] = SENSOR_NONE; | |
| 890 if(foundSensorMap[EXT_INTERFACE_SENSOR_CNT-1] == SENSOR_MUX) | |
| 891 { | |
| 892 externalInterface_CheckBaudrate(SENSOR_DIGO2); | |
| 893 UART_MUX_SelectAddress(0); | |
| 894 } | |
| 895 activeUartChannel = 0; | |
| 896 tmpSensorMap[uartMuxChannel - 1 + EXT_INTERFACE_MUX_OFFSET] = SENSOR_NONE; | |
| 897 uartMuxChannel = 1; | |
| 898 tmpSensorMap[EXT_INTERFACE_MUX_OFFSET] = SENSOR_GNSS; | |
| 899 externalInterface_SensorState[EXT_INTERFACE_MUX_OFFSET] = UART_COMMON_INIT; | |
| 900 externalInterface_CheckBaudrate(SENSOR_GNSS); | |
| 901 externalInterfaceMuxReqIntervall = 500; /* iterations needed for module config */ | |
| 902 detectionDelayCnt = 6; | |
| 903 } | |
| 904 break; | |
| 905 case DETECTION_GNSS_0: | |
| 906 case DETECTION_GNSS_1: | |
| 907 case DETECTION_GNSS_2: | |
| 908 case DETECTION_GNSS_3: if(detectionDelayCnt == 0) | |
| 909 { | |
| 910 if(uartGnss_isSensorConnected()) | |
| 911 { | |
| 912 foundSensorMap[EXT_INTERFACE_MUX_OFFSET + activeUartChannel] = SENSOR_GNSS; | |
| 913 #ifdef ENABLE_SENTINEL_MODE | |
| 914 externalAutoDetect = DETECTION_SENTINEL; /* only one GNSS sensor supported */ | |
| 915 #else | |
| 916 externalAutoDetect = DETECTION_DONE; /* only one GNSS sensor supported */ | |
| 917 #endif | |
| 918 } | |
| 919 else if(foundSensorMap[EXT_INTERFACE_SENSOR_CNT-1] == SENSOR_MUX) | |
| 920 { | |
| 921 externalInterface_CheckBaudrate(SENSOR_DIGO2); | |
| 922 UART_MUX_SelectAddress(uartMuxChannel); | |
| 923 activeUartChannel = uartMuxChannel; | |
| 924 tmpSensorMap[uartMuxChannel - 1 + EXT_INTERFACE_MUX_OFFSET] = SENSOR_NONE; | |
| 925 tmpSensorMap[EXT_INTERFACE_MUX_OFFSET + uartMuxChannel] = SENSOR_CO2; | |
| 926 externalInterface_SensorState[EXT_INTERFACE_MUX_OFFSET + uartMuxChannel] = UART_COMMON_INIT; | |
| 927 externalInterface_CheckBaudrate(SENSOR_CO2); | |
| 928 // uartGnss_SendCmd(GNSSCMD_MODE_POLL, cmdString, &cmdLength); | |
| 929 externalAutoDetect++; | |
| 930 detectionDelayCnt = 3; | |
| 931 uartMuxChannel++; | |
| 932 } | |
| 933 else | |
| 934 { | |
| 935 #ifdef ENABLE_SENTINEL_MODE | |
| 936 externalAutoDetect = DETECTION_SENTINEL; | |
| 937 #else | |
| 938 externalAutoDetect = DETECTION_DONE; | |
| 939 #endif | |
| 940 } | |
| 941 } | |
| 942 else | |
| 943 { | |
| 944 detectionDelayCnt--; | |
| 945 } | |
| 946 #endif | |
| 947 #ifdef ENABLE_SENTINEL_MODE | |
| 948 if(externalAutoDetect == DETECTION_SENTINEL) | |
| 949 { | |
| 950 externalInterface_SensorState[EXT_INTERFACE_MUX_OFFSET] = UART_COMMON_INIT; | |
| 951 uartO2_SetChannel(0); | |
| 952 activeUartChannel = 0; | |
| 953 tmpSensorMap[EXT_INTERFACE_MUX_OFFSET] = SENSOR_SENTINEL; | |
| 954 externalInterface_SwitchUART(EXT_INTERFACE_UART_SENTINEL); | |
| 955 externalInterface_CheckBaudrate(SENSOR_SENTINEL); | |
| 956 UART_StartDMA_Receiption(&Uart1Ctrl); | |
| 957 } | |
| 958 break; | |
| 959 | |
| 960 case DETECTION_SENTINEL: | |
| 961 case DETECTION_SENTINEL2: | |
| 962 if(uartSentinel_isSensorConnected()) | |
| 963 { | |
| 964 for(index = EXT_INTERFACE_MUX_OFFSET; index < EXT_INTERFACE_MUX_OFFSET+3; index++) | |
| 965 { | |
| 966 foundSensorMap[index] = SENSOR_SENTINEL; | |
| 967 } | |
| 968 } | |
| 969 externalAutoDetect++; | |
| 970 #endif | |
| 971 | |
| 972 #ifdef ENABLE_HUD_SUPPORT | |
| 973 if(externalAutoDetect == DETECTION_HUD_0) | |
| 974 { | |
| 975 tmpSensorMap[uartMuxChannel + EXT_INTERFACE_MUX_OFFSET] = SENSOR_NONE; | |
| 976 if(foundSensorMap[EXT_INTERFACE_SENSOR_CNT-1] == SENSOR_MUX) | |
| 977 { | |
| 978 externalInterface_CheckBaudrate(SENSOR_DIGO2); | |
| 979 UART_MUX_SelectAddress(0); | |
| 980 } | |
| 981 activeUartChannel = 0; | |
| 982 tmpSensorMap[uartMuxChannel - 1 + EXT_INTERFACE_MUX_OFFSET] = SENSOR_NONE; | |
| 983 uartMuxChannel = 1; | |
| 984 tmpSensorMap[EXT_INTERFACE_MUX_OFFSET] = SENSOR_HUD; | |
| 985 externalInterface_SensorState[EXT_INTERFACE_MUX_OFFSET] = UART_COMMON_INIT; | |
| 986 externalInterface_CheckBaudrate(SENSOR_HUD); | |
| 987 externalInterfaceMuxReqIntervall = 500; /* iterations needed for module config */ | |
| 988 } | |
| 989 break; | |
| 990 case DETECTION_HUD_0: | |
| 991 case DETECTION_HUD_1: | |
| 992 case DETECTION_HUD_2: | |
| 993 case DETECTION_HUD_3: | |
| 994 if(uartHUD_isSensorConnected()) | |
| 995 { | |
| 996 foundSensorMap[EXT_INTERFACE_MUX_OFFSET + activeUartChannel] = SENSOR_HUD; | |
| 997 externalAutoDetect = DETECTION_DONE; /* only one HUD sensor supported */ | |
| 998 } | |
| 999 else if(foundSensorMap[EXT_INTERFACE_SENSOR_CNT-1] == SENSOR_MUX) | |
| 1000 { | |
| 1001 externalInterface_CheckBaudrate(SENSOR_DIGO2); | |
| 1002 UART_MUX_SelectAddress(uartMuxChannel); | |
| 1003 activeUartChannel = uartMuxChannel; | |
| 1004 tmpSensorMap[uartMuxChannel - 1 + EXT_INTERFACE_MUX_OFFSET] = SENSOR_NONE; | |
| 1005 tmpSensorMap[EXT_INTERFACE_MUX_OFFSET + uartMuxChannel] = SENSOR_CO2; | |
| 1006 externalInterface_SensorState[EXT_INTERFACE_MUX_OFFSET + uartMuxChannel] = UART_COMMON_INIT; | |
| 1007 externalInterface_CheckBaudrate(SENSOR_HUD); | |
| 1008 externalAutoDetect++; | |
| 1009 uartMuxChannel++; | |
| 1010 } | |
| 1011 else | |
| 1012 { | |
| 1013 externalAutoDetect = DETECTION_DONE; | |
| 1014 } | |
| 1015 #endif | |
| 1016 break; | |
| 1017 case DETECTION_DONE: externalAutoDetect = DETECTION_OFF; | 898 case DETECTION_DONE: externalAutoDetect = DETECTION_OFF; |
| 1018 externalInterface_SwitchUART(EXT_INTERFACE_UART_OFF); | 899 externalInterface_SwitchUART(EXT_INTERFACE_UART_OFF); |
| 1019 activeUartChannel = 0xFF; | 900 activeUartChannel = 0xFF; |
| 1020 cntSensor = 0; | 901 cntSensor = 0; |
| 1021 cntUARTSensor = 0; | 902 cntUARTSensor = 0; |
| 1085 case EXT_INTERFACE_COPY_SENSORMAP: if(externalAutoDetect == DETECTION_OFF) | 966 case EXT_INTERFACE_COPY_SENSORMAP: if(externalAutoDetect == DETECTION_OFF) |
| 1086 { | 967 { |
| 1087 memcpy(SensorMap, MasterSensorMap, sizeof(MasterSensorMap)); | 968 memcpy(SensorMap, MasterSensorMap, sizeof(MasterSensorMap)); |
| 1088 for(index = 0; index < EXT_INTERFACE_SENSOR_CNT; index++) | 969 for(index = 0; index < EXT_INTERFACE_SENSOR_CNT; index++) |
| 1089 { | 970 { |
| 1090 if((SensorMap[index] == SENSOR_DIGO2) || (SensorMap[index] == SENSOR_CO2) || (SensorMap[index] == SENSOR_GNSS) || (SensorMap[index] == SENSOR_SENTINEL)) | 971 if((SensorMap[index] == SENSOR_DIGO2) || (SensorMap[index] == SENSOR_CO2) || (SensorMap[index] == SENSOR_GNSS) |
| 972 || (SensorMap[index] == SENSOR_SENTINEL) || (SensorMap[index] == SENSOR_HUD)) | |
| 1091 { | 973 { |
| 1092 cntUARTSensor++; | 974 cntUARTSensor++; |
| 1093 } | 975 } |
| 1094 } | 976 } |
| 1095 externalInface_MapUartToLegacyADC(SensorMap); | 977 externalInface_MapUartToLegacyADC(SensorMap); |
| 1188 { | 1070 { |
| 1189 case SENSOR_GNSS: | 1071 case SENSOR_GNSS: |
| 1190 case SENSOR_SENTINEL: | 1072 case SENSOR_SENTINEL: |
| 1191 case SENSOR_CO2: newBaudrate = 9600; | 1073 case SENSOR_CO2: newBaudrate = 9600; |
| 1192 break; | 1074 break; |
| 1075 case SENSOR_MUX: | |
| 1193 case SENSOR_HUD: | 1076 case SENSOR_HUD: |
| 1194 case SENSOR_DIGO2: | 1077 case SENSOR_DIGO2: |
| 1195 default: newBaudrate = 19200; | 1078 default: newBaudrate = 19200; |
| 1196 break; | 1079 break; |
| 1197 } | 1080 } |
| 1225 switch(pmap[activeUartChannel + EXT_INTERFACE_MUX_OFFSET]) | 1108 switch(pmap[activeUartChannel + EXT_INTERFACE_MUX_OFFSET]) |
| 1226 { | 1109 { |
| 1227 case SENSOR_DIGO2: | 1110 case SENSOR_DIGO2: |
| 1228 case SENSOR_GNSS: | 1111 case SENSOR_GNSS: |
| 1229 case SENSOR_CO2: | 1112 case SENSOR_CO2: |
| 1113 case SENSOR_HUD: | |
| 1230 case SENSOR_SENTINEL: externalInterface_CheckBaudrate(pmap[activeUartChannel + EXT_INTERFACE_MUX_OFFSET]); | 1114 case SENSOR_SENTINEL: externalInterface_CheckBaudrate(pmap[activeUartChannel + EXT_INTERFACE_MUX_OFFSET]); |
| 1231 break; | 1115 break; |
| 1232 default: externalInterface_CheckBaudrate(SENSOR_DIGO2); | 1116 default: externalInterface_CheckBaudrate(SENSOR_DIGO2); |
| 1233 break; | 1117 break; |
| 1234 } | 1118 } |
| 1320 switch(pmap[index + EXT_INTERFACE_MUX_OFFSET]) | 1204 switch(pmap[index + EXT_INTERFACE_MUX_OFFSET]) |
| 1321 { | 1205 { |
| 1322 case SENSOR_DIGO2: uartO2_SetChannel(activeUartChannel); | 1206 case SENSOR_DIGO2: uartO2_SetChannel(activeUartChannel); |
| 1323 /* no break */ | 1207 /* no break */ |
| 1324 case SENSOR_CO2: | 1208 case SENSOR_CO2: |
| 1209 case SENSOR_HUD: | |
| 1325 case SENSOR_GNSS: externalInterface_CheckBaudrate(SENSOR_MUX); | 1210 case SENSOR_GNSS: externalInterface_CheckBaudrate(SENSOR_MUX); |
| 1326 UART_MUX_SelectAddress(activeUartChannel); | 1211 UART_MUX_SelectAddress(activeUartChannel); |
| 1327 externalInterface_CheckBaudrate(pmap[activeUartChannel + EXT_INTERFACE_MUX_OFFSET]); | 1212 externalInterface_CheckBaudrate(pmap[activeUartChannel + EXT_INTERFACE_MUX_OFFSET]); |
| 1328 break; | 1213 break; |
| 1329 default: | 1214 default: |
