=LTE MAC=
==MAC Configuration==

===Packet header===
    {UINT, "Version", 1},
    {UINT, "Num SubPkt", 1},
    {SKIP, NULL, 2}

===Subpacket header===
    {UINT, "SubPacket ID", 1},
    {UINT, "Version", 1},
    {UINT, "SubPacket Size", 2}

===Subpacket types===
    {0, "Config Type Subpacket"},
    {1, "DL Config SubPacket"},
    {2, "UL Config SubPacket"},
    {3, "RACH Config SubPacket"},
    {4, "LC Config SubPacket"},
    {7, "DL Transport Block"},
    {8, "UL Transport Block"},
    {13, "eMBMS Config SubPacket"}

====Subpacket - Config Type====
    {UINT, "SubPacket ID", 1},
    {UINT, "Version", 1},
    {UINT, "SubPacket Size", 2}

====Subpacket - Config Reason====
    {2050, "CONNECTION RELEASE"}

====Subpacket - DL Config====
    {UINT, "TA Timer", 2}, // 0xFF need to be read as infinity
    {SKIP, "NULL", 2}

====Subpacket - UL Config====
    {UINT, "SR periodicity", 3},
    {UINT, "BSR timer", 2},
    {UINT, "SPS Number of Tx released", 2},
    {UINT, "Retx BSR timer", 2}, // 0xFF need to be read as infinity
    {SKIP, "NULL", 3}

====Subpacket - RACH Config====
    {RSRQ, "Preamble initial power", 2},
    {UINT, "Power ramping step", 1},
    {UINT, "RA index1", 1},
    {UINT, "RA index2", 1},
    {UINT, "Preamble trans max", 1},
    {UINT, "Contention resolution timer", 1},
    {SKIP, "NULL", 4},
    {UINT, "PMax", 2},
    {UINT, "Delta preamble Msg3", 2},
    {UINT, "PRACH config", 1},
    {UINT, "CS zone length", 1},
    {UINT, "Root seq index", 2},
    {UINT, "PRACH Freq Offset", 2},
    {UINT, "Max retx Msg3", 1},
    {UINT, "RA rsp win size", 1},
    {SKIP, "NULL", 1},

====Subpacket - LC Config====
    {UINT, "Number of deleted LT", 1},
    {SKIP, "NULL", 32},
    {UINT, "Number of added/modified LC", 1}

=====Subpacket - LC Config - LC=====
    {UINT, "LC ID", 1},
    {UINT, "PBR(KBytes/s)", 2},
    {UINT, "Priority", 1},
    {UINT, "LC group", 1},
    {UINT, "Token bucket size (bytes)", 4}

====Subpacket - eMBMS Config====
    {SKIP, "NULL", 100} // TODO: temporarily can not decode, may contain info about "Num eMBMS Active LCs"

==MAC DL Transport Block==

===Packet header===
    {UINT, "Version", 1},
    {UINT, "Num SubPkt", 1},
    {SKIP, NULL, 2}

====Subpacket Header====
    {UINT, "SubPacket ID", 1},
    {UINT, "Version", 1},
    {UINT, "SubPacket Size", 2},
    {UINT, "Num Samples", 1},

====Subpacket version2 - Sample====
    {SKIP, "SFN and Sub-FN", 2}, // not byte aligned
    {UINT, "RNTI Type", 1},
    {UINT, "HARQ ID", 1},
    {SKIP, "Area ID & PMCH ID", 2},
    {UINT, "DL TBS (bytes)", 2},
    {UINT, "RLC PDUs", 1},
    // QCAT shows a "EMBMS PDUs" but there's no corresponding hex data
    {UINT, "Padding (bytes)", 2},
    {UINT, "HDR LEN", 1},
    //{SKIP, "Mac Hdr + CE", ??}, // a flexible length field of Hex value in "Mac Hdr + CE", in parser we modified "offset" to skip those
    //{SKIP, "NULL", 2}

=====RNTI Type=====
    {0, "C-RNTI"},
    {2, "P-RNTI"},
    {3, "RA-RNTI"},
    {4, "T-C-RNTI"},
    {5, "SI-RNTI"}

==MAC UL Transport Block==

===Packet header===
    {UINT, "Version", 1},
    {UINT, "Num SubPkt", 1},
    {SKIP, NULL, 2}

====Subpacket header====
    {UINT, "SubPacket ID", 1},
    {UINT, "Version", 1},
    {UINT, "SubPacket Size", 2},
    {UINT, "Num Samples", 1},
    {SKIP, "NULL", 2}

====Subpacket version1 - samples====
    {SKIP, "SFN and Sub-FN", 2}, // not byte aligned
    // QCAT show "RNTI Type" and "HARQ ID" before Grant, but there's no corresponding hex data
    {UINT, "Grant (bytes)", 2},
    {UINT, "RLC PDUs", 1},
    {UINT, "Padding (bytes)", 2},
    {UINT, "BSR event", 1},
    {UINT, "BSR trig", 1},
    {UINT, "HDR LEN", 1},
    // 
    //{SKIP, "Mac Hdr + CE", 5}, // a flexible length field of Hex value in "Mac Hdr + CE", parser modified offset to skip those
    //{SKIP, "NULL", 2}

=====BSR event=====
    {2, "High Data Arrival"},
    {1, "Periodic"},

=====BSR trig=====
    {4, "S-BSR"},
    {3, "Pad L-BSR"}

==MAC UL Tx Statistics==

===Packet Header===
    {UINT, "Version", 1},
    {UINT, "Num SubPkt", 1},
    {SKIP, NULL, 2},

====Lte Mac UL Tx Statistics Subpkt Header====
    {UINT, "SubPacket ID", 1},
    {UINT, "Version", 1},
    {UINT, "SubPacket Size", 2},

====Lte Mac UL Tx Statistics UL Tx Stats SubPacket====
    {UINT, "Number of samples", 1},
    {UINT, "Number of padding BSR", 1},
    {UINT, "Number of regular BSR", 1},
    {UINT, "Number of periodic BSR", 1},
    {UINT, "Number of cancel BSR", 1},
    {UINT, "Grant received", 4},
    {UINT, "Grant utilized", 4},
    {SKIP, NULL, 3},

==Lte Mac UL Buffer Status Internal==

===Packet Header===
    {UINT, "Version", 1},
    {UINT, "Num SubPkt", 1},
    {SKIP, NULL, 2},

====Lte Mac UL Buffer Status Internal Subpkt Header====
    {UINT, "SubPacket ID", 1},
    {UINT, "Version", 1},
    {UINT, "SubPacket Size", 2},
    {UINT, "Num Samples", 1},

=====Lte Mac UL Buffer Status Internal UL Buffer Status SubPacket Sample=====
    //{UINT, "SFN", 1.5},
    //{UINT, "Sub FN", 0.5},
    {UINT, "SFN and Sub FN", 2},
    {UINT, "Number of active LCID", 1}

======Lte Mac UL Buffer Status Internal UL Buffer Status SubPacket LCID======
    {UINT, "Ld Id", 1},
    {UINT, "Priority", 1},
    {UINT, "New bytes", 4},
    {UINT, "Ret bytes", 4},
    {UINT, "Ctrl bytes", 2},