aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-umts_fp.h
blob: 9a1365df7f788af3fd28e30ca2bbf90cc6681204 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
/* packet-fp.h
 *
 * Martin Mathieson
 * Wireshark - Network traffic analyzer
 * By Gerald Combs <gerald@wireshark.org>
 * Copyright 1998 Gerald Combs
 *
 * 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 the Free Software Foundation; either version 2
 * of the License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
 */


#include <glib.h>

/* Channel types */
#define CHANNEL_RACH_FDD          1
#define CHANNEL_RACH_TDD          2
#define CHANNEL_FACH_FDD          3
#define CHANNEL_FACH_TDD          4
#define CHANNEL_DSCH_FDD          5         /* DSCH Downlink Shared Channel */
#define CHANNEL_DSCH_TDD          6
#define CHANNEL_USCH_TDD_384      8
#define CHANNEL_USCH_TDD_128     24
#define CHANNEL_PCH               9
#define CHANNEL_CPCH             10
#define CHANNEL_BCH              11
#define CHANNEL_DCH              12        /* DCH Dedicated Transport Channel */
#define CHANNEL_HSDSCH           13        /* HS-DSCH - High Speed Downlink Shared Channel */
#define CHANNEL_IUR_CPCHF        14
#define CHANNEL_IUR_FACH         15
#define CHANNEL_IUR_DSCH         16
#define CHANNEL_EDCH             17        /* E-DCH Enhanced DCH */
#define CHANNEL_RACH_TDD_128     18
#define CHANNEL_HSDSCH_COMMON    19        /* HS-DSCH - High Speed Downlink Shared Channel */
#define CHANNEL_HSDSCH_COMMON_T3 20
#define CHANNEL_EDCH_COMMON      21

enum fp_interface_type
{
    IuB_Interface,
    IuR_Interface
};

enum division_type
{
    Division_FDD     = 1,
    Division_TDD_384 = 2,
    Division_TDD_128 = 3,
    Division_TDD_768 = 4
};

enum fp_hsdsch_entity
{
    entity_not_specified = 0,
    hs                   = 1,
    ehs                  = 2
};

enum fp_link_type
{
    FP_Link_Unknown,
    FP_Link_ATM,
    FP_Link_Ethernet
};

enum fp_rlc_mode {
    FP_RLC_MODE_UNKNOWN,
    FP_RLC_TM,
    FP_RLC_UM,
    FP_RLC_AM
};

/* Info attached to each FP packet */
typedef struct fp_info
{
    enum fp_interface_type iface_type;
    enum division_type     division;
    guint8  release;                     /* e.g. 99, 4, 5, 6, 7 */
    guint16 release_year;                /* e.g. 2001 */
    guint8  release_month;               /* e.g. 12 for December */
    gboolean is_uplink;
    gint channel;                       /* see Channel types definitions above */
    guint8  dch_crc_present;            /* 0=No, 1=Yes, 2=Unknown */
    gint paging_indications;
    gint num_chans;
#define MAX_FP_CHANS  64
    gint chan_tf_size[MAX_FP_CHANS];
    gint chan_num_tbs[MAX_FP_CHANS];

#define MAX_EDCH_DDIS 16
    gint   no_ddi_entries;
    guint8 edch_ddi[MAX_EDCH_DDIS];
    guint  edch_macd_pdu_size[MAX_EDCH_DDIS];

    guint  edch_lchId[MAX_EDCH_DDIS];   /* Logical Channel Id for E-DCH*/

    guint8 edch_type;       /* 1 means T2 */

    gint cur_tb;            /* current transport block (required for dissecting of single TBs */
    gint cur_chan;          /* current channel, required to retrieve the correct channel configuration for UMTS MAC */
    gint com_context_id;    /* Identifies a single UE in the network */
    guint16 srcport, destport;

    /* HSDSCH Related data */
    enum   fp_hsdsch_entity hsdsch_entity;
    gint        hsdsch_macflowd_id;
#define MAX_NUM_HSDHSCH_MACDFLOW        8
    gboolean hsdhsch_macfdlow_is_mux[MAX_NUM_HSDHSCH_MACDFLOW];
    enum   fp_link_type link_type;
    guint urnti;         /*Used for tracking a "sequence" over diffrent transport channels*/

    gboolean reset_frag; /*Used to indicate that a stream has been reconfigured, hence we need to reset the fragtable*/
} fp_info;

/* From NBAC-Constants.asn */
#define FP_maxNrOfTFs           32

typedef struct
{
    gint num_ul_chans;
    gint ul_chan_tf_size[MAX_FP_CHANS];
    gint ul_chan_num_tbs[MAX_FP_CHANS];
    gint num_dl_chans;
    gint dl_chan_tf_size[MAX_FP_CHANS];
    gint dl_chan_num_tbs[MAX_FP_CHANS];

} fp_dch_channel_info_t;


typedef struct
{
    enum fp_interface_type iface_type;
    enum division_type     division;
    gint channel;               /* see Channel types definitions above */
    guint32 dl_frame_number;    /* the frame where this conversation is started from CRNC */
    guint32 ul_frame_number;    /* the frame where this conversation is started from Node B */
    address crnc_address;
    guint16 crnc_port;
        gint com_context_id;    /*Identifies a single UE in the network*/

    /* For PCH channel */
    gint paging_indications;

    /* DCH's in this flow */
    gint num_dch_in_flow;
    gint dchs_in_flow_list[FP_maxNrOfTFs];

    guint8  dch_crc_present;    /* 0=No, 1=Yes, 2=Unknown */
    enum fp_rlc_mode rlc_mode;

    /* DCH type channel data */
    fp_dch_channel_info_t fp_dch_channel_info[FP_maxNrOfTFs];

    /* E-DCH related data */
    gint   no_ddi_entries;
    guint8 edch_ddi[MAX_EDCH_DDIS];
    guint  edch_macd_pdu_size[MAX_EDCH_DDIS];
    guint8 edch_lchId[MAX_EDCH_DDIS];
    guint8 edch_type;  /* 1 means T2 */

    /* HSDSCH Related data */
    enum   fp_hsdsch_entity hsdsch_entity;
    guint8 hsdsch_macdflow_id;

    guint8 hsdsch_num_chans_per_flow[MAX_NUM_HSDHSCH_MACDFLOW];

    /*HSDSCH Common related data*/
    guint8 common_macdflow_id;

    guint urnti;          /*Used for tracking a "sequence" over diffrent transport channels*/
    guint hrnti;          /*Used for tracking a HS-DSCH flow*/
    gboolean reset_frag;  /*Used to indicate that a stream has been reconfigured, hence we need to reset the fragtable*/
    guint32 cfn;
    guint32 cfn_index;
} umts_fp_conversation_info_t;

void set_umts_fp_conv_data(conversation_t *conversation, umts_fp_conversation_info_t *umts_fp_conversation_info);

/*
 * Editor modelines  -  http://www.wireshark.org/tools/modelines.html
 *
 * Local variables:
 * c-basic-offset: 4
 * tab-width: 8
 * indent-tabs-mode: nil
 * End:
 *
 * vi: set shiftwidth=4 tabstop=8 expandtab:
 * :indentSize=4:tabSize=8:noTabs=true:
 */