Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
O
OpenXG UE
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
Michael Black
OpenXG UE
Commits
03789ec2
Commit
03789ec2
authored
Oct 27, 2016
by
Raymond Knopp
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
resynch for initial RF acqusition
parent
14b67237
Changes
13
Hide 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 @
14b67237
..
/
..
/
openair2
/
COMMON
/
as_message
.
h
\ No newline at end of file
openair3/COMMON/as_message.h
0 → 100644
View file @
03789ec2
/*
* 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__*/
openair3/INTERTASK_INTERFACE
deleted
120000 → 0
View file @
14b67237
../common/utils/itti
\ No newline at end of file
openair3/NAS/COMMON/API/NETWORK/as_message.h
deleted
120000 → 0
View file @
14b67237
..
/
..
/
..
/
..
/
..
/
openair2
/
COMMON
/
as_message
.
h
\ No newline at end of file
openair3/NAS/COMMON/API/NETWORK/as_message.h
0 → 100644
View file @
03789ec2
/*
* 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__*/
openair3/NAS/COMMON/commonDef.h
deleted
120000 → 0
View file @
14b67237
..
/
..
/
..
/
openair2
/
COMMON
/
commonDef
.
h
\ No newline at end of file
openair3/NAS/COMMON/commonDef.h
0 → 100644
View file @
03789ec2
/*
* 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__*/
openair3/NAS/COMMON/networkDef.h
deleted
120000 → 0
View file @
14b67237
..
/
..
/
..
/
openair2
/
COMMON
/
networkDef
.
h
\ No newline at end of file
openair3/NAS/COMMON/networkDef.h
0 → 100644
View file @
03789ec2
/*
* 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__*/
targets/PROJECTS/GENERIC-LTE-EPC/CONF/rru.band7.tm1.50PRB.if5.usrpb210.conf
View file @
03789ec2
...
...
@@ -155,9 +155,9 @@ eNBs =
rrh_gw_config
= (
{
local_if_name
=
"eth0"
;
remote_address
=
"34:e6:d7:3c:ae:fc
"
;
local_address
=
"74:d4:35:cc:8d:15"
;
local_if_name
=
"eth0"
;
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"
;
...
...
targets/PROJECTS/GENERIC-LTE-EPC/CONF/rru.band7.tm1.if4p5.25PRB.usrpb210.conf
View file @
03789ec2
...
...
@@ -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
;
...
...
targets/PROJECTS/GENERIC-LTE-EPC/CONF/rru.band7.tm1.if4p5.50PRB.usrpb210.conf
View file @
03789ec2
...
...
@@ -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"
;
...
...
targets/RT/USER/lte-enb.c
View file @
03789ec2
...
...
@@ -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
])
{
...
...
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