LINKTYPE_MUX27010

Packet structure

+-------------+
| Header_Size |
|  (1 Octet)  |
+-------------+--------------+-----------+------------+-----------+
|    Msg_ID   |    Freg_ID   | Start_Pos |   End_pos  |   Flag    |
| (2 Octets)  |  (2 Octets)  | (1 Octet) |  (1 Octet) | (1 Octet) |
+-------------+--------------+-----------+------------+-----------+
.                                                                 .
.                                                                 .
.                                                                 .
+------------+
|  Direction |
|  (1 Octet) |
+------------+-----------+-----------+-----------------+-------------+-----------+-----------+
|  Flag_Mux  |  Address  |  Control  |     Length      | Information |    FCS    |  Flag_Mux |
| (1 Octet)  | (1 Octet) | (1 Octet) | (1 or 2 Octets) |  (n Octets) | (1 Octet) | (1 Octet) |
+------------+-----------+-----------+-----------------+-------------+-----------+-----------+
.                                                                                            .
.                                                                                            .
.                                                                                            .
                    

Description

Parts of the packets (the Flag_Mux octets and the octets between them) of this link type frames are based on the 3GPP standard TS 27.010, but they are slight deviations to meet the actual implementation of Cinterion and Siemens modules, e.g. no I frame support, but an additional UIH_E frame. In addition, the original MUX_Frame (the Flag_Mux octets and the octets between them) is extended by some extra fields for PPP chunks and direction indication (the Msg_ID through Flag octets).

Description for the Msg_ID through Flag octets

If there are PPP chunks surrounded by Flag_Mux octets, they will be indicated by the {Msg_ID, Freg_ID, Start_Pos, End_Pos, Flag} quintuplets; there will be one quintuplet for every chunk. Header_Size and Direction are always present. The {Msg_ID, Freg_ID, Start_Pos, End_Pos, Flag} quintuplets are optional and not always present. The Header_Size field indicates whether the quintuplets are present or not and how many of them are present - if a frame contains N PPP chunks, the Header_Size field has the value 7N; if no quintuplets are present, N, and thus the Header_Size field, is zero. If the Header_Size value is not a multiple of 7, the frame is invalid.

Start_Pos is the 1-origin index (from the octet after the Direction octet, so the index of the first Flag_Mux octet would be 1) of the first byte of the chunk, and End_Pos is the 1-origin index (from the octet after the Direction octet) of the last byte of the chunk.

All the chunks of a given PPP packet have the same Msg_ID value. Freq_ID is a sequence number for the PPP chunks. The first chunk has a Freq_ID of 0 and the Freq_ID of the next chunk will be incremented. The last chunk of a given PPP packet has a Flag value of 1; the others have a Flag value of 0.

The Direction field indicates the direction of the Mux frame: "0" means from GSM Modem to the Host; "1" means from Host to GSM Modem.