// 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 union buffer { T data; uint8_t buffer[sizeof(T)]; }; // Función para enviar un buffer por I2C template void SendBuffer(buffer buffer) { Wire.flush(); Wire.beginTransmission(0x26); Wire.write(buffer.buffer, sizeof(T)); Wire.endTransmission(); }