11#include <promeki/config.h>
12#if PROMEKI_ENABLE_PROAV
21PROMEKI_NAMESPACE_BEGIN
101 using List = ::promeki::List<AncPacket>;
125 AncPacket(
const AncFormat &fmt,
const AncTransport &transport, Buffer data, Metadata meta = Metadata());
128 const AncFormat &format()
const;
131 const AncTransport &transport()
const;
152 const Buffer &data()
const;
167 const Metadata &meta()
const;
179 uint16_t st291Line()
const;
188 uint16_t st291HOffset()
const;
193 bool st291FieldB()
const;
198 bool st291CBit()
const;
204 uint8_t st291StreamNum()
const;
214 void setFormat(
const AncFormat &fmt);
223 void setTransport(
const AncTransport &transport);
228 void setData(Buffer data);
237 void setMeta(Metadata meta);
240 void setSt291Line(uint16_t line);
243 void setSt291HOffset(uint16_t hOffset);
246 void setSt291FieldB(
bool fieldB);
249 void setSt291CBit(
bool cBit);
252 void setSt291StreamNum(uint8_t streamNum);
271 void setSt291Framing(uint16_t line, uint16_t hOffset,
272 bool fieldB,
bool cBit, uint8_t streamNum);
303 bool isValid()
const;
306 bool operator==(
const AncPacket &o)
const;
309 bool operator!=(
const AncPacket &o)
const {
return !(*
this == o); }
320 String toString(
bool verbose =
false)
const;
339 PROMEKI_SHARED_FINAL(Impl)
342 AncTransport transport;
345 uint16_t st291Line = 0x7FE;
346 uint16_t st291HOffset = 0xFFF;
347 bool st291FieldB =
false;
348 bool st291CBit =
false;
349 uint8_t st291StreamNum = 0;
366void writeAncPacketData(DataStream &stream,
const AncPacket &pkt);
376AncPacket readAncPacketData(DataStream &stream);
382DataStream &operator<<(DataStream &stream,
const AncPacket &pkt);
388DataStream &operator>>(DataStream &stream, AncPacket &pkt);