38 lines
857 B
C++
38 lines
857 B
C++
// Comandos del cronómetro
|
|
enum ChronoCommands
|
|
{
|
|
ForceStart = 0x01, // Forzar inicio
|
|
ForceStop = 0x02, // Forzar detención
|
|
ForceReset = 0x04 // Forcer reinicio del cronómetro
|
|
};
|
|
|
|
// Modos de operación del dispositivo
|
|
enum DeviceModes
|
|
{
|
|
CHRONO = 0x00 // Modo Cronómetro
|
|
};
|
|
|
|
// Estructura para un comando de la API sin datos
|
|
struct ChronoAPICommand
|
|
{
|
|
const static char type = 0xAA; // Cabecera de Comando
|
|
ChronoCommands command; // Comando solicitado
|
|
};
|
|
|
|
// Unión genérica para serializar y des-serializar tipos
|
|
template <typename T>
|
|
union buffer
|
|
{
|
|
T data;
|
|
uint8_t buffer[sizeof(T)];
|
|
};
|
|
|
|
// Función para enviar un buffer por I2C
|
|
template <typename T>
|
|
void SendBuffer(buffer<T> buffer)
|
|
{
|
|
Wire.flush();
|
|
Wire.beginTransmission(0x26);
|
|
Wire.write(buffer.buffer, sizeof(T));
|
|
Wire.endTransmission();
|
|
} |