minor change

This commit is contained in:
Gunar Schorcht 2018-01-05 18:31:24 +01:00
parent d17d2a9adb
commit df0190026b
2 changed files with 16 additions and 13 deletions

View file

@ -306,7 +306,7 @@ bme680_sensor_t* bme680_init_sensor(uint8_t bus, uint8_t addr, uint8_t cs)
return NULL; return NULL;
} }
if (!addr) if (!addr)
spi_semaphore_init(); spi_semaphore_init(dev);
// reset the sensor // reset the sensor
if (!bme680_reset(dev)) if (!bme680_reset(dev))
@ -1278,14 +1278,14 @@ static bool bme680_spi_read(bme680_sensor_t* dev, uint8_t reg, uint8_t *data, ui
return false; return false;
} }
spi_semaphore_take (); spi_semaphore_take (dev);
// set mem page first // set mem page first
if (!bme680_spi_set_mem_page (dev, reg)) if (!bme680_spi_set_mem_page (dev, reg))
{ {
spi_semaphore_give (dev);
error_dev ("Error on read from SPI slave on bus 1. Could not set mem page.", error_dev ("Error on read from SPI slave on bus 1. Could not set mem page.",
__FUNCTION__, dev); __FUNCTION__, dev);
spi_semaphore_give ();
return false; return false;
} }
@ -1302,17 +1302,17 @@ static bool bme680_spi_read(bme680_sensor_t* dev, uint8_t reg, uint8_t *data, ui
if (!spi_transfer_pf (dev->bus, dev->cs, mosi, miso, len+1)) if (!spi_transfer_pf (dev->bus, dev->cs, mosi, miso, len+1))
{ {
spi_semaphore_give (dev);
error_dev ("Could not read data from SPI", __FUNCTION__, dev); error_dev ("Could not read data from SPI", __FUNCTION__, dev);
dev->error_code |= BME680_SPI_READ_FAILED; dev->error_code |= BME680_SPI_READ_FAILED;
spi_semaphore_give ();
return false; return false;
} }
spi_semaphore_give ();
// shift data one by left, first byte received while sending register address is invalid // shift data one by left, first byte received while sending register address is invalid
for (int i=0; i < len; i++) for (int i=0; i < len; i++)
data[i] = miso[i+1]; data[i] = miso[i+1];
spi_semaphore_give (dev);
#ifdef BME680_DEBUG_LEVEL_2 #ifdef BME680_DEBUG_LEVEL_2
printf("BME680 %s: read the following bytes: ", __FUNCTION__); printf("BME680 %s: read the following bytes: ", __FUNCTION__);
printf("%0x ", reg); printf("%0x ", reg);
@ -1340,14 +1340,15 @@ static bool bme680_spi_write(bme680_sensor_t* dev, uint8_t reg, uint8_t *data, u
return false; return false;
} }
spi_semaphore_take (); if (reg != BME680_REG_STATUS)
spi_semaphore_take (dev);
// set mem page first if not mem page register is used // set mem page first if not mem page register is used
if (reg != BME680_REG_STATUS && !bme680_spi_set_mem_page (dev, reg)) if (reg != BME680_REG_STATUS && !bme680_spi_set_mem_page (dev, reg))
{ {
error_dev ("Error on write from SPI slave on bus 1. Could not set mem page.", error_dev ("Error on write from SPI slave on bus 1. Could not set mem page.",
__FUNCTION__, dev); __FUNCTION__, dev);
spi_semaphore_give (); spi_semaphore_give (dev);
return false; return false;
} }
@ -1369,12 +1370,14 @@ static bool bme680_spi_write(bme680_sensor_t* dev, uint8_t reg, uint8_t *data, u
if (!spi_transfer_pf (dev->bus, dev->cs, mosi, NULL, len+1)) if (!spi_transfer_pf (dev->bus, dev->cs, mosi, NULL, len+1))
{ {
if (reg != BME680_REG_STATUS)
spi_semaphore_give (dev);
error_dev ("Could not write data to SPI.", __FUNCTION__, dev); error_dev ("Could not write data to SPI.", __FUNCTION__, dev);
dev->error_code |= BME680_SPI_WRITE_FAILED; dev->error_code |= BME680_SPI_WRITE_FAILED;
spi_semaphore_give ();
return false; return false;
} }
spi_semaphore_give (); if (reg != BME680_REG_STATUS)
spi_semaphore_give (dev);
return true; return true;
} }

View file

@ -68,9 +68,9 @@
// platform specific definitions // platform specific definitions
#define spi_semaphore_init() #define spi_semaphore_init(d)
#define spi_semaphore_take() #define spi_semaphore_take(d)
#define spi_semaphore_give() #define spi_semaphore_give(d)
// platform specific SPI functions // platform specific SPI functions