Files
cronometre-laser-firmware-d…/include/I2C_COM_API.hpp
Alex Alvarado ce25af73ab inicial
2022-05-10 11:46:53 +02:00

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();
}