Skip to content

Commit bf6998e

Browse files
committed
Revert "Reduce delays and remove them where not needed"
This reverts commit 1c3bb5c.
1 parent 12ea354 commit bf6998e

File tree

2 files changed

+16
-16
lines changed

2 files changed

+16
-16
lines changed

src/Arduino_BHY2Host.cpp

-1
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,6 @@ void Arduino_BHY2Host::update()
4848
eslovHandler.update();
4949
} else {
5050
uint8_t available = availableSensorData();
51-
delay(1);
5251
for (int i = 0; i < available; i++) {
5352
SensorDataPacket data;
5453
readSensorData(data);

src/EslovHandler.cpp

+16-15
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#include "EslovHandler.h"
22

3-
#define ESLOV_DELAY (1)
3+
#define ESLOV_DELAY (10)
44

55
EslovHandler::EslovHandler() :
66
_rxIndex(0),
@@ -70,6 +70,8 @@ void EslovHandler::update()
7070
dump();
7171

7272
_rxIndex = 0;
73+
74+
delay(ESLOV_DELAY);
7375

7476
Serial.write(ack);
7577
}
@@ -84,15 +86,9 @@ void EslovHandler::update()
8486

8587
SensorDataPacket sensorData;
8688
while (availableData) {
89+
//delay(ESLOV_DELAY);
8790
requestSensorData(sensorData);
88-
/*
89-
This delay is needed because the synchronization mechanism over the Eslov Int Pin
90-
may not apply for the requests from the host board to Nicla.
91-
It may happen that the onRequest callback on Nicla side is serviced after a certain delay.
92-
We need to add this delay of 10ms to avoid that a second request is issued before
93-
the first one is handled.
94-
*/
95-
delay(10);
91+
delay(ESLOV_DELAY);
9692
Serial.write((uint8_t*)&sensorData, sizeof(SensorDataPacket));
9793
availableData--;
9894
}
@@ -111,7 +107,7 @@ void EslovHandler::update()
111107
while (availableData) {
112108
//delay(ESLOV_DELAY);
113109
requestSensorLongData(sensorData);
114-
delay(10);
110+
delay(ESLOV_DELAY);
115111
Serial.write((uint8_t*)&sensorData, sizeof(SensorLongDataPacket));
116112
availableData--;
117113
}
@@ -184,28 +180,31 @@ void EslovHandler::writeDfuPacket(uint8_t *data, uint8_t length)
184180

185181
void EslovHandler::writeStateChange(EslovState state)
186182
{
183+
delay(ESLOV_DELAY);
187184
while(!digitalRead(_eslovIntPin)) {}
188185
uint8_t packet[2] = {ESLOV_SENSOR_STATE_OPCODE, state};
189186
Wire.beginTransmission(ESLOV_DEFAULT_ADDRESS);
190187
Wire.write((uint8_t*)packet, sizeof(packet));
191188
Wire.endTransmission();
189+
delay(ESLOV_DELAY);
192190
_eslovState = state;
193191
}
194192

195193
void EslovHandler::writeConfigPacket(SensorConfigurationPacket& config)
196194
{
197-
while(!digitalRead(_eslovIntPin)) {}
195+
delay(ESLOV_DELAY);
198196
uint8_t packet[sizeof(SensorConfigurationPacket) + 1];
199197
packet[0] = ESLOV_SENSOR_CONFIG_OPCODE;
200198
memcpy(&packet[1], &config, sizeof(SensorConfigurationPacket));
201199
Wire.beginTransmission(ESLOV_DEFAULT_ADDRESS);
202200
Wire.write(packet, sizeof(SensorConfigurationPacket) + 1);
203201
Wire.endTransmission();
202+
delay(ESLOV_DELAY);
204203
}
205204

206205
uint8_t EslovHandler::requestPacketAck()
207-
{
208-
while(!digitalRead(_eslovIntPin)) {}
206+
{
207+
delay(ESLOV_DELAY);
209208
uint8_t ret = 0;
210209
while(!ret) {
211210
ret = Wire.requestFrom(ESLOV_DEFAULT_ADDRESS, 1);
@@ -224,6 +223,7 @@ uint8_t EslovHandler::requestAvailableData()
224223
uint8_t ret = Wire.requestFrom(ESLOV_DEFAULT_ADDRESS, 1);
225224
if (!ret) return 0;
226225
return Wire.read();
226+
delay(ESLOV_DELAY);
227227
}
228228

229229
uint8_t EslovHandler::requestAvailableLongData()
@@ -240,8 +240,9 @@ bool EslovHandler::requestSensorData(SensorDataPacket &sData)
240240
{
241241
if (_eslovState != ESLOV_READ_SENSOR_STATE) {
242242
writeStateChange(ESLOV_READ_SENSOR_STATE);
243+
while(!digitalRead(_eslovIntPin)) {}
243244
}
244-
while(!digitalRead(_eslovIntPin)) {}
245+
//uint8_t ret = Wire.requestFrom(ESLOV_DEFAULT_ADDRESS, sizeof(SensorDataPacket));
245246
uint8_t ret = Wire.requestFrom(ESLOV_DEFAULT_ADDRESS, sizeof(SensorDataPacket));
246247
if (!ret) return false;
247248

@@ -256,8 +257,8 @@ bool EslovHandler::requestSensorLongData(SensorLongDataPacket &sData)
256257
{
257258
if (_eslovState != ESLOV_READ_LONG_SENSOR_STATE) {
258259
writeStateChange(ESLOV_READ_LONG_SENSOR_STATE);
260+
while(!digitalRead(_eslovIntPin)) {}
259261
}
260-
while(!digitalRead(_eslovIntPin)) {}
261262
uint8_t ret = Wire.requestFrom(ESLOV_DEFAULT_ADDRESS, sizeof(SensorLongDataPacket));
262263
if (!ret) return false;
263264

0 commit comments

Comments
 (0)