mirror of
https://github.com/paparazzi/paparazzi.git
synced 2026-06-05 06:54:49 +08:00
[peripherals] add max slaves protection
This commit is contained in:
@@ -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
|
||||
};
|
||||
|
||||
@@ -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++;
|
||||
|
||||
@@ -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++;
|
||||
|
||||
@@ -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
|
||||
};
|
||||
|
||||
@@ -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++;
|
||||
|
||||
@@ -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++;
|
||||
|
||||
Reference in New Issue
Block a user