aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-umts_fp.h
blob: feaae8d98ac921a77ee7ab163c59b5166cc54eb0 (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
/* packet-fp.h
 *
 * Martin Mathieson
 * $Id$
 *
 * 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., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 */

/* 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
#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
#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
};

/* 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];
    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 */

    guint16 srcport, destport;

    enum   fp_hsdsch_entity hsdsch_entity;
    enum   fp_link_type link_type;
}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_chanel_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;
	/* 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 */


	fp_dch_chanel_info_t fp_dch_chanel_info[FP_maxNrOfTFs];

	enum   fp_hsdsch_entity hsdsch_entity;
}umts_fp_conversation_info_t;

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