La estructura bmp280_dev se define en bmp280_defs.h
Los miembros reales son
bmp280_com_fptr_t read;
bmp280_com_fptr_t write;
bmp280_delay_fptr_t delay_ms;
Si busca más en ese archivo la palabra clave
bmp280_com_fptr_t
encontrarás esta declaración
typedef int8_t (*bmp280_com_fptr_t)(uint8_t dev_id, uint8_t reg_addr,
uint8_t *data, uint16_t len);
que permite que las funciones que solicitas sean punteros a función.
Aquí hay un buen tutorial sobre punteros de función.
Programas como datos: punteros de función
además, es esencial crear estas funciones y punteros de función, e inicializar un valor de retorno predeterminado de rslt=BMP280_OK.
Aquí hay un ejemplo corto de mi propio código. Tienes que implantar rutinas para obtener un correcto control de errores-
int8_t user_i2c_read(uint8_t dev_id, uint8_t reg_addr,
uint8_t*reg_data, uint16_t len)
{
printf("\nuser_i2c_read\n"); //just to see that the function executes
int8_t rslt = BMP280_OK;
// implent more code here, to a start you can print out the
// variables.and check that they are are 'set'
if (rslt != BMP280_OK)
{
rslt = BMP280_E_COMM_FAIL;
}
return rslt;
}
Al igual que para user_i2c_write
y
void user_delay_ms(uint32_t ms){
usleep(ms);
}
Las funciones de Thoose se llaman desde bmp280.c.
También - cuando eres de ejecución principal
rslt = bmp280_init(&bmp);
Sin crear esas funciones, el bmp280_init nunca le dará los valores de retorno correctos.
También vale la pena mencionar que no es necesario nombrar las funciones a user_blabla. Puede nombrarlos para lo que desee, siempre que imitalice los punteros a funciones con el mismo nombre. Eso da: puede reinicializar las funciones-puntos con otros nombres y, por lo tanto, hacer la llamada de lectura, la llamada de escritura, etcétera para llamar a otras funciones que antes.
Puede que tenga algunas cosas en esto para no ser 100% exactas, porque hace unas horas, después de trabajar muchas horas con esto, lo descubrí yo mismo, y he pasado muchas horas para conseguirlo trabajando. Y, naturalmente, no hablo inglés, así que ahí tenemos languge-barriar.
Una última sugerencia, el subproceso de problemas del repositorio de BoschSensortec / BMP280_driver tiene un código que vale la pena ver.
BoschSensortec / BMP280_driver issuses