int8_t rslt = BME280_OK;\r
\r
/* Sensor_0 interface over SPI with native chip select line */\r
-dev.dev_id = 0;\r
+uint8_t dev_addr = 0;\r
+\r
+dev.intf_ptr = &dev_addr;\r
dev.intf = BME280_SPI_INTF;\r
dev.read = user_spi_read;\r
dev.write = user_spi_write;\r
``` c\r
struct bme280_dev dev;\r
int8_t rslt = BME280_OK;\r
+uint8_t dev_addr = BME280_I2C_ADDR_PRIM;\r
\r
-dev.dev_id = BME280_I2C_ADDR_PRIM;\r
+dev.intf_ptr = &dev_addr;\r
dev.intf = BME280_I2C_INTF;\r
dev.read = user_i2c_read;\r
dev.write = user_i2c_write;\r
while (1) {\r
rslt = bme280_set_sensor_mode(BME280_FORCED_MODE, dev);\r
/* Wait for the measurement to complete and print data @25Hz */\r
- dev->delay_ms(req_delay);\r
+ dev->delay_ms(req_delay, dev->intf_ptr);\r
rslt = bme280_get_sensor_data(BME280_ALL, &comp_data, dev);\r
print_sensor_data(&comp_data);\r
}\r
printf("Temperature, Pressure, Humidity\r\n");\r
while (1) {\r
/* Delay while the sensor completes a measurement */\r
- dev->delay_ms(70);\r
+ dev->delay_ms(70, dev->intf_ptr);\r
rslt = bme280_get_sensor_data(BME280_ALL, &comp_data, dev);\r
print_sensor_data(&comp_data);\r
}\r
### Templates for function pointers\r
``` c\r
\r
-void user_delay_ms(uint32_t period)\r
+void user_delay_ms(uint32_t period, void *intf_ptr)\r
{\r
/*\r
* Return control or wait,\r
*/\r
}\r
\r
-int8_t user_spi_read(uint8_t dev_id, uint8_t reg_addr, uint8_t *reg_data, uint16_t len)\r
+int8_t user_spi_read(uint8_t reg_addr, uint8_t *reg_data, uint32_t len, void *intf_ptr)\r
{\r
int8_t rslt = 0; /* Return 0 for Success, non-zero for failure */\r
\r
/*\r
- * The parameter dev_id can be used as a variable to select which Chip Select pin has\r
+ * The parameter intf_ptr can be used as a variable to select which Chip Select pin has\r
* to be set low to activate the relevant device on the SPI bus\r
*/\r
\r
return rslt;\r
}\r
\r
-int8_t user_spi_write(uint8_t dev_id, uint8_t reg_addr, uint8_t *reg_data, uint16_t len)\r
+int8_t user_spi_write(uint8_t reg_addr, uint8_t *reg_data, uint32_t len, void *intf_ptr)\r
{\r
int8_t rslt = 0; /* Return 0 for Success, non-zero for failure */\r
\r
/*\r
- * The parameter dev_id can be used as a variable to select which Chip Select pin has\r
+ * The parameter intf_ptr can be used as a variable to select which Chip Select pin has\r
* to be set low to activate the relevant device on the SPI bus\r
*/\r
\r
return rslt;\r
}\r
\r
-int8_t user_i2c_read(uint8_t dev_id, uint8_t reg_addr, uint8_t *reg_data, uint16_t len)\r
+int8_t user_i2c_read(uint8_t reg_addr, uint8_t *reg_data, uint32_t len, void *intf_ptr)\r
{\r
int8_t rslt = 0; /* Return 0 for Success, non-zero for failure */\r
\r
/*\r
- * The parameter dev_id can be used as a variable to store the I2C address of the device\r
+ * The parameter intf_ptr can be used as a variable to store the I2C address of the device\r
*/\r
\r
/*\r
return rslt;\r
}\r
\r
-int8_t user_i2c_write(uint8_t dev_id, uint8_t reg_addr, uint8_t *reg_data, uint16_t len)\r
+int8_t user_i2c_write(uint8_t reg_addr, uint8_t *reg_data, uint32_t len, void *intf_ptr)\r
{\r
int8_t rslt = 0; /* Return 0 for Success, non-zero for failure */\r
\r
/*\r
- * The parameter dev_id can be used as a variable to store the I2C address of the device\r
+ * The parameter intf_ptr can be used as a variable to store the I2C address of the device\r
*/\r
\r
/*\r