view Small_CPU/Inc/externalInterface.h @ 730:9c65d226f4f6

Update sensor menu support for automatic sensor detection: In previous version the three ppo2 sensor slots were always displayed with digital sensor hard mapped to channel 0 in case a digital sensor is available. The new function is able to merge the available sensors into one view and can hide unused slots.
author Ideenmodellierer
date Sat, 14 Jan 2023 20:49:40 +0100
parents d646a0f724a7
children 2a801cfe23ab
line wrap: on
line source

/**
  ******************************************************************************
  * @file    externalInterface.h
  * @author  heinrichs weikamp gmbh
  * @version V0.0.1
  * @date    07-Nov-2020
  * @brief	 Interface functionality to proceed external analog signal via i2c connection
  *
  @verbatim
  ==============================================================================
                        ##### How to use #####
  ==============================================================================
  @endverbatim
  ******************************************************************************
  * @attention
  *
  * <h2><center>&copy; COPYRIGHT(c) 2014 heinrichs weikamp</center></h2>
  *
  ******************************************************************************
  */

/* Define to prevent recursive inclusion -------------------------------------*/
#ifndef EXTERNAL_INTERFACE_H
#define EXTERNAL_INTERFACE_H

#ifdef __cplusplus
 extern "C" {
#endif

/* Includes ------------------------------------------------------------------*/

#define MAX_ADC_CHANNEL		(3u)		/* number of channels to be read */
#define EXTERNAL_ADC_NO_DATA	0xFF

#define EXT33V_CONTROL_PIN				GPIO_PIN_7	/* PortC */

#define MIN_ADC_VOLTAGE_MV	(5.0f)		/* miminal voltage to rate an ADC channel as active */


 typedef enum
 {
    DETECTION_OFF = 0,		/* no detection requested */
	DETECTION_INIT,			/* prepare external interface for operation if not already activated */
	DETECTION_ANALOG,		/* check ADC channels for connected sensors */
	DETECTION_DIGO2,		/* check UART channel for connected DigO2 sensor */
	DETECTION_CO2,			/* check UART channel for connected CO2 sensor */
	DETECTION_DONE
 } externalInterfaceAutoDetect_t;




void externalInterface_Init(void);
void externalInterface_InitPower33(void);
uint8_t externalInterface_StartConversion(uint8_t channel);
uint8_t externalInterface_ReadAndSwitch();
float externalInterface_CalculateADCValue(uint8_t channel);
float getExternalInterfaceChannel(uint8_t channel);
uint8_t setExternalInterfaceChannel(uint8_t channel, float value);
void externalInterface_SwitchPower33(uint8_t state);
void externalInterface_SwitchADC(uint8_t state);
void externalInterface_SwitchUART(uint8_t protocol);
uint8_t externalInterface_isEnabledPower33(void);
uint8_t externalInterface_isEnabledADC(void);
uint8_t externalInterface_GetUARTProtocol();

void externalInterface_SetCO2Value(uint16_t CO2_ppm);
void externalInterface_SetCO2SignalStrength(uint16_t LED_qa);
uint16_t externalInterface_GetCO2Value(void);
uint16_t externalInterface_GetCO2SignalStrength(void);
void externalInterface_SetCO2State(uint16_t state);
uint16_t externalInterface_GetCO2State(void);
uint8_t externalInterface_GetSensorData(uint8_t* pDataStruct);
void externalInterface_SetSensorData(uint8_t dataId, uint8_t* pDataStruct);
void externalInface_SetSensorMap(uint8_t* pMap);
uint8_t* externalInterface_GetSensorMapPointer(void);
void externalInterface_AutodetectSensor(void);
void externalInterface_ExecuteCmd(uint16_t Cmd);

#endif /* EXTERNAL_INTERFACE_H */