11#include <promeki/config.h>
12#if PROMEKI_ENABLE_PROAV
21PROMEKI_NAMESPACE_BEGIN
154 static constexpr uint16_t LineNoSpecific = 0x7FF;
160 static constexpr uint16_t LineSwitchingDefault = 0x7FE;
164 static constexpr uint16_t LineLargerThan11Bits = 0x7FD;
170 static constexpr uint16_t UnspecifiedLine = LineSwitchingDefault;
174 static constexpr uint16_t UnspecifiedHOffset = 0xFFF;
178 static constexpr uint16_t HOffsetInHanc = 0xFFE;
182 static constexpr uint16_t HOffsetInActiveVideo = 0xFFD;
186 static constexpr uint16_t HOffsetLargerThan12Bits = 0xFFC;
242 static Result<St291Packet> from(
const AncPacket &pkt,
243 AncChecksumPolicy policy = AncChecksumPolicy::PreserveOrRecompute);
276 static St291Packet build(
const AncFormat &fmt,
const List<uint16_t> &udw, uint16_t line,
277 uint16_t hOffset = UnspecifiedHOffset,
bool fieldB =
false,
bool cBit =
false,
278 uint8_t streamNum = 0);
297 static St291Packet buildRaw(uint8_t did, uint8_t sdid,
const List<uint16_t> &udw, uint16_t line,
298 uint16_t hOffset = UnspecifiedHOffset,
bool fieldB =
false,
299 bool cBit =
false, uint8_t streamNum = 0);
325 static St291Packet buildRawType1(uint8_t did, uint8_t dbn,
const List<uint16_t> &udw, uint16_t line,
326 uint16_t hOffset = UnspecifiedHOffset,
bool fieldB =
false,
327 bool cBit =
false, uint8_t streamNum = 0);
330 St291Packet() =
default;
346 uint8_t sdid()
const;
361 uint8_t dataCount()
const;
380 List<uint16_t> udw()
const;
397 List<uint16_t> udwRaw()
const;
409 uint16_t checksum()
const;
415 uint16_t computedChecksum()
const;
418 bool checksumValid()
const;
422 uint16_t line()
const;
426 uint16_t hOffset()
const;
438 uint8_t streamNum()
const;
452 bool isType1()
const {
return (did() & 0x80) != 0; }
461 void setUdw(
const List<uint16_t> &udw);
464 void setLine(uint16_t line);
467 void setHOffset(uint16_t hOffset);
470 void setFieldB(
bool fieldB);
473 void setCBit(
bool cBit);
476 void setStreamNum(uint8_t streamNum);
479 const AncPacket &packet()
const {
return _pkt; }
482 operator const AncPacket &()
const {
return _pkt; }
489 bool isValid()
const;
492 explicit St291Packet(
const AncPacket &pkt) : _pkt(pkt) {}