📄 xdspacket.h
字号:
// XDSPacket.h
#ifndef _XDSPACKET_H
#define _XDSPACKET_H
#include <string>
#include <windows.h>
// XDS Control Codes EIA/CEA-608-B Sec. 9.3
const BYTE XDS_STRT_CUR = 0x01;
const BYTE XDS_CONT_CUR = 0x02;
const BYTE XDS_STRT_FUT = 0x03;
const BYTE XDS_STRT_PRI = 0x0D;
const BYTE XDS_CONT_PRI = 0x0E;
const BYTE XDS_END_ALL = 0x0F;
// XDS Current Class Type Codes EIA/CEA-608-B Sec. 9.5.1
const BYTE TY_PROG_ID = 0x01;
const BYTE TY_PROG_NAME = 0x03;
const BYTE TY_CONTENT_ADVISORY = 0x05; // Program Rating
const BYTE TY_COMPOSITE_PKT1 = 0x0C;
const BYTE TY_COMPOSITE_PKT2 = 0x0D;
// Number of informational bytes in XDS Packets EIA/CEA-608-B Sec. 9.5.1
const int INFO_CNT_PROG_ID = 4;
const int INFO_CNT_CONTENT_ADVISORY = 2;
const int INFO_CNT_COMP_PKT1_CON_ADV = 1;
const int INFO_MIN_PROG_NAME = 2;
const int INFO_MAX_PROG_NAME = 32;
const int INFO_MIN_COMPOSITE_PKT1 = 10;
const int INFO_MIN_COMPOSITE_PKT2 = 14;
// Caption and Text Control Codes EIA/CEA-608-B Sec. 8.6.2
const BYTE CAPTION_CTRL_MIN = 0x10;
const BYTE CAPTION_CTRL_MAX = 0x1F;
const int COMP_PKT1_PROG_NAME_OFST = 10;
const int COMP_PKT1_CONT_ADV_OFST = 5;
#define BIT(x) ((DWORD)1 << (x))
#define NBITS(n) (BIT(n)-1)
class XDSPacket
{
public:
XDSPacket( BYTE byte1, BYTE byte2 );
void addBytePair( BYTE byte1, BYTE byte2 );
bool checkSum( BYTE checkSumByte );
void clearInfo();
const std::string&
info() const { return _info; }
BYTE ctrlCode() const { return _control; }
BYTE typeCode() const { return _type; }
private:
BYTE _control;
BYTE _type;
std::string _info;
};
inline
bool operator==( const XDSPacket& rhs, const XDSPacket& lhs )
{
return rhs.ctrlCode() == lhs.ctrlCode() &&
rhs.typeCode() == lhs.typeCode();
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -