2025-05-29 08:29:17 +08:00

41 lines
1.1 KiB
C++

#ifndef IRRE_H
#define IRRE_H
#include <Arduino.h>
#include <IRremote.h>
#pragma pack(push, 1)
typedef struct {
uint32_t protocol; // 协议类型 (必须与IRRemote库定义一致)
uint32_t bits; // 有效数据位数 (影响后续信号重组精度)
/* 精简后的数据结构:
* 1. 总大小8字节 (原14字节)
* 2. 删除时间戳字段后文件体积减少42%
* 3. 提升ESP32存储和传输效率 */
} BinHeader;
#pragma pack(pop)
class IRController {
public:
static void sendIRSignal(uint16_t* rawData, size_t length, uint8_t irPin = 4);
};
bool IRController::loadConfig(const char* path, BinHeader* header, uint16_t* rawData) {
// File file = SD.open(path);
// if(!file) return false;
// file.read((byte*)header, sizeof(BinHeader));
// size_t dataSize = (header->bits + 15) / 16 * 2;
// file.read((byte*)rawData, dataSize);
// file.close();
return true;
}
void IRController::sendIRSignal(uint16_t* rawData, size_t length, uint8_t irPin) {
IrSender.sendRaw(rawData, length, 38, false);
delay(100);
}
#endif