--- multiplexer/en300468ts.c 2005/01/04 21:59:23 1.2 +++ multiplexer/en300468ts.c 2005/01/04 22:25:48 1.3 @@ -1,6 +1,6 @@ /* * SI table generator (EN 300468) - * Copyright (C) 2004 Oskar Schirmer (schirmer@scara.com) + * Copyright (C) 2004,2005 Oskar Schirmer (schirmer@scara.com) * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -1763,8 +1763,29 @@ static int gentab_sit(struct sitab *st, { unsigned char *p = b; unsigned long *t = st->tab; + unsigned char c; + int i; *p = st->tableid; - return p-b; + p += 3; + *p++ = 0xFF; + *p++ = 0xFF; + *p++ = 0xC0 | (st->version << 1) | 0x01; + *p++ = 0; + *p++ = 0; + p = gendescr(st, p, &t, 0xF0); + i = *t++; + while (i > 0) { + *p++ = *t >> 8; + *p++ = *t++; + c = *t++ << 4; + p = gendescr(st, p, &t, 0x80 | c); + i -= 1; + } + i = p-b+1; + b[1] = 0xF0 | (i >> 8); + b[2] = i; + crc32_calc(b, i-1, p); + return p-b+4; } const static signed char syntax_dit[] = { @@ -1776,7 +1797,10 @@ static int gentab_dit(struct sitab *st, { unsigned char *p = b; unsigned long *t = st->tab; - *p = st->tableid; + *p++ = st->tableid; + *p++ = 0xF0; + *p++ = 0x01; + *p++ = (*t++ << 7) | 0x7F; return p-b; }