@@ -174,7 +174,7 @@ sfeTkError_t sfeTkArdI2C::readRegisterByte(uint8_t devReg, uint8_t &dataToRead)
174174
175175 _i2cPort->beginTransmission (address ());
176176 _i2cPort->write (devReg);
177- _i2cPort->endTransmission (( int ) getStop ());
177+ _i2cPort->endTransmission (stop ());
178178 _i2cPort->requestFrom (address (), (uint8_t )1 );
179179
180180 while (_i2cPort->available ()) // slave may send less than requested
@@ -200,11 +200,10 @@ sfeTkError_t sfeTkArdI2C::readRegisterWord(uint8_t devReg, uint16_t &dataToRead)
200200 if (!_i2cPort)
201201 return kSTkErrBusNotInit ;
202202
203- uint16_t nRead = 0 ;
203+ size_t nRead;
204+ sfeTkError_t retval = readRegisterRegion (devReg, (uint8_t *)&dataToRead, sizeof (uint16_t ), nRead);
204205
205- sfeTkError_t result = readRegisterRegion (devReg, (uint8_t *)&dataToRead, sizeof (uint16_t ), &nRead);
206-
207- return nRead == 2 ? kSTkErrOk : result;
206+ return (retval == kSTkErrOk && nRead == 2 ? kSTkErrOk : retval);
208207}
209208
210209// ---------------------------------------------------------------------------------
@@ -216,13 +215,16 @@ sfeTkError_t sfeTkArdI2C::readRegisterWord(uint8_t devReg, uint16_t &dataToRead)
216215//
217216sfeTkError_t sfeTkArdI2C::readRegisterRegion (uint8_t devReg, uint8_t *data, size_t numBytes, size_t &readBytes)
218217{
218+
219219 // got port
220220 if (!_i2cPort)
221221 return kSTkErrBusNotInit ;
222222
223223 // Buffer valid?
224224 if (!data)
225225 return kSTkErrBusNullBuffer ;
226+
227+ readBytes = 0 ;
226228
227229 uint16_t nOrig = numBytes; // original number of bytes.
228230 uint8_t nChunk;
@@ -238,7 +240,7 @@ sfeTkError_t sfeTkArdI2C::readRegisterRegion(uint8_t devReg, uint8_t *data, size
238240
239241 _i2cPort->write (devReg);
240242
241- if (_i2cPort->endTransmission (getStop ()) != 0 )
243+ if (_i2cPort->endTransmission (stop ()))
242244 return kSTkErrFail ; // error with the end transmission
243245
244246 bFirstInter = false ;
@@ -248,11 +250,11 @@ sfeTkError_t sfeTkArdI2C::readRegisterRegion(uint8_t devReg, uint8_t *data, size
248250 nChunk = numBytes > _bufferChunkSize ? _bufferChunkSize : numBytes;
249251
250252 // Request the bytes. If this is the last chunk, always send a stop
251- nReturned = _i2cPort->requestFrom ((int )address (), (int )nChunk, (int )(nChunk == numBytes ? true : getStop ()));
253+ nReturned = _i2cPort->requestFrom ((int )address (), (int )nChunk, (int )(nChunk == numBytes ? true : stop ()));
252254
253255 // No data returned, no dice
254256 if (nReturned == 0 )
255- return - 1 ; // error
257+ return kSTkErrBusUnderRead ; // error
256258
257259 // Copy the retrieved data chunk to the current index in the data segment
258260 for (i = 0 ; i < nReturned; i++)
0 commit comments