Commit faa51ec4 authored by Cedric Roux's avatar Cedric Roux

- Use typedef for enums/structs

git-svn-id: http://svn.eurecom.fr/openair4G/trunk@4562 818b1a75-f10b-46b9-bf7c-635c3b92a50f
parent 0aec555a
/***************************************************************************** /*****************************************************************************
Eurecom OpenAirInterface 3 Eurecom OpenAirInterface 3
Copyright(c) 2012 Eurecom Copyright(c) 2012 Eurecom
Source as_message.h Source as_message.h
Version 0.1 Version 0.1
Date 2012/10/18 Date 2012/10/18
Product NAS stack Product NAS stack
Subsystem Application Programming Interface Subsystem Application Programming Interface
Author Frederic Maurel Author Frederic Maurel
Description Defines the messages supported by the Access Stratum sublayer Description Defines the messages supported by the Access Stratum sublayer
protocol (usually RRC and S1AP for E-UTRAN) and functions used protocol (usually RRC and S1AP for E-UTRAN) and functions used
to encode and decode to encode and decode
*****************************************************************************/ *****************************************************************************/
#ifndef __AS_MESSAGE_H__ #ifndef __AS_MESSAGE_H__
...@@ -31,70 +31,70 @@ Description Defines the messages supported by the Access Stratum sublayer ...@@ -31,70 +31,70 @@ Description Defines the messages supported by the Access Stratum sublayer
/* /*
* -------------------------------------------------------------------------- * --------------------------------------------------------------------------
* Access Stratum message types * Access Stratum message types
* -------------------------------------------------------------------------- * --------------------------------------------------------------------------
*/ */
#define AS_REQUEST 0x0100 #define AS_REQUEST 0x0100
#define AS_RESPONSE 0x0200 #define AS_RESPONSE 0x0200
#define AS_INDICATION 0x0400 #define AS_INDICATION 0x0400
#define AS_CONFIRM 0x0800 #define AS_CONFIRM 0x0800
/* /*
* -------------------------------------------------------------------------- * --------------------------------------------------------------------------
* Access Stratum message identifiers * Access Stratum message identifiers
* -------------------------------------------------------------------------- * --------------------------------------------------------------------------
*/ */
/* Broadcast information */ /* Broadcast information */
#define AS_BROADCAST_INFO 0x01 #define AS_BROADCAST_INFO 0x01
#define AS_BROADCAST_INFO_IND (AS_BROADCAST_INFO | AS_INDICATION) #define AS_BROADCAST_INFO_IND (AS_BROADCAST_INFO | AS_INDICATION)
/* Cell information relevant for cell selection processing */ /* Cell information relevant for cell selection processing */
#define AS_CELL_INFO 0x02 #define AS_CELL_INFO 0x02
#define AS_CELL_INFO_REQ (AS_CELL_INFO | AS_REQUEST) #define AS_CELL_INFO_REQ (AS_CELL_INFO | AS_REQUEST)
#define AS_CELL_INFO_CNF (AS_CELL_INFO | AS_CONFIRM) #define AS_CELL_INFO_CNF (AS_CELL_INFO | AS_CONFIRM)
#define AS_CELL_INFO_IND (AS_CELL_INFO | AS_INDICATION) #define AS_CELL_INFO_IND (AS_CELL_INFO | AS_INDICATION)
/* Paging information */ /* Paging information */
#define AS_PAGING 0x03 #define AS_PAGING 0x03
#define AS_PAGING_REQ (AS_PAGING | AS_REQUEST) #define AS_PAGING_REQ (AS_PAGING | AS_REQUEST)
#define AS_PAGING_IND (AS_PAGING | AS_INDICATION) #define AS_PAGING_IND (AS_PAGING | AS_INDICATION)
/* NAS signalling connection establishment */ /* NAS signalling connection establishment */
#define AS_NAS_ESTABLISH 0x04 #define AS_NAS_ESTABLISH 0x04
#define AS_NAS_ESTABLISH_REQ (AS_NAS_ESTABLISH | AS_REQUEST) #define AS_NAS_ESTABLISH_REQ (AS_NAS_ESTABLISH | AS_REQUEST)
#define AS_NAS_ESTABLISH_IND (AS_NAS_ESTABLISH | AS_INDICATION) #define AS_NAS_ESTABLISH_IND (AS_NAS_ESTABLISH | AS_INDICATION)
#define AS_NAS_ESTABLISH_RSP (AS_NAS_ESTABLISH | AS_RESPONSE) #define AS_NAS_ESTABLISH_RSP (AS_NAS_ESTABLISH | AS_RESPONSE)
#define AS_NAS_ESTABLISH_CNF (AS_NAS_ESTABLISH | AS_CONFIRM) #define AS_NAS_ESTABLISH_CNF (AS_NAS_ESTABLISH | AS_CONFIRM)
/* NAS signalling connection release */ /* NAS signalling connection release */
#define AS_NAS_RELEASE 0x05 #define AS_NAS_RELEASE 0x05
#define AS_NAS_RELEASE_REQ (AS_NAS_RELEASE | AS_REQUEST) #define AS_NAS_RELEASE_REQ (AS_NAS_RELEASE | AS_REQUEST)
#define AS_NAS_RELEASE_IND (AS_NAS_RELEASE | AS_INDICATION) #define AS_NAS_RELEASE_IND (AS_NAS_RELEASE | AS_INDICATION)
/* Uplink information transfer */ /* Uplink information transfer */
#define AS_UL_INFO_TRANSFER 0x06 #define AS_UL_INFO_TRANSFER 0x06
#define AS_UL_INFO_TRANSFER_REQ (AS_UL_INFO_TRANSFER | AS_REQUEST) #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_CNF (AS_UL_INFO_TRANSFER | AS_CONFIRM)
#define AS_UL_INFO_TRANSFER_IND (AS_UL_INFO_TRANSFER | AS_INDICATION) #define AS_UL_INFO_TRANSFER_IND (AS_UL_INFO_TRANSFER | AS_INDICATION)
/* Downlink information transfer */ /* Downlink information transfer */
#define AS_DL_INFO_TRANSFER 0x07 #define AS_DL_INFO_TRANSFER 0x07
#define AS_DL_INFO_TRANSFER_REQ (AS_DL_INFO_TRANSFER | AS_REQUEST) #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_CNF (AS_DL_INFO_TRANSFER | AS_CONFIRM)
#define AS_DL_INFO_TRANSFER_IND (AS_DL_INFO_TRANSFER | AS_INDICATION) #define AS_DL_INFO_TRANSFER_IND (AS_DL_INFO_TRANSFER | AS_INDICATION)
/* Radio Access Bearer establishment */ /* Radio Access Bearer establishment */
#define AS_RAB_ESTABLISH 0x08 #define AS_RAB_ESTABLISH 0x08
#define AS_RAB_ESTABLISH_REQ (AS_RAB_ESTABLISH | AS_REQUEST) #define AS_RAB_ESTABLISH_REQ (AS_RAB_ESTABLISH | AS_REQUEST)
#define AS_RAB_ESTABLISH_IND (AS_RAB_ESTABLISH | AS_INDICATION) #define AS_RAB_ESTABLISH_IND (AS_RAB_ESTABLISH | AS_INDICATION)
#define AS_RAB_ESTABLISH_RSP (AS_RAB_ESTABLISH | AS_RESPONSE) #define AS_RAB_ESTABLISH_RSP (AS_RAB_ESTABLISH | AS_RESPONSE)
#define AS_RAB_ESTABLISH_CNF (AS_RAB_ESTABLISH | AS_CONFIRM) #define AS_RAB_ESTABLISH_CNF (AS_RAB_ESTABLISH | AS_CONFIRM)
/* Radio Access Bearer release */ /* Radio Access Bearer release */
#define AS_RAB_RELEASE 0x09 #define AS_RAB_RELEASE 0x09
#define AS_RAB_RELEASE_REQ (AS_RAB_RELEASE | AS_REQUEST) #define AS_RAB_RELEASE_REQ (AS_RAB_RELEASE | AS_REQUEST)
#define AS_RAB_RELEASE_IND (AS_RAB_RELEASE | AS_INDICATION) #define AS_RAB_RELEASE_IND (AS_RAB_RELEASE | AS_INDICATION)
/* NAS Cause */ /* NAS Cause */
#define EPS_SERVICES_AND_NON_EPS_SERVICES_NOT_ALLOWED (8) #define EPS_SERVICES_AND_NON_EPS_SERVICES_NOT_ALLOWED (8)
...@@ -109,34 +109,34 @@ Description Defines the messages supported by the Access Stratum sublayer ...@@ -109,34 +109,34 @@ Description Defines the messages supported by the Access Stratum sublayer
/* /*
* -------------------------------------------------------------------------- * --------------------------------------------------------------------------
* Access Stratum message global parameters * Access Stratum message global parameters
* -------------------------------------------------------------------------- * --------------------------------------------------------------------------
*/ */
/* Error code */ /* Error code */
enum { typedef enum nas_error_code_s {
AS_SUCCESS = 1, /* Success code, transaction is going on */ AS_SUCCESS = 1, /* Success code, transaction is going on */
AS_TERMINATED_NAS, /* Transaction terminated by NAS */ AS_TERMINATED_NAS, /* Transaction terminated by NAS */
AS_TERMINATED_AS, /* Transaction terminated by AS */ AS_TERMINATED_AS, /* Transaction terminated by AS */
AS_FAILURE /* Failure code */ AS_FAILURE /* Failure code */
}; } nas_error_code_t;
/* Core network domain */ /* Core network domain */
enum { typedef enum core_network_s {
AS_PS = 1, /* Packet-Switched */ AS_PS = 1, /* Packet-Switched */
AS_CS /* Circuit-Switched */ AS_CS /* Circuit-Switched */
}; } core_network_t;
/* SAE Temporary Mobile Subscriber Identity */ /* SAE Temporary Mobile Subscriber Identity */
typedef struct { typedef struct as_stmsi_s {
UInt8_t MMEcode; /* MME code that allocated the GUTI */ UInt8_t MMEcode; /* MME code that allocated the GUTI */
UInt32_t m_tmsi; /* M-Temporary Mobile Subscriber Identity */ UInt32_t m_tmsi; /* M-Temporary Mobile Subscriber Identity */
} as_stmsi_t; } as_stmsi_t;
/* Dedicated NAS information */ /* Dedicated NAS information */
typedef struct { typedef struct as_nas_info_s {
UInt32_t length; /* Length of the NAS information data */ UInt32_t length; /* Length of the NAS information data */
Byte_t* data; /* Dedicated NAS information data container */ Byte_t *data; /* Dedicated NAS information data container */
} as_nas_info_t; } as_nas_info_t;
/* Radio Access Bearer identity */ /* Radio Access Bearer identity */
...@@ -148,7 +148,7 @@ typedef UInt8_t as_rab_id_t; ...@@ -148,7 +148,7 @@ typedef UInt8_t as_rab_id_t;
/* /*
* -------------------------------------------------------------------------- * --------------------------------------------------------------------------
* Broadcast information * Broadcast information
* -------------------------------------------------------------------------- * --------------------------------------------------------------------------
*/ */
...@@ -157,37 +157,37 @@ typedef UInt8_t as_rab_id_t; ...@@ -157,37 +157,37 @@ typedef UInt8_t as_rab_id_t;
* AS may asynchronously report to NAS available PLMNs within specific * AS may asynchronously report to NAS available PLMNs within specific
* location area * location area
*/ */
typedef struct { typedef struct broadcast_info_ind_s {
#define PLMN_LIST_MAX_SIZE 6 #define PLMN_LIST_MAX_SIZE 6
PLMN_LIST_T(PLMN_LIST_MAX_SIZE) plmnIDs; /* List of PLMN identifiers */ PLMN_LIST_T(PLMN_LIST_MAX_SIZE) plmnIDs; /* List of PLMN identifiers */
ci_t cellID; /* Identity of the cell serving the listed PLMNs */ ci_t cellID; /* Identity of the cell serving the listed PLMNs */
tac_t tac; /* Code of the tracking area the cell belongs to */ tac_t tac; /* Code of the tracking area the cell belongs to */
} broadcast_info_ind_t; } broadcast_info_ind_t;
/* /*
* -------------------------------------------------------------------------- * --------------------------------------------------------------------------
* Cell information relevant for cell selection processing * Cell information relevant for cell selection processing
* -------------------------------------------------------------------------- * --------------------------------------------------------------------------
*/ */
/* Radio access technologies supported by the network */ /* Radio access technologies supported by the network */
#define AS_GSM (1 << NET_ACCESS_GSM) #define AS_GSM (1 << NET_ACCESS_GSM)
#define AS_COMPACT (1 << NET_ACCESS_COMPACT) #define AS_COMPACT (1 << NET_ACCESS_COMPACT)
#define AS_UTRAN (1 << NET_ACCESS_UTRAN) #define AS_UTRAN (1 << NET_ACCESS_UTRAN)
#define AS_EGPRS (1 << NET_ACCESS_EGPRS) #define AS_EGPRS (1 << NET_ACCESS_EGPRS)
#define AS_HSDPA (1 << NET_ACCESS_HSDPA) #define AS_HSDPA (1 << NET_ACCESS_HSDPA)
#define AS_HSUPA (1 << NET_ACCESS_HSUPA) #define AS_HSUPA (1 << NET_ACCESS_HSUPA)
#define AS_HSDUPA (1 << NET_ACCESS_HSDUPA) #define AS_HSDUPA (1 << NET_ACCESS_HSDUPA)
#define AS_EUTRAN (1 << NET_ACCESS_EUTRAN) #define AS_EUTRAN (1 << NET_ACCESS_EUTRAN)
/* /*
* NAS->AS - Cell Information request * NAS->AS - Cell Information request
* NAS request AS to search for a suitable cell belonging to the selected * NAS request AS to search for a suitable cell belonging to the selected
* PLMN to camp on. * PLMN to camp on.
*/ */
typedef struct { typedef struct cell_info_req_s {
plmn_t plmnID; /* Selected PLMN identity */ plmn_t plmnID; /* Selected PLMN identity */
Byte_t rat; /* Bitmap - set of radio access technologies */ Byte_t rat; /* Bitmap - set of radio access technologies */
} cell_info_req_t; } cell_info_req_t;
/* /*
...@@ -195,76 +195,76 @@ typedef struct { ...@@ -195,76 +195,76 @@ typedef struct {
* AS search for a suitable cell and respond to NAS. If found, the cell * AS search for a suitable cell and respond to NAS. If found, the cell
* is selected to camp on. * is selected to camp on.
*/ */
typedef struct { typedef struct cell_info_cnf_s {
UInt8_t errCode; /* Error code */ UInt8_t errCode; /* Error code */
ci_t cellID; /* Identity of the cell serving the selected PLMN */ ci_t cellID; /* Identity of the cell serving the selected PLMN */
tac_t tac; /* Code of the tracking area the cell belongs to */ tac_t tac; /* Code of the tracking area the cell belongs to */
AcT_t rat; /* Radio access technology supported by the cell */ AcT_t rat; /* Radio access technology supported by the cell */
UInt8_t rsrq; /* Reference signal received quality */ UInt8_t rsrq; /* Reference signal received quality */
UInt8_t rsrp; /* Reference signal received power */ UInt8_t rsrp; /* Reference signal received power */
} cell_info_cnf_t; } cell_info_cnf_t;
/* /*
* AS->NAS - Cell Information indication * AS->NAS - Cell Information indication
* AS may change cell selection if a more suitable cell is found. * AS may change cell selection if a more suitable cell is found.
*/ */
typedef struct { typedef struct cell_info_ind_s {
ci_t cellID; /* Identity of the new serving cell */ ci_t cellID; /* Identity of the new serving cell */
tac_t tac; /* Code of the tracking area the cell belongs to */ tac_t tac; /* Code of the tracking area the cell belongs to */
} cell_info_ind_t; } cell_info_ind_t;
/* /*
* -------------------------------------------------------------------------- * --------------------------------------------------------------------------
* Paging information * Paging information
* -------------------------------------------------------------------------- * --------------------------------------------------------------------------
*/ */
/* Paging cause */ /* Paging cause */
enum { typedef enum paging_cause_s {
AS_CONNECTION_ESTABLISH, /* Establish NAS signalling connection */ AS_CONNECTION_ESTABLISH, /* Establish NAS signalling connection */
AS_EPS_ATTACH, /* Perform local detach and initiate EPS AS_EPS_ATTACH, /* Perform local detach and initiate EPS
* attach procedure */ * attach procedure */
AS_CS_FALLBACK /* Inititate CS fallback procedure */ AS_CS_FALLBACK /* Inititate CS fallback procedure */
}; } paging_cause_t;
/* /*
* NAS->AS - Paging Information request * NAS->AS - Paging Information request
* NAS requests the AS that NAS signalling messages or user data is pending * NAS requests the AS that NAS signalling messages or user data is pending
* to be sent. * to be sent.
*/ */
typedef struct { typedef struct paging_req_s {
as_stmsi_t s_tmsi; /* UE identity */ as_stmsi_t s_tmsi; /* UE identity */
UInt8_t CN_domain; /* Core network domain */ UInt8_t CN_domain; /* Core network domain */
} paging_req_t; } paging_req_t;
/* /*
* AS->NAS - Paging Information indication * AS->NAS - Paging Information indication
* AS reports to the NAS that appropriate procedure has to be initiated. * AS reports to the NAS that appropriate procedure has to be initiated.
*/ */
typedef struct { typedef struct paging_ind_s {
UInt8_t cause; /* Paging cause */ UInt8_t cause; /* Paging cause */
} paging_ind_t; } paging_ind_t;
/* /*
* -------------------------------------------------------------------------- * --------------------------------------------------------------------------
* NAS signalling connection establishment * NAS signalling connection establishment
* -------------------------------------------------------------------------- * --------------------------------------------------------------------------
*/ */
/* Cause of RRC connection establishment */ /* Cause of RRC connection establishment */
#define AS_CAUSE_EMERGENCY (NET_ESTABLISH_CAUSE_EMERGENCY) #define AS_CAUSE_EMERGENCY (NET_ESTABLISH_CAUSE_EMERGENCY)
#define AS_CAUSE_HIGH_PRIO (NET_ESTABLISH_CAUSE_HIGH_PRIO) #define AS_CAUSE_HIGH_PRIO (NET_ESTABLISH_CAUSE_HIGH_PRIO)
#define AS_CAUSE_MT_ACCESS (NET_ESTABLISH_CAUSE_MT_ACCESS) #define AS_CAUSE_MT_ACCESS (NET_ESTABLISH_CAUSE_MT_ACCESS)
#define AS_CAUSE_MO_SIGNAL (NET_ESTABLISH_CAUSE_MO_SIGNAL) #define AS_CAUSE_MO_SIGNAL (NET_ESTABLISH_CAUSE_MO_SIGNAL)
#define AS_CAUSE_MO_DATA (NET_ESTABLISH_CAUSE_MO_DATA) #define AS_CAUSE_MO_DATA (NET_ESTABLISH_CAUSE_MO_DATA)
#define AS_CAUSE_V1020 (NET_ESTABLISH_CAUSE_V1020) #define AS_CAUSE_V1020 (NET_ESTABLISH_CAUSE_V1020)
/* Type of the call associated to the RRC connection establishment */ /* Type of the call associated to the RRC connection establishment */
#define AS_TYPE_ORIGINATING_SIGNAL (NET_ESTABLISH_TYPE_ORIGINATING_SIGNAL) #define AS_TYPE_ORIGINATING_SIGNAL (NET_ESTABLISH_TYPE_ORIGINATING_SIGNAL)
#define AS_TYPE_EMERGENCY_CALLS (NET_ESTABLISH_TYPE_EMERGENCY_CALLS) #define AS_TYPE_EMERGENCY_CALLS (NET_ESTABLISH_TYPE_EMERGENCY_CALLS)
#define AS_TYPE_ORIGINATING_CALLS (NET_ESTABLISH_TYPE_ORIGINATING_CALLS) #define AS_TYPE_ORIGINATING_CALLS (NET_ESTABLISH_TYPE_ORIGINATING_CALLS)
#define AS_TYPE_TERMINATING_CALLS (NET_ESTABLISH_TYPE_TERMINATING_CALLS) #define AS_TYPE_TERMINATING_CALLS (NET_ESTABLISH_TYPE_TERMINATING_CALLS)
#define AS_TYPE_MO_CS_FALLBACK (NET_ESTABLISH_TYPE_MO_CS_FALLBACK) #define AS_TYPE_MO_CS_FALLBACK (NET_ESTABLISH_TYPE_MO_CS_FALLBACK)
/* /*
...@@ -272,23 +272,23 @@ typedef struct { ...@@ -272,23 +272,23 @@ typedef struct {
* NAS requests the AS to perform the RRC connection establishment procedure * 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. * to transfer initial NAS message to the network while UE is in IDLE mode.
*/ */
typedef struct { typedef struct nas_establish_req_s {
UInt8_t cause; /* RRC connection establishment cause */ UInt8_t cause; /* RRC connection establishment cause */
UInt8_t type; /* RRC associated call type */ UInt8_t type; /* RRC associated call type */
as_stmsi_t s_tmsi; /* UE identity */ as_stmsi_t s_tmsi; /* UE identity */
plmn_t plmnID; /* Selected PLMN identity */ plmn_t plmnID; /* Selected PLMN identity */
as_nas_info_t initialNasMsg; /* Initial NAS message to transfer */ as_nas_info_t initialNasMsg; /* Initial NAS message to transfer */
} nas_establish_req_t; } nas_establish_req_t;
/* /*
* AS->NAS - NAS signalling connection establishment indication * AS->NAS - NAS signalling connection establishment indication
* AS transfers the initial NAS message to the NAS. * AS transfers the initial NAS message to the NAS.
*/ */
typedef struct { typedef struct nas_establish_ind_s {
UInt32_t UEid; /* UE lower layer identifier */ UInt32_t UEid; /* UE lower layer identifier */
tac_t tac; /* Code of the tracking area the initiating tac_t tac; /* Code of the tracking area the initiating
* UE belongs to */ * UE belongs to */
as_nas_info_t initialNasMsg; /* Initial NAS message to transfer */ as_nas_info_t initialNasMsg; /* Initial NAS message to transfer */
} nas_establish_ind_t; } nas_establish_ind_t;
/* /*
...@@ -296,55 +296,55 @@ typedef struct { ...@@ -296,55 +296,55 @@ typedef struct {
* NAS responds to the AS that initial answer message has to be provided to * NAS responds to the AS that initial answer message has to be provided to
* the UE. * the UE.
*/ */
typedef struct { typedef struct nas_establish_rsp_s {
UInt32_t UEid; /* UE lower layer identifier */ UInt32_t UEid; /* UE lower layer identifier */
as_stmsi_t s_tmsi; /* UE identity */ as_stmsi_t s_tmsi; /* UE identity */
UInt8_t errCode; /* Transaction status */ UInt8_t errCode; /* Transaction status */
as_nas_info_t nasMsg; /* NAS message to transfer */ as_nas_info_t nasMsg; /* NAS message to transfer */
} nas_establish_rsp_t; } nas_establish_rsp_t;
/* /*
* AS->NAS - NAS signalling connection establishment confirm * AS->NAS - NAS signalling connection establishment confirm
* AS transfers the initial answer message to the NAS. * AS transfers the initial answer message to the NAS.
*/ */
typedef struct { typedef struct nas_establish_cnf_s {
UInt8_t errCode; /* Transaction status */ UInt8_t errCode; /* Transaction status */
as_nas_info_t nasMsg; /* NAS message to transfer */ as_nas_info_t nasMsg; /* NAS message to transfer */
} nas_establish_cnf_t; } nas_establish_cnf_t;
/* /*
* -------------------------------------------------------------------------- * --------------------------------------------------------------------------
* NAS signalling connection release * NAS signalling connection release
* -------------------------------------------------------------------------- * --------------------------------------------------------------------------
*/ */
/* Release cause */ /* Release cause */
enum { typedef enum release_cause_s {
AS_AUTHENTICATION_FAILURE = 1, /* Authentication procedure failed */ AS_AUTHENTICATION_FAILURE = 1, /* Authentication procedure failed */
AS_DETACH /* Detach requested */ AS_DETACH /* Detach requested */
}; } release_cause_t;
/* /*
* NAS->AS - NAS signalling connection release request * NAS->AS - NAS signalling connection release request
* NAS requests the termination of the connection with the UE. * NAS requests the termination of the connection with the UE.
*/ */
typedef struct { typedef struct nas_release_req_s {
UInt32_t UEid; /* UE lower layer identifier */ UInt32_t UEid; /* UE lower layer identifier */
as_stmsi_t s_tmsi; /* UE identity */ as_stmsi_t s_tmsi; /* UE identity */
UInt8_t cause; /* Release cause */ UInt8_t cause; /* Release cause */
} nas_release_req_t; } nas_release_req_t;
/* /*
* AS->NAS - NAS signalling connection release indication * AS->NAS - NAS signalling connection release indication
* AS reports that connection has been terminated by the network. * AS reports that connection has been terminated by the network.
*/ */
typedef struct { typedef struct nas_release_ind_s {
UInt8_t cause; /* Release cause */ UInt8_t cause; /* Release cause */
} nas_release_ind_t; } nas_release_ind_t;
/* /*
* -------------------------------------------------------------------------- * --------------------------------------------------------------------------
* NAS information transfer * NAS information transfer
* -------------------------------------------------------------------------- * --------------------------------------------------------------------------
*/ */
...@@ -353,10 +353,10 @@ typedef struct { ...@@ -353,10 +353,10 @@ typedef struct {
* NAS requests the AS to transfer uplink information to the NAS that * NAS requests the AS to transfer uplink information to the NAS that
* operates at the network side. * operates at the network side.
*/ */
typedef struct { typedef struct ul_info_transfer_req_s {
UInt32_t UEid; /* UE lower layer identifier */ UInt32_t UEid; /* UE lower layer identifier */
as_stmsi_t s_tmsi; /* UE identity */ as_stmsi_t s_tmsi; /* UE identity */
as_nas_info_t nasMsg; /* Uplink NAS message */ as_nas_info_t nasMsg; /* Uplink NAS message */
} ul_info_transfer_req_t; } ul_info_transfer_req_t;
/* /*
...@@ -364,8 +364,8 @@ typedef struct { ...@@ -364,8 +364,8 @@ typedef struct {
* AS immediately notifies the NAS whether uplink information has been * AS immediately notifies the NAS whether uplink information has been
* successfully sent to the network or not. * successfully sent to the network or not.
*/ */
typedef struct { typedef struct ul_info_transfer_cnf_s {
UInt32_t UEid; /* UE lower layer identifier */ UInt32_t UEid; /* UE lower layer identifier */
UInt8_t errCode; /* Transaction status */ UInt8_t errCode; /* Transaction status */
} ul_info_transfer_cnf_t; } ul_info_transfer_cnf_t;
...@@ -374,9 +374,9 @@ typedef struct { ...@@ -374,9 +374,9 @@ typedef struct {
* AS delivers the uplink information message to the NAS that operates * AS delivers the uplink information message to the NAS that operates
* at the network side. * at the network side.
*/ */
typedef struct { typedef struct ul_info_transfer_ind_s {
UInt32_t UEid; /* UE lower layer identifier */ UInt32_t UEid; /* UE lower layer identifier */
as_nas_info_t nasMsg; /* Uplink NAS message */ as_nas_info_t nasMsg; /* Uplink NAS message */
} ul_info_transfer_ind_t; } ul_info_transfer_ind_t;
/* /*
...@@ -402,7 +402,7 @@ typedef ul_info_transfer_ind_t dl_info_transfer_ind_t; ...@@ -402,7 +402,7 @@ typedef ul_info_transfer_ind_t dl_info_transfer_ind_t;
/* /*
* -------------------------------------------------------------------------- * --------------------------------------------------------------------------
* Radio Access Bearer establishment * Radio Access Bearer establishment
* -------------------------------------------------------------------------- * --------------------------------------------------------------------------
*/ */
...@@ -414,18 +414,18 @@ typedef struct {} as_qos_t; ...@@ -414,18 +414,18 @@ typedef struct {} as_qos_t;
* NAS requests the AS to allocate transmission resources to radio access * NAS requests the AS to allocate transmission resources to radio access
* bearer initialized at the network side. * bearer initialized at the network side.
*/ */
typedef struct { typedef struct rab_establish_req_s {
as_stmsi_t s_tmsi; /* UE identity */ as_stmsi_t s_tmsi; /* UE identity */
as_rab_id_t rabID; /* Radio access bearer identity */ as_rab_id_t rabID; /* Radio access bearer identity */
as_qos_t QoS; /* Requested Quality of Service */ as_qos_t QoS; /* Requested Quality of Service */
} rab_establish_req_t; } rab_establish_req_t;
/* /*
* AS->NAS - Radio access bearer establishment indication * AS->NAS - Radio access bearer establishment indication
* AS notifies the NAS that specific radio access bearer has to be setup. * AS notifies the NAS that specific radio access bearer has to be setup.
*/ */
typedef struct { typedef struct rab_establish_ind_s {
as_rab_id_t rabID; /* Radio access bearer identity */ as_rab_id_t rabID; /* Radio access bearer identity */
} rab_establish_ind_t; } rab_establish_ind_t;
/* /*
...@@ -433,9 +433,9 @@ typedef struct { ...@@ -433,9 +433,9 @@ typedef struct {
* NAS responds to AS whether the specified radio access bearer has been * NAS responds to AS whether the specified radio access bearer has been
* successfully setup or not. * successfully setup or not.
*/ */
typedef struct { typedef struct rab_establish_rsp_s {
as_stmsi_t s_tmsi; /* UE identity */ as_stmsi_t s_tmsi; /* UE identity */
as_rab_id_t rabID; /* Radio access bearer identity */ as_rab_id_t rabID; /* Radio access bearer identity */
UInt8_t errCode; /* Transaction status */ UInt8_t errCode; /* Transaction status */
} rab_establish_rsp_t; } rab_establish_rsp_t;
...@@ -444,14 +444,14 @@ typedef struct { ...@@ -444,14 +444,14 @@ typedef struct {
* AS notifies NAS whether the specified radio access bearer has been * AS notifies NAS whether the specified radio access bearer has been
* successfully setup at the UE side or not. * successfully setup at the UE side or not.
*/ */
typedef struct { typedef struct rab_establish_cnf_s {
as_rab_id_t rabID; /* Radio access bearer identity */ as_rab_id_t rabID; /* Radio access bearer identity */
UInt8_t errCode; /* Transaction status */ UInt8_t errCode; /* Transaction status */
} rab_establish_cnf_t; } rab_establish_cnf_t;
/* /*
* -------------------------------------------------------------------------- * --------------------------------------------------------------------------
* Radio Access Bearer release * Radio Access Bearer release
* -------------------------------------------------------------------------- * --------------------------------------------------------------------------
*/ */
...@@ -460,51 +460,51 @@ typedef struct { ...@@ -460,51 +460,51 @@ typedef struct {
* NAS requests the AS to release transmission resources previously allocated * NAS requests the AS to release transmission resources previously allocated
* to specific radio access bearer at the network side. * to specific radio access bearer at the network side.
*/ */
typedef struct { typedef struct rab_release_req_s {
as_stmsi_t s_tmsi; /* UE identity */ as_stmsi_t s_tmsi; /* UE identity */
as_rab_id_t rabID; /* Radio access bearer identity */ as_rab_id_t rabID; /* Radio access bearer identity */
} rab_release_req_t; } rab_release_req_t;
/* /*
* AS->NAS - Radio access bearer release indication * AS->NAS - Radio access bearer release indication
* AS notifies NAS that specific radio access bearer has been released. * AS notifies NAS that specific radio access bearer has been released.
*/ */
typedef struct { typedef struct rab_release_ind_s {
as_rab_id_t rabID; /* Radio access bearer identity */ as_rab_id_t rabID; /* Radio access bearer identity */
} rab_release_ind_t; } rab_release_ind_t;
/* /*
* -------------------------------------------------------------------------- * --------------------------------------------------------------------------
* Structure of the AS messages handled by the network sublayer * Structure of the AS messages handled by the network sublayer
* -------------------------------------------------------------------------- * --------------------------------------------------------------------------
*/ */
typedef struct { typedef struct as_message_s {
UInt16_t msgID; UInt16_t msgID;
union { union {
broadcast_info_ind_t broadcast_info_ind; broadcast_info_ind_t broadcast_info_ind;
cell_info_req_t cell_info_req; cell_info_req_t cell_info_req;
cell_info_cnf_t cell_info_cnf; cell_info_cnf_t cell_info_cnf;
cell_info_ind_t cell_info_ind; cell_info_ind_t cell_info_ind;
paging_req_t paging_req; paging_req_t paging_req;
paging_ind_t paging_ind; paging_ind_t paging_ind;
nas_establish_req_t nas_establish_req; nas_establish_req_t nas_establish_req;
nas_establish_ind_t nas_establish_ind; nas_establish_ind_t nas_establish_ind;
nas_establish_rsp_t nas_establish_rsp; nas_establish_rsp_t nas_establish_rsp;
nas_establish_cnf_t nas_establish_cnf; nas_establish_cnf_t nas_establish_cnf;
nas_release_req_t nas_release_req; nas_release_req_t nas_release_req;
nas_release_ind_t nas_release_ind; nas_release_ind_t nas_release_ind;
ul_info_transfer_req_t ul_info_transfer_req; ul_info_transfer_req_t ul_info_transfer_req;
ul_info_transfer_cnf_t ul_info_transfer_cnf; ul_info_transfer_cnf_t ul_info_transfer_cnf;
ul_info_transfer_ind_t ul_info_transfer_ind; ul_info_transfer_ind_t ul_info_transfer_ind;
dl_info_transfer_req_t dl_info_transfer_req; dl_info_transfer_req_t dl_info_transfer_req;
dl_info_transfer_cnf_t dl_info_transfer_cnf; dl_info_transfer_cnf_t dl_info_transfer_cnf;
dl_info_transfer_ind_t dl_info_transfer_ind; dl_info_transfer_ind_t dl_info_transfer_ind;
rab_establish_req_t rab_establish_req; rab_establish_req_t rab_establish_req;
rab_establish_ind_t rab_establish_ind; rab_establish_ind_t rab_establish_ind;
rab_establish_rsp_t rab_establish_rsp; rab_establish_rsp_t rab_establish_rsp;
rab_establish_cnf_t rab_establish_cnf; rab_establish_cnf_t rab_establish_cnf;
rab_release_req_t rab_release_req; rab_release_req_t rab_release_req;
rab_release_ind_t rab_release_ind; rab_release_ind_t rab_release_ind;
} __attribute__((__packed__)) msg; } __attribute__((__packed__)) msg;
} as_message_t; } as_message_t;
...@@ -516,11 +516,11 @@ typedef struct { ...@@ -516,11 +516,11 @@ typedef struct {
/****************** E X P O R T E D F U N C T I O N 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_decode(const char *buffer, as_message_t *msg, int length);
int as_message_encode(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 */ /* Implemented in the network_api.c body file */
int as_message_send(as_message_t* as_msg); int as_message_send(as_message_t *as_msg);
#endif /* __AS_MESSAGE_H__*/ #endif /* __AS_MESSAGE_H__*/
/***************************************************************************** /*****************************************************************************
Eurecom OpenAirInterface 3 Eurecom OpenAirInterface 3
Copyright(c) 2012 Eurecom Copyright(c) 2012 Eurecom
Source commonDef.h Source commonDef.h
Version 0.1 Version 0.1
Date 2012/02/27 Date 2012/02/27
Product NAS stack Product NAS stack
Subsystem include Subsystem include
Author Frederic Maurel Author Frederic Maurel
Description Contains global common definitions Description Contains global common definitions
*****************************************************************************/ *****************************************************************************/
#ifndef __COMMONDEF_H__ #ifndef __COMMONDEF_H__
...@@ -27,14 +27,14 @@ Description Contains global common definitions ...@@ -27,14 +27,14 @@ Description Contains global common definitions
/********************* G L O B A L C O N S T A N T S *******************/ /********************* G L O B A L C O N S T A N T S *******************/
/****************************************************************************/ /****************************************************************************/
#define RETURNok (0) #define RETURNok (0)
#define RETURNerror (-1) #define RETURNerror (-1)
#ifndef FALSE #ifndef FALSE
#define FALSE (0) #define FALSE (0)
#endif #endif
#ifndef TRUE #ifndef TRUE
#define TRUE (1) #define TRUE (1)
#endif #endif
/* /*
...@@ -42,7 +42,7 @@ Description Contains global common definitions ...@@ -42,7 +42,7 @@ Description Contains global common definitions
* where the NAS application is executed and where are located files * where the NAS application is executed and where are located files
* where non-volatile data are stored * where non-volatile data are stored
*/ */
#define DEFAULT_NAS_PATH "PWD" #define DEFAULT_NAS_PATH "PWD"
/****************************************************************************/ /****************************************************************************/
/************************ G L O B A L T Y P E S ************************/ /************************ G L O B A L T Y P E S ************************/
...@@ -50,34 +50,34 @@ Description Contains global common definitions ...@@ -50,34 +50,34 @@ Description Contains global common definitions
/* /*
----------------------------------------------------------------------------- -----------------------------------------------------------------------------
Standard data type definitions Standard data type definitions
----------------------------------------------------------------------------- -----------------------------------------------------------------------------
*/ */
typedef int8_t SByte_t; /* 8 bit signed integer */ typedef int8_t SByte_t; /* 8 bit signed integer */
typedef int8_t Int8_t; /* 8 bit signed integer */ typedef int8_t Int8_t; /* 8 bit signed integer */
typedef int16_t Int16_t; /* 16 bit signed integer */ typedef int16_t Int16_t; /* 16 bit signed integer */
typedef int32_t Int32_t; /* 32 bit signed integer */ typedef int32_t Int32_t; /* 32 bit signed integer */
typedef int64_t Int64_t; /* 64 bit signed integer */ typedef int64_t Int64_t; /* 64 bit signed integer */
typedef uint8_t Byte_t; /* 8 bit unsigned integer */ typedef uint8_t Byte_t; /* 8 bit unsigned integer */
typedef uint8_t UInt8_t; /* 8 bit unsigned integer */ typedef uint8_t UInt8_t; /* 8 bit unsigned integer */
typedef uint16_t UInt16_t; /* 16 bit unsigned integer */ typedef uint16_t UInt16_t; /* 16 bit unsigned integer */
typedef uint32_t UInt32_t; /* 32 bit unsigned integer */ typedef uint32_t UInt32_t; /* 32 bit unsigned integer */
typedef uint64_t UInt64_t; /* 64 bit unsigned integer */ typedef uint64_t UInt64_t; /* 64 bit unsigned integer */
/* /*
----------------------------------------------------------------------------- -----------------------------------------------------------------------------
Common NAS data type definitions Common NAS data type definitions
----------------------------------------------------------------------------- -----------------------------------------------------------------------------
*/ */
typedef UInt8_t Stat_t; /* Registration status */ typedef UInt8_t Stat_t; /* Registration status */
typedef UInt16_t lac_t; /* Location Area Code */ typedef UInt16_t lac_t; /* Location Area Code */
typedef UInt8_t rac_t; /* Routing Area Code */ typedef UInt8_t rac_t; /* Routing Area Code */
typedef UInt16_t tac_t; /* Tracking Area Code */ typedef UInt16_t tac_t; /* Tracking Area Code */
typedef UInt32_t ci_t; /* Cell Identifier */ typedef UInt32_t ci_t; /* Cell Identifier */
typedef UInt8_t AcT_t; /* Access Technology */ typedef UInt8_t AcT_t; /* Access Technology */
/* /*
* International Mobile Subscriber Identity * International Mobile Subscriber Identity
...@@ -85,28 +85,28 @@ typedef UInt8_t AcT_t; /* Access Technology */ ...@@ -85,28 +85,28 @@ typedef UInt8_t AcT_t; /* Access Technology */
typedef struct { typedef struct {
Byte_t length; Byte_t length;
union { union {
struct { struct {
Byte_t digit15:4; Byte_t digit15:4;
Byte_t digit14:4; Byte_t digit14:4;
Byte_t digit13:4; Byte_t digit13:4;
Byte_t digit12:4; Byte_t digit12:4;
Byte_t digit11:4; Byte_t digit11:4;
Byte_t digit10:4; Byte_t digit10:4;
Byte_t digit9:4; Byte_t digit9:4;
Byte_t digit8:4; Byte_t digit8:4;
Byte_t digit7:4; Byte_t digit7:4;
Byte_t digit6:4; Byte_t digit6:4;
Byte_t digit5:4; Byte_t digit5:4;
Byte_t digit4:4; Byte_t digit4:4;
Byte_t digit3:4; Byte_t digit3:4;
Byte_t digit2:4; Byte_t digit2:4;
Byte_t digit1:4; Byte_t digit1:4;
#define EVEN_PARITY 0 #define EVEN_PARITY 0
#define ODD_PARITY 1 #define ODD_PARITY 1
Byte_t parity:4; Byte_t parity:4;
} num; } num;
#define IMSI_SIZE 8 #define IMSI_SIZE 8
Byte_t value[IMSI_SIZE]; Byte_t value[IMSI_SIZE];
} u; } u;
} imsi_t; } imsi_t;
...@@ -115,32 +115,32 @@ typedef struct { ...@@ -115,32 +115,32 @@ typedef struct {
*/ */
typedef struct { typedef struct {
Byte_t ext:1; Byte_t ext:1;
/* Type Of Number */ /* Type Of Number */
#define MSISDN_TON_UNKNOWKN 0b000 #define MSISDN_TON_UNKNOWKN 0b000
#define MSISDN_TON_INTERNATIONAL 0b001 #define MSISDN_TON_INTERNATIONAL 0b001
#define MSISDN_TON_NATIONAL 0b010 #define MSISDN_TON_NATIONAL 0b010
#define MSISDN_TON_NETWORK 0b011 #define MSISDN_TON_NETWORK 0b011
#define MSISDN_TON_SUBCRIBER 0b100 #define MSISDN_TON_SUBCRIBER 0b100
#define MSISDN_TON_ABBREVIATED 0b110 #define MSISDN_TON_ABBREVIATED 0b110
#define MSISDN_TON_RESERVED 0b111 #define MSISDN_TON_RESERVED 0b111
Byte_t ton:3; Byte_t ton:3;
/* Numbering Plan Identification */ /* Numbering Plan Identification */
#define MSISDN_NPI_UNKNOWN 0b0000 #define MSISDN_NPI_UNKNOWN 0b0000
#define MSISDN_NPI_ISDN_TELEPHONY 0b0001 #define MSISDN_NPI_ISDN_TELEPHONY 0b0001
#define MSISDN_NPI_GENERIC 0b0010 #define MSISDN_NPI_GENERIC 0b0010
#define MSISDN_NPI_DATA 0b0011 #define MSISDN_NPI_DATA 0b0011
#define MSISDN_NPI_TELEX 0b0100 #define MSISDN_NPI_TELEX 0b0100
#define MSISDN_NPI_MARITIME_MOBILE 0b0101 #define MSISDN_NPI_MARITIME_MOBILE 0b0101
#define MSISDN_NPI_LAND_MOBILE 0b0110 #define MSISDN_NPI_LAND_MOBILE 0b0110
#define MSISDN_NPI_ISDN_MOBILE 0b0111 #define MSISDN_NPI_ISDN_MOBILE 0b0111
#define MSISDN_NPI_PRIVATE 0b1110 #define MSISDN_NPI_PRIVATE 0b1110
#define MSISDN_NPI_RESERVED 0b1111 #define MSISDN_NPI_RESERVED 0b1111
Byte_t npi:4; Byte_t npi:4;
/* Dialing Number */ /* Dialing Number */
struct { struct {
Byte_t lsb:4; Byte_t lsb:4;
Byte_t msb:4; Byte_t msb:4;
#define MSISDN_DIGIT_SIZE 10 #define MSISDN_DIGIT_SIZE 10
} digit[MSISDN_DIGIT_SIZE]; } digit[MSISDN_DIGIT_SIZE];
} msisdn_t; } msisdn_t;
...@@ -166,55 +166,55 @@ typedef struct { ...@@ -166,55 +166,55 @@ typedef struct {
* Location Area Identification * Location Area Identification
*/ */
typedef struct { typedef struct {
plmn_t plmn; /* <MCC> + <MNC> */ plmn_t plmn; /* <MCC> + <MNC> */
lac_t lac; /* Location Area Code */ lac_t lac; /* Location Area Code */
} lai_t; } lai_t;
/* /*
* GPRS Routing Area Identification * GPRS Routing Area Identification
*/ */
typedef struct { typedef struct {
plmn_t plmn; /* <MCC> + <MNC> */ plmn_t plmn; /* <MCC> + <MNC> */
lac_t lac; /* Location Area Code */ lac_t lac; /* Location Area Code */
rac_t rac; /* Routing Area Code */ rac_t rac; /* Routing Area Code */
} RAI_t; } RAI_t;
/* /*
* EPS Tracking Area Identification * EPS Tracking Area Identification
*/ */
typedef struct { typedef struct {
plmn_t plmn; /* <MCC> + <MNC> */ plmn_t plmn; /* <MCC> + <MNC> */
tac_t tac; /* Tracking Area Code */ tac_t tac; /* Tracking Area Code */
} tai_t; } tai_t;
/* /*
* EPS Globally Unique MME Identity * EPS Globally Unique MME Identity
*/ */
typedef struct { typedef struct {
plmn_t plmn; /* <MCC> + <MNC> */ plmn_t plmn; /* <MCC> + <MNC> */
UInt16_t MMEgid; /* MME group identifier */ UInt16_t MMEgid; /* MME group identifier */
UInt8_t MMEcode; /* MME code */ UInt8_t MMEcode; /* MME code */
} gummei_t; } gummei_t;
/* /*
* EPS Globally Unique Temporary UE Identity * EPS Globally Unique Temporary UE Identity
*/ */
typedef struct { typedef struct {
gummei_t gummei; /* Globally Unique MME Identity */ gummei_t gummei; /* Globally Unique MME Identity */
UInt32_t m_tmsi; /* M-Temporary Mobile Subscriber Identity */ UInt32_t m_tmsi; /* M-Temporary Mobile Subscriber Identity */
} GUTI_t; } GUTI_t;
/* Checks PLMN validity */ /* Checks PLMN validity */
#define PLMN_IS_VALID(plmn) (((plmn).MCCdigit1 & \ #define PLMN_IS_VALID(plmn) (((plmn).MCCdigit1 & \
(plmn).MCCdigit2 & \ (plmn).MCCdigit2 & \
(plmn).MCCdigit3) != 0x0F) (plmn).MCCdigit3) != 0x0F)
/* Checks TAC validity */ /* Checks TAC validity */
#define TAC_IS_VALID(tac) (((tac) != 0x0000) && ((tac) != 0xFFF0)) #define TAC_IS_VALID(tac) (((tac) != 0x0000) && ((tac) != 0xFFF0))
/* Checks TAI validity */ /* Checks TAI validity */
#define TAI_IS_VALID(tai) (PLMN_IS_VALID((tai).plmn) && \ #define TAI_IS_VALID(tai) (PLMN_IS_VALID((tai).plmn) && \
TAC_IS_VALID((tai).tac)) TAC_IS_VALID((tai).tac))
/* /*
* A list of PLMNs * A list of PLMNs
*/ */
...@@ -236,7 +236,8 @@ typedef struct { ...@@ -236,7 +236,8 @@ typedef struct {
* location change, new PLMN becomes available) is notified by the * location change, new PLMN becomes available) is notified by the
* EPS Mobility Management sublayer * EPS Mobility Management sublayer
*/ */
typedef int (*emm_indication_callback_t) (Stat_t, tac_t, ci_t, AcT_t, const char*, size_t); typedef int (*emm_indication_callback_t) (Stat_t, tac_t, ci_t, AcT_t,
const char *, size_t);
/****************************************************************************/ /****************************************************************************/
/******************** G L O B A L V A R I A B L E S ********************/ /******************** G L O B A L V A R I A B L E S ********************/
......
/***************************************************************************** /*****************************************************************************
Eurecom OpenAirInterface 3 Eurecom OpenAirInterface 3
Copyright(c) 2012 Eurecom Copyright(c) 2012 Eurecom
Source networkDef.h Source networkDef.h
Version 0.1 Version 0.1
Date 2012/09/21 Date 2012/09/21
Product NAS stack Product NAS stack
Subsystem include Subsystem include
Author Frederic Maurel Author Frederic Maurel
Description Contains network's global definitions Description Contains network's global definitions
*****************************************************************************/ *****************************************************************************/
#ifndef __NETWORKDEF_H__ #ifndef __NETWORKDEF_H__
...@@ -29,101 +29,101 @@ Description Contains network's global definitions ...@@ -29,101 +29,101 @@ Description Contains network's global definitions
* Network selection mode * Network selection mode
* ---------------------- * ----------------------
*/ */
#define NET_PLMN_AUTO 0 #define NET_PLMN_AUTO 0
#define NET_PLMN_MANUAL 1 #define NET_PLMN_MANUAL 1
/* /*
* --------------------------- * ---------------------------
* Network registration status * Network registration status
* --------------------------- * ---------------------------
*/ */
/* not registered, not currently searching an operator to register to */ /* not registered, not currently searching an operator to register to */
#define NET_REG_STATE_OFF 0 #define NET_REG_STATE_OFF 0
/* registered, home network */ /* registered, home network */
#define NET_REG_STATE_HN 1 #define NET_REG_STATE_HN 1
/* not registered, currently trying to attach or searching an operator /* not registered, currently trying to attach or searching an operator
* to register to */ * to register to */
#define NET_REG_STATE_ON 2 #define NET_REG_STATE_ON 2
/* registration denied */ /* registration denied */
#define NET_REG_STATE_DENIED 3 #define NET_REG_STATE_DENIED 3
/* unknown (e.g. out of GERAN/UTRAN/E-UTRAN coverage) */ /* unknown (e.g. out of GERAN/UTRAN/E-UTRAN coverage) */
#define NET_REG_STATE_UNKNOWN 4 #define NET_REG_STATE_UNKNOWN 4
/* registered, roaming */ /* registered, roaming */
#define NET_REG_STATE_ROAMING 5 #define NET_REG_STATE_ROAMING 5
/* registered for "SMS only", home network */ /* registered for "SMS only", home network */
#define NET_REG_STATE_SMS_HN 6 #define NET_REG_STATE_SMS_HN 6
/* registered, for "SMS only", roaming */ /* registered, for "SMS only", roaming */
#define NET_REG_STATE_SMS_ROAMING 7 #define NET_REG_STATE_SMS_ROAMING 7
/* attached for emergency bearer services only (applicable to UTRAN) */ /* attached for emergency bearer services only (applicable to UTRAN) */
#define NET_REG_STATE_EMERGENCY 8 #define NET_REG_STATE_EMERGENCY 8
/* /*
* ------------------------------------ * ------------------------------------
* Network access technology indicators * Network access technology indicators
* ------------------------------------ * ------------------------------------
*/ */
#define NET_ACCESS_UNAVAILABLE (-1) /* Not available */ #define NET_ACCESS_UNAVAILABLE (-1) /* Not available */
#define NET_ACCESS_GSM 0 /* GSM */ #define NET_ACCESS_GSM 0 /* GSM */
#define NET_ACCESS_COMPACT 1 /* GSM Compact */ #define NET_ACCESS_COMPACT 1 /* GSM Compact */
#define NET_ACCESS_UTRAN 2 /* UTRAN */ #define NET_ACCESS_UTRAN 2 /* UTRAN */
#define NET_ACCESS_EGPRS 3 /* GSM w/EGPRS */ #define NET_ACCESS_EGPRS 3 /* GSM w/EGPRS */
#define NET_ACCESS_HSDPA 4 /* UTRAN w/HSDPA */ #define NET_ACCESS_HSDPA 4 /* UTRAN w/HSDPA */
#define NET_ACCESS_HSUPA 5 /* UTRAN w/HSUPA */ #define NET_ACCESS_HSUPA 5 /* UTRAN w/HSUPA */
#define NET_ACCESS_HSDUPA 6 /* UTRAN w/HSDPA and HSUPA */ #define NET_ACCESS_HSDUPA 6 /* UTRAN w/HSDPA and HSUPA */
#define NET_ACCESS_EUTRAN 7 /* E-UTRAN */ #define NET_ACCESS_EUTRAN 7 /* E-UTRAN */
/* /*
* --------------------------------------- * ---------------------------------------
* Network operator representation formats * Network operator representation formats
* --------------------------------------- * ---------------------------------------
*/ */
#define NET_FORMAT_LONG 0 /* long format alphanumeric */ #define NET_FORMAT_LONG 0 /* long format alphanumeric */
#define NET_FORMAT_SHORT 1 /* short format alphanumeric */ #define NET_FORMAT_SHORT 1 /* short format alphanumeric */
#define NET_FORMAT_NUM 2 /* numeric format */ #define NET_FORMAT_NUM 2 /* numeric format */
#define NET_FORMAT_MAX_SIZE NET_FORMAT_LONG_SIZE #define NET_FORMAT_MAX_SIZE NET_FORMAT_LONG_SIZE
/* /*
* ----------------------------- * -----------------------------
* Network operator availability * Network operator availability
* ----------------------------- * -----------------------------
*/ */
#define NET_OPER_UNKNOWN 0 /* unknown operator */ #define NET_OPER_UNKNOWN 0 /* unknown operator */
#define NET_OPER_AVAILABLE 1 /* available operator */ #define NET_OPER_AVAILABLE 1 /* available operator */
#define NET_OPER_CURRENT 2 /* currently selected operator */ #define NET_OPER_CURRENT 2 /* currently selected operator */
#define NET_OPER_FORBIDDEN 3 /* forbidden operator */ #define NET_OPER_FORBIDDEN 3 /* forbidden operator */
/* /*
* -------------------------------------- * --------------------------------------
* Network connection establishment cause * Network connection establishment cause
* -------------------------------------- * --------------------------------------
*/ */
#define NET_ESTABLISH_CAUSE_EMERGENCY 0x01 #define NET_ESTABLISH_CAUSE_EMERGENCY 0x01
#define NET_ESTABLISH_CAUSE_HIGH_PRIO 0x02 #define NET_ESTABLISH_CAUSE_HIGH_PRIO 0x02
#define NET_ESTABLISH_CAUSE_MT_ACCESS 0x03 #define NET_ESTABLISH_CAUSE_MT_ACCESS 0x03
#define NET_ESTABLISH_CAUSE_MO_SIGNAL 0x04 #define NET_ESTABLISH_CAUSE_MO_SIGNAL 0x04
#define NET_ESTABLISH_CAUSE_MO_DATA 0x05 #define NET_ESTABLISH_CAUSE_MO_DATA 0x05
#define NET_ESTABLISH_CAUSE_V1020 0x06 #define NET_ESTABLISH_CAUSE_V1020 0x06
/* /*
* -------------------------------------- * --------------------------------------
* Network connection establishment type * Network connection establishment type
* -------------------------------------- * --------------------------------------
*/ */
#define NET_ESTABLISH_TYPE_ORIGINATING_SIGNAL 0x10 #define NET_ESTABLISH_TYPE_ORIGINATING_SIGNAL 0x10
#define NET_ESTABLISH_TYPE_EMERGENCY_CALLS 0x20 #define NET_ESTABLISH_TYPE_EMERGENCY_CALLS 0x20
#define NET_ESTABLISH_TYPE_ORIGINATING_CALLS 0x30 #define NET_ESTABLISH_TYPE_ORIGINATING_CALLS 0x30
#define NET_ESTABLISH_TYPE_TERMINATING_CALLS 0x40 #define NET_ESTABLISH_TYPE_TERMINATING_CALLS 0x40
#define NET_ESTABLISH_TYPE_MO_CS_FALLBACK 0x50 #define NET_ESTABLISH_TYPE_MO_CS_FALLBACK 0x50
/* /*
* ------------------- * -------------------
* PDN connection type * PDN connection type
* ------------------- * -------------------
*/ */
#define NET_PDN_TYPE_IPV4 0 #define NET_PDN_TYPE_IPV4 0
#define NET_PDN_TYPE_IPV6 1 #define NET_PDN_TYPE_IPV6 1
#define NET_PDN_TYPE_IPV4V6 2 #define NET_PDN_TYPE_IPV4V6 2
/****************************************************************************/ /****************************************************************************/
/************************ G L O B A L T Y P E S ************************/ /************************ G L O B A L T Y P E S ************************/
...@@ -135,14 +135,14 @@ Description Contains network's global definitions ...@@ -135,14 +135,14 @@ Description Contains network's global definitions
* --------------------- * ---------------------
*/ */
typedef enum { typedef enum {
/* MT = The Mobile Terminal, NW = The Network */ /* MT = The Mobile Terminal, NW = The Network */
NET_PDN_MT_DEFAULT_ACT = 1, /* MT has activated a PDN connection */ 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_NW_DEFAULT_DEACT, /* NW has deactivated a PDN connection */
NET_PDN_MT_DEFAULT_DEACT, /* MT 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_NW_DEDICATED_ACT, /* NW has activated an EPS bearer context */
NET_PDN_MT_DEDICATED_ACT, /* MT 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_NW_DEDICATED_DEACT, /* NW has deactivated an EPS bearer context */
NET_PDN_MT_DEDICATED_DEACT, /* MT has deactivated an EPS bearer context */ NET_PDN_MT_DEDICATED_DEACT, /* MT has deactivated an EPS bearer context */
} network_pdn_state_t; } network_pdn_state_t;
/* /*
...@@ -151,13 +151,13 @@ typedef enum { ...@@ -151,13 +151,13 @@ typedef enum {
* --------------------------- * ---------------------------
*/ */
typedef struct { typedef struct {
#define NET_FORMAT_LONG_SIZE 16 /* Long alphanumeric format */ #define NET_FORMAT_LONG_SIZE 16 /* Long alphanumeric format */
#define NET_FORMAT_SHORT_SIZE 8 /* Short alphanumeric format */ #define NET_FORMAT_SHORT_SIZE 8 /* Short alphanumeric format */
#define NET_FORMAT_NUM_SIZE 6 /* Numeric format (PLMN identifier */ #define NET_FORMAT_NUM_SIZE 6 /* Numeric format (PLMN identifier */
union { union {
unsigned char alpha_long[NET_FORMAT_LONG_SIZE+1]; unsigned char alpha_long[NET_FORMAT_LONG_SIZE+1];
unsigned char alpha_short[NET_FORMAT_SHORT_SIZE+1]; unsigned char alpha_short[NET_FORMAT_SHORT_SIZE+1];
unsigned char num[NET_FORMAT_NUM_SIZE+1]; unsigned char num[NET_FORMAT_NUM_SIZE+1];
} id; } id;
} network_plmn_t; } network_plmn_t;
...@@ -167,11 +167,11 @@ typedef struct { ...@@ -167,11 +167,11 @@ typedef struct {
* ------------------------------- * -------------------------------
*/ */
typedef struct { typedef struct {
int gbrUL; /* Guaranteed Bit Rate for uplink */ int gbrUL; /* Guaranteed Bit Rate for uplink */
int gbrDL; /* Guaranteed Bit Rate for downlink */ int gbrDL; /* Guaranteed Bit Rate for downlink */
int mbrUL; /* Maximum Bit Rate for uplink */ int mbrUL; /* Maximum Bit Rate for uplink */
int mbrDL; /* Maximum Bit Rate for downlink */ int mbrDL; /* Maximum Bit Rate for downlink */
int qci; /* QoS Class Identifier */ int qci; /* QoS Class Identifier */
} network_qos_t; } network_qos_t;
/* /*
...@@ -180,9 +180,9 @@ typedef struct { ...@@ -180,9 +180,9 @@ typedef struct {
* ----------------------------- * -----------------------------
*/ */
typedef struct { typedef struct {
unsigned char protocol; /* Protocol identifier */ unsigned char protocol; /* Protocol identifier */
unsigned char tos; /* Type of service */ unsigned char tos; /* Type of service */
#define NET_PACKET_FILTER_IPV4_ADDR_SIZE 4 #define NET_PACKET_FILTER_IPV4_ADDR_SIZE 4
unsigned char addr[NET_PACKET_FILTER_IPV4_ADDR_SIZE]; unsigned char addr[NET_PACKET_FILTER_IPV4_ADDR_SIZE];
unsigned char mask[NET_PACKET_FILTER_IPV4_ADDR_SIZE]; unsigned char mask[NET_PACKET_FILTER_IPV4_ADDR_SIZE];
} network_ipv4_data_t; } network_ipv4_data_t;
...@@ -193,13 +193,13 @@ typedef struct { ...@@ -193,13 +193,13 @@ typedef struct {
* ----------------------------- * -----------------------------
*/ */
typedef struct { typedef struct {
unsigned char nh; /* Next header type */ unsigned char nh; /* Next header type */
unsigned char tf; /* Traffic class */ unsigned char tf; /* Traffic class */
#define NET_PACKET_FILTER_IPV6_ADDR_SIZE 16 #define NET_PACKET_FILTER_IPV6_ADDR_SIZE 16
unsigned char addr[NET_PACKET_FILTER_IPV6_ADDR_SIZE]; unsigned char addr[NET_PACKET_FILTER_IPV6_ADDR_SIZE];
unsigned char mask[NET_PACKET_FILTER_IPV6_ADDR_SIZE]; unsigned char mask[NET_PACKET_FILTER_IPV6_ADDR_SIZE];
unsigned int ipsec; /* IPSec security parameter index */ unsigned int ipsec; /* IPSec security parameter index */
unsigned int fl; /* Flow label */ unsigned int fl; /* Flow label */
} network_ipv6_data_t; } network_ipv6_data_t;
/* /*
...@@ -208,18 +208,18 @@ typedef struct { ...@@ -208,18 +208,18 @@ typedef struct {
* ------------- * -------------
*/ */
typedef struct { typedef struct {
unsigned char id; /* Packet filter identifier */ unsigned char id; /* Packet filter identifier */
#define NET_PACKET_FILTER_DOWNLINK 0x01 #define NET_PACKET_FILTER_DOWNLINK 0x01
#define NET_PACKET_FILTER_UPLINK 0x02 #define NET_PACKET_FILTER_UPLINK 0x02
#define NET_PACKET_FILTER_BIDIR 0x03 #define NET_PACKET_FILTER_BIDIR 0x03
unsigned char dir; /* Packet filter direction */ unsigned char dir; /* Packet filter direction */
unsigned char precedence; /* Evaluation precedence */ unsigned char precedence; /* Evaluation precedence */
union { union {
network_ipv4_data_t ipv4; network_ipv4_data_t ipv4;
network_ipv6_data_t ipv6; network_ipv6_data_t ipv6;
} data; } data;
unsigned short lport; /* Local (UE) port number */ unsigned short lport; /* Local (UE) port number */
unsigned short rport; /* Remote (network) port number */ unsigned short rport; /* Remote (network) port number */
} network_pkf_t; } network_pkf_t;
/* /*
...@@ -229,8 +229,8 @@ typedef struct { ...@@ -229,8 +229,8 @@ typedef struct {
*/ */
typedef struct { typedef struct {
int n_pkfs; int n_pkfs;
#define NET_PACKET_FILTER_MAX 16 #define NET_PACKET_FILTER_MAX 16
network_pkf_t* pkf[NET_PACKET_FILTER_MAX]; network_pkf_t *pkf[NET_PACKET_FILTER_MAX];
} network_tft_t; } network_tft_t;
/* /*
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment