Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
O
OpenXG-RAN
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wangwenhui
OpenXG-RAN
Commits
5e1d462a
Commit
5e1d462a
authored
8 years ago
by
Raymond Knopp
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
resynch for initial RF acqusition
parent
5affbe38
Changes
13
Show whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
3580 additions
and
22 deletions
+3580
-22
openair3/COMMON/as_message.h
openair3/COMMON/as_message.h
+578
-1
openair3/COMMON/as_message.h
openair3/COMMON/as_message.h
+578
-1
openair3/INTERTASK_INTERFACE
openair3/INTERTASK_INTERFACE
+0
-1
openair3/NAS/COMMON/API/NETWORK/as_message.h
openair3/NAS/COMMON/API/NETWORK/as_message.h
+578
-1
openair3/NAS/COMMON/API/NETWORK/as_message.h
openair3/NAS/COMMON/API/NETWORK/as_message.h
+578
-1
openair3/NAS/COMMON/commonDef.h
openair3/NAS/COMMON/commonDef.h
+342
-1
openair3/NAS/COMMON/commonDef.h
openair3/NAS/COMMON/commonDef.h
+342
-1
openair3/NAS/COMMON/networkDef.h
openair3/NAS/COMMON/networkDef.h
+278
-1
openair3/NAS/COMMON/networkDef.h
openair3/NAS/COMMON/networkDef.h
+278
-1
targets/PROJECTS/GENERIC-LTE-EPC/CONF/rru.band7.tm1.50PRB.if5.usrpb210.conf
...ENERIC-LTE-EPC/CONF/rru.band7.tm1.50PRB.if5.usrpb210.conf
+3
-3
targets/PROJECTS/GENERIC-LTE-EPC/CONF/rru.band7.tm1.if4p5.25PRB.usrpb210.conf
...ERIC-LTE-EPC/CONF/rru.band7.tm1.if4p5.25PRB.usrpb210.conf
+3
-3
targets/PROJECTS/GENERIC-LTE-EPC/CONF/rru.band7.tm1.if4p5.50PRB.usrpb210.conf
...ERIC-LTE-EPC/CONF/rru.band7.tm1.if4p5.50PRB.usrpb210.conf
+10
-7
targets/RT/USER/lte-enb.c
targets/RT/USER/lte-enb.c
+12
-0
No files found.
openair3/COMMON/as_message.h
deleted
120000 → 0
View file @
5affbe38
..
/
..
/
openair2
/
COMMON
/
as_message
.
h
\ No newline at end of file
This diff is collapsed.
Click to expand it.
openair3/COMMON/as_message.h
0 → 100644
View file @
5e1d462a
/*
* Copyright (c) 2015, EURECOM (www.eurecom.fr)
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this
* list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* The views and conclusions contained in the software and documentation are those
* of the authors and should not be interpreted as representing official policies,
* either expressed or implied, of the FreeBSD Project.
*/
/*****************************************************************************
Source as_message.h
Version 0.1
Date 2012/10/18
Product NAS stack
Subsystem Application Programming Interface
Author Frederic Maurel
Description Defines the messages supported by the Access Stratum sublayer
protocol (usually RRC and S1AP for E-UTRAN) and functions used
to encode and decode
*****************************************************************************/
#ifndef __AS_MESSAGE_H__
#define __AS_MESSAGE_H__
#include "commonDef.h"
#include "networkDef.h"
/****************************************************************************/
/********************* G L O B A L C O N S T A N T S *******************/
/****************************************************************************/
/*
* --------------------------------------------------------------------------
* Access Stratum message types
* --------------------------------------------------------------------------
*/
#define AS_REQUEST 0x0100
#define AS_RESPONSE 0x0200
#define AS_INDICATION 0x0400
#define AS_CONFIRM 0x0800
/*
* --------------------------------------------------------------------------
* Access Stratum message identifiers
* --------------------------------------------------------------------------
*/
/* Broadcast information */
#define AS_BROADCAST_INFO 0x01
#define AS_BROADCAST_INFO_IND (AS_BROADCAST_INFO | AS_INDICATION)
/* Cell information relevant for cell selection processing */
#define AS_CELL_INFO 0x02
#define AS_CELL_INFO_REQ (AS_CELL_INFO | AS_REQUEST)
#define AS_CELL_INFO_CNF (AS_CELL_INFO | AS_CONFIRM)
#define AS_CELL_INFO_IND (AS_CELL_INFO | AS_INDICATION)
/* Paging information */
#define AS_PAGING 0x03
#define AS_PAGING_REQ (AS_PAGING | AS_REQUEST)
#define AS_PAGING_IND (AS_PAGING | AS_INDICATION)
/* NAS signalling connection establishment */
#define AS_NAS_ESTABLISH 0x04
#define AS_NAS_ESTABLISH_REQ (AS_NAS_ESTABLISH | AS_REQUEST)
#define AS_NAS_ESTABLISH_IND (AS_NAS_ESTABLISH | AS_INDICATION)
#define AS_NAS_ESTABLISH_RSP (AS_NAS_ESTABLISH | AS_RESPONSE)
#define AS_NAS_ESTABLISH_CNF (AS_NAS_ESTABLISH | AS_CONFIRM)
/* NAS signalling connection release */
#define AS_NAS_RELEASE 0x05
#define AS_NAS_RELEASE_REQ (AS_NAS_RELEASE | AS_REQUEST)
#define AS_NAS_RELEASE_IND (AS_NAS_RELEASE | AS_INDICATION)
/* Uplink information transfer */
#define AS_UL_INFO_TRANSFER 0x06
#define AS_UL_INFO_TRANSFER_REQ (AS_UL_INFO_TRANSFER | AS_REQUEST)
#define AS_UL_INFO_TRANSFER_CNF (AS_UL_INFO_TRANSFER | AS_CONFIRM)
#define AS_UL_INFO_TRANSFER_IND (AS_UL_INFO_TRANSFER | AS_INDICATION)
/* Downlink information transfer */
#define AS_DL_INFO_TRANSFER 0x07
#define AS_DL_INFO_TRANSFER_REQ (AS_DL_INFO_TRANSFER | AS_REQUEST)
#define AS_DL_INFO_TRANSFER_CNF (AS_DL_INFO_TRANSFER | AS_CONFIRM)
#define AS_DL_INFO_TRANSFER_IND (AS_DL_INFO_TRANSFER | AS_INDICATION)
/* Radio Access Bearer establishment */
#define AS_RAB_ESTABLISH 0x08
#define AS_RAB_ESTABLISH_REQ (AS_RAB_ESTABLISH | AS_REQUEST)
#define AS_RAB_ESTABLISH_IND (AS_RAB_ESTABLISH | AS_INDICATION)
#define AS_RAB_ESTABLISH_RSP (AS_RAB_ESTABLISH | AS_RESPONSE)
#define AS_RAB_ESTABLISH_CNF (AS_RAB_ESTABLISH | AS_CONFIRM)
/* Radio Access Bearer release */
#define AS_RAB_RELEASE 0x09
#define AS_RAB_RELEASE_REQ (AS_RAB_RELEASE | AS_REQUEST)
#define AS_RAB_RELEASE_IND (AS_RAB_RELEASE | AS_INDICATION)
/* NAS Cause */
#define EPS_SERVICES_AND_NON_EPS_SERVICES_NOT_ALLOWED (8)
#define EPS_SERVICES_NOT_ALLOWED (7)
#define PLMN_NOT_ALLOWED (11)
#define TRACKING_AREA_NOT_ALLOWED (12)
#define ROAMING_NOT_ALLOWED_IN_THIS_TRACKING_AREA (13)
#define EPS_SERVICES_NOT_ALLOWED_IN_THIS_PLMN (14)
#define NO_SUITABLE_CELLS_IN_TRACKING_AREA (15)
#define NETWORK_FAILURE (17)
#define ESM_FAILURE (19)
typedef
enum
nas_cause_s
{
NAS_CAUSE_EPS_SERVICES_AND_NON_EPS_SERVICES_NOT_ALLOWED
=
EPS_SERVICES_AND_NON_EPS_SERVICES_NOT_ALLOWED
,
NAS_CAUSE_EPS_SERVICES_NOT_ALLOWED
=
EPS_SERVICES_NOT_ALLOWED
,
NAS_CAUSE_PLMN_NOT_ALLOWED
=
PLMN_NOT_ALLOWED
,
NAS_CAUSE_TRACKING_AREA_NOT_ALLOWED
=
TRACKING_AREA_NOT_ALLOWED
,
NAS_CAUSE_ROAMING_NOT_ALLOWED_IN_THIS_TRACKING_AREA
=
ROAMING_NOT_ALLOWED_IN_THIS_TRACKING_AREA
,
NAS_CAUSE_EPS_SERVICES_NOT_ALLOWED_IN_THIS_PLMN
=
EPS_SERVICES_NOT_ALLOWED_IN_THIS_PLMN
,
NAS_CAUSE_NO_SUITABLE_CELLS_IN_TRACKING_AREA
=
NO_SUITABLE_CELLS_IN_TRACKING_AREA
,
NAS_CAUSE_NETWORK_FAILURE
=
NETWORK_FAILURE
,
NAS_CAUSE_ESM_FAILURE
=
ESM_FAILURE
}
nas_cause_t
;
/*
* --------------------------------------------------------------------------
* Access Stratum message global parameters
* --------------------------------------------------------------------------
*/
/* Error code */
typedef
enum
nas_error_code_s
{
AS_SUCCESS
=
1
,
/* Success code, transaction is going on */
AS_TERMINATED_NAS
,
/* Transaction terminated by NAS */
AS_TERMINATED_AS
,
/* Transaction terminated by AS */
AS_FAILURE
/* Failure code */
}
nas_error_code_t
;
/* Core network domain */
typedef
enum
core_network_s
{
AS_PS
=
1
,
/* Packet-Switched */
AS_CS
/* Circuit-Switched */
}
core_network_t
;
/* SAE Temporary Mobile Subscriber Identity */
typedef
struct
as_stmsi_s
{
uint8_t
MMEcode
;
/* MME code that allocated the GUTI */
uint32_t
m_tmsi
;
/* M-Temporary Mobile Subscriber Identity */
}
as_stmsi_t
;
/* Dedicated NAS information */
typedef
struct
as_nas_info_s
{
uint32_t
length
;
/* Length of the NAS information data */
Byte_t
*
data
;
/* Dedicated NAS information data container */
}
as_nas_info_t
;
/* Radio Access Bearer identity */
typedef
uint8_t
as_rab_id_t
;
/****************************************************************************/
/************************ G L O B A L T Y P E S ************************/
/****************************************************************************/
/*
* --------------------------------------------------------------------------
* Broadcast information
* --------------------------------------------------------------------------
*/
/*
* AS->NAS - Broadcast information indication
* AS may asynchronously report to NAS available PLMNs within specific
* location area
*/
typedef
struct
broadcast_info_ind_s
{
#define PLMN_LIST_MAX_SIZE 6
PLMN_LIST_T
(
PLMN_LIST_MAX_SIZE
)
plmnIDs
;
/* List of PLMN identifiers */
ci_t
cellID
;
/* Identity of the cell serving the listed PLMNs */
tac_t
tac
;
/* Code of the tracking area the cell belongs to */
}
broadcast_info_ind_t
;
/*
* --------------------------------------------------------------------------
* Cell information relevant for cell selection processing
* --------------------------------------------------------------------------
*/
/* Radio access technologies supported by the network */
#define AS_GSM (1 << NET_ACCESS_GSM)
#define AS_COMPACT (1 << NET_ACCESS_COMPACT)
#define AS_UTRAN (1 << NET_ACCESS_UTRAN)
#define AS_EGPRS (1 << NET_ACCESS_EGPRS)
#define AS_HSDPA (1 << NET_ACCESS_HSDPA)
#define AS_HSUPA (1 << NET_ACCESS_HSUPA)
#define AS_HSDUPA (1 << NET_ACCESS_HSDUPA)
#define AS_EUTRAN (1 << NET_ACCESS_EUTRAN)
/*
* NAS->AS - Cell Information request
* NAS request AS to search for a suitable cell belonging to the selected
* PLMN to camp on.
*/
typedef
struct
cell_info_req_s
{
plmn_t
plmnID
;
/* Selected PLMN identity */
Byte_t
rat
;
/* Bitmap - set of radio access technologies */
}
cell_info_req_t
;
/*
* AS->NAS - Cell Information confirm
* AS search for a suitable cell and respond to NAS. If found, the cell
* is selected to camp on.
*/
typedef
struct
cell_info_cnf_s
{
uint8_t
errCode
;
/* Error code */
ci_t
cellID
;
/* Identity of the cell serving the selected PLMN */
tac_t
tac
;
/* Code of the tracking area the cell belongs to */
AcT_t
rat
;
/* Radio access technology supported by the cell */
uint8_t
rsrq
;
/* Reference signal received quality */
uint8_t
rsrp
;
/* Reference signal received power */
}
cell_info_cnf_t
;
/*
* AS->NAS - Cell Information indication
* AS may change cell selection if a more suitable cell is found.
*/
typedef
struct
cell_info_ind_s
{
ci_t
cellID
;
/* Identity of the new serving cell */
tac_t
tac
;
/* Code of the tracking area the cell belongs to */
}
cell_info_ind_t
;
/*
* --------------------------------------------------------------------------
* Paging information
* --------------------------------------------------------------------------
*/
/* Paging cause */
typedef
enum
paging_cause_s
{
AS_CONNECTION_ESTABLISH
,
/* Establish NAS signalling connection */
AS_EPS_ATTACH
,
/* Perform local detach and initiate EPS
* attach procedure */
AS_CS_FALLBACK
/* Inititate CS fallback procedure */
}
paging_cause_t
;
/*
* NAS->AS - Paging Information request
* NAS requests the AS that NAS signalling messages or user data is pending
* to be sent.
*/
typedef
struct
paging_req_s
{
as_stmsi_t
s_tmsi
;
/* UE identity */
uint8_t
CN_domain
;
/* Core network domain */
}
paging_req_t
;
/*
* AS->NAS - Paging Information indication
* AS reports to the NAS that appropriate procedure has to be initiated.
*/
typedef
struct
paging_ind_s
{
paging_cause_t
cause
;
/* Paging cause */
}
paging_ind_t
;
/*
* --------------------------------------------------------------------------
* NAS signalling connection establishment
* --------------------------------------------------------------------------
*/
/* Cause of RRC connection establishment */
typedef
enum
as_cause_s
{
AS_CAUSE_UNKNOWN
=
0
,
AS_CAUSE_EMERGENCY
=
NET_ESTABLISH_CAUSE_EMERGENCY
,
AS_CAUSE_HIGH_PRIO
=
NET_ESTABLISH_CAUSE_HIGH_PRIO
,
AS_CAUSE_MT_ACCESS
=
NET_ESTABLISH_CAUSE_MT_ACCESS
,
AS_CAUSE_MO_SIGNAL
=
NET_ESTABLISH_CAUSE_MO_SIGNAL
,
AS_CAUSE_MO_DATA
=
NET_ESTABLISH_CAUSE_MO_DATA
,
AS_CAUSE_V1020
=
NET_ESTABLISH_CAUSE_V1020
}
as_cause_t
;
/* Type of the call associated to the RRC connection establishment */
typedef
enum
as_call_type_s
{
AS_TYPE_ORIGINATING_SIGNAL
=
NET_ESTABLISH_TYPE_ORIGINATING_SIGNAL
,
AS_TYPE_EMERGENCY_CALLS
=
NET_ESTABLISH_TYPE_EMERGENCY_CALLS
,
AS_TYPE_ORIGINATING_CALLS
=
NET_ESTABLISH_TYPE_ORIGINATING_CALLS
,
AS_TYPE_TERMINATING_CALLS
=
NET_ESTABLISH_TYPE_TERMINATING_CALLS
,
AS_TYPE_MO_CS_FALLBACK
=
NET_ESTABLISH_TYPE_MO_CS_FALLBACK
}
as_call_type_t
;
/*
* NAS->AS - NAS signalling connection establishment request
* NAS requests the AS to perform the RRC connection establishment procedure
* to transfer initial NAS message to the network while UE is in IDLE mode.
*/
typedef
struct
nas_establish_req_s
{
as_cause_t
cause
;
/* RRC connection establishment cause */
as_call_type_t
type
;
/* RRC associated call type */
as_stmsi_t
s_tmsi
;
/* UE identity */
plmn_t
plmnID
;
/* Selected PLMN identity */
as_nas_info_t
initialNasMsg
;
/* Initial NAS message to transfer */
}
nas_establish_req_t
;
/*
* AS->NAS - NAS signalling connection establishment indication
* AS transfers the initial NAS message to the NAS.
*/
typedef
struct
nas_establish_ind_s
{
uint32_t
UEid
;
/* UE lower layer identifier */
tac_t
tac
;
/* Code of the tracking area the initiating
* UE belongs to */
as_cause_t
asCause
;
/* Establishment cause */
as_nas_info_t
initialNasMsg
;
/* Initial NAS message to transfer */
}
nas_establish_ind_t
;
/*
* NAS->AS - NAS signalling connection establishment response
* NAS responds to the AS that initial answer message has to be provided to
* the UE.
*/
typedef
struct
nas_establish_rsp_s
{
uint32_t
UEid
;
/* UE lower layer identifier */
as_stmsi_t
s_tmsi
;
/* UE identity */
nas_error_code_t
errCode
;
/* Transaction status */
as_nas_info_t
nasMsg
;
/* NAS message to transfer */
uint32_t
nas_ul_count
;
/* UL NAS COUNT */
uint16_t
selected_encryption_algorithm
;
uint16_t
selected_integrity_algorithm
;
}
nas_establish_rsp_t
;
/*
* AS->NAS - NAS signalling connection establishment confirm
* AS transfers the initial answer message to the NAS.
*/
typedef
struct
nas_establish_cnf_s
{
uint32_t
UEid
;
/* UE lower layer identifier */
nas_error_code_t
errCode
;
/* Transaction status */
as_nas_info_t
nasMsg
;
/* NAS message to transfer */
uint32_t
ul_nas_count
;
uint16_t
selected_encryption_algorithm
;
uint16_t
selected_integrity_algorithm
;
}
nas_establish_cnf_t
;
/*
* --------------------------------------------------------------------------
* NAS signalling connection release
* --------------------------------------------------------------------------
*/
/* Release cause */
typedef
enum
release_cause_s
{
AS_AUTHENTICATION_FAILURE
=
1
,
/* Authentication procedure failed */
AS_DETACH
/* Detach requested */
}
release_cause_t
;
/*
* NAS->AS - NAS signalling connection release request
* NAS requests the termination of the connection with the UE.
*/
typedef
struct
nas_release_req_s
{
uint32_t
UEid
;
/* UE lower layer identifier */
as_stmsi_t
s_tmsi
;
/* UE identity */
release_cause_t
cause
;
/* Release cause */
}
nas_release_req_t
;
/*
* AS->NAS - NAS signalling connection release indication
* AS reports that connection has been terminated by the network.
*/
typedef
struct
nas_release_ind_s
{
release_cause_t
cause
;
/* Release cause */
}
nas_release_ind_t
;
/*
* --------------------------------------------------------------------------
* NAS information transfer
* --------------------------------------------------------------------------
*/
/*
* NAS->AS - Uplink data transfer request
* NAS requests the AS to transfer uplink information to the NAS that
* operates at the network side.
*/
typedef
struct
ul_info_transfer_req_s
{
uint32_t
UEid
;
/* UE lower layer identifier */
as_stmsi_t
s_tmsi
;
/* UE identity */
as_nas_info_t
nasMsg
;
/* Uplink NAS message */
}
ul_info_transfer_req_t
;
/*
* AS->NAS - Uplink data transfer confirm
* AS immediately notifies the NAS whether uplink information has been
* successfully sent to the network or not.
*/
typedef
struct
ul_info_transfer_cnf_s
{
uint32_t
UEid
;
/* UE lower layer identifier */
nas_error_code_t
errCode
;
/* Transaction status */
}
ul_info_transfer_cnf_t
;
/*
* AS->NAS - Uplink data transfer indication
* AS delivers the uplink information message to the NAS that operates
* at the network side.
*/
typedef
struct
ul_info_transfer_ind_s
{
uint32_t
UEid
;
/* UE lower layer identifier */
as_nas_info_t
nasMsg
;
/* Uplink NAS message */
}
ul_info_transfer_ind_t
;
/*
* NAS->AS - Downlink data transfer request
* NAS requests the AS to transfer downlink information to the NAS that
* operates at the UE side.
*/
typedef
ul_info_transfer_req_t
dl_info_transfer_req_t
;
/*
* AS->NAS - Downlink data transfer confirm
* AS immediately notifies the NAS whether downlink information has been
* successfully sent to the network or not.
*/
typedef
ul_info_transfer_cnf_t
dl_info_transfer_cnf_t
;
/*
* AS->NAS - Downlink data transfer indication
* AS delivers the downlink information message to the NAS that operates
* at the UE side.
*/
typedef
ul_info_transfer_ind_t
dl_info_transfer_ind_t
;
/*
* --------------------------------------------------------------------------
* Radio Access Bearer establishment
* --------------------------------------------------------------------------
*/
/* TODO: Quality of Service parameters */
typedef
struct
{}
as_qos_t
;
/*
* NAS->AS - Radio access bearer establishment request
* NAS requests the AS to allocate transmission resources to radio access
* bearer initialized at the network side.
*/
typedef
struct
rab_establish_req_s
{
as_stmsi_t
s_tmsi
;
/* UE identity */
as_rab_id_t
rabID
;
/* Radio access bearer identity */
as_qos_t
QoS
;
/* Requested Quality of Service */
}
rab_establish_req_t
;
/*
* AS->NAS - Radio access bearer establishment indication
* AS notifies the NAS that specific radio access bearer has to be setup.
*/
typedef
struct
rab_establish_ind_s
{
as_rab_id_t
rabID
;
/* Radio access bearer identity */
}
rab_establish_ind_t
;
/*
* NAS->AS - Radio access bearer establishment response
* NAS responds to AS whether the specified radio access bearer has been
* successfully setup or not.
*/
typedef
struct
rab_establish_rsp_s
{
as_stmsi_t
s_tmsi
;
/* UE identity */
as_rab_id_t
rabID
;
/* Radio access bearer identity */
nas_error_code_t
errCode
;
/* Transaction status */
}
rab_establish_rsp_t
;
/*
* AS->NAS - Radio access bearer establishment confirm
* AS notifies NAS whether the specified radio access bearer has been
* successfully setup at the UE side or not.
*/
typedef
struct
rab_establish_cnf_s
{
as_rab_id_t
rabID
;
/* Radio access bearer identity */
nas_error_code_t
errCode
;
/* Transaction status */
}
rab_establish_cnf_t
;
/*
* --------------------------------------------------------------------------
* Radio Access Bearer release
* --------------------------------------------------------------------------
*/
/*
* NAS->AS - Radio access bearer release request
* NAS requests the AS to release transmission resources previously allocated
* to specific radio access bearer at the network side.
*/
typedef
struct
rab_release_req_s
{
as_stmsi_t
s_tmsi
;
/* UE identity */
as_rab_id_t
rabID
;
/* Radio access bearer identity */
}
rab_release_req_t
;
/*
* AS->NAS - Radio access bearer release indication
* AS notifies NAS that specific radio access bearer has been released.
*/
typedef
struct
rab_release_ind_s
{
as_rab_id_t
rabID
;
/* Radio access bearer identity */
}
rab_release_ind_t
;
/*
* --------------------------------------------------------------------------
* Structure of the AS messages handled by the network sublayer
* --------------------------------------------------------------------------
*/
typedef
struct
as_message_s
{
uint16_t
msgID
;
union
{
broadcast_info_ind_t
broadcast_info_ind
;
cell_info_req_t
cell_info_req
;
cell_info_cnf_t
cell_info_cnf
;
cell_info_ind_t
cell_info_ind
;
paging_req_t
paging_req
;
paging_ind_t
paging_ind
;
nas_establish_req_t
nas_establish_req
;
nas_establish_ind_t
nas_establish_ind
;
nas_establish_rsp_t
nas_establish_rsp
;
nas_establish_cnf_t
nas_establish_cnf
;
nas_release_req_t
nas_release_req
;
nas_release_ind_t
nas_release_ind
;
ul_info_transfer_req_t
ul_info_transfer_req
;
ul_info_transfer_cnf_t
ul_info_transfer_cnf
;
ul_info_transfer_ind_t
ul_info_transfer_ind
;
dl_info_transfer_req_t
dl_info_transfer_req
;
dl_info_transfer_cnf_t
dl_info_transfer_cnf
;
dl_info_transfer_ind_t
dl_info_transfer_ind
;
rab_establish_req_t
rab_establish_req
;
rab_establish_ind_t
rab_establish_ind
;
rab_establish_rsp_t
rab_establish_rsp
;
rab_establish_cnf_t
rab_establish_cnf
;
rab_release_req_t
rab_release_req
;
rab_release_ind_t
rab_release_ind
;
}
__attribute__
((
__packed__
))
msg
;
}
as_message_t
;
/****************************************************************************/
/******************** G L O B A L V A R I A B L E S ********************/
/****************************************************************************/
/****************************************************************************/
/****************** E X P O R T E D F U N C T I O N S ******************/
/****************************************************************************/
int
as_message_decode
(
const
char
*
buffer
,
as_message_t
*
msg
,
int
length
);
int
as_message_encode
(
char
*
buffer
,
as_message_t
*
msg
,
int
length
);
/* Implemented in the network_api.c body file */
int
as_message_send
(
as_message_t
*
as_msg
);
#endif
/* __AS_MESSAGE_H__*/
This diff is collapsed.
Click to expand it.
openair3/INTERTASK_INTERFACE
deleted
120000 → 0
View file @
5affbe38
../common/utils/itti
\ No newline at end of file
This diff is collapsed.
Click to expand it.
openair3/NAS/COMMON/API/NETWORK/as_message.h
deleted
120000 → 0
View file @
5affbe38
..
/
..
/
..
/
..
/
..
/
openair2
/
COMMON
/
as_message
.
h
\ No newline at end of file
This diff is collapsed.
Click to expand it.
openair3/NAS/COMMON/API/NETWORK/as_message.h
0 → 100644
View file @
5e1d462a
/*
* Copyright (c) 2015, EURECOM (www.eurecom.fr)
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this
* list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* The views and conclusions contained in the software and documentation are those
* of the authors and should not be interpreted as representing official policies,
* either expressed or implied, of the FreeBSD Project.
*/
/*****************************************************************************
Source as_message.h
Version 0.1
Date 2012/10/18
Product NAS stack
Subsystem Application Programming Interface
Author Frederic Maurel
Description Defines the messages supported by the Access Stratum sublayer
protocol (usually RRC and S1AP for E-UTRAN) and functions used
to encode and decode
*****************************************************************************/
#ifndef __AS_MESSAGE_H__
#define __AS_MESSAGE_H__
#include "commonDef.h"
#include "networkDef.h"
/****************************************************************************/
/********************* G L O B A L C O N S T A N T S *******************/
/****************************************************************************/
/*
* --------------------------------------------------------------------------
* Access Stratum message types
* --------------------------------------------------------------------------
*/
#define AS_REQUEST 0x0100
#define AS_RESPONSE 0x0200
#define AS_INDICATION 0x0400
#define AS_CONFIRM 0x0800
/*
* --------------------------------------------------------------------------
* Access Stratum message identifiers
* --------------------------------------------------------------------------
*/
/* Broadcast information */
#define AS_BROADCAST_INFO 0x01
#define AS_BROADCAST_INFO_IND (AS_BROADCAST_INFO | AS_INDICATION)
/* Cell information relevant for cell selection processing */
#define AS_CELL_INFO 0x02
#define AS_CELL_INFO_REQ (AS_CELL_INFO | AS_REQUEST)
#define AS_CELL_INFO_CNF (AS_CELL_INFO | AS_CONFIRM)
#define AS_CELL_INFO_IND (AS_CELL_INFO | AS_INDICATION)
/* Paging information */
#define AS_PAGING 0x03
#define AS_PAGING_REQ (AS_PAGING | AS_REQUEST)
#define AS_PAGING_IND (AS_PAGING | AS_INDICATION)
/* NAS signalling connection establishment */
#define AS_NAS_ESTABLISH 0x04
#define AS_NAS_ESTABLISH_REQ (AS_NAS_ESTABLISH | AS_REQUEST)
#define AS_NAS_ESTABLISH_IND (AS_NAS_ESTABLISH | AS_INDICATION)
#define AS_NAS_ESTABLISH_RSP (AS_NAS_ESTABLISH | AS_RESPONSE)
#define AS_NAS_ESTABLISH_CNF (AS_NAS_ESTABLISH | AS_CONFIRM)
/* NAS signalling connection release */
#define AS_NAS_RELEASE 0x05
#define AS_NAS_RELEASE_REQ (AS_NAS_RELEASE | AS_REQUEST)
#define AS_NAS_RELEASE_IND (AS_NAS_RELEASE | AS_INDICATION)
/* Uplink information transfer */
#define AS_UL_INFO_TRANSFER 0x06
#define AS_UL_INFO_TRANSFER_REQ (AS_UL_INFO_TRANSFER | AS_REQUEST)
#define AS_UL_INFO_TRANSFER_CNF (AS_UL_INFO_TRANSFER | AS_CONFIRM)
#define AS_UL_INFO_TRANSFER_IND (AS_UL_INFO_TRANSFER | AS_INDICATION)
/* Downlink information transfer */
#define AS_DL_INFO_TRANSFER 0x07
#define AS_DL_INFO_TRANSFER_REQ (AS_DL_INFO_TRANSFER | AS_REQUEST)
#define AS_DL_INFO_TRANSFER_CNF (AS_DL_INFO_TRANSFER | AS_CONFIRM)
#define AS_DL_INFO_TRANSFER_IND (AS_DL_INFO_TRANSFER | AS_INDICATION)
/* Radio Access Bearer establishment */
#define AS_RAB_ESTABLISH 0x08
#define AS_RAB_ESTABLISH_REQ (AS_RAB_ESTABLISH | AS_REQUEST)
#define AS_RAB_ESTABLISH_IND (AS_RAB_ESTABLISH | AS_INDICATION)
#define AS_RAB_ESTABLISH_RSP (AS_RAB_ESTABLISH | AS_RESPONSE)
#define AS_RAB_ESTABLISH_CNF (AS_RAB_ESTABLISH | AS_CONFIRM)
/* Radio Access Bearer release */
#define AS_RAB_RELEASE 0x09
#define AS_RAB_RELEASE_REQ (AS_RAB_RELEASE | AS_REQUEST)
#define AS_RAB_RELEASE_IND (AS_RAB_RELEASE | AS_INDICATION)
/* NAS Cause */
#define EPS_SERVICES_AND_NON_EPS_SERVICES_NOT_ALLOWED (8)
#define EPS_SERVICES_NOT_ALLOWED (7)
#define PLMN_NOT_ALLOWED (11)
#define TRACKING_AREA_NOT_ALLOWED (12)
#define ROAMING_NOT_ALLOWED_IN_THIS_TRACKING_AREA (13)
#define EPS_SERVICES_NOT_ALLOWED_IN_THIS_PLMN (14)
#define NO_SUITABLE_CELLS_IN_TRACKING_AREA (15)
#define NETWORK_FAILURE (17)
#define ESM_FAILURE (19)
typedef
enum
nas_cause_s
{
NAS_CAUSE_EPS_SERVICES_AND_NON_EPS_SERVICES_NOT_ALLOWED
=
EPS_SERVICES_AND_NON_EPS_SERVICES_NOT_ALLOWED
,
NAS_CAUSE_EPS_SERVICES_NOT_ALLOWED
=
EPS_SERVICES_NOT_ALLOWED
,
NAS_CAUSE_PLMN_NOT_ALLOWED
=
PLMN_NOT_ALLOWED
,
NAS_CAUSE_TRACKING_AREA_NOT_ALLOWED
=
TRACKING_AREA_NOT_ALLOWED
,
NAS_CAUSE_ROAMING_NOT_ALLOWED_IN_THIS_TRACKING_AREA
=
ROAMING_NOT_ALLOWED_IN_THIS_TRACKING_AREA
,
NAS_CAUSE_EPS_SERVICES_NOT_ALLOWED_IN_THIS_PLMN
=
EPS_SERVICES_NOT_ALLOWED_IN_THIS_PLMN
,
NAS_CAUSE_NO_SUITABLE_CELLS_IN_TRACKING_AREA
=
NO_SUITABLE_CELLS_IN_TRACKING_AREA
,
NAS_CAUSE_NETWORK_FAILURE
=
NETWORK_FAILURE
,
NAS_CAUSE_ESM_FAILURE
=
ESM_FAILURE
}
nas_cause_t
;
/*
* --------------------------------------------------------------------------
* Access Stratum message global parameters
* --------------------------------------------------------------------------
*/
/* Error code */
typedef
enum
nas_error_code_s
{
AS_SUCCESS
=
1
,
/* Success code, transaction is going on */
AS_TERMINATED_NAS
,
/* Transaction terminated by NAS */
AS_TERMINATED_AS
,
/* Transaction terminated by AS */
AS_FAILURE
/* Failure code */
}
nas_error_code_t
;
/* Core network domain */
typedef
enum
core_network_s
{
AS_PS
=
1
,
/* Packet-Switched */
AS_CS
/* Circuit-Switched */
}
core_network_t
;
/* SAE Temporary Mobile Subscriber Identity */
typedef
struct
as_stmsi_s
{
uint8_t
MMEcode
;
/* MME code that allocated the GUTI */
uint32_t
m_tmsi
;
/* M-Temporary Mobile Subscriber Identity */
}
as_stmsi_t
;
/* Dedicated NAS information */
typedef
struct
as_nas_info_s
{
uint32_t
length
;
/* Length of the NAS information data */
Byte_t
*
data
;
/* Dedicated NAS information data container */
}
as_nas_info_t
;
/* Radio Access Bearer identity */
typedef
uint8_t
as_rab_id_t
;
/****************************************************************************/
/************************ G L O B A L T Y P E S ************************/
/****************************************************************************/
/*
* --------------------------------------------------------------------------
* Broadcast information
* --------------------------------------------------------------------------
*/
/*
* AS->NAS - Broadcast information indication
* AS may asynchronously report to NAS available PLMNs within specific
* location area
*/
typedef
struct
broadcast_info_ind_s
{
#define PLMN_LIST_MAX_SIZE 6
PLMN_LIST_T
(
PLMN_LIST_MAX_SIZE
)
plmnIDs
;
/* List of PLMN identifiers */
ci_t
cellID
;
/* Identity of the cell serving the listed PLMNs */
tac_t
tac
;
/* Code of the tracking area the cell belongs to */
}
broadcast_info_ind_t
;
/*
* --------------------------------------------------------------------------
* Cell information relevant for cell selection processing
* --------------------------------------------------------------------------
*/
/* Radio access technologies supported by the network */
#define AS_GSM (1 << NET_ACCESS_GSM)
#define AS_COMPACT (1 << NET_ACCESS_COMPACT)
#define AS_UTRAN (1 << NET_ACCESS_UTRAN)
#define AS_EGPRS (1 << NET_ACCESS_EGPRS)
#define AS_HSDPA (1 << NET_ACCESS_HSDPA)
#define AS_HSUPA (1 << NET_ACCESS_HSUPA)
#define AS_HSDUPA (1 << NET_ACCESS_HSDUPA)
#define AS_EUTRAN (1 << NET_ACCESS_EUTRAN)
/*
* NAS->AS - Cell Information request
* NAS request AS to search for a suitable cell belonging to the selected
* PLMN to camp on.
*/
typedef
struct
cell_info_req_s
{
plmn_t
plmnID
;
/* Selected PLMN identity */
Byte_t
rat
;
/* Bitmap - set of radio access technologies */
}
cell_info_req_t
;
/*
* AS->NAS - Cell Information confirm
* AS search for a suitable cell and respond to NAS. If found, the cell
* is selected to camp on.
*/
typedef
struct
cell_info_cnf_s
{
uint8_t
errCode
;
/* Error code */
ci_t
cellID
;
/* Identity of the cell serving the selected PLMN */
tac_t
tac
;
/* Code of the tracking area the cell belongs to */
AcT_t
rat
;
/* Radio access technology supported by the cell */
uint8_t
rsrq
;
/* Reference signal received quality */
uint8_t
rsrp
;
/* Reference signal received power */
}
cell_info_cnf_t
;
/*
* AS->NAS - Cell Information indication
* AS may change cell selection if a more suitable cell is found.
*/
typedef
struct
cell_info_ind_s
{
ci_t
cellID
;
/* Identity of the new serving cell */
tac_t
tac
;
/* Code of the tracking area the cell belongs to */
}
cell_info_ind_t
;
/*
* --------------------------------------------------------------------------
* Paging information
* --------------------------------------------------------------------------
*/
/* Paging cause */
typedef
enum
paging_cause_s
{
AS_CONNECTION_ESTABLISH
,
/* Establish NAS signalling connection */
AS_EPS_ATTACH
,
/* Perform local detach and initiate EPS
* attach procedure */
AS_CS_FALLBACK
/* Inititate CS fallback procedure */
}
paging_cause_t
;
/*
* NAS->AS - Paging Information request
* NAS requests the AS that NAS signalling messages or user data is pending
* to be sent.
*/
typedef
struct
paging_req_s
{
as_stmsi_t
s_tmsi
;
/* UE identity */
uint8_t
CN_domain
;
/* Core network domain */
}
paging_req_t
;
/*
* AS->NAS - Paging Information indication
* AS reports to the NAS that appropriate procedure has to be initiated.
*/
typedef
struct
paging_ind_s
{
paging_cause_t
cause
;
/* Paging cause */
}
paging_ind_t
;
/*
* --------------------------------------------------------------------------
* NAS signalling connection establishment
* --------------------------------------------------------------------------
*/
/* Cause of RRC connection establishment */
typedef
enum
as_cause_s
{
AS_CAUSE_UNKNOWN
=
0
,
AS_CAUSE_EMERGENCY
=
NET_ESTABLISH_CAUSE_EMERGENCY
,
AS_CAUSE_HIGH_PRIO
=
NET_ESTABLISH_CAUSE_HIGH_PRIO
,
AS_CAUSE_MT_ACCESS
=
NET_ESTABLISH_CAUSE_MT_ACCESS
,
AS_CAUSE_MO_SIGNAL
=
NET_ESTABLISH_CAUSE_MO_SIGNAL
,
AS_CAUSE_MO_DATA
=
NET_ESTABLISH_CAUSE_MO_DATA
,
AS_CAUSE_V1020
=
NET_ESTABLISH_CAUSE_V1020
}
as_cause_t
;
/* Type of the call associated to the RRC connection establishment */
typedef
enum
as_call_type_s
{
AS_TYPE_ORIGINATING_SIGNAL
=
NET_ESTABLISH_TYPE_ORIGINATING_SIGNAL
,
AS_TYPE_EMERGENCY_CALLS
=
NET_ESTABLISH_TYPE_EMERGENCY_CALLS
,
AS_TYPE_ORIGINATING_CALLS
=
NET_ESTABLISH_TYPE_ORIGINATING_CALLS
,
AS_TYPE_TERMINATING_CALLS
=
NET_ESTABLISH_TYPE_TERMINATING_CALLS
,
AS_TYPE_MO_CS_FALLBACK
=
NET_ESTABLISH_TYPE_MO_CS_FALLBACK
}
as_call_type_t
;
/*
* NAS->AS - NAS signalling connection establishment request
* NAS requests the AS to perform the RRC connection establishment procedure
* to transfer initial NAS message to the network while UE is in IDLE mode.
*/
typedef
struct
nas_establish_req_s
{
as_cause_t
cause
;
/* RRC connection establishment cause */
as_call_type_t
type
;
/* RRC associated call type */
as_stmsi_t
s_tmsi
;
/* UE identity */
plmn_t
plmnID
;
/* Selected PLMN identity */
as_nas_info_t
initialNasMsg
;
/* Initial NAS message to transfer */
}
nas_establish_req_t
;
/*
* AS->NAS - NAS signalling connection establishment indication
* AS transfers the initial NAS message to the NAS.
*/
typedef
struct
nas_establish_ind_s
{
uint32_t
UEid
;
/* UE lower layer identifier */
tac_t
tac
;
/* Code of the tracking area the initiating
* UE belongs to */
as_cause_t
asCause
;
/* Establishment cause */
as_nas_info_t
initialNasMsg
;
/* Initial NAS message to transfer */
}
nas_establish_ind_t
;
/*
* NAS->AS - NAS signalling connection establishment response
* NAS responds to the AS that initial answer message has to be provided to
* the UE.
*/
typedef
struct
nas_establish_rsp_s
{
uint32_t
UEid
;
/* UE lower layer identifier */
as_stmsi_t
s_tmsi
;
/* UE identity */
nas_error_code_t
errCode
;
/* Transaction status */
as_nas_info_t
nasMsg
;
/* NAS message to transfer */
uint32_t
nas_ul_count
;
/* UL NAS COUNT */
uint16_t
selected_encryption_algorithm
;
uint16_t
selected_integrity_algorithm
;
}
nas_establish_rsp_t
;
/*
* AS->NAS - NAS signalling connection establishment confirm
* AS transfers the initial answer message to the NAS.
*/
typedef
struct
nas_establish_cnf_s
{
uint32_t
UEid
;
/* UE lower layer identifier */
nas_error_code_t
errCode
;
/* Transaction status */
as_nas_info_t
nasMsg
;
/* NAS message to transfer */
uint32_t
ul_nas_count
;
uint16_t
selected_encryption_algorithm
;
uint16_t
selected_integrity_algorithm
;
}
nas_establish_cnf_t
;
/*
* --------------------------------------------------------------------------
* NAS signalling connection release
* --------------------------------------------------------------------------
*/
/* Release cause */
typedef
enum
release_cause_s
{
AS_AUTHENTICATION_FAILURE
=
1
,
/* Authentication procedure failed */
AS_DETACH
/* Detach requested */
}
release_cause_t
;
/*
* NAS->AS - NAS signalling connection release request
* NAS requests the termination of the connection with the UE.
*/
typedef
struct
nas_release_req_s
{
uint32_t
UEid
;
/* UE lower layer identifier */
as_stmsi_t
s_tmsi
;
/* UE identity */
release_cause_t
cause
;
/* Release cause */
}
nas_release_req_t
;
/*
* AS->NAS - NAS signalling connection release indication
* AS reports that connection has been terminated by the network.
*/
typedef
struct
nas_release_ind_s
{
release_cause_t
cause
;
/* Release cause */
}
nas_release_ind_t
;
/*
* --------------------------------------------------------------------------
* NAS information transfer
* --------------------------------------------------------------------------
*/
/*
* NAS->AS - Uplink data transfer request
* NAS requests the AS to transfer uplink information to the NAS that
* operates at the network side.
*/
typedef
struct
ul_info_transfer_req_s
{
uint32_t
UEid
;
/* UE lower layer identifier */
as_stmsi_t
s_tmsi
;
/* UE identity */
as_nas_info_t
nasMsg
;
/* Uplink NAS message */
}
ul_info_transfer_req_t
;
/*
* AS->NAS - Uplink data transfer confirm
* AS immediately notifies the NAS whether uplink information has been
* successfully sent to the network or not.
*/
typedef
struct
ul_info_transfer_cnf_s
{
uint32_t
UEid
;
/* UE lower layer identifier */
nas_error_code_t
errCode
;
/* Transaction status */
}
ul_info_transfer_cnf_t
;
/*
* AS->NAS - Uplink data transfer indication
* AS delivers the uplink information message to the NAS that operates
* at the network side.
*/
typedef
struct
ul_info_transfer_ind_s
{
uint32_t
UEid
;
/* UE lower layer identifier */
as_nas_info_t
nasMsg
;
/* Uplink NAS message */
}
ul_info_transfer_ind_t
;
/*
* NAS->AS - Downlink data transfer request
* NAS requests the AS to transfer downlink information to the NAS that
* operates at the UE side.
*/
typedef
ul_info_transfer_req_t
dl_info_transfer_req_t
;
/*
* AS->NAS - Downlink data transfer confirm
* AS immediately notifies the NAS whether downlink information has been
* successfully sent to the network or not.
*/
typedef
ul_info_transfer_cnf_t
dl_info_transfer_cnf_t
;
/*
* AS->NAS - Downlink data transfer indication
* AS delivers the downlink information message to the NAS that operates
* at the UE side.
*/
typedef
ul_info_transfer_ind_t
dl_info_transfer_ind_t
;
/*
* --------------------------------------------------------------------------
* Radio Access Bearer establishment
* --------------------------------------------------------------------------
*/
/* TODO: Quality of Service parameters */
typedef
struct
{}
as_qos_t
;
/*
* NAS->AS - Radio access bearer establishment request
* NAS requests the AS to allocate transmission resources to radio access
* bearer initialized at the network side.
*/
typedef
struct
rab_establish_req_s
{
as_stmsi_t
s_tmsi
;
/* UE identity */
as_rab_id_t
rabID
;
/* Radio access bearer identity */
as_qos_t
QoS
;
/* Requested Quality of Service */
}
rab_establish_req_t
;
/*
* AS->NAS - Radio access bearer establishment indication
* AS notifies the NAS that specific radio access bearer has to be setup.
*/
typedef
struct
rab_establish_ind_s
{
as_rab_id_t
rabID
;
/* Radio access bearer identity */
}
rab_establish_ind_t
;
/*
* NAS->AS - Radio access bearer establishment response
* NAS responds to AS whether the specified radio access bearer has been
* successfully setup or not.
*/
typedef
struct
rab_establish_rsp_s
{
as_stmsi_t
s_tmsi
;
/* UE identity */
as_rab_id_t
rabID
;
/* Radio access bearer identity */
nas_error_code_t
errCode
;
/* Transaction status */
}
rab_establish_rsp_t
;
/*
* AS->NAS - Radio access bearer establishment confirm
* AS notifies NAS whether the specified radio access bearer has been
* successfully setup at the UE side or not.
*/
typedef
struct
rab_establish_cnf_s
{
as_rab_id_t
rabID
;
/* Radio access bearer identity */
nas_error_code_t
errCode
;
/* Transaction status */
}
rab_establish_cnf_t
;
/*
* --------------------------------------------------------------------------
* Radio Access Bearer release
* --------------------------------------------------------------------------
*/
/*
* NAS->AS - Radio access bearer release request
* NAS requests the AS to release transmission resources previously allocated
* to specific radio access bearer at the network side.
*/
typedef
struct
rab_release_req_s
{
as_stmsi_t
s_tmsi
;
/* UE identity */
as_rab_id_t
rabID
;
/* Radio access bearer identity */
}
rab_release_req_t
;
/*
* AS->NAS - Radio access bearer release indication
* AS notifies NAS that specific radio access bearer has been released.
*/
typedef
struct
rab_release_ind_s
{
as_rab_id_t
rabID
;
/* Radio access bearer identity */
}
rab_release_ind_t
;
/*
* --------------------------------------------------------------------------
* Structure of the AS messages handled by the network sublayer
* --------------------------------------------------------------------------
*/
typedef
struct
as_message_s
{
uint16_t
msgID
;
union
{
broadcast_info_ind_t
broadcast_info_ind
;
cell_info_req_t
cell_info_req
;
cell_info_cnf_t
cell_info_cnf
;
cell_info_ind_t
cell_info_ind
;
paging_req_t
paging_req
;
paging_ind_t
paging_ind
;
nas_establish_req_t
nas_establish_req
;
nas_establish_ind_t
nas_establish_ind
;
nas_establish_rsp_t
nas_establish_rsp
;
nas_establish_cnf_t
nas_establish_cnf
;
nas_release_req_t
nas_release_req
;
nas_release_ind_t
nas_release_ind
;
ul_info_transfer_req_t
ul_info_transfer_req
;
ul_info_transfer_cnf_t
ul_info_transfer_cnf
;
ul_info_transfer_ind_t
ul_info_transfer_ind
;
dl_info_transfer_req_t
dl_info_transfer_req
;
dl_info_transfer_cnf_t
dl_info_transfer_cnf
;
dl_info_transfer_ind_t
dl_info_transfer_ind
;
rab_establish_req_t
rab_establish_req
;
rab_establish_ind_t
rab_establish_ind
;
rab_establish_rsp_t
rab_establish_rsp
;
rab_establish_cnf_t
rab_establish_cnf
;
rab_release_req_t
rab_release_req
;
rab_release_ind_t
rab_release_ind
;
}
__attribute__
((
__packed__
))
msg
;
}
as_message_t
;
/****************************************************************************/
/******************** G L O B A L V A R I A B L E S ********************/
/****************************************************************************/
/****************************************************************************/
/****************** E X P O R T E D F U N C T I O N S ******************/
/****************************************************************************/
int
as_message_decode
(
const
char
*
buffer
,
as_message_t
*
msg
,
int
length
);
int
as_message_encode
(
char
*
buffer
,
as_message_t
*
msg
,
int
length
);
/* Implemented in the network_api.c body file */
int
as_message_send
(
as_message_t
*
as_msg
);
#endif
/* __AS_MESSAGE_H__*/
This diff is collapsed.
Click to expand it.
openair3/NAS/COMMON/commonDef.h
deleted
120000 → 0
View file @
5affbe38
..
/
..
/
..
/
openair2
/
COMMON
/
commonDef
.
h
\ No newline at end of file
This diff is collapsed.
Click to expand it.
openair3/NAS/COMMON/commonDef.h
0 → 100644
View file @
5e1d462a
/*
* Copyright (c) 2015, EURECOM (www.eurecom.fr)
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this
* list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* The views and conclusions contained in the software and documentation are those
* of the authors and should not be interpreted as representing official policies,
* either expressed or implied, of the FreeBSD Project.
*/
/*
Source commonDef.h
Version 0.1
Date 2012/02/27
Product NAS stack
Subsystem include
Author Frederic Maurel
Description Contains global common definitions
*****************************************************************************/
#ifndef __COMMONDEF_H__
#define __COMMONDEF_H__
#include <stdint.h>
#include <stddef.h>
#include <stdbool.h>
typedef
signed
char
boolean_t
;
#if !defined(TRUE)
#define TRUE (boolean_t)0x01
#endif
#if !defined(FALSE)
#define FALSE (boolean_t)0x00
#endif
#define BOOL_NOT(b) (b^TRUE)
#define NAS_UE_ID_FMT "0x%06x"
/****************************************************************************/
/********************* G L O B A L C O N S T A N T S *******************/
/****************************************************************************/
#define RETURNok (0)
#define RETURNerror (-1)
/*
* Name of the environment variable which defines the default directory
* where the NAS application is executed and where are located files
* where non-volatile data are stored
*/
#define DEFAULT_NAS_PATH "PWD"
/****************************************************************************/
/************************ G L O B A L T Y P E S ************************/
/****************************************************************************/
/*
-----------------------------------------------------------------------------
Standard data type definitions
-----------------------------------------------------------------------------
*/
typedef
int8_t
SByte_t
;
/* 8 bit signed integer */
typedef
uint8_t
Byte_t
;
/* 8 bit unsigned integer */
/*
-----------------------------------------------------------------------------
Common NAS data type definitions
-----------------------------------------------------------------------------
*/
typedef
uint8_t
Stat_t
;
/* Registration status */
typedef
uint16_t
lac_t
;
/* Location Area Code */
typedef
uint8_t
rac_t
;
/* Routing Area Code */
typedef
uint16_t
tac_t
;
/* Tracking Area Code */
typedef
uint32_t
ci_t
;
/* Cell Identifier */
typedef
uint8_t
AcT_t
;
/* Access Technology */
/*
* International Mobile Subscriber Identity
*/
typedef
struct
{
Byte_t
length
;
union
{
struct
{
Byte_t
digit2
:
4
;
Byte_t
digit1
:
4
;
Byte_t
digit4
:
4
;
Byte_t
digit3
:
4
;
Byte_t
digit6
:
4
;
Byte_t
digit5
:
4
;
Byte_t
digit8
:
4
;
Byte_t
digit7
:
4
;
Byte_t
digit10
:
4
;
Byte_t
digit9
:
4
;
Byte_t
digit12
:
4
;
Byte_t
digit11
:
4
;
Byte_t
digit14
:
4
;
Byte_t
digit13
:
4
;
#define EVEN_PARITY 0
#define ODD_PARITY 1
Byte_t
parity
:
4
;
Byte_t
digit15
:
4
;
}
num
;
#define IMSI_SIZE 8
Byte_t
value
[
IMSI_SIZE
];
}
u
;
}
imsi_t
;
#define NAS_IMSI2STR(iMsI_t_PtR,iMsI_sTr, MaXlEn) \
{\
int l_offset = 0;\
int l_ret = 0;\
l_ret = snprintf(iMsI_sTr + l_offset, MaXlEn - l_offset, "%u%u%u%u%u",\
iMsI_t_PtR->u.num.digit1, iMsI_t_PtR->u.num.digit2,\
iMsI_t_PtR->u.num.digit3, iMsI_t_PtR->u.num.digit4,\
iMsI_t_PtR->u.num.digit5);\
if ((iMsI_t_PtR->u.num.digit6 != 0xf) && (l_ret > 0)) {\
l_offset += l_ret;\
l_ret = snprintf(iMsI_sTr + l_offset, MaXlEn - l_offset, "%u", iMsI_t_PtR->u.num.digit6);\
}\
if (l_ret > 0) {\
l_offset += l_ret;\
l_ret = snprintf(iMsI_sTr + l_offset, MaXlEn - l_offset, "%u%u%u%u%u%u%u%u",\
iMsI_t_PtR->u.num.digit7, iMsI_t_PtR->u.num.digit8,\
iMsI_t_PtR->u.num.digit9, iMsI_t_PtR->u.num.digit10,\
iMsI_t_PtR->u.num.digit11, iMsI_t_PtR->u.num.digit12,\
iMsI_t_PtR->u.num.digit13, iMsI_t_PtR->u.num.digit14);\
}\
if ((iMsI_t_PtR->u.num.digit15 != 0xf) && (l_ret > 0)) {\
l_offset += l_ret;\
l_ret = snprintf(iMsI_sTr + l_offset, MaXlEn - l_offset, "%u", iMsI_t_PtR->u.num.digit15);\
}\
}
/*
* Mobile subscriber dialing number
*/
typedef
struct
{
Byte_t
ext
:
1
;
/* Type Of Number */
#define MSISDN_TON_UNKNOWKN 0b000
#define MSISDN_TON_INTERNATIONAL 0b001
#define MSISDN_TON_NATIONAL 0b010
#define MSISDN_TON_NETWORK 0b011
#define MSISDN_TON_SUBCRIBER 0b100
#define MSISDN_TON_ABBREVIATED 0b110
#define MSISDN_TON_RESERVED 0b111
Byte_t
ton
:
3
;
/* Numbering Plan Identification */
#define MSISDN_NPI_UNKNOWN 0b0000
#define MSISDN_NPI_ISDN_TELEPHONY 0b0001
#define MSISDN_NPI_GENERIC 0b0010
#define MSISDN_NPI_DATA 0b0011
#define MSISDN_NPI_TELEX 0b0100
#define MSISDN_NPI_MARITIME_MOBILE 0b0101
#define MSISDN_NPI_LAND_MOBILE 0b0110
#define MSISDN_NPI_ISDN_MOBILE 0b0111
#define MSISDN_NPI_PRIVATE 0b1110
#define MSISDN_NPI_RESERVED 0b1111
Byte_t
npi
:
4
;
/* Dialing Number */
struct
{
Byte_t
lsb
:
4
;
Byte_t
msb
:
4
;
#define MSISDN_DIGIT_SIZE 10
}
digit
[
MSISDN_DIGIT_SIZE
];
}
msisdn_t
;
/*
* International Mobile Equipment Identity
*/
typedef
imsi_t
imei_t
;
/*
* Public Land Mobile Network identifier
* PLMN = BCD encoding (Mobile Country Code + Mobile Network Code)
*/
typedef
struct
{
Byte_t
MCCdigit2
:
4
;
Byte_t
MCCdigit1
:
4
;
Byte_t
MNCdigit3
:
4
;
Byte_t
MCCdigit3
:
4
;
Byte_t
MNCdigit2
:
4
;
Byte_t
MNCdigit1
:
4
;
}
plmn_t
;
/*
* Location Area Identification
*/
typedef
struct
{
plmn_t
plmn
;
/* <MCC> + <MNC> */
lac_t
lac
;
/* Location Area Code */
}
lai_t
;
/*
* GPRS Routing Area Identification
*/
typedef
struct
{
plmn_t
plmn
;
/* <MCC> + <MNC> */
lac_t
lac
;
/* Location Area Code */
rac_t
rac
;
/* Routing Area Code */
}
RAI_t
;
/*
* EPS Tracking Area Identification
*/
typedef
struct
{
plmn_t
plmn
;
/* <MCC> + <MNC> */
tac_t
tac
;
/* Tracking Area Code */
}
tai_t
;
/*
* EPS Globally Unique MME Identity
*/
typedef
struct
{
plmn_t
plmn
;
/* <MCC> + <MNC> */
uint16_t
MMEgid
;
/* MME group identifier */
uint8_t
MMEcode
;
/* MME code */
}
gummei_t
;
/*
* EPS Globally Unique Temporary UE Identity
*/
typedef
struct
{
gummei_t
gummei
;
/* Globally Unique MME Identity */
uint32_t
m_tmsi
;
/* M-Temporary Mobile Subscriber Identity */
}
GUTI_t
;
#define GUTI2STR(GuTi_PtR, GuTi_StR, MaXlEn) \
{\
int l_offset = 0;\
int l_ret = 0;\
l_ret += snprintf(GuTi_StR + l_offset,MaXlEn-l_offset, "%03u.",\
GuTi_PtR->gummei.plmn.MCCdigit3 * 100 +\
GuTi_PtR->gummei.plmn.MCCdigit2 * 10 +\
GuTi_PtR->gummei.plmn.MCCdigit1);\
if (l_ret > 0) {\
l_offset += l_ret;\
} else {\
l_offset = MaXlEn;\
}\
if (GuTi_PtR->gummei.plmn.MNCdigit1 != 0xf) {\
l_ret += snprintf(GuTi_StR + l_offset,MaXlEn-l_offset, "%03u|%04x|%02x|%08x",\
GuTi_PtR->gummei.plmn.MNCdigit3 * 100 +\
GuTi_PtR->gummei.plmn.MNCdigit2 * 10 +\
GuTi_PtR->gummei.plmn.MNCdigit1,\
GuTi_PtR->gummei.MMEgid,\
GuTi_PtR->gummei.MMEcode,\
GuTi_PtR->m_tmsi);\
} else {\
l_ret += snprintf(GuTi_StR + l_offset,MaXlEn-l_offset, "%02u|%04x|%02x|%08x",\
GuTi_PtR->gummei.plmn.MNCdigit2 * 10 +\
GuTi_PtR->gummei.plmn.MNCdigit1,\
GuTi_PtR->gummei.MMEgid,\
GuTi_PtR->gummei.MMEcode,\
GuTi_PtR->m_tmsi);\
}\
}
/* Checks PLMN validity */
#define PLMN_IS_VALID(plmn) (((plmn).MCCdigit1 & \
(plmn).MCCdigit2 & \
(plmn).MCCdigit3) != 0x0F)
/* Checks TAC validity */
#define TAC_IS_VALID(tac) (((tac) != 0x0000) && ((tac) != 0xFFF0))
/* Checks TAI validity */
#define TAI_IS_VALID(tai) (PLMN_IS_VALID((tai).plmn) && \
TAC_IS_VALID((tai).tac))
/*
* A list of PLMNs
*/
#define PLMN_LIST_T(SIZE) struct {Byte_t n_plmns; plmn_t plmn[SIZE];}
/*
* A list of TACs
*/
#define TAC_LIST_T(SIZE) struct {Byte_t n_tacs; TAC_t tac[SIZE];}
/*
* A list of TAIs
*/
#define TAI_LIST_T(SIZE) struct {Byte_t n_tais; tai_t tai[SIZE];}
/*
* User notification callback, executed whenever a change of data with
* respect of network information (e.g. network registration and/or
* location change, new PLMN becomes available) is notified by the
* EPS Mobility Management sublayer
*/
typedef
int
(
*
emm_indication_callback_t
)
(
Stat_t
,
tac_t
,
ci_t
,
AcT_t
,
const
char
*
,
size_t
);
typedef
enum
eps_protocol_discriminator_e
{
/* Protocol discriminator identifier for EPS Mobility Management */
EPS_MOBILITY_MANAGEMENT_MESSAGE
=
0x7
,
/* Protocol discriminator identifier for EPS Session Management */
EPS_SESSION_MANAGEMENT_MESSAGE
=
0x2
,
}
eps_protocol_discriminator_t
;
/****************************************************************************/
/******************** G L O B A L V A R I A B L E S ********************/
/****************************************************************************/
/****************************************************************************/
/****************** E X P O R T E D F U N C T I O N S ******************/
/****************************************************************************/
#endif
/* __COMMONDEF_H__*/
This diff is collapsed.
Click to expand it.
openair3/NAS/COMMON/networkDef.h
deleted
120000 → 0
View file @
5affbe38
..
/
..
/
..
/
openair2
/
COMMON
/
networkDef
.
h
\ No newline at end of file
This diff is collapsed.
Click to expand it.
openair3/NAS/COMMON/networkDef.h
0 → 100644
View file @
5e1d462a
/*
* Copyright (c) 2015, EURECOM (www.eurecom.fr)
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this
* list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* The views and conclusions contained in the software and documentation are those
* of the authors and should not be interpreted as representing official policies,
* either expressed or implied, of the FreeBSD Project.
*/
/*****************************************************************************
Source networkDef.h
Version 0.1
Date 2012/09/21
Product NAS stack
Subsystem include
Author Frederic Maurel
Description Contains network's global definitions
*****************************************************************************/
#ifndef __NETWORKDEF_H__
#define __NETWORKDEF_H__
/****************************************************************************/
/********************* G L O B A L C O N S T A N T S *******************/
/****************************************************************************/
/*
* ----------------------
* Network selection mode
* ----------------------
*/
#define NET_PLMN_AUTO 0
#define NET_PLMN_MANUAL 1
/*
* ---------------------------
* Network registration status
* ---------------------------
*/
/* not registered, not currently searching an operator to register to */
#define NET_REG_STATE_OFF 0
/* registered, home network */
#define NET_REG_STATE_HN 1
/* not registered, currently trying to attach or searching an operator
* to register to */
#define NET_REG_STATE_ON 2
/* registration denied */
#define NET_REG_STATE_DENIED 3
/* unknown (e.g. out of GERAN/UTRAN/E-UTRAN coverage) */
#define NET_REG_STATE_UNKNOWN 4
/* registered, roaming */
#define NET_REG_STATE_ROAMING 5
/* registered for "SMS only", home network */
#define NET_REG_STATE_SMS_HN 6
/* registered, for "SMS only", roaming */
#define NET_REG_STATE_SMS_ROAMING 7
/* attached for emergency bearer services only (applicable to UTRAN) */
#define NET_REG_STATE_EMERGENCY 8
/*
* ------------------------------------
* Network access technology indicators
* ------------------------------------
*/
#define NET_ACCESS_UNAVAILABLE (-1)
/* Not available */
#define NET_ACCESS_GSM 0
/* GSM */
#define NET_ACCESS_COMPACT 1
/* GSM Compact */
#define NET_ACCESS_UTRAN 2
/* UTRAN */
#define NET_ACCESS_EGPRS 3
/* GSM w/EGPRS */
#define NET_ACCESS_HSDPA 4
/* UTRAN w/HSDPA */
#define NET_ACCESS_HSUPA 5
/* UTRAN w/HSUPA */
#define NET_ACCESS_HSDUPA 6
/* UTRAN w/HSDPA and HSUPA */
#define NET_ACCESS_EUTRAN 7
/* E-UTRAN */
/*
* ---------------------------------------
* Network operator representation formats
* ---------------------------------------
*/
#define NET_FORMAT_LONG 0
/* long format alphanumeric */
#define NET_FORMAT_SHORT 1
/* short format alphanumeric */
#define NET_FORMAT_NUM 2
/* numeric format */
#define NET_FORMAT_MAX_SIZE NET_FORMAT_LONG_SIZE
/*
* -----------------------------
* Network operator availability
* -----------------------------
*/
#define NET_OPER_UNKNOWN 0
/* unknown operator */
#define NET_OPER_AVAILABLE 1
/* available operator */
#define NET_OPER_CURRENT 2
/* currently selected operator */
#define NET_OPER_FORBIDDEN 3
/* forbidden operator */
/*
* --------------------------------------
* Network connection establishment cause
* --------------------------------------
*/
#define NET_ESTABLISH_CAUSE_EMERGENCY 0x01
#define NET_ESTABLISH_CAUSE_HIGH_PRIO 0x02
#define NET_ESTABLISH_CAUSE_MT_ACCESS 0x03
#define NET_ESTABLISH_CAUSE_MO_SIGNAL 0x04
#define NET_ESTABLISH_CAUSE_MO_DATA 0x05
#define NET_ESTABLISH_CAUSE_V1020 0x06
/*
* --------------------------------------
* Network connection establishment type
* --------------------------------------
*/
#define NET_ESTABLISH_TYPE_ORIGINATING_SIGNAL 0x10
#define NET_ESTABLISH_TYPE_EMERGENCY_CALLS 0x20
#define NET_ESTABLISH_TYPE_ORIGINATING_CALLS 0x30
#define NET_ESTABLISH_TYPE_TERMINATING_CALLS 0x40
#define NET_ESTABLISH_TYPE_MO_CS_FALLBACK 0x50
/*
* -------------------
* PDN connection type
* -------------------
*/
#define NET_PDN_TYPE_IPV4 (0 + 1)
#define NET_PDN_TYPE_IPV6 (1 + 1)
#define NET_PDN_TYPE_IPV4V6 (2 + 1)
/****************************************************************************/
/************************ G L O B A L T Y P E S ************************/
/****************************************************************************/
/*
* ---------------------
* PDN connection status
* ---------------------
*/
typedef
enum
{
/* MT = The Mobile Terminal, NW = The Network */
NET_PDN_MT_DEFAULT_ACT
=
1
,
/* MT has activated a PDN connection */
NET_PDN_NW_DEFAULT_DEACT
,
/* NW has deactivated a PDN connection */
NET_PDN_MT_DEFAULT_DEACT
,
/* MT has deactivated a PDN connection */
NET_PDN_NW_DEDICATED_ACT
,
/* NW has activated an EPS bearer context */
NET_PDN_MT_DEDICATED_ACT
,
/* MT has activated an EPS bearer context */
NET_PDN_NW_DEDICATED_DEACT
,
/* NW has deactivated an EPS bearer context */
NET_PDN_MT_DEDICATED_DEACT
,
/* MT has deactivated an EPS bearer context */
}
network_pdn_state_t
;
/*
* ---------------------------
* Network operator identifier
* ---------------------------
*/
typedef
struct
{
#define NET_FORMAT_LONG_SIZE 16
/* Long alphanumeric format */
#define NET_FORMAT_SHORT_SIZE 8
/* Short alphanumeric format */
#define NET_FORMAT_NUM_SIZE 6
/* Numeric format (PLMN identifier */
union
{
unsigned
char
alpha_long
[
NET_FORMAT_LONG_SIZE
+
1
];
unsigned
char
alpha_short
[
NET_FORMAT_SHORT_SIZE
+
1
];
unsigned
char
num
[
NET_FORMAT_NUM_SIZE
+
1
];
}
id
;
}
network_plmn_t
;
/*
* -------------------------------
* EPS bearer level QoS parameters
* -------------------------------
*/
typedef
struct
{
int
gbrUL
;
/* Guaranteed Bit Rate for uplink */
int
gbrDL
;
/* Guaranteed Bit Rate for downlink */
int
mbrUL
;
/* Maximum Bit Rate for uplink */
int
mbrDL
;
/* Maximum Bit Rate for downlink */
int
qci
;
/* QoS Class Identifier */
}
network_qos_t
;
/*
* -----------------------------
* IPv4 packet filter parameters
* -----------------------------
*/
typedef
struct
{
unsigned
char
protocol
;
/* Protocol identifier */
unsigned
char
tos
;
/* Type of service */
#define NET_PACKET_FILTER_IPV4_ADDR_SIZE 4
unsigned
char
addr
[
NET_PACKET_FILTER_IPV4_ADDR_SIZE
];
unsigned
char
mask
[
NET_PACKET_FILTER_IPV4_ADDR_SIZE
];
}
network_ipv4_data_t
;
/*
* -----------------------------
* IPv6 packet filter parameters
* -----------------------------
*/
typedef
struct
{
unsigned
char
nh
;
/* Next header type */
unsigned
char
tf
;
/* Traffic class */
#define NET_PACKET_FILTER_IPV6_ADDR_SIZE 16
unsigned
char
addr
[
NET_PACKET_FILTER_IPV6_ADDR_SIZE
];
unsigned
char
mask
[
NET_PACKET_FILTER_IPV6_ADDR_SIZE
];
unsigned
int
ipsec
;
/* IPSec security parameter index */
unsigned
int
fl
;
/* Flow label */
}
network_ipv6_data_t
;
/*
* -------------
* Packet Filter
* -------------
*/
typedef
struct
{
unsigned
char
id
;
/* Packet filter identifier */
#define NET_PACKET_FILTER_DOWNLINK 0x01
#define NET_PACKET_FILTER_UPLINK 0x02
#define NET_PACKET_FILTER_BIDIR 0x03
unsigned
char
dir
;
/* Packet filter direction */
unsigned
char
precedence
;
/* Evaluation precedence */
union
{
network_ipv4_data_t
ipv4
;
network_ipv6_data_t
ipv6
;
}
data
;
unsigned
short
lport
;
/* Local (UE) port number */
unsigned
short
rport
;
/* Remote (network) port number */
}
network_pkf_t
;
/*
* ---------------------
* Traffic Flow Template
* ---------------------
*/
typedef
struct
{
int
n_pkfs
;
#define NET_PACKET_FILTER_MAX 16
network_pkf_t
*
pkf
[
NET_PACKET_FILTER_MAX
];
}
network_tft_t
;
/*
* User notification callback, executed whenever a change of status with
* respect of PDN connection or EPS bearer context is notified by the EPS
* Session Management sublayer
*/
typedef
int
(
*
esm_indication_callback_t
)
(
int
,
network_pdn_state_t
);
/****************************************************************************/
/******************** G L O B A L V A R I A B L E S ********************/
/****************************************************************************/
/****************************************************************************/
/****************** E X P O R T E D F U N C T I O N S ******************/
/****************************************************************************/
#endif
/* __NETWORKDEF_H__*/
This diff is collapsed.
Click to expand it.
targets/PROJECTS/GENERIC-LTE-EPC/CONF/rru.band7.tm1.50PRB.if5.usrpb210.conf
View file @
5e1d462a
...
...
@@ -156,8 +156,8 @@ eNBs =
rrh_gw_config
= (
{
local_if_name
=
"eth0"
;
remote_address
=
"34:e6:d7:3c:ae:fc
"
;
local_address
=
"74:d4:35:cc:8d:15"
;
remote_address
=
"90:e2:ba:c5:fc:04
"
;
local_address
=
"00:13:95:1f:a0:af"
;
local_port
=
50000
;
#for raw option local port must be the same to remote
remote_port
=
50000
;
rrh_gw_active
=
"yes"
;
...
...
This diff is collapsed.
Click to expand it.
targets/PROJECTS/GENERIC-LTE-EPC/CONF/rru.band7.tm1.if4p5.25PRB.usrpb210.conf
View file @
5e1d462a
...
...
@@ -159,12 +159,12 @@ eNBs =
rrh_gw_config
= (
{
local_if_name
=
"eth0"
;
remote_address
=
"
90:e2:ba:c5:fc:04
"
;
local_address
=
"
00:13:95:1f:a0:af
"
;
remote_address
=
"
10.10.10.155
"
;
local_address
=
"
10.10.10.58
"
;
local_port
=
50000
;
#for raw option local port must be the same to remote
remote_port
=
50000
;
rrh_gw_active
=
"yes"
;
tr_preference
=
"
raw
_if4p5"
;
tr_preference
=
"
udp
_if4p5"
;
rf_preference
=
"usrp_b200"
;
iq_txshift
=
4
;
tx_sample_advance
=
80
;
...
...
This diff is collapsed.
Click to expand it.
targets/PROJECTS/GENERIC-LTE-EPC/CONF/rru.band7.tm1.if4p5.50PRB.usrpb210.conf
View file @
5e1d462a
...
...
@@ -31,15 +31,16 @@ eNBs =
tdd_config_s
=
0
;
prefix_type
=
"NORMAL"
;
eutra_band
=
7
;
downlink_frequency
=
26
60
000000
L
;
downlink_frequency
=
26
85
000000
L
;
uplink_frequency_offset
= -
120000000
;
Nid_cell
=
0
;
N_RB_DL
=
50
;
Nid_cell_mbsfn
=
0
;
nb_antenna_ports
=
1
;
nb_antennas_tx
=
1
;
nb_antennas_rx
=
1
;
tx_gain
=
90
;
rx_gain
=
12
5
;
rx_gain
=
12
0
;
prach_root
=
0
;
prach_config_index
=
0
;
prach_high_speed
=
"DISABLE"
;
...
...
@@ -67,9 +68,9 @@ eNBs =
srs_ackNackST
=;
srs_MaxUpPts
=;*/
pusch_p0_Nominal
= -
9
0
;
pusch_p0_Nominal
= -
9
5
;
pusch_alpha
=
"AL1"
;
pucch_p0_Nominal
= -
96
;
pucch_p0_Nominal
= -
104
;
msg3_delta_Preamble
=
6
;
pucch_deltaF_Format1
=
"deltaF2"
;
pucch_deltaF_Format1b
=
"deltaF3"
;
...
...
@@ -85,7 +86,7 @@ eNBs =
rach_messagePowerOffsetGroupB
= ;
*/
rach_powerRampingStep
=
4
;
rach_preambleInitialReceivedTargetPower
= -
10
8
;
rach_preambleInitialReceivedTargetPower
= -
10
4
;
rach_preambleTransMax
=
10
;
rach_raResponseWindowSize
=
10
;
rach_macContentionResolutionTimer
=
48
;
...
...
@@ -101,6 +102,8 @@ eNBs =
ue_TimersAndConstants_n310
=
20
;
ue_TimersAndConstants_n311
=
1
;
ue_TransmissionMode
=
1
;
}
);
...
...
@@ -156,8 +159,8 @@ eNBs =
rrh_gw_config
= (
{
local_if_name
=
"eth0"
;
remote_address
=
"
34:e6:d7:3c:ae:fc
"
;
local_address
=
"
74:d4:35:cc:8d:15
"
;
remote_address
=
"
90:e2:ba:c5:fc:04
"
;
local_address
=
"
00:13:95:1f:a0:af
"
;
local_port
=
50000
;
#for raw option local port must be the same to remote
remote_port
=
50000
;
rrh_gw_active
=
"yes"
;
...
...
This diff is collapsed.
Click to expand it.
targets/RT/USER/lte-enb.c
View file @
5e1d462a
...
...
@@ -886,6 +886,15 @@ void rx_rf(PHY_VARS_eNB *eNB,int *frame,int *subframe) {
proc
->
frame_rx
=
(
proc
->
timestamp_rx
/
(
fp
->
samples_per_tti
*
10
))
&
1023
;
proc
->
subframe_rx
=
(
proc
->
timestamp_rx
/
fp
->
samples_per_tti
)
%
10
;
// synchronize first reception to frame 0 subframe 0
if
(
eNB
->
iframe_offset
==
-
1
)
eNB
->
iframe_offset
=
proc
->
frame_rx
;
if
(
eNB
->
isubframe_offset
==
-
1
)
eNB
->
isubframe_offset
=
proc
->
subframe_rx
;
proc
->
frame_rx
-=
eNB
->
iframe_offset
;
proc
->
subframe_rx
-=
eNB
->
isubframe_offset
;
proc
->
timestamp_tx
=
proc
->
timestamp_rx
+
(
4
*
fp
->
samples_per_tti
);
// printf("trx_read <- USRP TS %llu (sf %d, first_rx %d)\n", proc->timestamp_rx,proc->subframe_rx,proc->first_rx);
...
...
@@ -1614,6 +1623,9 @@ void init_eNB(eNB_func_t node_function[], eNB_timing_t node_timing[],int nb_inst
eNB
->
node_timing
=
node_timing
[
CC_id
];
eNB
->
abstraction_flag
=
0
;
eNB
->
single_thread_flag
=
single_thread_flag
;
eNB
->
iframe_offset
=
-
1
;
eNB
->
isubframe_offset
=
-
1
;
LOG_I
(
PHY
,
"Initializing eNB %d CC_id %d : (%s,%s)
\n
"
,
inst
,
CC_id
,
eNB_functions
[
node_function
[
CC_id
]],
eNB_timing
[
node_timing
[
CC_id
]]);
switch
(
node_function
[
CC_id
])
{
...
...
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment