Skip to content

Commit ffcc850

Browse files
committed
requested changes
1 parent 8705669 commit ffcc850

File tree

2 files changed

+23
-26
lines changed

2 files changed

+23
-26
lines changed

I2CEEBlockDevice.cpp

Lines changed: 20 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -21,24 +21,22 @@
2121
I2CEEBlockDevice::I2CEEBlockDevice(
2222
PinName sda, PinName scl, uint8_t addr,
2323
bd_size_t size, bd_size_t block, int freq)
24-
: _i2c_p(new I2C(sda, scl)), _i2c(*_i2c_p), _i2c_addr(addr),
25-
_size(size), _block(block)
24+
: _i2c_addr(addr), _size(size), _block(block)
2625
{
27-
_i2c.frequency(freq);
26+
_i2c = new I2C(sda, scl);
27+
_i2c->frequency(freq);
2828
}
2929

3030
I2CEEBlockDevice::I2CEEBlockDevice(
31-
I2C &i2c_obj, uint8_t addr,
31+
I2C * i2c_obj, uint8_t addr,
3232
bd_size_t size, bd_size_t block)
33-
: _i2c_p(NULL), _i2c(i2c_obj), _i2c_addr(addr),
34-
_size(size), _block(block)
33+
: _i2c_addr(addr), _size(size), _block(block)
3534
{
35+
_i2c = i2c_obj;
3636
}
3737
I2CEEBlockDevice::~I2CEEBlockDevice()
3838
{
39-
if (_i2c_p != NULL){
40-
delete _i2c_p;
41-
}
39+
_i2c->~I2C();
4240
}
4341

4442
int I2CEEBlockDevice::init()
@@ -56,15 +54,15 @@ int I2CEEBlockDevice::read(void *buffer, bd_addr_t addr, bd_size_t size)
5654
// Check the address and size fit onto the chip.
5755
MBED_ASSERT(is_valid_read(addr, size));
5856

59-
_i2c.start();
60-
if (!_i2c.write(_i2c_addr | 0) ||
61-
!_i2c.write((char)(addr >> 8)) ||
62-
!_i2c.write((char)(addr & 0xff))) {
57+
_i2c->start();
58+
if (!_i2c->write(_i2c_addr | 0) ||
59+
!_i2c->write((char)(addr >> 8)) ||
60+
!_i2c->write((char)(addr & 0xff))) {
6361
return BD_ERROR_DEVICE_ERROR;
6462
}
65-
_i2c.stop();
63+
_i2c->stop();
6664

67-
if (_i2c.read(_i2c_addr, static_cast<char*>(buffer), size) < 0) {
65+
if (_i2c->read(_i2c_addr, static_cast<char*>(buffer), size) < 0) {
6866
return BD_ERROR_DEVICE_ERROR;
6967
}
7068

@@ -81,17 +79,17 @@ int I2CEEBlockDevice::program(const void *buffer, bd_addr_t addr, bd_size_t size
8179
uint32_t off = addr % _block;
8280
uint32_t chunk = (off + size < _block) ? size : (_block - off);
8381

84-
_i2c.start();
85-
if (!_i2c.write(_i2c_addr | 0) ||
86-
!_i2c.write((char)(addr >> 8)) ||
87-
!_i2c.write((char)(addr & 0xff))) {
82+
_i2c->start();
83+
if (!_i2c->write(_i2c_addr | 0) ||
84+
!_i2c->write((char)(addr >> 8)) ||
85+
!_i2c->write((char)(addr & 0xff))) {
8886
return BD_ERROR_DEVICE_ERROR;
8987
}
9088

9189
for (unsigned i = 0; i < chunk; i++) {
92-
_i2c.write(static_cast<const char*>(buffer)[i]);
90+
_i2c->write(static_cast<const char*>(buffer)[i]);
9391
}
94-
_i2c.stop();
92+
_i2c->stop();
9593

9694
int err = _sync();
9795
if (err) {
@@ -118,7 +116,7 @@ int I2CEEBlockDevice::_sync()
118116
// so loop trying to do a zero byte write until it is ACKed
119117
// by the chip.
120118
for (int i = 0; i < I2CEE_TIMEOUT; i++) {
121-
if (_i2c.write(_i2c_addr | 0, 0, 0) < 1) {
119+
if (_i2c->write(_i2c_addr | 0, 0, 0) < 1) {
122120
return 0;
123121
}
124122

I2CEEBlockDevice.h

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -74,14 +74,14 @@ class I2CEEBlockDevice : public BlockDevice {
7474

7575
/** Constructor to create an I2CEEBlockDevice on I2C pins
7676
*
77-
* @param i2c The I2C instance
77+
* @param i2c The I2C instance pointer
7878
* @param addr The 8bit I2C address of the chip, common range 0xa0 - 0xae.
7979
* @param size The size of the device in bytes
8080
* @param block The page size of the device in bytes, defaults to 32bytes
8181
* @param freq The frequency of the I2C bus, defaults to 400K.
8282
*/
8383
I2CEEBlockDevice(
84-
I2C &i2c_obj, uint8_t address,
84+
I2C * i2c_obj, uint8_t address,
8585
bd_size_t size, bd_size_t block=32);
8686

8787
/** Destructor of I2CEEBlockDevice
@@ -158,8 +158,7 @@ class I2CEEBlockDevice : public BlockDevice {
158158
virtual bd_size_t size() const;
159159

160160
private:
161-
I2C *_i2c_p;
162-
I2C &_i2c;
161+
I2C * _i2c;
163162
uint8_t _i2c_addr;
164163
uint32_t _size;
165164
uint32_t _block;

0 commit comments

Comments
 (0)