analyzer(IR_Fox): классификатор пакетов, настройки и результаты анализатора Saleae, тесты (работа Даши, снято с рабочей копии 09.09)

This commit is contained in:
2026-09-09 17:08:30 +03:00
parent 6c97d33c7c
commit fe4512d47f
14 changed files with 1086 additions and 185 deletions

View File

@ -0,0 +1,43 @@
#include "IrFoxPacketClassifier.h"
#include <cassert>
#include <cstdint>
static IrFoxPacketDecision classify(const uint8_t* data, uint8_t size, bool crc_ok, uint16_t id = 0)
{
return irfox::classifyPacket(data, size, crc_ok, id);
}
int main()
{
const uint8_t data_to_42[] = {0xE7, 0x00, 0x01, 0x00, 0x2A, 0x00, 0x00};
assert(classify(data_to_42, 7, true, 42).outcome == IrFoxPacketOutcome::Accepted);
assert(classify(data_to_42, 7, true, 41).outcome == IrFoxPacketOutcome::IgnoredAddress);
const uint8_t broadcast_data[] = {0xC7, 0x00, 0x01, 0xFD, 0xE8, 0x00, 0x00};
assert(classify(broadcast_data, 7, true, 41).outcome == IrFoxPacketOutcome::Accepted);
const uint8_t request_to_42[] = {0x47, 0x00, 0x01, 0x00, 0x2A, 0x00, 0x00};
assert(classify(request_to_42, 7, true, 42).outcome == IrFoxPacketOutcome::Accepted);
assert(classify(request_to_42, 7, true, 41).outcome == IrFoxPacketOutcome::IgnoredAddress);
const uint8_t back_to_42[] = {0x87, 0x00, 0x01, 0x00, 0x2A, 0x00, 0x00};
assert(classify(back_to_42, 7, true, 42).outcome == IrFoxPacketOutcome::Accepted);
assert(classify(back_to_42, 7, true, 41).outcome == IrFoxPacketOutcome::IgnoredAddress);
const uint8_t back[] = {0x05, 0x00, 0x01, 0x00, 0x00};
assert(classify(back, 5, true, 41).outcome == IrFoxPacketOutcome::Accepted);
const uint8_t accept[] = {0x26, 0x00, 0x01, 0x55, 0x00, 0x00};
assert(classify(accept, 6, true, 41).outcome == IrFoxPacketOutcome::Accepted);
const uint8_t unknown[] = {0x63, 0x00, 0x00};
assert(classify(unknown, 3, true).outcome == IrFoxPacketOutcome::RawOnlyUnknownType);
const uint8_t short_data[] = {0xE5, 0x00, 0x01, 0x00, 0x2A};
assert(classify(short_data, 5, true).outcome == IrFoxPacketOutcome::RawOnlyTypedLength);
assert(classify(data_to_42, 7, false).outcome == IrFoxPacketOutcome::RejectedCrc);
const uint8_t too_short[] = {0xE2, 0x00};
const IrFoxPacketDecision short_decision = classify(too_short, 2, false);
assert(short_decision.outcome == IrFoxPacketOutcome::RejectedLength);
assert(short_decision.message_type == irfox::kMsgDataAccept);
return 0;
}