static private void AddStructBIntro(byte[] aPacket, ref int nOffset, MagazineAndRow eMagAndRow) { aPacket[nOffset++] = 0x55; // Clock run-in aPacket[nOffset++] = 0x55; // Clock run-in aPacket[nOffset++] = 0x27; // Framing code switch (eMagAndRow) { case MagazineAndRow.M8_Y0: // M == 0 == 8 aPacket[nOffset++] = 0x15; // M=0 Y=0 (header packet) == 000 00000 == 0000 0000 + hamming == 10101000 10101000 ==reverse 0x15 0x15 aPacket[nOffset++] = 0x15; // break; case MagazineAndRow.M8_Y28: aPacket[nOffset++] = 0x15; // aPacket[nOffset++] = 0xFD; // break; case MagazineAndRow.M8_Y20: aPacket[nOffset++] = 0x15; // aPacket[nOffset++] = 0x8C; // break; case MagazineAndRow.M8_Y22: aPacket[nOffset++] = 0x15; // aPacket[nOffset++] = 0x9B; // break; case MagazineAndRow.M1_Y0: // M == 0 == 8 aPacket[nOffset++] = 0x02; // M=0 Y=0 (header packet) == 000 00000 == 0000 0000 + hamming == 10101000 10101000 ==reverse 0x15 0x15 aPacket[nOffset++] = 0x15; // break; case MagazineAndRow.M1_Y28: aPacket[nOffset++] = 0x02; // aPacket[nOffset++] = 0xFD; // break; case MagazineAndRow.M1_Y20: aPacket[nOffset++] = 0x02; // aPacket[nOffset++] = 0x8C; // break; case MagazineAndRow.M1_Y22: aPacket[nOffset++] = 0x02; // aPacket[nOffset++] = 0x9B; // break; default: throw new Exception("wrong magazine and row"); } }
static public void GetPage888Packet22(byte[] aPacket, bool bFirstField, string sLine, ushort nPacketsCounter, MagazineAndRow eMagAndRow) { int nOffset = 0; AddIntro(aPacket, ref nOffset); // 7 AddStructAToLine17(aPacket, ref nOffset, bFirstField); // 5 AddStructBIntro(aPacket, ref nOffset, eMagAndRow); // 5 AddText(aPacket, ref nOffset, sLine); // 40 AddFooter(aPacket, ref nOffset, nPacketsCounter); // 4 }
static public void GetPage888Packet28(byte[] aPacket, bool bFirstField, ushort nPacketsCounter, MagazineAndRow eMagAndRow) { int nOffset = 0; AddIntro(aPacket, ref nOffset); AddStructAToLine17(aPacket, ref nOffset, bFirstField); AddStructBIntro(aPacket, ref nOffset, eMagAndRow); aPacket[nOffset++] = 0x15; // DC 0000 Format 1 teletext 7+1 parity Cyrillic-2 (rus) nothing aPacket[nOffset++] = 0x03; // Triplet #1: aPacket[nOffset++] = 0x20; // --> teletext 7+1 parity Cyrillic-2 (rus) nothing aPacket[nOffset++] = 0x82; // for (int ii = 0; ii < 12; ii++) { aPacket[nOffset++] = 0x8B; // Empty Triplets aPacket[nOffset++] = 0x80; aPacket[nOffset++] = 0x00; } AddFooter(aPacket, ref nOffset, nPacketsCounter); }
static public void GetPage8FFPacket0(byte[] aPacket, bool bFirstField, ushort nPacketsCounter, MagazineAndRow eMagAndRow) // closer { int nOffset = 0; AddIntro(aPacket, ref nOffset); AddStructAToLine17(aPacket, ref nOffset, bFirstField); AddStructBIntro(aPacket, ref nOffset, eMagAndRow); // 5 aPacket[nOffset++] = 0xEA; // Page No FF 0xea aPacket[nOffset++] = 0xEA; // Page No FF 0xea aPacket[nOffset++] = 0x15; // subcode + some control bits aPacket[nOffset++] = 0x15; // subcode + some control bits aPacket[nOffset++] = 0x15; // subcode + some control bits aPacket[nOffset++] = 0xD0; // subcode + some control bits --> subtitle aPacket[nOffset++] = 0x73; // control bits aPacket[nOffset++] = 0x15; // control bits --> supress header + was interrupted + parallel mode aPacket[nOffset++] = 0x86; // data. Alpha for (int ii = 0; ii < 31; ii++) { aPacket[nOffset++] = 0x20; // data SPACE = 0x20 } AddFooter(aPacket, ref nOffset, nPacketsCounter); }