Library for use with VL53L1X, intended to represent the Proximity sensor expansion board with the same name.
Dependencies: VL53L1X_mbed
Dependents: HelloWorld_53L1A1 VL53L1A1_Simple_Ranging_With_One_Device VL53L1A1_Simple_Ranging_With_All_Devices VL53L1X_Ranging_With_Multiple_Devices_MbedOS ... more
Revision 15:44e6c9013bff, committed 2017-08-08
- Comitter:
- johnAlexander
- Date:
- Tue Aug 08 14:41:03 2017 +0000
- Parent:
- 14:8320b5ff96fa
- Child:
- 20:cb95ef8a3508
- Commit message:
- Update references in all board components to allow continued use of DevI2C from X_Nucleo_Common.
Changed in this revision
--- a/Components/Display/Display_class.h Mon Aug 07 14:30:21 2017 +0000
+++ b/Components/Display/Display_class.h Tue Aug 08 14:41:03 2017 +0000
@@ -324,33 +324,33 @@
class Display
{
private:
- Stmpe1600 &stmpe1600_exp0;
- Stmpe1600 &stmpe1600_exp1;
+ Stmpe1600 *stmpe1600_exp0;
+ Stmpe1600 *stmpe1600_exp1;
public:
/** Constructor
* @param[in] &stmpe_1600 device handler to be used for display control
*/
- Display(Stmpe1600 &stmpe_1600_exp0, Stmpe1600 &stmpe_1600_exp1) : stmpe1600_exp0(stmpe_1600_exp0),
- stmpe1600_exp1(stmpe_1600_exp1)
+ Display(Stmpe1600 &stmpe_1600_exp0, Stmpe1600 &stmpe_1600_exp1) : stmpe1600_exp0(&stmpe_1600_exp0),
+ stmpe1600_exp1(&stmpe_1600_exp1)
{
uint16_t expander_data;
// detect the extenders
- stmpe1600_exp0.read_16bit_reg(0x00, &expander_data);
+ stmpe1600_exp0->read_16bit_reg(0x00, &expander_data);
// if (ExpanderData != 0x1600) {/* log - failed to find expander exp0 */ }
- stmpe1600_exp1.read_16bit_reg(0x00, &expander_data);
+ stmpe1600_exp1->read_16bit_reg(0x00, &expander_data);
// if (ExpanderData != 0x1600) {/* log - failed to find expander exp1 */ }
// configure all necessary GPIO pins as outputs
expander_data = 0xFFFF;
- stmpe1600_exp0.write_16bit_reg(GPDR, &expander_data);
+ stmpe1600_exp0->write_16bit_reg(GPDR, &expander_data);
expander_data = 0xBFFF; // leave bit 14 as an input, for the pushbutton, PB1.
- stmpe1600_exp1.write_16bit_reg(GPDR, &expander_data);
+ stmpe1600_exp1->write_16bit_reg(GPDR, &expander_data);
// shut down all segment and all device
expander_data = 0x7F + (0x7F << 7);
- stmpe1600_exp0.write_16bit_reg(GPSR, &expander_data);
- stmpe1600_exp1.write_16bit_reg(GPSR, &expander_data);
+ stmpe1600_exp0->write_16bit_reg(GPSR, &expander_data);
+ stmpe1600_exp1->write_16bit_reg(GPSR, &expander_data);
}
/*** Interface Methods ***/
@@ -386,10 +386,10 @@
// ordered low-byte/high-byte!
cur_io_val.bytes[1] |= 0xC0; // ensure highest bits are high, as these are xshutdown pins for left & right sensors!
expander_data = (cur_io_val.bytes[1] << 8) + cur_io_val.bytes[0];
- stmpe1600_exp0.write_16bit_reg(GPSR, &expander_data);
+ stmpe1600_exp0->write_16bit_reg(GPSR, &expander_data);
cur_io_val.bytes[3] |= 0x80; // ensure highest bit is high, as this is xshutdown pin on central sensor!
expander_data = (cur_io_val.bytes[3] << 8) + cur_io_val.bytes[2];
- stmpe1600_exp1.write_16bit_reg(GPSR, &expander_data);
+ stmpe1600_exp1->write_16bit_reg(GPSR, &expander_data);
}
@@ -398,8 +398,8 @@
uint16_t expander_data;
expander_data = 0x7F + (0x7F << 7);
- stmpe1600_exp0.write_16bit_reg(GPSR, &expander_data);
- stmpe1600_exp1.write_16bit_reg(GPSR, &expander_data);
+ stmpe1600_exp0->write_16bit_reg(GPSR, &expander_data);
+ stmpe1600_exp1->write_16bit_reg(GPSR, &expander_data);
}
};
--- a/Components/STMPE1600/stmpe1600_class.h Mon Aug 07 14:30:21 2017 +0000
+++ b/Components/STMPE1600/stmpe1600_class.h Tue Aug 08 14:41:03 2017 +0000
@@ -103,18 +103,18 @@
* @param[in] lvl the default ot pin level
*/
Stmpe1600DigiOut(DevI2C &i2c, ExpGpioPinName out_pin_name, uint8_t dev_addr = STMPE1600_DEF_DEVICE_ADDRESS,
- bool lvl = STMPE1600_DEF_DIGIOUT_LVL) : dev_i2c(i2c), exp_dev_addr(dev_addr), exp_pin_name(out_pin_name)
+ bool lvl = STMPE1600_DEF_DIGIOUT_LVL) : dev_i2c(&i2c), exp_dev_addr(dev_addr), exp_pin_name(out_pin_name)
{
uint8_t data[2];
if (exp_pin_name == NOT_CON)
return;
/* set the exp_pin_name as output */
- dev_i2c.i2c_read(data, exp_dev_addr, GPDR_0_7, 1);
- dev_i2c.i2c_read(&data[1], exp_dev_addr, GPDR_8_15, 1);
- * (uint16_t *) data = * (uint16_t *) data | (1 << (uint16_t) exp_pin_name); // set gpio as out
- dev_i2c.i2c_write(data, exp_dev_addr, GPDR_0_7, 1);
- dev_i2c.i2c_write(&data[1], exp_dev_addr, GPDR_8_15, 1);
+ dev_i2c->i2c_read(data, exp_dev_addr, GPDR_0_7, 1);
+ dev_i2c->i2c_read(&data[1], exp_dev_addr, GPDR_8_15, 1);
+ *(uint16_t *)data = *(uint16_t *)data | (1 << (uint16_t)exp_pin_name); // set gpio as out
+ dev_i2c->i2c_write(data, exp_dev_addr, GPDR_0_7, 1);
+ dev_i2c->i2c_write(&data[1], exp_dev_addr, GPDR_8_15, 1);
write(lvl);
}
@@ -130,11 +130,11 @@
if (exp_pin_name == NOT_CON)
return;
/* set the exp_pin_name state to lvl */
- dev_i2c.i2c_read(data, exp_dev_addr, GPSR_0_7, 2);
- * (uint16_t *) data = * (uint16_t *) data & (uint16_t)(~(1 << (uint16_t) exp_pin_name)); // set pin mask
+ dev_i2c->i2c_read(data, exp_dev_addr, GPSR_0_7, 2);
+ *(uint16_t *)data = *(uint16_t *)data & (uint16_t)(~(1 << (uint16_t)exp_pin_name)); // set pin mask
if (lvl)
- * (uint16_t *) data = * (uint16_t *) data | (uint16_t)(1 << (uint16_t) exp_pin_name);
- dev_i2c.i2c_write(data, exp_dev_addr, GPSR_0_7, 2);
+ *(uint16_t *)data = *(uint16_t *)data | (uint16_t)(1 << (uint16_t)exp_pin_name);
+ dev_i2c->i2c_write(data, exp_dev_addr, GPSR_0_7, 2);
}
/**
@@ -147,7 +147,7 @@
}
private:
- DevI2C &dev_i2c;
+ DevI2C *dev_i2c;
uint8_t exp_dev_addr;
ExpGpioPinName exp_pin_name;
};
@@ -164,7 +164,7 @@
* @param[in] DevAddr the stmpe1600 I2C device addres (deft STMPE1600_DEF_DEVICE_ADDRESS)
*/
Stmpe1600DigiIn(DevI2C &i2c, ExpGpioPinName in_pin_name,
- uint8_t dev_addr = STMPE1600_DEF_DEVICE_ADDRESS) : dev_i2c(i2c), exp_dev_addr(dev_addr),
+ uint8_t dev_addr = STMPE1600_DEF_DEVICE_ADDRESS) : dev_i2c(&i2c), exp_dev_addr(dev_addr),
exp_pin_name(in_pin_name)
{
uint8_t data[2];
@@ -172,9 +172,9 @@
if (exp_pin_name == NOT_CON)
return;
/* set the exp_pin_name as input pin direction */
- dev_i2c.i2c_read(data, exp_dev_addr, GPDR_0_7, 2);
- * (uint16_t *) data = * (uint16_t *) data & (uint16_t)(~(1 << (uint16_t) exp_pin_name)); // set gpio as in
- dev_i2c.i2c_write(data, exp_dev_addr, GPDR_0_7, 2);
+ dev_i2c->i2c_read(data, exp_dev_addr, GPDR_0_7, 2);
+ *(uint16_t *)data = *(uint16_t *)data & (uint16_t)(~(1 << (uint16_t)exp_pin_name)); // set gpio as in
+ dev_i2c->i2c_write(data, exp_dev_addr, GPDR_0_7, 2);
}
/**
@@ -188,8 +188,8 @@
if (exp_pin_name == NOT_CON)
return false;
/* read the exp_pin_name */
- dev_i2c.i2c_read(data, exp_dev_addr, GPMR_0_7, 2);
- * (uint16_t *) data = * (uint16_t *) data & (uint16_t)(1 << (uint16_t) exp_pin_name); // mask the in gpio
+ dev_i2c->i2c_read(data, exp_dev_addr, GPMR_0_7, 2);
+ *(uint16_t *)data = *(uint16_t *)data & (uint16_t)(1 << (uint16_t)exp_pin_name); // mask the in gpio
if (data[0] || data[1])
return true;
return false;
@@ -201,7 +201,7 @@
}
private:
- DevI2C &dev_i2c;
+ DevI2C *dev_i2c;
uint8_t exp_dev_addr;
ExpGpioPinName exp_pin_name;
};
@@ -217,9 +217,8 @@
* @param[in] &i2c device I2C to be used for communication
* @param[in] DevAddr the stmpe1600 I2C device addres (deft STMPE1600_DEF_DEVICE_ADDRESS)
*/
- Stmpe1600(DevI2C &i2c, uint8_t dev_addr = STMPE1600_DEF_DEVICE_ADDRESS) : dev_i2c(i2c)
+ Stmpe1600(DevI2C &i2c, uint8_t dev_addr = STMPE1600_DEF_DEVICE_ADDRESS) : dev_i2c(&i2c)
{
- dev_i2c = i2c;
exp_dev_addr = dev_addr;
write_sys_ctrl(SOFT_RESET);
@@ -235,7 +234,7 @@
*/
void write_sys_ctrl(uint8_t data) // data = SOFT_RESET reset the device
{
- dev_i2c.i2c_write(&data, exp_dev_addr, SYS_CTRL, 1);
+ dev_i2c->i2c_write(&data, exp_dev_addr, SYS_CTRL, 1);
}
/**
@@ -306,7 +305,7 @@
*/
void read_16bit_reg(uint8_t reg16_addr, uint16_t *reg16_data)
{
- dev_i2c.i2c_read((uint8_t *) reg16_data, exp_dev_addr, reg16_addr, 2);
+ dev_i2c->i2c_read((uint8_t *) reg16_data, exp_dev_addr, reg16_addr, 2);
}
/**
@@ -316,11 +315,11 @@
*/
void write_16bit_reg(uint8_t reg16_addr, uint16_t *reg16_data)
{
- dev_i2c.i2c_write((uint8_t *) reg16_data, exp_dev_addr, reg16_addr, 2);
+ dev_i2c->i2c_write((uint8_t *) reg16_data, exp_dev_addr, reg16_addr, 2);
}
private:
- DevI2C &dev_i2c;
+ DevI2C *dev_i2c;
uint16_t gpdr0_15; // local copy of bit direction reg
uint16_t gpsr0_15; // local copy of bit status reg
uint8_t exp_dev_addr; // expander device i2c addr
--- a/Components/VL53L0X/vl53l0x_class.cpp Mon Aug 07 14:30:21 2017 +0000
+++ b/Components/VL53L0X/vl53l0x_class.cpp Tue Aug 08 14:41:03 2017 +0000
@@ -5035,7 +5035,7 @@
{
int ret;
- ret = dev_i2c.i2c_write(p_data, DeviceAddr, RegisterAddr, NumByteToWrite);
+ ret = dev_i2c->i2c_write(p_data, DeviceAddr, RegisterAddr, NumByteToWrite);
if (ret)
return -1;
@@ -5047,7 +5047,7 @@
{
int ret;
- ret = dev_i2c.i2c_read(p_data, DeviceAddr, RegisterAddr, NumByteToRead);
+ ret = dev_i2c->i2c_read(p_data, DeviceAddr, RegisterAddr, NumByteToRead);
if (ret)
return -1;
--- a/Components/VL53L0X/vl53l0x_class.h Mon Aug 07 14:30:21 2017 +0000
+++ b/Components/VL53L0X/vl53l0x_class.h Tue Aug 08 14:41:03 2017 +0000
@@ -301,7 +301,7 @@
* @param[in] &pin_gpio1 pin Mbed InterruptIn PinName to be used as component GPIO_1 INT
* @param[in] dev_addr device address, 0x29 by default
*/
- VL53L0X(DevI2C &i2c, DigitalOut &pin, PinName pin_gpio1, uint8_t dev_addr = DEFAULT_DEVICE_ADDRESS) : dev_i2c(i2c),
+ VL53L0X(DevI2C &i2c, DigitalOut &pin, PinName pin_gpio1, uint8_t dev_addr = DEFAULT_DEVICE_ADDRESS) : dev_i2c(&i2c),
gpio0(&pin)
{
_my_device.I2cDevAddr = dev_addr;
@@ -323,7 +323,7 @@
* @param[in] device address, 0x29 by default
*/
VL53L0X(DevI2C &i2c, Stmpe1600DigiOut &pin, PinName pin_gpio1,
- uint8_t dev_addr = DEFAULT_DEVICE_ADDRESS) : dev_i2c(i2c), expgpio0(&pin)
+ uint8_t dev_addr = DEFAULT_DEVICE_ADDRESS) : dev_i2c(&i2c), expgpio0(&pin)
{
_my_device.I2cDevAddr = dev_addr;
_my_device.comms_type = 1; // VL53L0X_COMMS_I2C
@@ -2737,7 +2737,7 @@
VL53L0X_DeviceInfo_t _device_info;
/* IO Device */
- DevI2C &dev_i2c;
+ DevI2C *dev_i2c;
/* Digital out pin */
DigitalOut *gpio0;
/* GPIO expander */
--- a/X_NUCLEO_COMMON.lib Mon Aug 07 14:30:21 2017 +0000 +++ b/X_NUCLEO_COMMON.lib Tue Aug 08 14:41:03 2017 +0000 @@ -1,1 +1,1 @@ -https://developer.mbed.org/teams/ST/code/X_NUCLEO_COMMON/#0dbcdb8dab03 +https://developer.mbed.org/teams/ST/code/X_NUCLEO_COMMON/#21096473f63e
X-NUCLEO-53L1A1 Ranging Sensor Expansion Board