[peripherals] add max slaves protection

This commit is contained in:
Gautier Hattenberger
2016-01-05 11:13:34 +01:00
parent bee9326c54
commit fcead2524e
6 changed files with 16 additions and 6 deletions
+6 -1
View File
@@ -46,6 +46,11 @@
/// Default clock: PLL with X gyro reference
#define MPU60X0_DEFAULT_CLK_SEL 1
// Default number of I2C slaves
#ifndef MPU60X0_I2C_NB_SLAVES
#define MPU60X0_I2C_NB_SLAVES 5
#endif
enum Mpu60x0ConfStatus {
MPU60X0_CONF_UNINIT,
MPU60X0_CONF_RESET,
@@ -88,7 +93,7 @@ struct Mpu60x0Config {
uint8_t nb_slaves; ///< number of used I2C slaves
uint8_t nb_slave_init; ///< number of already configured/initialized slaves
struct Mpu60x0I2cSlave slaves[5]; ///< I2C slaves
struct Mpu60x0I2cSlave slaves[MPU60X0_I2C_NB_SLAVES]; ///< I2C slaves
enum Mpu60x0MstClk i2c_mst_clk; ///< MPU I2C master clock speed
uint8_t i2c_mst_delay; ///< MPU I2C slaves delayed sample rate
};
+1 -1
View File
@@ -151,7 +151,7 @@ bool_t mpu60x0_configure_i2c_slaves(Mpu60x0ConfigSet mpu_set, void *mpu)
break;
case MPU60X0_I2C_CONF_SLAVES_CONFIGURE:
/* configure each slave until all nb_slaves are done */
if (mpu_i2c->config.nb_slave_init < mpu_i2c->config.nb_slaves) {
if (mpu_i2c->config.nb_slave_init < mpu_i2c->config.nb_slaves && mpu_i2c->config.nb_slave_init < MPU60X0_I2C_NB_SLAVES) {
// proceed to next slave if configure for current one returns true
if (mpu_i2c->config.slaves[mpu_i2c->config.nb_slave_init].configure(mpu_set, mpu)) {
mpu_i2c->config.nb_slave_init++;
+1 -1
View File
@@ -176,7 +176,7 @@ bool_t mpu60x0_configure_i2c_slaves(Mpu60x0ConfigSet mpu_set, void *mpu)
break;
case MPU60X0_SPI_CONF_SLAVES_CONFIGURE:
/* configure each slave until all nb_slaves are done */
if (mpu_spi->config.nb_slave_init < mpu_spi->config.nb_slaves) {
if (mpu_spi->config.nb_slave_init < mpu_spi->config.nb_slaves && mpu_i2c->config.nb_slave_init < MPU60X0_I2C_NB_SLAVES) {
// proceed to next slave if configure for current one returns true
if (mpu_spi->config.slaves[mpu_spi->config.nb_slave_init].configure(mpu_set, mpu)) {
mpu_spi->config.nb_slave_init++;
+6 -1
View File
@@ -47,6 +47,11 @@
/// Default clock: PLL with X gyro reference
#define MPU9250_DEFAULT_CLK_SEL 1
// Default number of I2C slaves
#ifndef MPU9250_I2C_NB_SLAVES
#define MPU9250_I2C_NB_SLAVES 5
#endif
enum Mpu9250ConfStatus {
MPU9250_CONF_UNINIT,
MPU9250_CONF_RESET,
@@ -91,7 +96,7 @@ struct Mpu9250Config {
uint8_t nb_slaves; ///< number of used I2C slaves
uint8_t nb_slave_init; ///< number of already configured/initialized slaves
struct Mpu9250I2cSlave slaves[5]; ///< I2C slaves
struct Mpu9250I2cSlave slaves[MPU9250_I2C_NB_SLAVES]; ///< I2C slaves
enum Mpu9250MstClk i2c_mst_clk; ///< MPU I2C master clock speed
uint8_t i2c_mst_delay; ///< MPU I2C slaves delayed sample rate
};
+1 -1
View File
@@ -184,7 +184,7 @@ bool_t mpu9250_configure_i2c_slaves(Mpu9250ConfigSet mpu_set, void *mpu)
break;
case MPU9250_I2C_CONF_SLAVES_CONFIGURE:
/* configure each slave until all nb_slaves are done */
if (mpu_i2c->config.nb_slave_init < mpu_i2c->config.nb_slaves) {
if (mpu_i2c->config.nb_slave_init < mpu_i2c->config.nb_slaves && mpu_i2c->config.nb_slave_init < MPU9250_I2C_NB_SLAVES) {
// proceed to next slave if configure for current one returns true
if (mpu_i2c->config.slaves[mpu_i2c->config.nb_slave_init].configure(mpu_set, mpu)) {
mpu_i2c->config.nb_slave_init++;
+1 -1
View File
@@ -173,7 +173,7 @@ bool_t mpu9250_configure_i2c_slaves(Mpu9250ConfigSet mpu_set, void *mpu)
break;
case MPU9250_SPI_CONF_SLAVES_CONFIGURE:
/* configure each slave until all nb_slaves are done */
if (mpu_spi->config.nb_slave_init < mpu_spi->config.nb_slaves) {
if (mpu_spi->config.nb_slave_init < mpu_spi->config.nb_slaves && mpu_i2c->config.nb_slave_init < MPU9250_I2C_NB_SLAVES) {
// proceed to next slave if configure for current one returns true
if (mpu_spi->config.slaves[mpu_spi->config.nb_slave_init].configure(mpu_set, mpu)) {
mpu_spi->config.nb_slave_init++;