36 lines
950 B
C++
36 lines
950 B
C++
#include "pip.h"
|
|
|
|
using namespace PICoutManipulators;
|
|
|
|
|
|
int main(int argc, char * argv[]) {
|
|
PIByteArray ba = PIByteArray::fromHex("AA1122BB11233AA4455");
|
|
PIIOByteArray b;
|
|
b.open(ba);
|
|
PIPacketExtractor p(&b);
|
|
p.setSplitMode(PIPacketExtractor::Header);
|
|
p.setHeader(PIByteArray::fromHex("00"));
|
|
p.setFooter(PIByteArray::fromHex("AA"));
|
|
p.setPayloadSize(2);
|
|
p.setThreadedReadSlot([](const uchar * data, int size, void * d) {
|
|
return true;
|
|
});
|
|
p.setHeaderCheckSlot([](const uchar * src, const uchar * rec, int size)->int {
|
|
if (*src == *rec) {
|
|
if (rec[0] == 0xAA) return 2;
|
|
if (rec[0] == 0xBB) return 3;
|
|
}
|
|
return -1;
|
|
});
|
|
// p.setPayloadCheckSlot([](const uchar * data, int size) {
|
|
// return data[1] == 0xFF;
|
|
// });
|
|
CONNECTL(&p, packetReceived, ([](const uchar * data, int size){
|
|
piCout << PIByteArray(data, size).toHex();
|
|
}));
|
|
p.startThreadedRead();
|
|
piMSleep(100);
|
|
p.stop();
|
|
return 0;
|
|
}
|