ral_messages_types.h 11.9 KB
Newer Older
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
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
#ifndef RAL_MESSAGES_TYPES_H_
#define RAL_MESSAGES_TYPES_H_
#include "asn1_constants.h"
#include "platform_types.h"
/* 802.21 mappings with the RRC protocol :
(Research Report RR-12-265 Mapping of IEEE 802.21 MIH primitives to EPS/LTE protocols March 13 th, 2012, Michelle WETTERWALD, Prof. Christian BONNET )
LINK EVENTS:
		Link_Detected				System Information

		Link_Up						RRC Connection establishment
									RRC Connection re-establishment
									RRC Connection reconfiguration

		Link_Down					RRC Connection reconfiguration
									RRC Connection Release

		Link_Parameters_Report		Measurement report
		Link_Going_Down				N/A
		Link_Handover_Imminent		N/A
		Link_Handover_Complete		RRC Connection reconfiguration
		Link_PDU_Transmit_Status	N/A


LINK COMMANDS:
		Link_Capability_Discover	N/A
		Link_Event_Subscribe		Measurement configuration
		Link_Event_Unsubscribe		Measurement configuration
		Link_Get_Parameters			Measurement configuration
		Link_Configure_Thresholds	Measurement configuration
		Link_Action / Disconnect	RRC Connection Release
		Link_Action / Low Power		N/A
		Link_Action / Power Down	RRC Connection Release
		Link_Action / Power Up		RRC Connection establishment
*/

#define RRC_RAL_SYSTEM_CONFIGURATION_IND(mSGpTR)         (mSGpTR)->ittiMsg.rrc_ral_system_configuration_ind
#define RRC_RAL_SYSTEM_INFORMATION_IND(mSGpTR)           (mSGpTR)->ittiMsg.rrc_ral_system_information_ind

#define RRC_RAL_CONFIGURE_THRESHOLD_REQ(mSGpTR)          (mSGpTR)->ittiMsg.rrc_ral_configure_threshold_req
#define RRC_RAL_CONFIGURE_THRESHOLD_CONF(mSGpTR)         (mSGpTR)->ittiMsg.rrc_ral_configure_threshold_conf
#define RRC_RAL_MEASUREMENT_REPORT_IND(mSGpTR)           (mSGpTR)->ittiMsg.rrc_ral_measurement_report_ind

#define RRC_RAL_CONNECTION_ESTABLISHMENT_REQ(mSGpTR)     (mSGpTR)->ittiMsg.rrc_ral_connection_establishment_req
#define RRC_RAL_CONNECTION_ESTABLISHMENT_CONF(mSGpTR)    (mSGpTR)->ittiMsg.rrc_ral_connection_establishment_conf
#define RRC_RAL_CONNECTION_ESTABLISHMENT_IND(mSGpTR)     (mSGpTR)->ittiMsg.rrc_ral_connection_establishment_ind
#define RRC_RAL_CONNECTION_REESTABLISHMENT_IND(mSGpTR)   (mSGpTR)->ittiMsg.rrc_ral_connection_reestablishment_ind
#define RRC_RAL_CONNECTION_RECONFIGURATION_IND(mSGpTR)   (mSGpTR)->ittiMsg.rrc_ral_connection_reconfiguration_ind

#define RRC_RAL_CONNECTION_RELEASE_REQ(mSGpTR)           (mSGpTR)->ittiMsg.rrc_ral_connection_release_req
#define RRC_RAL_CONNECTION_RELEASE_CONF(mSGpTR)          (mSGpTR)->ittiMsg.rrc_ral_connection_release_conf
#define RRC_RAL_CONNECTION_RELEASE_IND(mSGpTR)           (mSGpTR)->ittiMsg.rrc_ral_connection_release_ind

#include "MIH_C_header_codec.h"

typedef MIH_C_TRANSACTION_ID_T ral_transaction_id_t;
typedef MIH_C_STATUS_T         ral_status_t;
typedef MIH_C_CHOICE_T         ral_choice_t;
typedef MIH_C_CONFIG_STATUS_T  ral_config_status_t;
typedef MIH_C_TH_ACTION_T      ral_th_action_t;


#define RAL_STATUS_SUCCESS                 MIH_C_STATUS_SUCCESS
#define RAL_STATUS_UNSPECIFIED_FAILURE     MIH_C_STATUS_UNSPECIFIED_FAILURE
#define RAL_STATUS_REJECTED                MIH_C_STATUS_REJECTED
#define RAL_STATUS_AUTHORIZATION_FAILURE   MIH_C_STATUS_AUTHORIZATION_FAILURE
#define RAL_STATUS_NETWORK_ERROR           MIH_C_STATUS_NETWORK_ERROR


#define RAL_3GPP_ADDR_LENGTH             MIH_C_3GPP_ADDR_LENGTH
#define RAL_3GPP2_ADDR_LENGTH            MIH_C_3GPP2_ADDR_LENGTH
#define RAL_OTHER_L2_ADDR_LENGTH         MIH_C_OTHER_L2_ADDR_LENGTH
#define RAL_LINK_SCAN_RSP_LENGTH         MIH_C_LINK_SCAN_RSP_LENGTH
#define RAL_THRESHOLD_LIST_LENGTH        MIH_C_THRESHOLD_LIST_LENGTH
#define RAL_LINK_ADDR_LIST_LENGTH        MIH_C_LINK_ADDR_LIST_LENGTH
#define RAL_QOS_LIST_LENGTH              MIH_C_QOS_LIST_LENGTH
#define RAL_LINK_STATUS_REQ_LIST_LENGTH  MIH_C_LINK_STATUS_REQ_LIST_LENGTH
#define RAL_LINK_CFG_PARAM_LIST_LENGTH   MIH_C_LINK_CFG_PARAM_LIST_LENGTH

typedef  struct ral_network_id_s { u_int16_t length; u_int8_t val[253];} ral_network_id_t;

typedef  struct ral_link_addr_s { u_int16_t length; u_int8_t val[RAL_LINK_ADDR_LIST_LENGTH];} ral_link_addr_t;

typedef struct ral_sig_strength_s {
    ral_choice_t               choice;
    union  {
        uint8_t    dbm;
        uint8_t   percentage;
    } _union;
} ral_sig_strength_t;
#define RAL_SIG_STRENGTH_CHOICE_DBM        (ral_choice_t)0
#define RAL_SIG_STRENGTH_CHOICE_PERCENTAGE (ral_choice_t)1


// FOR ENB ONLY
typedef struct rrc_ral_system_configuration_ind_s {
    plmn_t       plmn_id;
    unsigned int cell_id:28;
}rrc_ral_system_configuration_ind_t;

// FOR UE ONLY
typedef struct rrc_ral_system_information_ind_s {
    plmn_t       plmn_id;
    unsigned int cell_id:28;
    uint8_t      dbm;        // sig strength
    uint16_t     sinr;
    uint32_t     link_data_rate;  //the maximum data rate in kb/s

}rrc_ral_system_information_ind_t;

typedef struct ral_link_scan_resp_s {
    ral_link_addr_t            link_addr;
    ral_network_id_t           network_id;
    ral_sig_strength_t         sig_strength;
} ral_link_scan_resp_t;

typedef struct rrc_ral_scan_req_s {
    ral_transaction_id_t transaction_id;

}rrc_ral_scan_req_t;

typedef struct rrc_ral_scan_conf_s {
    ral_transaction_id_t transaction_id;
#define RAL_MAX_LINK_SCAN_RESP 16
    uint8_t                  num_scan_resp;
    ral_link_scan_resp_t     ink_scan_resp[RAL_MAX_LINK_SCAN_RESP];
}rrc_ral_scan_conf_t;

typedef struct rrc_ral_connection_establishment_req_s{
    ral_transaction_id_t transaction_id;

}rrc_ral_connection_establishment_req_t;

typedef struct rrc_ral_connection_establishment_conf_s{
    ral_transaction_id_t transaction_id;

}rrc_ral_connection_establishment_conf_t;

typedef struct rrc_ral_connection_establishment_ind_s {
    uint16_t             ue_id; // may be c-rnti
}rrc_ral_connection_establishment_ind_t;


typedef struct rrc_ral_connection_reestablishment_ind_s {
    uint16_t             ue_id;
    uint8_t              num_drb;
    rb_id_t              drb_id[maxDRB];
    uint8_t              num_srb;
}rrc_ral_connection_reestablishment_ind_t;


typedef struct rrc_ral_connection_reconfiguration_ind_s {
    uint16_t     ue_id;
}rrc_ral_connection_reconfiguration_ind_t;




#define RAL_ABOVE_THRESHOLD                                    MIH_C_ABOVE_THRESHOLD
#define RAL_BELOW_THRESHOLD                                    MIH_C_BELOW_THRESHOLD
typedef struct ral_threshold_s {
    uint16_t        threshold_val;
    uint8_t         threshold_xdir;
}ral_threshold_t;


typedef MIH_C_LINK_PARAM_GEN_T                                 ral_link_param_gen_t;
#define RAL_LINK_PARAM_GEN_DATA_RATE                           MIH_C_LINK_PARAM_GEN_DATA_RATE
#define RAL_LINK_PARAM_GEN_SIGNAL_STRENGTH                     MIH_C_LINK_PARAM_GEN_SIGNAL_STRENGTH
#define RAL_LINK_PARAM_GEN_SINR                                MIH_C_LINK_PARAM_GEN_SINR
#define RAL_LINK_PARAM_GEN_THROUGHPUT                          MIH_C_LINK_PARAM_GEN_THROUGHPUT
#define RAL_LINK_PARAM_GEN_PACKET_ERROR_RATE                   MIH_C_LINK_PARAM_GEN_PACKET_ERROR_RATE

typedef MIH_C_LINK_PARAM_QOS_T                                 ral_link_param_qos_t;

typedef MIH_C_LINK_PARAM_LTE_T                                 ral_link_param_lte_t;
#define RAL_LINK_PARAM_LTE_UE_RSRP                             MIH_C_LINK_PARAM_LTE_UE_RSRP
#define RAL_LINK_PARAM_LTE_UE_RSRQ                             MIH_C_LINK_PARAM_LTE_UE_RSRQ
#define RAL_LINK_PARAM_LTE_UE_CQI                              MIH_C_LINK_PARAM_LTE_UE_CQI
#define RAL_LINK_PARAM_LTE_AVAILABLE_BW                        MIH_C_LINK_PARAM_LTE_AVAILABLE_BW
#define RAL_LINK_PARAM_LTE_PACKET_DELAY                        MIH_C_LINK_PARAM_LTE_PACKET_DELAY
#define RAL_LINK_PARAM_LTE_PACKET_LOSS_RATE                    MIH_C_LINK_PARAM_LTE_PACKET_LOSS_RATE
#define RAL_LINK_PARAM_LTE_L2_BUFFER_STATUS                    MIH_C_LINK_PARAM_LTE_L2_BUFFER_STATUS
#define RAL_LINK_PARAM_LTE_MOBILE_NODE_CAPABILITIES            MIH_C_LINK_PARAM_LTE_MOBILE_NODE_CAPABILITIES
#define RAL_LINK_PARAM_LTE_EMBMS_CAPABILITY                    MIH_C_LINK_PARAM_LTE_EMBMS_CAPABILITY
#define RAL_LINK_PARAM_LTE_JUMBO_FEASIBILITY                   MIH_C_LINK_PARAM_LTE_JUMBO_FEASIBILITY
#define RAL_LINK_PARAM_LTE_JUMBO_SETUP_STATUS                  MIH_C_LINK_PARAM_LTE_JUMBO_SETUP_STATUS
#define RAL_LINK_PARAM_LTE_NUM_ACTIVE_EMBMS_RECEIVERS_PER_FLOW MIH_C_LINK_PARAM_LTE_NUM_ACTIVE_EMBMS_RECEIVERS_PER_FLOW

#define RAL_LINK_PARAM_TYPE_CHOICE_GEN       MIH_C_LINK_PARAM_TYPE_CHOICE_GEN
#define RAL_LINK_PARAM_TYPE_CHOICE_QOS       MIH_C_LINK_PARAM_TYPE_CHOICE_QOS
#define RAL_LINK_PARAM_TYPE_CHOICE_LTE       MIH_C_LINK_PARAM_TYPE_CHOICE_LTE

typedef struct ral_link_param_type_s {
    ral_choice_t                    choice;
    union  {
        ral_link_param_gen_t      link_param_gen;
        ral_link_param_qos_t      link_param_qos;
        ral_link_param_lte_t      link_param_lte;
    } _union;
} ral_link_param_type_t;


typedef struct ral_link_cfg_param_s {
    ral_link_param_type_t        link_param_type;
    #define  RAL_LINK_CFG_PARAM_CHOICE_TIMER_NULL 0
    #define  RAL_LINK_CFG_PARAM_CHOICE_TIMER      1
    uint8_t                      union_choice;
    union  {
        uint8_t    null_attr;
        uint16_t   timer_interval;         // This timer value (ms) is used to set the interval between periodic reports.
    } _union;
    #define RAL_TH_ACTION_SET_NORMAL_THRESHOLD      MIH_C_SET_NORMAL_THRESHOLD
    #define RAL_TH_ACTION_SET_ONE_SHOT_THRESHOLD    MIH_C_SET_ONE_SHOT_THRESHOLD
    #define RAL_TH_ACTION_CANCEL_THRESHOLD          MIH_C_CANCEL_THRESHOLD
    ral_th_action_t             th_action; // indicates what action to apply to the listed thresholds.
                                           // When “Cancel threshold” is selected and no thresholds are specified, then
                                           // all currently configured thresholds for the given LINK_PARAM_TYPE are can-
                                           // celled.
                                           // When “Cancel threshold” is selected and thresholds are specified only those
                                           // configured thresholds for the given LINK_PARAM_TYPE and whose threshold
                                           // value match what was specified are cancelled.
                                           // With “Set one-shot threshold” the listed thresholds are first set and then
                                           // each of the threshold is cancelled as soon as it is crossed for the first
                                           // time.
    uint8_t             num_thresholds;
    #define RAL_LINK_CFG_PARAM_MAX_THRESHOLDS 16
    ral_threshold_t     thresholds[RAL_LINK_CFG_PARAM_MAX_THRESHOLDS];
} ral_link_cfg_param_t;


typedef struct rrc_ral_configure_threshold_req_s {
    ral_transaction_id_t     transaction_id;
    #define RAL_MAX_LINK_CFG_PARAMS 16
    uint8_t                  num_link_cfg_params;
    ral_link_cfg_param_t     link_cfg_params[RAL_MAX_LINK_CFG_PARAMS];
}rrc_ral_configure_threshold_req_t;

typedef struct ral_link_cfg_status_s {
    ral_link_param_type_t      link_param_type;
    ral_threshold_t            threshold;
    ral_config_status_t        config_status;
} ral_link_cfg_status_t;

typedef struct rrc_ral_configure_threshold_conf_s {
    ral_transaction_id_t     transaction_id;
    ral_status_t             status;
    uint8_t                  num_link_cfg_params;
    ral_link_cfg_status_t    cfg_status[RAL_MAX_LINK_CFG_PARAMS];
}rrc_ral_configure_threshold_conf_t;

typedef struct rrc_ral_measurement_report_ind_s{
}rrc_ral_measurement_report_ind_t;


typedef struct rrc_ral_connection_release_req_s{
    ral_transaction_id_t transaction_id;
    uint16_t             ue_id;
}rrc_ral_connection_release_req_t;

typedef struct rrc_ral_connection_release_conf_s{
    ral_transaction_id_t transaction_id;
    uint16_t             ue_id;
}rrc_ral_connection_release_conf_t;


typedef struct rrc_ral_connection_release_ind_s{
    uint16_t     ue_id;
}rrc_ral_connection_release_ind_t;




#endif /* RAL_MESSAGES_TYPES_H_ */