63 if (!retryIfEchoDoesntMatch)
69 for (
int i = 0; i < 8; ++i)
83 for (i = 0; i < startBytesToMatch; ++i)
90 for (i = 8- endBytesToMatch; i < 8; ++i)
102 delayMicroseconds(100);
108 delayMicroseconds(100);
119 unsigned long currentTime = millis();
131 if (_currentlyCommunicating)
135 _currentlyCommunicating =
true;
136 while (Serial->read() >= 0);
137 Serial->write(tx, 8);
138 uint32_t millisWrite = millis();
141 uint32_t timenow = millis();
142 while (bytesRx < 8 && timenow <= (millisWrite + 50))
144 int32_t data = Serial->read();
154 if (errorHandler != NULL)
159 _currentlyCommunicating =
false;
165 if (errorHandler != NULL)
171 _currentlyCommunicating =
false;
174 _currentlyCommunicating =
false;
178 if (i2cInterface != NULL)
188 if (_currentlyCommunicating)
192 _currentlyCommunicating =
true;
196 i2cInterface->beginTransmission(
address);
197 bytesWritten = i2cInterface->write(tx, 8);
198 i2cResult = i2cInterface->endTransmission();
200 if (bytesWritten == 8 && i2cResult == 0)
206 delayMicroseconds(100);
212 delayMicroseconds(100);
213 i2cInterface->requestFrom(
address, (uint8_t)8);
217 while (r >= 0 && count < 8)
219 r = i2cInterface->read();
223 rx[count] = (uint8_t) r;
234 delayMicroseconds(100);
235 i2cInterface->requestFrom(
address, (uint8_t)8);
238 while (i2cInterface->available() && count < 8)
240 int r = i2cInterface->read();
244 rx[count] = (uint8_t)r;
254 if (errorHandler != NULL)
259 _currentlyCommunicating =
false;
266 if (errorHandler != NULL)
272 _currentlyCommunicating =
false;
276 _currentlyCommunicating =
false;