Implemented send-lock for 'thread-safety'

Implemented incoming command handling
This commit is contained in:
Alex Alvarado
2022-05-17 12:21:13 +02:00
parent 04ecf53452
commit 0cdf271d01

View File

@ -41,25 +41,38 @@ void requestHandler()
void receiveHandler(int length) void receiveHandler(int length)
{ {
for (uint8_t i = 0; i < length; i++) sendLock = true;
int i = 0;
while (Wire.available() > 0)
{
master_data[i] = Wire.read(); master_data[i] = Wire.read();
i++;
}
sendLock = false;
// El mensaje es un comando de cronómetro // El mensaje es un comando de cronómetro
//if (master_data[0] == ChronoAPICommand::type) if (master_data[0] == DATAGRAM_HDR)
//{ {
// switch ((ChronoCommands)master_data) buffer<ChronoAPICommand> comBuffer;
// { for (size_t i = 0; i < sizeof(comBuffer.data); i++)
// case (ChronoCommands::ForceStart): comBuffer.buffer[i] = master_data[i];
// started = true;
// break; switch (comBuffer.data.command)
// case (ChronoCommands::ForceStop): {
// started = false; case (ChronoCommands::ForceStart):
// break; reference = millis();
// case (ChronoCommands::ForceReset): ms.data = 0;
// reference = millis(); started = true;
// break; break;
// } case (ChronoCommands::ForceStop):
//} started = false;
break;
case (ChronoCommands::ForceReset):
reference = millis();
ms.data = 0;
break;
}
}
} }
// Vector INT0 para detectar interrupciones // Vector INT0 para detectar interrupciones
@ -110,7 +123,6 @@ void setup()
void loop() void loop()
{ {
if (started) // Si el cronómetro está funcionando: if (started) // Si el cronómetro está funcionando:
ms.data = millis() - reference; // Actualizar marca de tiempo ms.data = millis() - reference; // Actualizar marca de tiempo
delay(1); // Darle tiempo al attiny para que se haga un café delay(1); // Darle tiempo al attiny para que se haga un café