MCA25 Datenstrom

Aus Ethersex_Wiki
Wechseln zu: Navigation, Suche

Ein Datenstrom wird dabei grundsätzlich in Häppchen zerlegt:

             frame header
          ,--------------------,
F983EF 3F A00096C30000008B49008E3C63616D6572612D696E666F2076657273696F6E EDF9
                ^^              ^                                        ^^
                frame type      data start                               chksum
            ^^^^
            packet length (msb first)

F983EF 3F 3D22312E30222053572D76657273696F6E3D22523141204358433132353439 EDF9
F983EF 3F 36223E3C6D656D6F727920667265653D223539312220667265652D696D6167 EDF9
F983EF 3F 65733D223130222073746F7265642D696D616765733D2230222066756E2D6C EDF9

F983EF 35 617965723D223130222F3E3C2F63616D6572612D696E666F3E00 00F9
          ^                                                    ^^
          data start                                           chksum
       ^^ segment length:   n = (c-1)/2

Berechnung Prüfsumme

Die Prüfsumme (FCS) wird nur über die ersten drei Byte(!) berechnet. In den Beispielen oben also 83EF3F bzw. 83EF35. Die eigentlichen Nutzdaten fließen nicht in die Berechnung mit ein.

Gebildet wird ein Reverse-CRC Grad 8, Polynom 0x07

Auf Basis des CRC tester v1.3 von Sven Reifegerste entstand ein Tool zur Berechnung ebendieser Prüfsumme. In Zeile 54 die drei Bytes einfügen, über die die Prüfsumme berechnet werden soll. Dann kompilieren und ausführen.

gcc -Wall -W -ggdb -O0 crctester.c  -std=gnu99
./a.out

Ausgegeben wird zunächst der verwendete Reverse CRC-Table, vgl. Annex B der GSM 07.10 Spezifikation, anschließend die ermittelte Prüfsumme.