Hallo Oli,
ja da scheint einiges im Argen zu liegen. Hier mal der Ausschnitt aus dem
Sourcecode:
Code:
typedef struct _bouquet_list
{
unsigned short BID;
unsigned short bouquet_total_svl_list;
char bouquet_name[LEN_BOUQUET_NAME+1];
unsigned short bouquet_svl_idx[MAX_BOUQUET_SERVICES];
unsigned short bouquet_source; // Favoritenlisten, Bouquet
// (aut.update->Pflege ARD,ZDF,
// Premiere etc.)
unsigned short bouquet_flags;
}strc_bouquet_list;
oli hat geschrieben:
BID = 00 00 (Liste 0)
bouquet_total_svl_list = 04 00 (4 Service)
bouquet_name = 46 61 76 6f 72 69 74 65 6e 20 31 00 (Favoriten 1[0])
bouquet_svl_idx = 00 00 (wird nicht verwendet) ??
bouquet_source = 00 00, 01 00, 02 00, 07 00 (4 Service) ??
bouquet_flags = ... (wird nicht verwendet)
Past beim Favoriten 1 ja super? Nur dann scheint es einen Fehler im Index zu geben?
Danach sind im bouqet_svl_idx die Services aufgelistet (max 100 Einträge)
Das Feld bouqet_source ist ein short Wert, welches nach der Liste kommt. Wenn das
anders ist, dann sollte die Struktur geändert werden.
oli hat geschrieben:
Eigentlich ist das die gleiche Checksumme wie bei den anderen galaxis Programmlisten auch, easy, goldtop, Matrix usw. !? Die hast Du schon beim Easy drin.
Also es wird über alles berechnet, außer den 16byte Header und der Checksumme am ende selber. Die Checksumme ist die einfache Summe der WORD werte, begrenzt auf 2 Byte. Hier werden einfach die letzten 2 Byte der Summe verwendet.
Das ist leider nicht so, die interne Prüfsumme wird anders gebildet. Ich weiss aber nicht wie.
Ich habe schon alle Varianten geprüft, little Endian, big Endian... Ich komme aber nicht auf
das gleiche Ergebnis.
mfg
Franz