|  | /* | 
|  | * Copyright (c) 2020 Sven Herrmann | 
|  | * | 
|  | * SPDX-License-Identifier: Apache-2.0 | 
|  | */ | 
|  |  | 
|  | #ifndef ZEPHYR_DRIVERS_SENSOR_MPR_CONFIGURATION_H_ | 
|  | #define ZEPHYR_DRIVERS_SENSOR_MPR_CONFIGURATION_H_ | 
|  |  | 
|  | /* | 
|  | * Pressure Range | 
|  | * | 
|  | * MIN is always 0 | 
|  | */ | 
|  | #define MPR_P_MIN (0) | 
|  |  | 
|  | #if defined(CONFIG_MPR_PRESSURE_RANGE_0001) | 
|  | #define MPR_P_MAX (1) | 
|  |  | 
|  | #elif defined(CONFIG_MPR_PRESSURE_RANGE_01_6) | 
|  | #define MPR_P_MAX (1.6) | 
|  |  | 
|  | #elif defined(CONFIG_MPR_PRESSURE_RANGE_02_5) | 
|  | #define MPR_P_MAX (2.5) | 
|  |  | 
|  | #elif defined(CONFIG_MPR_PRESSURE_RANGE_0015) | 
|  | #define MPR_P_MAX (15) | 
|  |  | 
|  | #elif defined(CONFIG_MPR_PRESSURE_RANGE_0025) | 
|  | #define MPR_P_MAX (25) | 
|  |  | 
|  | #elif defined(CONFIG_MPR_PRESSURE_RANGE_0030) | 
|  | #define MPR_P_MAX (30) | 
|  |  | 
|  | #elif defined(CONFIG_MPR_PRESSURE_RANGE_0060) | 
|  | #define MPR_P_MAX (60) | 
|  |  | 
|  | #elif defined(CONFIG_MPR_PRESSURE_RANGE_0100) | 
|  | #define MPR_P_MAX (100) | 
|  |  | 
|  | #elif defined(CONFIG_MPR_PRESSURE_RANGE_0160) | 
|  | #define MPR_P_MAX (160) | 
|  |  | 
|  | #elif defined(CONFIG_MPR_PRESSURE_RANGE_0250) | 
|  | #define MPR_P_MAX (250) | 
|  |  | 
|  | #elif defined(CONFIG_MPR_PRESSURE_RANGE_0400) | 
|  | #define MPR_P_MAX (400) | 
|  |  | 
|  | #elif defined(CONFIG_MPR_PRESSURE_RANGE_0600) | 
|  | #define MPR_P_MAX (600) | 
|  |  | 
|  | #else | 
|  | #error "MPR: Unknown pressure range." | 
|  | #endif | 
|  |  | 
|  | /* | 
|  | * Pressure Unit | 
|  | */ | 
|  | #if defined(CONFIG_MPR_PRESSURE_UNIT_P) | 
|  | /* psi to kPa conversion factor: 6.894757 * 10^6 */ | 
|  | #define MPR_CONVERSION_FACTOR (6894757) | 
|  |  | 
|  | #elif defined(CONFIG_MPR_PRESSURE_UNIT_K) | 
|  | /* kPa to kPa conversion factor: 1 * 10^6 */ | 
|  | #define MPR_CONVERSION_FACTOR (1000000) | 
|  |  | 
|  | #elif defined(CONFIG_MPR_PRESSURE_UNIT_B) | 
|  | /* bar to kPa conversion factor: 100 * 10^6 */ | 
|  | #define MPR_CONVERSION_FACTOR (100000000) | 
|  |  | 
|  | #elif defined(CONFIG_MPR_PRESSURE_UNIT_M) | 
|  | /* mbar to kPa conversion factor: 0.1 * 10^6 */ | 
|  | #define MPR_CONVERSION_FACTOR (100000) | 
|  |  | 
|  | #else | 
|  | #error "MPR: Unknown pressure unit." | 
|  | #endif | 
|  |  | 
|  | /* | 
|  | * Transfer function | 
|  | */ | 
|  | #if defined(CONFIG_MPR_TRANSFER_FUNCTION_A) | 
|  | #define MPR_OUTPUT_MIN (0x19999A) /* 10% of 2^24 */ | 
|  | #define MPR_OUTPUT_MAX (0xE66666) /* 90% of 2^24 */ | 
|  | #elif defined(CONFIG_MPR_TRANSFER_FUNCTION_B) | 
|  | #define MPR_OUTPUT_MIN (0x66666) /* 2.5% of 2^24 */ | 
|  | #define MPR_OUTPUT_MAX (0x399999) /* 22.5% of 2^24 */ | 
|  | #elif defined(CONFIG_MPR_TRANSFER_FUNCTION_C) | 
|  | #define MPR_OUTPUT_MIN (0x333333) /* 20% of 2^24 */ | 
|  | #define MPR_OUTPUT_MAX (0xCCCCCC) /* 80% of 2^24 */ | 
|  | #else | 
|  | #error "MPR: Unknown pressure reference." | 
|  | #endif | 
|  |  | 
|  | #define MPR_OUTPUT_RANGE (MPR_OUTPUT_MAX - MPR_OUTPUT_MIN) | 
|  |  | 
|  | #endif /* ZEPHYR_DRIVERS_SENSOR_MPR_CONFIGURATION_H_ */ |