#ifndef BMP_H #define BMP_H #include "hardware/i2c.h" #include #define BMP_ADDR 0x77 static const uint8_t BMP_STATUS = 0x03; static const uint8_t BMP_DATA = 0x04; static const uint8_t BMP_CAL_ADDR = 0x31; #define BMP_CAL_LEN 21 // instead of a bunch of defines enum { PAR_T1, PAR_T2, PAR_T3, PAR_P1, PAR_P2, PAR_P3, PAR_P4, PAR_P5, PAR_P6, PAR_P7, PAR_P8, PAR_P9, PAR_P10, PAR_P11 }; // raw calibration data typedef struct { uint16_t NVM_PAR_T1; uint16_t NVM_PAR_T2; int8_t NVM_PAR_T3; int16_t NVM_PAR_P1; int16_t NVM_PAR_P2; int8_t NVM_PAR_P3; int8_t NVM_PAR_P4; uint16_t NVM_PAR_P5; uint16_t NVM_PAR_P6; int8_t NVM_PAR_P7; int8_t NVM_PAR_P8; int16_t NVM_PAR_P9; int8_t NVM_PAR_P10; int8_t NVM_PAR_P11; } bmp_cal_data_t; // floating point conversions extern float bmp_cal_data_fp[15]; int getBMPData(i2c_inst_t *i2c, float *temperature, float *pressure); int getBMPCalData(i2c_inst_t *i2c, bmp_cal_data_t *cal); int initBMP(i2c_inst_t *i2c); #endif // BMP_H