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 */