Implemented send-lock for 'thread-safety'
Implemented incoming command handling
This commit is contained in:
46
src/main.cpp
46
src/main.cpp
@ -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é
|
||||||
|
|||||||
Reference in New Issue
Block a user