#include "C_LinkIR.h" #include "../LinkIR.hpp" extern "C" { C_LinkIRHandle C_LinkIR_createDefault() { return new LinkIR(); } C_LinkIRHandle C_LinkIR_create(u8 primaryTimerId, u8 secondaryTimerId) { return new LinkIR(primaryTimerId, secondaryTimerId); } void C_LinkIR_destroy(C_LinkIRHandle handle) { delete static_cast(handle); } bool C_LinkIR_activate(C_LinkIRHandle handle) { return static_cast(handle)->activate(); } void C_LinkIR_deactivate(C_LinkIRHandle handle) { static_cast(handle)->deactivate(); } void C_LinkIR_sendNEC(C_LinkIRHandle handle, u8 address, u8 command) { static_cast(handle)->sendNEC(address, command); } bool C_LinkIR_receiveNEC(C_LinkIRHandle handle, u8* address, u8* command, u32 startTimeout) { u8 addr = 0, cmd = 0; bool result = static_cast(handle)->receiveNEC(addr, cmd, startTimeout); *address = addr; *command = cmd; return result; } bool C_LinkIR_parseNEC(C_LinkIRHandle handle, u16 pulses[], u8* address, u8* command) { u8 addr = 0, cmd = 0; bool result = static_cast(handle)->parseNEC(pulses, addr, cmd); *address = addr; *command = cmd; return result; } void C_LinkIR_send(C_LinkIRHandle handle, u16 pulses[]) { static_cast(handle)->send(pulses); } bool C_LinkIR_receive(C_LinkIRHandle handle, u16 pulses[], u32 maxEntries, u32 startTimeout, u32 signalTimeout) { return static_cast(handle)->receive(pulses, maxEntries, startTimeout, signalTimeout); } void C_LinkIR_setLight(C_LinkIRHandle handle, bool on) { static_cast(handle)->setLight(on); } bool C_LinkIR_isEmittingLight(C_LinkIRHandle handle) { return static_cast(handle)->isEmittingLight(); } bool C_LinkIR_isDetectingLight(C_LinkIRHandle handle) { return static_cast(handle)->isDetectingLight(); } C_LinkIR_Config C_LinkIR_getConfig(C_LinkIRHandle handle) { C_LinkIR_Config config; auto instance = static_cast(handle); config.primaryTimerId = instance->config.primaryTimerId; config.secondaryTimerId = instance->config.secondaryTimerId; return config; } void C_LinkIR_setConfig(C_LinkIRHandle handle, C_LinkIR_Config config) { auto instance = static_cast(handle); instance->config.primaryTimerId = config.primaryTimerId; instance->config.secondaryTimerId = config.secondaryTimerId; } void C_LinkIR_onSerial(C_LinkIRHandle handle) { static_cast(handle)->_onSerial(); } }