554
|
1 /**
|
|
2 ******************************************************************************
|
|
3 * @file externalInterface.h
|
|
4 * @author heinrichs weikamp gmbh
|
|
5 * @version V0.0.1
|
|
6 * @date 07-Nov-2020
|
|
7 * @brief Interface functionality to proceed external analog signal via i2c connection
|
|
8 *
|
|
9 @verbatim
|
|
10 ==============================================================================
|
|
11 ##### How to use #####
|
|
12 ==============================================================================
|
|
13 @endverbatim
|
|
14 ******************************************************************************
|
|
15 * @attention
|
|
16 *
|
|
17 * <h2><center>© COPYRIGHT(c) 2014 heinrichs weikamp</center></h2>
|
|
18 *
|
|
19 ******************************************************************************
|
|
20 */
|
|
21
|
|
22 /* Define to prevent recursive inclusion -------------------------------------*/
|
|
23 #ifndef EXTERNAL_INTERFACE_H
|
|
24 #define EXTERNAL_INTERFACE_H
|
|
25
|
|
26 #ifdef __cplusplus
|
|
27 extern "C" {
|
|
28 #endif
|
|
29
|
|
30 /* Includes ------------------------------------------------------------------*/
|
742
|
31 #include "configuration.h"
|
794
|
32 #include "data_central.h"
|
|
33 #include "data_exchange.h"
|
554
|
34
|
|
35 #define MAX_ADC_CHANNEL (3u) /* number of channels to be read */
|
781
|
36 #define MAX_MUX_CHANNEL (4u) /* number of channels provided by the UART multiplexer */
|
554
|
37 #define EXTERNAL_ADC_NO_DATA 0xFF
|
|
38
|
662
|
39 #define EXT33V_CONTROL_PIN GPIO_PIN_7 /* PortC */
|
|
40
|
729
d646a0f724a7
Added auto detection functionality for sensors connected to the external interface:
Ideenmodellierer
diff
changeset
|
41 #define MIN_ADC_VOLTAGE_MV (5.0f) /* miminal voltage to rate an ADC channel as active */
|
d646a0f724a7
Added auto detection functionality for sensors connected to the external interface:
Ideenmodellierer
diff
changeset
|
42
|
794
|
43 #define COMMON_SENSOR_STATE_INIT (0x0u) /* All individual state definitions shall start with a INIT state = 0 */
|
798
|
44 #define COMMON_SENSOR_STATE_INVALID (0xFFu) /* All individual state definitions shall not use 0xFF for operation control */
|
729
d646a0f724a7
Added auto detection functionality for sensors connected to the external interface:
Ideenmodellierer
diff
changeset
|
45
|
839
|
46
|
|
47 enum /* Definitions for supported UART protocols */
|
|
48 {
|
|
49 EXT_INTERFACE_UART_OFF = 0,
|
|
50 EXT_INTERFACE_UART_CO2,
|
|
51 EXT_INTERFACE_UART_SENTINEL,
|
918
|
52 EXT_INTERFACE_UART_O2,
|
|
53 EXT_INTERFACE_UART_GNSS
|
839
|
54 };
|
|
55
|
|
56
|
729
d646a0f724a7
Added auto detection functionality for sensors connected to the external interface:
Ideenmodellierer
diff
changeset
|
57 typedef enum
|
d646a0f724a7
Added auto detection functionality for sensors connected to the external interface:
Ideenmodellierer
diff
changeset
|
58 {
|
d646a0f724a7
Added auto detection functionality for sensors connected to the external interface:
Ideenmodellierer
diff
changeset
|
59 DETECTION_OFF = 0, /* no detection requested */
|
d646a0f724a7
Added auto detection functionality for sensors connected to the external interface:
Ideenmodellierer
diff
changeset
|
60 DETECTION_INIT, /* prepare external interface for operation if not already activated */
|
731
|
61 DETECTION_START,
|
|
62 DETECTION_ANALOG1, /* check ADC channels for connected sensors */
|
|
63 DETECTION_ANALOG2,
|
779
|
64 DETECTION_UARTMUX, /* check if a uart multiplexer is present */
|
|
65 DETECTION_DIGO2_0, /* check UART channel for connected DigO2 sensor */
|
|
66 DETECTION_DIGO2_1,
|
|
67 DETECTION_DIGO2_2,
|
781
|
68 DETECTION_DIGO2_3,
|
742
|
69 #ifdef ENABLE_CO2_SUPPORT
|
798
|
70 DETECTION_CO2_0, /* check UART channel for connected CO2 sensor */
|
|
71 DETECTION_CO2_1,
|
|
72 DETECTION_CO2_2,
|
|
73 DETECTION_CO2_3,
|
742
|
74 #endif
|
918
|
75 #ifdef ENABLE_GNSS_SUPPORT
|
|
76 DETECTION_GNSS_0, /* check UART channel for connected gnss sensor */
|
|
77 DETECTION_GNSS_1,
|
|
78 DETECTION_GNSS_2,
|
|
79 DETECTION_GNSS_3,
|
|
80 #endif
|
742
|
81 #ifdef ENABLE_SENTINEL_MODE
|
|
82 DETECTION_SENTINEL, /* check UART channel for connected Sentinel */
|
|
83 DETECTION_SENTINEL2,
|
|
84 #endif
|
729
d646a0f724a7
Added auto detection functionality for sensors connected to the external interface:
Ideenmodellierer
diff
changeset
|
85 DETECTION_DONE
|
d646a0f724a7
Added auto detection functionality for sensors connected to the external interface:
Ideenmodellierer
diff
changeset
|
86 } externalInterfaceAutoDetect_t;
|
d646a0f724a7
Added auto detection functionality for sensors connected to the external interface:
Ideenmodellierer
diff
changeset
|
87
|
d646a0f724a7
Added auto detection functionality for sensors connected to the external interface:
Ideenmodellierer
diff
changeset
|
88
|
d646a0f724a7
Added auto detection functionality for sensors connected to the external interface:
Ideenmodellierer
diff
changeset
|
89
|
d646a0f724a7
Added auto detection functionality for sensors connected to the external interface:
Ideenmodellierer
diff
changeset
|
90
|
554
|
91 void externalInterface_Init(void);
|
662
|
92 void externalInterface_InitPower33(void);
|
738
|
93 void externalInterface_InitDatastruct(void);
|
554
|
94 uint8_t externalInterface_StartConversion(uint8_t channel);
|
|
95 uint8_t externalInterface_ReadAndSwitch();
|
|
96 float externalInterface_CalculateADCValue(uint8_t channel);
|
|
97 float getExternalInterfaceChannel(uint8_t channel);
|
691
|
98 uint8_t setExternalInterfaceChannel(uint8_t channel, float value);
|
662
|
99 void externalInterface_SwitchPower33(uint8_t state);
|
691
|
100 void externalInterface_SwitchADC(uint8_t state);
|
704
|
101 void externalInterface_SwitchUART(uint8_t protocol);
|
691
|
102 uint8_t externalInterface_isEnabledPower33(void);
|
|
103 uint8_t externalInterface_isEnabledADC(void);
|
794
|
104 uint8_t externalInterface_GetUARTProtocol(void);
|
|
105 void externalInterface_HandleUART(void);
|
|
106 void externalInterface_SetCO2Scale(float CO2Scale);
|
|
107 float externalInterface_GetCO2Scale(void);
|
662
|
108 void externalInterface_SetCO2Value(uint16_t CO2_ppm);
|
|
109 void externalInterface_SetCO2SignalStrength(uint16_t LED_qa);
|
|
110 uint16_t externalInterface_GetCO2Value(void);
|
|
111 uint16_t externalInterface_GetCO2SignalStrength(void);
|
|
112 void externalInterface_SetCO2State(uint16_t state);
|
|
113 uint16_t externalInterface_GetCO2State(void);
|
779
|
114 uint8_t externalInterface_GetSensorData(uint8_t sensorId, uint8_t* pDataStruct);
|
786
|
115 void externalInterface_SetSensorData(uint8_t sensorId, uint8_t* pDataStruct);
|
729
d646a0f724a7
Added auto detection functionality for sensors connected to the external interface:
Ideenmodellierer
diff
changeset
|
116 void externalInface_SetSensorMap(uint8_t* pMap);
|
731
|
117 uint8_t* externalInterface_GetSensorMapPointer(uint8_t finalMap);
|
729
d646a0f724a7
Added auto detection functionality for sensors connected to the external interface:
Ideenmodellierer
diff
changeset
|
118 void externalInterface_AutodetectSensor(void);
|
662
|
119 void externalInterface_ExecuteCmd(uint16_t Cmd);
|
554
|
120
|
794
|
121 uint8_t externalInterface_GetActiveUartSensor(void);
|
|
122 void externalInterface_SetSensorState(uint8_t sensorIdx, uint8_t state);
|
|
123 uint8_t externalInterface_GetSensorState(uint8_t sensorIdx);
|
|
124
|
|
125
|
|
126
|
554
|
127 #endif /* EXTERNAL_INTERFACE_H */
|