Merged with trunk
git-svn-id: http://svn.eurecom.fr/openair4G/trunk@6501 818b1a75-f10b-46b9-bf7c-635c3b92a50f
This commit is contained in:
@@ -37,7 +37,7 @@ export PROJDIR = $(CURDIR)
|
|||||||
|
|
||||||
all:
|
all:
|
||||||
ifeq ($(PROCESS), UE)
|
ifeq ($(PROCESS), UE)
|
||||||
@$(CD) $(SECUDIR) && $(MAKE)
|
@$(CD) $(SECUDIR) && $(MAKE) -f Makefile.NAS
|
||||||
endif
|
endif
|
||||||
@$(CD) $(UTILDIR) && $(MAKE)
|
@$(CD) $(UTILDIR) && $(MAKE)
|
||||||
@$(CD) $(APIDIR) && $(MAKE)
|
@$(CD) $(APIDIR) && $(MAKE)
|
||||||
|
|||||||
@@ -34,13 +34,14 @@ endif
|
|||||||
|
|
||||||
include $(PROJDIR)/Makerules
|
include $(PROJDIR)/Makerules
|
||||||
include $(PROJDIR)/Makefile.inc
|
include $(PROJDIR)/Makefile.inc
|
||||||
|
include $(PROJDIR)/../Makefile.tools
|
||||||
|
|
||||||
export LD_RUN_PATH = $(LIBDIR):$(LIBPROCESS)
|
export LD_RUN_PATH = $(LIBDIR):$(LIBPROCESS)
|
||||||
|
|
||||||
LIBS = -lapi -lutil -lEMMmsg -lESMmsg -lies -lrt
|
LIBS = -luenas.a -lrt
|
||||||
INCLUDES = -I. -I$(INCDIR) -I$(UTILDIR) -I$(USIMAPIDIR) -I$(EMMDIR) -I$(ESMDIR) -I$(IESDIR)
|
INCLUDES = -I. -I$(INCDIR) -I$(UTILDIR) -I$(USIMAPIDIR) -I$(EMMDIR) -I$(ESMDIR) -I$(IESDIR)
|
||||||
|
|
||||||
LIBSUTIL = $(LIBDIR)/$(LIBUTIL).a $(LIBDIR)/$(LIBUTIL).so
|
#LIBSUTIL = $(LIBDIR)/$(LIBUTIL).a $(LIBDIR)/$(LIBUTIL).so
|
||||||
|
|
||||||
USIM_OBJ = usim_data.o
|
USIM_OBJ = usim_data.o
|
||||||
UE_OBJ = ue_data.o
|
UE_OBJ = ue_data.o
|
||||||
@@ -57,13 +58,13 @@ all: $(TARGETS)
|
|||||||
$(CC) $(CFLAGS) -c $< -o $@
|
$(CC) $(CFLAGS) -c $< -o $@
|
||||||
|
|
||||||
$(USIM_TARGET): $(USIM_OBJ) $(LIBSUTIL)
|
$(USIM_TARGET): $(USIM_OBJ) $(LIBSUTIL)
|
||||||
$(CC) $(LDFLAGS) -o $@ $^ $(LIBS) $(SECUDIR)/*.o -lnettle -lcrypto -lm
|
$(CC) $(LDFLAGS) -o $@ $^ $(LIBS) -lnettle -lcrypto -lm
|
||||||
@echo Replacing $@ to $(BINDIR)
|
@echo Replacing $@ to $(BINDIR)
|
||||||
@$(RM) $(BINDIR)/$@
|
@$(RM) $(BINDIR)/$@
|
||||||
@$(CP) $@ $(BINDIR)
|
@$(CP) $@ $(BINDIR)
|
||||||
|
|
||||||
$(UE_TARGET): $(UE_OBJ) $(LIBSUTIL)
|
$(UE_TARGET): $(UE_OBJ) $(LIBSUTIL)
|
||||||
$(CC) $(LDFLAGS) -o $@ $^ $(LIBS) $(SECUDIR)/*.o -lnettle -lcrypto -lm
|
$(CC) $(LDFLAGS) -o $@ $^ $(LIBS) -lnettle -lcrypto -lm
|
||||||
@echo Replacing $@ to $(BINDIR)
|
@echo Replacing $@ to $(BINDIR)
|
||||||
@$(RM) $(BINDIR)/$@
|
@$(RM) $(BINDIR)/$@
|
||||||
@$(CP) $@ $(BINDIR)
|
@$(CP) $@ $(BINDIR)
|
||||||
@@ -74,6 +75,10 @@ clean:
|
|||||||
veryclean: clean
|
veryclean: clean
|
||||||
$(RM) $(TARGETS)
|
$(RM) $(TARGETS)
|
||||||
|
|
||||||
|
veryveryclean: veryclean
|
||||||
|
$(RM) -Rf *.o $(PROJDIR)
|
||||||
|
$(RM) -Rf *.a $(PROJDIR)
|
||||||
|
|
||||||
depend:
|
depend:
|
||||||
makedepend -- ${CFLAGS} -- ${SRCS}
|
makedepend -- ${CFLAGS} -- ${SRCS}
|
||||||
|
|
||||||
|
|||||||
@@ -53,8 +53,7 @@ Description Implements the utility used to generate data stored in the
|
|||||||
#include <stdlib.h> // exit, free
|
#include <stdlib.h> // exit, free
|
||||||
#include <string.h> // memset, strncpy
|
#include <string.h> // memset, strncpy
|
||||||
|
|
||||||
//#define SELECTED_PLMN SFR1
|
#define SELECTED_PLMN SFR1
|
||||||
#define SELECTED_PLMN FCT1
|
|
||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
/**************** E X T E R N A L D E F I N I T I O N S ****************/
|
/**************** E X T E R N A L D E F I N I T I O N S ****************/
|
||||||
@@ -290,7 +289,7 @@ static void _gen_user_data(user_nvdata_t* data)
|
|||||||
static void _gen_emm_data(emm_nvdata_t* data)
|
static void _gen_emm_data(emm_nvdata_t* data)
|
||||||
{
|
{
|
||||||
//#if (SELECTED_PLMN == FCT1)
|
//#if (SELECTED_PLMN == FCT1)
|
||||||
#if 1
|
#if 0
|
||||||
/*
|
/*
|
||||||
* International Mobile Subscriber Identity
|
* International Mobile Subscriber Identity
|
||||||
* IMSI = MCC + MNC + MSIN = 310 (USA) + 028 (UNKNOWN) + 90832150
|
* IMSI = MCC + MNC + MSIN = 310 (USA) + 028 (UNKNOWN) + 90832150
|
||||||
|
|||||||
@@ -53,8 +53,7 @@ Description Implements the utility used to generate data stored in the
|
|||||||
#include <stdlib.h> // exit
|
#include <stdlib.h> // exit
|
||||||
#include <string.h> // memset, memcpy, strncpy
|
#include <string.h> // memset, memcpy, strncpy
|
||||||
|
|
||||||
//#define SELECTED_PLMN SFR1
|
#define SELECTED_PLMN SFR1
|
||||||
#define SELECTED_PLMN FCT1
|
|
||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
/**************** E X T E R N A L D E F I N I T I O N S ****************/
|
/**************** E X T E R N A L D E F I N I T I O N S ****************/
|
||||||
@@ -105,6 +104,7 @@ int main (int argc, const char* argv[])
|
|||||||
{
|
{
|
||||||
int rc;
|
int rc;
|
||||||
usim_data_t usim_data;
|
usim_data_t usim_data;
|
||||||
|
int i;
|
||||||
|
|
||||||
unsigned char gen_data;
|
unsigned char gen_data;
|
||||||
|
|
||||||
@@ -115,32 +115,28 @@ int main (int argc, const char* argv[])
|
|||||||
fprintf(stderr, "Invalid parameter\n");
|
fprintf(stderr, "Invalid parameter\n");
|
||||||
_display_usage(argv[0]);
|
_display_usage(argv[0]);
|
||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
}
|
} else if ((strcmp(argv[1], "--gen") == 0)
|
||||||
else if ( (strcmp(argv[1], "--gen") == 0) ||
|
|| (strcmp(argv[1], "-g") == 0)) {
|
||||||
(strcmp(argv[1], "-g") == 0) ) {
|
|
||||||
/* Generate USIM data files */
|
/* Generate USIM data files */
|
||||||
gen_data = TRUE;
|
gen_data = TRUE;
|
||||||
}
|
} else if ((strcmp(argv[1], "--print") == 0)
|
||||||
else if ( (strcmp(argv[1], "--print") == 0) ||
|
|| (strcmp(argv[1], "-p") == 0)) {
|
||||||
(strcmp(argv[1], "-p") == 0) ) {
|
|
||||||
/* Display content of USIM data files */
|
/* Display content of USIM data files */
|
||||||
gen_data = FALSE;
|
gen_data = FALSE;
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
/* Display usage */
|
/* Display usage */
|
||||||
_display_usage(argv[0]);
|
_display_usage(argv[0]);
|
||||||
exit(EXIT_SUCCESS);
|
exit(EXIT_SUCCESS);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (gen_data)
|
if (gen_data) {
|
||||||
{
|
|
||||||
/*
|
/*
|
||||||
* Initialize USIM data
|
* Initialize USIM data
|
||||||
*/
|
*/
|
||||||
memset(&usim_data, 0, sizeof(usim_data_t));
|
memset(&usim_data, 0, sizeof(usim_data_t));
|
||||||
|
|
||||||
//#if (SELECTED_PLMN == FCT1)
|
//#if (SELECTED_PLMN == FCT1)
|
||||||
#if 1
|
#if 0
|
||||||
/*
|
/*
|
||||||
* International Mobile Subscriber Identity
|
* International Mobile Subscriber Identity
|
||||||
* IMSI = MCC + MNC + MSIN = 310 (USA) + 028 (UNKNOWN) + 90832150
|
* IMSI = MCC + MNC + MSIN = 310 (USA) + 028 (UNKNOWN) + 90832150
|
||||||
@@ -218,7 +214,7 @@ int main (int argc, const char* argv[])
|
|||||||
/*
|
/*
|
||||||
* List of Forbidden PLMNs
|
* List of Forbidden PLMNs
|
||||||
*/
|
*/
|
||||||
for (int i = 0; i < USIM_FPLMN_MAX; i++) {
|
for (i = 0; i < USIM_FPLMN_MAX; i++) {
|
||||||
memset(&usim_data.fplmn[i], 0xff, sizeof(plmn_t));
|
memset(&usim_data.fplmn[i], 0xff, sizeof(plmn_t));
|
||||||
}
|
}
|
||||||
/*
|
/*
|
||||||
@@ -299,7 +295,7 @@ int main (int argc, const char* argv[])
|
|||||||
/*
|
/*
|
||||||
* PLMN Network Name and Operator PLMN List
|
* PLMN Network Name and Operator PLMN List
|
||||||
*/
|
*/
|
||||||
for (int i = SFR1; i < VDF2; i++) {
|
for (i = SFR1; i < VDF2; i++) {
|
||||||
network_record_t record = network_records[i];
|
network_record_t record = network_records[i];
|
||||||
usim_data.pnn[i].fullname.type = USIM_PNN_FULLNAME_TAG;
|
usim_data.pnn[i].fullname.type = USIM_PNN_FULLNAME_TAG;
|
||||||
usim_data.pnn[i].fullname.length = strlen(record.fullname);
|
usim_data.pnn[i].fullname.length = strlen(record.fullname);
|
||||||
@@ -314,7 +310,7 @@ int main (int argc, const char* argv[])
|
|||||||
usim_data.opl[i].end = record.tac_end;
|
usim_data.opl[i].end = record.tac_end;
|
||||||
usim_data.opl[i].record_id = i;
|
usim_data.opl[i].record_id = i;
|
||||||
}
|
}
|
||||||
for (int i = VDF2; i < USIM_OPL_MAX; i++) {
|
for (i = VDF2; i < USIM_OPL_MAX; i++) {
|
||||||
memset(&usim_data.opl[i].plmn, 0xff, sizeof(plmn_t));
|
memset(&usim_data.opl[i].plmn, 0xff, sizeof(plmn_t));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -331,29 +327,35 @@ int main (int argc, const char* argv[])
|
|||||||
/*
|
/*
|
||||||
* List of user controlled PLMN selector with Access Technology
|
* List of user controlled PLMN selector with Access Technology
|
||||||
*/
|
*/
|
||||||
for (int i = 0; i < USIM_PLMN_MAX; i++) {
|
for (i = 0; i < USIM_PLMN_MAX; i++) {
|
||||||
memset(&usim_data.plmn[i], 0xff, sizeof(plmn_t));
|
memset(&usim_data.plmn[i], 0xff, sizeof(plmn_t));
|
||||||
}
|
}
|
||||||
/*
|
/*
|
||||||
* List of operator controlled PLMN selector with Access Technology
|
* List of operator controlled PLMN selector with Access Technology
|
||||||
*/
|
*/
|
||||||
usim_data.oplmn[0].plmn = network_records[VDF1].plmn;
|
usim_data.oplmn[0].plmn = network_records[VDF1].plmn;
|
||||||
usim_data.oplmn[0].AcT = (USIM_ACT_GSM | USIM_ACT_UTRAN | USIM_ACT_EUTRAN);
|
usim_data.oplmn[0].AcT = (USIM_ACT_GSM | USIM_ACT_UTRAN
|
||||||
|
| USIM_ACT_EUTRAN);
|
||||||
usim_data.oplmn[1].plmn = network_records[VDF2].plmn;
|
usim_data.oplmn[1].plmn = network_records[VDF2].plmn;
|
||||||
usim_data.oplmn[1].AcT = (USIM_ACT_GSM | USIM_ACT_UTRAN | USIM_ACT_EUTRAN);
|
usim_data.oplmn[1].AcT = (USIM_ACT_GSM | USIM_ACT_UTRAN
|
||||||
|
| USIM_ACT_EUTRAN);
|
||||||
usim_data.oplmn[2].plmn = network_records[VDF3].plmn;
|
usim_data.oplmn[2].plmn = network_records[VDF3].plmn;
|
||||||
usim_data.oplmn[2].AcT = (USIM_ACT_GSM | USIM_ACT_UTRAN | USIM_ACT_EUTRAN);
|
usim_data.oplmn[2].AcT = (USIM_ACT_GSM | USIM_ACT_UTRAN
|
||||||
|
| USIM_ACT_EUTRAN);
|
||||||
usim_data.oplmn[3].plmn = network_records[VDF4].plmn;
|
usim_data.oplmn[3].plmn = network_records[VDF4].plmn;
|
||||||
usim_data.oplmn[3].AcT = (USIM_ACT_GSM | USIM_ACT_UTRAN | USIM_ACT_EUTRAN);
|
usim_data.oplmn[3].AcT = (USIM_ACT_GSM | USIM_ACT_UTRAN
|
||||||
|
| USIM_ACT_EUTRAN);
|
||||||
usim_data.oplmn[4].plmn = network_records[VDF5].plmn;
|
usim_data.oplmn[4].plmn = network_records[VDF5].plmn;
|
||||||
usim_data.oplmn[4].AcT = (USIM_ACT_GSM | USIM_ACT_UTRAN | USIM_ACT_EUTRAN);
|
usim_data.oplmn[4].AcT = (USIM_ACT_GSM | USIM_ACT_UTRAN
|
||||||
for (int i = 5; i < USIM_OPLMN_MAX; i++) {
|
| USIM_ACT_EUTRAN);
|
||||||
|
for (i = 5; i < USIM_OPLMN_MAX; i++) {
|
||||||
memset(&usim_data.oplmn[i], 0xff, sizeof(plmn_t));
|
memset(&usim_data.oplmn[i], 0xff, sizeof(plmn_t));
|
||||||
}
|
}
|
||||||
/*
|
/*
|
||||||
* EPS Location Information
|
* EPS Location Information
|
||||||
*/
|
*/
|
||||||
usim_data.epsloci.guti.gummei.plmn = network_records[SELECTED_PLMN].plmn;
|
usim_data.epsloci.guti.gummei.plmn =
|
||||||
|
network_records[SELECTED_PLMN].plmn;
|
||||||
usim_data.epsloci.guti.gummei.MMEgid = DEFAULT_MME_ID;
|
usim_data.epsloci.guti.gummei.MMEgid = DEFAULT_MME_ID;
|
||||||
usim_data.epsloci.guti.gummei.MMEcode = DEFAULT_MME_CODE;
|
usim_data.epsloci.guti.gummei.MMEcode = DEFAULT_MME_CODE;
|
||||||
usim_data.epsloci.guti.m_tmsi = DEFAULT_M_TMSI;
|
usim_data.epsloci.guti.m_tmsi = DEFAULT_M_TMSI;
|
||||||
@@ -363,7 +365,8 @@ int main (int argc, const char* argv[])
|
|||||||
/*
|
/*
|
||||||
* Non-Access Stratum configuration
|
* Non-Access Stratum configuration
|
||||||
*/
|
*/
|
||||||
usim_data.nasconfig.NAS_SignallingPriority.type = USIM_NAS_SIGNALLING_PRIORITY_TAG;
|
usim_data.nasconfig.NAS_SignallingPriority.type =
|
||||||
|
USIM_NAS_SIGNALLING_PRIORITY_TAG;
|
||||||
usim_data.nasconfig.NAS_SignallingPriority.length = 1;
|
usim_data.nasconfig.NAS_SignallingPriority.length = 1;
|
||||||
usim_data.nasconfig.NAS_SignallingPriority.value[0] = 0x00;
|
usim_data.nasconfig.NAS_SignallingPriority.value[0] = 0x00;
|
||||||
usim_data.nasconfig.NMO_I_Behaviour.type = USIM_NMO_I_BEHAVIOUR_TAG;
|
usim_data.nasconfig.NMO_I_Behaviour.type = USIM_NMO_I_BEHAVIOUR_TAG;
|
||||||
@@ -376,13 +379,16 @@ int main (int argc, const char* argv[])
|
|||||||
#else
|
#else
|
||||||
usim_data.nasconfig.AttachWithImsi.value[0] = 0x01;
|
usim_data.nasconfig.AttachWithImsi.value[0] = 0x01;
|
||||||
#endif
|
#endif
|
||||||
usim_data.nasconfig.MinimumPeriodicSearchTimer.type = USIM_MINIMUM_PERIODIC_SEARCH_TIMER_TAG;
|
usim_data.nasconfig.MinimumPeriodicSearchTimer.type =
|
||||||
|
USIM_MINIMUM_PERIODIC_SEARCH_TIMER_TAG;
|
||||||
usim_data.nasconfig.MinimumPeriodicSearchTimer.length = 1;
|
usim_data.nasconfig.MinimumPeriodicSearchTimer.length = 1;
|
||||||
usim_data.nasconfig.MinimumPeriodicSearchTimer.value[0] = 0x00;
|
usim_data.nasconfig.MinimumPeriodicSearchTimer.value[0] = 0x00;
|
||||||
usim_data.nasconfig.ExtendedAccessBarring.type = USIM_EXTENDED_ACCESS_BARRING_TAG;
|
usim_data.nasconfig.ExtendedAccessBarring.type =
|
||||||
|
USIM_EXTENDED_ACCESS_BARRING_TAG;
|
||||||
usim_data.nasconfig.ExtendedAccessBarring.length = 1;
|
usim_data.nasconfig.ExtendedAccessBarring.length = 1;
|
||||||
usim_data.nasconfig.ExtendedAccessBarring.value[0] = 0x00;
|
usim_data.nasconfig.ExtendedAccessBarring.value[0] = 0x00;
|
||||||
usim_data.nasconfig.Timer_T3245_Behaviour.type = USIM_TIMER_T3245_BEHAVIOUR_TAG;
|
usim_data.nasconfig.Timer_T3245_Behaviour.type =
|
||||||
|
USIM_TIMER_T3245_BEHAVIOUR_TAG;
|
||||||
usim_data.nasconfig.Timer_T3245_Behaviour.length = 1;
|
usim_data.nasconfig.Timer_T3245_Behaviour.length = 1;
|
||||||
usim_data.nasconfig.Timer_T3245_Behaviour.value[0] = 0x00;
|
usim_data.nasconfig.Timer_T3245_Behaviour.value[0] = 0x00;
|
||||||
|
|
||||||
@@ -429,17 +435,16 @@ int main (int argc, const char* argv[])
|
|||||||
/*
|
/*
|
||||||
* Displays command line usage
|
* Displays command line usage
|
||||||
*/
|
*/
|
||||||
static void _display_usage(const char* command)
|
static void _display_usage(const char* command) {
|
||||||
{
|
|
||||||
fprintf(stderr, "usage: %s [OPTION]\n", command);
|
fprintf(stderr, "usage: %s [OPTION]\n", command);
|
||||||
fprintf(stderr, "\t[--gen|-g]\tGenerate the USIM data file\n");
|
fprintf(stderr, "\t[--gen|-g]\tGenerate the USIM data file\n");
|
||||||
fprintf(stderr, "\t[--print|-p]\tDisplay the content of the USIM data file\n");
|
fprintf(stderr,
|
||||||
|
"\t[--print|-p]\tDisplay the content of the USIM data file\n");
|
||||||
fprintf(stderr, "\t[--help|-h]\tDisplay this usage\n");
|
fprintf(stderr, "\t[--help|-h]\tDisplay this usage\n");
|
||||||
const char* path = getenv("USIM_DIR");
|
const char* path = getenv("USIM_DIR");
|
||||||
if (path != NULL) {
|
if (path != NULL) {
|
||||||
fprintf(stderr, "USIM_DIR = %s\n", path);
|
fprintf(stderr, "USIM_DIR = %s\n", path);
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
fprintf(stderr, "USIM_DIR environment variable is not defined\n");
|
fprintf(stderr, "USIM_DIR environment variable is not defined\n");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -447,9 +452,9 @@ static void _display_usage(const char* command)
|
|||||||
/*
|
/*
|
||||||
* Displays USIM application data
|
* Displays USIM application data
|
||||||
*/
|
*/
|
||||||
static void _display_usim_data(const usim_data_t* data)
|
static void _display_usim_data(const usim_data_t* data) {
|
||||||
{
|
|
||||||
int digits;
|
int digits;
|
||||||
|
int i;
|
||||||
|
|
||||||
printf("Administrative Data:\n");
|
printf("Administrative Data:\n");
|
||||||
printf("\tUE_Operation_Mode\t= 0x%.2x\n", data->ad.UE_Operation_Mode);
|
printf("\tUE_Operation_Mode\t= 0x%.2x\n", data->ad.UE_Operation_Mode);
|
||||||
@@ -458,8 +463,10 @@ static void _display_usim_data(const usim_data_t* data)
|
|||||||
|
|
||||||
printf("IMSI:\n");
|
printf("IMSI:\n");
|
||||||
printf("\tlength\t= %d\n", data->imsi.length);
|
printf("\tlength\t= %d\n", data->imsi.length);
|
||||||
printf("\tparity\t= %s\n", data->imsi.u.num.parity == EVEN_PARITY ? "Even" : "Odd");
|
printf("\tparity\t= %s\n",
|
||||||
digits = (data->imsi.length * 2) - 1 - (data->imsi.u.num.parity == EVEN_PARITY ? 1 : 0);
|
data->imsi.u.num.parity == EVEN_PARITY ? "Even" : "Odd");
|
||||||
|
digits = (data->imsi.length * 2) - 1
|
||||||
|
- (data->imsi.u.num.parity == EVEN_PARITY ? 1 : 0);
|
||||||
printf("\tdigits\t= %d\n", digits);
|
printf("\tdigits\t= %d\n", digits);
|
||||||
printf("\tdigits\t= %u%u%u%u%u%x%u%u%u%u",
|
printf("\tdigits\t= %u%u%u%u%u%x%u%u%u%u",
|
||||||
data->imsi.u.num.digit1, // MCC digit 1
|
data->imsi.u.num.digit1, // MCC digit 1
|
||||||
@@ -468,10 +475,8 @@ static void _display_usim_data(const usim_data_t* data)
|
|||||||
data->imsi.u.num.digit4, // MNC digit 1
|
data->imsi.u.num.digit4, // MNC digit 1
|
||||||
data->imsi.u.num.digit5, // MNC digit 2
|
data->imsi.u.num.digit5, // MNC digit 2
|
||||||
data->imsi.u.num.digit6, // MNC digit 3
|
data->imsi.u.num.digit6, // MNC digit 3
|
||||||
data->imsi.u.num.digit7,
|
data->imsi.u.num.digit7, data->imsi.u.num.digit8,
|
||||||
data->imsi.u.num.digit8,
|
data->imsi.u.num.digit9, data->imsi.u.num.digit10);
|
||||||
data->imsi.u.num.digit9,
|
|
||||||
data->imsi.u.num.digit10);
|
|
||||||
if (digits >= 11)
|
if (digits >= 11)
|
||||||
printf("%x", data->imsi.u.num.digit11);
|
printf("%x", data->imsi.u.num.digit11);
|
||||||
if (digits >= 12)
|
if (digits >= 12)
|
||||||
@@ -507,55 +512,56 @@ static void _display_usim_data(const usim_data_t* data)
|
|||||||
data->securityctx.algorithmID.value[0]);
|
data->securityctx.algorithmID.value[0]);
|
||||||
|
|
||||||
printf("MSISDN\t= %u%u%u %u%u%u%u %u%u%u%u\n\n",
|
printf("MSISDN\t= %u%u%u %u%u%u%u %u%u%u%u\n\n",
|
||||||
data->msisdn.number.digit[0].msb,
|
data->msisdn.number.digit[0].msb, data->msisdn.number.digit[0].lsb,
|
||||||
data->msisdn.number.digit[0].lsb,
|
data->msisdn.number.digit[1].msb, data->msisdn.number.digit[1].lsb,
|
||||||
data->msisdn.number.digit[1].msb,
|
data->msisdn.number.digit[2].msb, data->msisdn.number.digit[2].lsb,
|
||||||
data->msisdn.number.digit[1].lsb,
|
data->msisdn.number.digit[3].msb, data->msisdn.number.digit[3].lsb,
|
||||||
data->msisdn.number.digit[2].msb,
|
data->msisdn.number.digit[4].msb, data->msisdn.number.digit[4].lsb,
|
||||||
data->msisdn.number.digit[2].lsb,
|
|
||||||
data->msisdn.number.digit[3].msb,
|
|
||||||
data->msisdn.number.digit[3].lsb,
|
|
||||||
data->msisdn.number.digit[4].msb,
|
|
||||||
data->msisdn.number.digit[4].lsb,
|
|
||||||
data->msisdn.number.digit[5].msb);
|
data->msisdn.number.digit[5].msb);
|
||||||
|
|
||||||
for (int i = 0; i < USIM_PNN_MAX; i++) {
|
for (i = 0; i < USIM_PNN_MAX; i++) {
|
||||||
printf("PNN[%d]\t= {%s, %s}\n", i,
|
printf("PNN[%d]\t= {%s, %s}\n", i, data->pnn[i].fullname.value,
|
||||||
data->pnn[i].fullname.value, data->pnn[i].shortname.value);
|
data->pnn[i].shortname.value);
|
||||||
}
|
}
|
||||||
printf("\n");
|
printf("\n");
|
||||||
|
|
||||||
for (int i = 0; i < USIM_OPL_MAX; i++) {
|
for (i = 0; i < USIM_OPL_MAX; i++) {
|
||||||
printf("OPL[%d]\t= ", i); PRINT_PLMN(data->opl[i].plmn);
|
printf("OPL[%d]\t= ", i);
|
||||||
printf(", TAC = [%.4x - %.4x], record_id = %d\n",
|
PRINT_PLMN(data->opl[i].plmn);
|
||||||
data->opl[i].start, data->opl[i].end, data->opl[i].record_id);
|
printf(", TAC = [%.4x - %.4x], record_id = %d\n", data->opl[i].start,
|
||||||
|
data->opl[i].end, data->opl[i].record_id);
|
||||||
}
|
}
|
||||||
printf("\n");
|
printf("\n");
|
||||||
|
|
||||||
printf("HPLMN\t\t= "); PRINT_PLMN(data->hplmn.plmn);
|
printf("HPLMN\t\t= ");
|
||||||
|
PRINT_PLMN(data->hplmn.plmn);
|
||||||
printf(", AcT = 0x%x\n\n", data->hplmn.AcT);
|
printf(", AcT = 0x%x\n\n", data->hplmn.AcT);
|
||||||
|
|
||||||
for (int i = 0; i < USIM_FPLMN_MAX; i++) {
|
for (i = 0; i < USIM_FPLMN_MAX; i++) {
|
||||||
printf("FPLMN[%d]\t= ", i); PRINT_PLMN(data->fplmn[i]);
|
printf("FPLMN[%d]\t= ", i);
|
||||||
|
PRINT_PLMN(data->fplmn[i]);
|
||||||
printf("\n");
|
printf("\n");
|
||||||
}
|
}
|
||||||
printf("\n");
|
printf("\n");
|
||||||
|
|
||||||
for (int i = 0; i < USIM_EHPLMN_MAX; i++) {
|
for (i = 0; i < USIM_EHPLMN_MAX; i++) {
|
||||||
printf("EHPLMN[%d]\t= ", i); PRINT_PLMN(data->ehplmn[i]);
|
printf("EHPLMN[%d]\t= ", i);
|
||||||
|
PRINT_PLMN(data->ehplmn[i]);
|
||||||
printf("\n");
|
printf("\n");
|
||||||
}
|
}
|
||||||
printf("\n");
|
printf("\n");
|
||||||
|
|
||||||
for (int i = 0; i < USIM_PLMN_MAX; i++) {
|
for (i = 0; i < USIM_PLMN_MAX; i++) {
|
||||||
printf("PLMN[%d]\t\t= ", i); PRINT_PLMN(data->plmn[i].plmn);
|
printf("PLMN[%d]\t\t= ", i);
|
||||||
|
PRINT_PLMN(data->plmn[i].plmn);
|
||||||
printf(", AcTPLMN = 0x%x", data->plmn[i].AcT);
|
printf(", AcTPLMN = 0x%x", data->plmn[i].AcT);
|
||||||
printf("\n");
|
printf("\n");
|
||||||
}
|
}
|
||||||
printf("\n");
|
printf("\n");
|
||||||
|
|
||||||
for (int i = 0; i < USIM_OPLMN_MAX; i++) {
|
for (i = 0; i < USIM_OPLMN_MAX; i++) {
|
||||||
printf("OPLMN[%d]\t= ", i); PRINT_PLMN(data->oplmn[i].plmn);
|
printf("OPLMN[%d]\t= ", i);
|
||||||
|
PRINT_PLMN(data->oplmn[i].plmn);
|
||||||
printf(", AcTPLMN = 0x%x", data->oplmn[i].AcT);
|
printf(", AcTPLMN = 0x%x", data->oplmn[i].AcT);
|
||||||
printf("\n");
|
printf("\n");
|
||||||
}
|
}
|
||||||
@@ -565,19 +571,19 @@ static void _display_usim_data(const usim_data_t* data)
|
|||||||
|
|
||||||
printf("LOCI:\n");
|
printf("LOCI:\n");
|
||||||
printf("\tTMSI = 0x%.4x\n", data->loci.tmsi);
|
printf("\tTMSI = 0x%.4x\n", data->loci.tmsi);
|
||||||
printf("\tLAI\t: PLMN = "); PRINT_PLMN(data->loci.lai.plmn);
|
printf("\tLAI\t: PLMN = ");
|
||||||
|
PRINT_PLMN(data->loci.lai.plmn);
|
||||||
printf(", LAC = 0x%.2x\n", data->loci.lai.lac);
|
printf(", LAC = 0x%.2x\n", data->loci.lai.lac);
|
||||||
printf("\tstatus\t= %d\n\n", data->loci.status);
|
printf("\tstatus\t= %d\n\n", data->loci.status);
|
||||||
|
|
||||||
printf("PSLOCI:\n");
|
printf("PSLOCI:\n");
|
||||||
printf("\tP-TMSI = 0x%.4x\n", data->psloci.p_tmsi);
|
printf("\tP-TMSI = 0x%.4x\n", data->psloci.p_tmsi);
|
||||||
printf("\tsignature = 0x%x 0x%x 0x%x\n",
|
printf("\tsignature = 0x%x 0x%x 0x%x\n", data->psloci.signature[0],
|
||||||
data->psloci.signature[0],
|
data->psloci.signature[1], data->psloci.signature[2]);
|
||||||
data->psloci.signature[1],
|
printf("\tRAI\t: PLMN = ");
|
||||||
data->psloci.signature[2]);
|
PRINT_PLMN(data->psloci.rai.plmn);
|
||||||
printf("\tRAI\t: PLMN = "); PRINT_PLMN(data->psloci.rai.plmn);
|
printf(", LAC = 0x%.2x, RAC = 0x%.1x\n", data->psloci.rai.lac,
|
||||||
printf(", LAC = 0x%.2x, RAC = 0x%.1x\n",
|
data->psloci.rai.rac);
|
||||||
data->psloci.rai.lac, data->psloci.rai.rac);
|
|
||||||
printf("\tstatus\t= %d\n\n", data->psloci.status);
|
printf("\tstatus\t= %d\n\n", data->psloci.status);
|
||||||
|
|
||||||
printf("EPSLOCI:\n");
|
printf("EPSLOCI:\n");
|
||||||
@@ -589,8 +595,7 @@ static void _display_usim_data(const usim_data_t* data)
|
|||||||
printf(", M-TMSI = 0x%.4x\n", data->epsloci.guti.m_tmsi);
|
printf(", M-TMSI = 0x%.4x\n", data->epsloci.guti.m_tmsi);
|
||||||
printf("\tTAI\t: PLMN = ");
|
printf("\tTAI\t: PLMN = ");
|
||||||
PRINT_PLMN(data->epsloci.tai.plmn);
|
PRINT_PLMN(data->epsloci.tai.plmn);
|
||||||
printf(", TAC = 0x%.2x\n",
|
printf(", TAC = 0x%.2x\n", data->epsloci.tai.tac);
|
||||||
data->epsloci.tai.tac);
|
|
||||||
printf("\tstatus\t= %d\n\n", data->epsloci.status);
|
printf("\tstatus\t= %d\n\n", data->epsloci.status);
|
||||||
|
|
||||||
printf("NASCONFIG:\n");
|
printf("NASCONFIG:\n");
|
||||||
|
|||||||
@@ -28,6 +28,7 @@
|
|||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
#include <unistd.h>
|
||||||
#include <gmp.h>
|
#include <gmp.h>
|
||||||
|
|
||||||
#ifndef AUC_H_
|
#ifndef AUC_H_
|
||||||
|
|||||||
@@ -70,11 +70,21 @@
|
|||||||
#define MAX_NUM_CHANNEL_BITS (14*1200*6) // 14 symbols, 1200 REs, 12 bits/RE
|
#define MAX_NUM_CHANNEL_BITS (14*1200*6) // 14 symbols, 1200 REs, 12 bits/RE
|
||||||
#define MAX_NUM_RE (14*1200)
|
#define MAX_NUM_RE (14*1200)
|
||||||
|
|
||||||
|
#if !defined(SI_RNTI)
|
||||||
#define SI_RNTI (rnti_t)0xffff
|
#define SI_RNTI (rnti_t)0xffff
|
||||||
|
#endif
|
||||||
|
#if !defined(M_RNTI)
|
||||||
#define M_RNTI (rnti_t)0xfffd
|
#define M_RNTI (rnti_t)0xfffd
|
||||||
|
#endif
|
||||||
|
#if !defined(P_RNTI)
|
||||||
#define P_RNTI (rnti_t)0xfffe
|
#define P_RNTI (rnti_t)0xfffe
|
||||||
|
#endif
|
||||||
|
#if !defined(CBA_RNTI)
|
||||||
#define CBA_RNTI (rnti_t)0xfff4
|
#define CBA_RNTI (rnti_t)0xfff4
|
||||||
|
#endif
|
||||||
|
#if !defined(C_RNTI)
|
||||||
#define C_RNTI (rnti_t)0x1234
|
#define C_RNTI (rnti_t)0x1234
|
||||||
|
#endif
|
||||||
|
|
||||||
#define PMI_2A_11 0
|
#define PMI_2A_11 0
|
||||||
#define PMI_2A_1m1 1
|
#define PMI_2A_1m1 1
|
||||||
|
|||||||
@@ -159,7 +159,6 @@ int setup_ue_buffers(PHY_VARS_UE **phy_vars_ue, openair0_config_t *openair0_cfg,
|
|||||||
int setup_eNB_buffers(PHY_VARS_eNB **phy_vars_eNB, openair0_config_t *openair0_cfg, openair0_rf_map rf_map[MAX_NUM_CCs]);
|
int setup_eNB_buffers(PHY_VARS_eNB **phy_vars_eNB, openair0_config_t *openair0_cfg, openair0_rf_map rf_map[MAX_NUM_CCs]);
|
||||||
|
|
||||||
void fill_ue_band_info(void);
|
void fill_ue_band_info(void);
|
||||||
|
|
||||||
#ifdef XFORMS
|
#ifdef XFORMS
|
||||||
// current status is that every UE has a DL scope for a SINGLE eNB (eNB_id=0)
|
// current status is that every UE has a DL scope for a SINGLE eNB (eNB_id=0)
|
||||||
// at eNB 0, an UL scope for every UE
|
// at eNB 0, an UL scope for every UE
|
||||||
@@ -250,6 +249,7 @@ static uint32_t downlink_frequency[MAX_NUM_CCs][4];/* = {{19
|
|||||||
{1907600000,1907600000,1907600000,1907600000}};*/
|
{1907600000,1907600000,1907600000,1907600000}};*/
|
||||||
static int32_t uplink_frequency_offset[MAX_NUM_CCs][4]; /*= {{0,0,0,0},{0,0,0,0}};
|
static int32_t uplink_frequency_offset[MAX_NUM_CCs][4]; /*= {{0,0,0,0},{0,0,0,0}};
|
||||||
*/
|
*/
|
||||||
|
|
||||||
openair0_rf_map rf_map[MAX_NUM_CCs];
|
openair0_rf_map rf_map[MAX_NUM_CCs];
|
||||||
|
|
||||||
static char *conf_config_file_name = NULL;
|
static char *conf_config_file_name = NULL;
|
||||||
@@ -464,7 +464,6 @@ static const eutra_band_t eutra_bands[] =
|
|||||||
{43, 3600 * MHz, 3800 * MHz, 3600 * MHz, 3800 * MHz, TDD},
|
{43, 3600 * MHz, 3800 * MHz, 3600 * MHz, 3800 * MHz, TDD},
|
||||||
{44, 703 * MHz, 803 * MHz, 703 * MHz, 803 * MHz, TDD},
|
{44, 703 * MHz, 803 * MHz, 703 * MHz, 803 * MHz, TDD},
|
||||||
};
|
};
|
||||||
|
|
||||||
unsigned int build_rflocal(int txi, int txq, int rxi, int rxq)
|
unsigned int build_rflocal(int txi, int txq, int rxi, int rxq)
|
||||||
{
|
{
|
||||||
return (txi + (txq<<6) + (rxi<<12) + (rxq<<18));
|
return (txi + (txq<<6) + (rxi<<12) + (rxq<<18));
|
||||||
@@ -1476,6 +1475,7 @@ static void *eNB_thread(void *arg)
|
|||||||
attr.sched_deadline = 0.5 * 1000000;
|
attr.sched_deadline = 0.5 * 1000000;
|
||||||
attr.sched_period = 1.0 * 1000000;
|
attr.sched_period = 1.0 * 1000000;
|
||||||
|
|
||||||
|
|
||||||
/* pin the eNB main thread to CPU0*/
|
/* pin the eNB main thread to CPU0*/
|
||||||
/* if (pthread_setaffinity_np(pthread_self(), sizeof(mask),&mask) <0) {
|
/* if (pthread_setaffinity_np(pthread_self(), sizeof(mask),&mask) <0) {
|
||||||
perror("[MAIN_ENB_THREAD] pthread_setaffinity_np failed\n");
|
perror("[MAIN_ENB_THREAD] pthread_setaffinity_np failed\n");
|
||||||
@@ -1875,7 +1875,6 @@ static void *UE_thread_synch(void *arg) {
|
|||||||
LOG_D(PHY,"[SCHED][UE] Check absolute frequency %u\n",downlink_frequency[0][0]);
|
LOG_D(PHY,"[SCHED][UE] Check absolute frequency %u\n",downlink_frequency[0][0]);
|
||||||
sync_mode=pbch;
|
sync_mode=pbch;
|
||||||
}
|
}
|
||||||
|
|
||||||
while (!oai_exit) {
|
while (!oai_exit) {
|
||||||
|
|
||||||
if (pthread_mutex_lock(&UE->mutex_synch) != 0) {
|
if (pthread_mutex_lock(&UE->mutex_synch) != 0) {
|
||||||
@@ -1892,7 +1891,6 @@ static void *UE_thread_synch(void *arg) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
} // mutex_lock
|
} // mutex_lock
|
||||||
|
|
||||||
vcd_signal_dumper_dump_function_by_name(VCD_SIGNAL_DUMPER_FUNCTIONS_UE_SYNCH,1);
|
vcd_signal_dumper_dump_function_by_name(VCD_SIGNAL_DUMPER_FUNCTIONS_UE_SYNCH,1);
|
||||||
|
|
||||||
switch (sync_mode) {
|
switch (sync_mode) {
|
||||||
@@ -1995,6 +1993,7 @@ static void *UE_thread_synch(void *arg) {
|
|||||||
// rt_sleep_ns(FRAME_PERIOD);
|
// rt_sleep_ns(FRAME_PERIOD);
|
||||||
} // freq_offset
|
} // freq_offset
|
||||||
} // initial_sync=0
|
} // initial_sync=0
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case si:
|
case si:
|
||||||
default:
|
default:
|
||||||
@@ -2012,6 +2011,7 @@ static void *UE_thread_synch(void *arg) {
|
|||||||
printf("[openair][SCHED][eNB] error unlocking mutex for UE synch\n");
|
printf("[openair][SCHED][eNB] error unlocking mutex for UE synch\n");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
vcd_signal_dumper_dump_function_by_name(VCD_SIGNAL_DUMPER_FUNCTIONS_UE_SYNCH,0);
|
vcd_signal_dumper_dump_function_by_name(VCD_SIGNAL_DUMPER_FUNCTIONS_UE_SYNCH,0);
|
||||||
} // while !oai_exit
|
} // while !oai_exit
|
||||||
return(0);
|
return(0);
|
||||||
@@ -2497,7 +2497,6 @@ static void *UE_thread(void *arg) {
|
|||||||
//LOG_D(PHY,"HW RESYNC: hw_frame %d: Resynchronizing sample stream\n");
|
//LOG_D(PHY,"HW RESYNC: hw_frame %d: Resynchronizing sample stream\n");
|
||||||
frame=0;
|
frame=0;
|
||||||
// dump ahead in time to start of frame
|
// dump ahead in time to start of frame
|
||||||
|
|
||||||
#ifndef USRP_DEBUG
|
#ifndef USRP_DEBUG
|
||||||
rxs = openair0.trx_read_func(&openair0,
|
rxs = openair0.trx_read_func(&openair0,
|
||||||
×tamp,
|
×tamp,
|
||||||
@@ -2941,7 +2940,6 @@ void init_UE_threads(void) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void fill_ue_band_info() {
|
void fill_ue_band_info() {
|
||||||
|
|
||||||
UE_EUTRA_Capability_t *UE_EUTRA_Capability = UE_rrc_inst[0].UECap->UE_EUTRA_Capability;
|
UE_EUTRA_Capability_t *UE_EUTRA_Capability = UE_rrc_inst[0].UECap->UE_EUTRA_Capability;
|
||||||
@@ -2969,7 +2967,6 @@ void fill_ue_band_info() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void get_options (int argc, char **argv) {
|
static void get_options (int argc, char **argv) {
|
||||||
int c;
|
int c;
|
||||||
// char line[1000];
|
// char line[1000];
|
||||||
@@ -2988,7 +2985,6 @@ static void get_options (int argc, char **argv) {
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
const Enb_properties_array_t *enb_properties;
|
const Enb_properties_array_t *enb_properties;
|
||||||
|
|
||||||
enum long_option_e {
|
enum long_option_e {
|
||||||
@@ -3334,7 +3330,6 @@ int main(int argc, char **argv) {
|
|||||||
memset(&openair0_cfg[0],0,sizeof(openair0_config_t)*MAX_CARDS);
|
memset(&openair0_cfg[0],0,sizeof(openair0_config_t)*MAX_CARDS);
|
||||||
|
|
||||||
memset(tx_max_power,0,sizeof(int)*MAX_NUM_CCs);
|
memset(tx_max_power,0,sizeof(int)*MAX_NUM_CCs);
|
||||||
|
|
||||||
set_latency_target();
|
set_latency_target();
|
||||||
|
|
||||||
mode = normal_txrx;
|
mode = normal_txrx;
|
||||||
@@ -3799,7 +3794,6 @@ int main(int argc, char **argv) {
|
|||||||
}
|
}
|
||||||
printf("ITTI tasks created\n");
|
printf("ITTI tasks created\n");
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
printf("Filling UE band info\n");
|
printf("Filling UE band info\n");
|
||||||
if (UE_flag==1)
|
if (UE_flag==1)
|
||||||
fill_ue_band_info();
|
fill_ue_band_info();
|
||||||
|
|||||||
@@ -846,6 +846,29 @@ compile_unisim() {
|
|||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compile_nas_tools() {
|
||||||
|
|
||||||
|
export NVRAM_DIR=$OPENAIR_TARGETS/bin
|
||||||
|
|
||||||
|
cd $NVRAM_DIR
|
||||||
|
|
||||||
|
if [ ! -f /tmp/nas_cleaned ]; then
|
||||||
|
echo_success "make --directory=$OPENAIRCN_DIR/NAS/EURECOM-NAS/tools veryveryclean"
|
||||||
|
make --directory=$OPENAIRCN_DIR/NAS/EURECOM-NAS/tools veryveryclean
|
||||||
|
fi
|
||||||
|
echo_success "make --directory=$OPENAIRCN_DIR/NAS/EURECOM-NAS/tools all"
|
||||||
|
make --directory=$OPENAIRCN_DIR/NAS/EURECOM-NAS/tools all
|
||||||
|
rm .ue.nvram
|
||||||
|
rm .usim.nvram
|
||||||
|
touch /tmp/nas_cleaned
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
compile_ue_ip_nw_driver() {
|
||||||
|
cd $OPENAIR2_DIR && make ue_ip.ko
|
||||||
|
}
|
||||||
|
|
||||||
################################################
|
################################################
|
||||||
# 1. check if the executable functions exist
|
# 1. check if the executable functions exist
|
||||||
###############################################
|
###############################################
|
||||||
@@ -935,10 +958,20 @@ check_for_mbmssim_executable() {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
check_for_nas_ue_executable() {
|
||||||
|
if [ ! -f $OPENAIRCN_DIR/NAS/EURECOM-NAS/bin/UserProcess ]; then
|
||||||
|
echo_error "Cannot find UserProcess executable object in directory $OPENAIRCN_DIR/NAS/EURECOM-NAS/bin"
|
||||||
|
echo_fatal "Check the compilation logs in bin/install_log.txt"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
################################################
|
################################################
|
||||||
# 1. check if the executable functions exist
|
# 1. check if the executable functions exist
|
||||||
###############################################
|
###############################################
|
||||||
|
|
||||||
|
# arg1 is RT
|
||||||
|
# arg2 is HW
|
||||||
|
# arg3 is ENB_S1
|
||||||
install_ltesoftmodem() {
|
install_ltesoftmodem() {
|
||||||
# RT
|
# RT
|
||||||
if [ $1 = "RTAI" ]; then
|
if [ $1 = "RTAI" ]; then
|
||||||
@@ -986,14 +1019,34 @@ install_ltesoftmodem() {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# arg1 is ENB_S1 'boolean'
|
||||||
install_oaisim() {
|
install_oaisim() {
|
||||||
if [ $1 = 0 ]; then
|
if [ $1 = 0 ]; then
|
||||||
cd $OPENAIR2_DIR && make clean && make nasmesh_netlink.ko #|| exit 1
|
cd $OPENAIR2_DIR && make clean && make nasmesh_netlink.ko #|| exit 1
|
||||||
cd $OPENAIR2_DIR/NAS/DRIVER/MESH/RB_TOOL && make clean && make # || exit 1
|
cd $OPENAIR2_DIR/NAS/DRIVER/MESH/RB_TOOL && make clean && make # || exit 1
|
||||||
|
else
|
||||||
|
compile_ue_ip_nw_driver
|
||||||
|
install_nas_tools
|
||||||
fi
|
fi
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
install_nas_tools() {
|
||||||
|
cd $OPENAIR_TARGETS/bin
|
||||||
|
if [ ! -f .ue.nvram ]; then
|
||||||
|
echo_success "generate .ue_emm.nvram .ue.nvram"
|
||||||
|
$OPENAIRCN_DIR/NAS/EURECOM-NAS/bin/ue_data --gen
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -f .usim.nvram ]; then
|
||||||
|
echo_success "generate .usim.nvram"
|
||||||
|
$OPENAIRCN_DIR/NAS/EURECOM-NAS/bin/usim_data --gen
|
||||||
|
fi
|
||||||
|
$OPENAIRCN_DIR/NAS/EURECOM-NAS/bin/ue_data --print
|
||||||
|
$OPENAIRCN_DIR/NAS/EURECOM-NAS/bin/usim_data --print
|
||||||
|
}
|
||||||
|
|
||||||
##################################
|
##################################
|
||||||
# create HSS DB
|
# create HSS DB
|
||||||
################################
|
################################
|
||||||
|
|||||||
@@ -473,6 +473,12 @@ build_enb(){
|
|||||||
check_for_oaisim_executable
|
check_for_oaisim_executable
|
||||||
echo_info "7.2 finished oaisim target: check the installation log file bin/install_log.txt"
|
echo_info "7.2 finished oaisim target: check the installation log file bin/install_log.txt"
|
||||||
|
|
||||||
|
if [ $ENB_S1 -eq 1 ]; then
|
||||||
|
compile_nas_tools 2>&1
|
||||||
|
nas_tools_compiled=$?
|
||||||
|
check_for_nas_tools_executable
|
||||||
|
echo_info "7.2.1 finished nas ue target: check the installation log file bin/install_log.txt"
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
if [ $TARGET = "UNISIM" ]; then
|
if [ $TARGET = "UNISIM" ]; then
|
||||||
echo "################## compile_unisim ##################" >> bin/install_log.txt
|
echo "################## compile_unisim ##################" >> bin/install_log.txt
|
||||||
@@ -800,6 +806,39 @@ if [ $RUN -ne 0 ]; then
|
|||||||
$SUDO echo "run" >> ~/.gdb_lte_softmodem
|
$SUDO echo "run" >> ~/.gdb_lte_softmodem
|
||||||
$SUDO gdb -nh -x ~/.gdb_lte_softmodem 2>&1
|
$SUDO gdb -nh -x ~/.gdb_lte_softmodem 2>&1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
elif [ $TARGET == "OAISIM" ]; then
|
||||||
|
|
||||||
|
if [ $ENB_S1 -eq 0 ]; then
|
||||||
|
echo_error "TODO: LOAD NASMESH IP DRIVER FOR UE AND eNB"
|
||||||
|
else
|
||||||
|
# prepare NAS for UE
|
||||||
|
if [ ! -f .ue.nvram ]; then
|
||||||
|
echo_success "generate .ue_emm.nvram .ue.nvram"
|
||||||
|
$OPENAIRCN_DIR/NAS/EURECOM-NAS/bin/ue_data --gen
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -f .usim.nvram ]; then
|
||||||
|
echo_success "generate .usim.nvram"
|
||||||
|
$OPENAIRCN_DIR/NAS/EURECOM-NAS/bin/usim_data --gen
|
||||||
|
fi
|
||||||
|
$OPENAIRCN_DIR/NAS/EURECOM-NAS/bin/ue_data --print
|
||||||
|
$OPENAIRCN_DIR/NAS/EURECOM-NAS/bin/usim_data --print
|
||||||
|
|
||||||
|
insmod $OPENAIR2_DIR/NETWORK_DRIVER/UE_IP/ue_ip.ko
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ $RUN_GDB -eq 0 ]; then
|
||||||
|
$SUDO exec $OPENAIR_TARGETS/bin/oaisim `echo $EXE_ARGUMENTS`
|
||||||
|
else
|
||||||
|
$SUDO setenv MALLOC_CHECK_ 2
|
||||||
|
$SUDO touch ~/.gdb_oaisim
|
||||||
|
$SUDO echo "file $OPENAIR_TARGETS/bin/lte-oaisim" > ~/.gdb_oaisim
|
||||||
|
$SUDO echo "set args $EXE_ARGUMENTS" >> ~/.gdb_oaisim
|
||||||
|
$SUDO echo "run" >> ~/.gdb_oaisim
|
||||||
|
$SUDO gdb -nh -x ~/.gdb_oaisim 2>&1
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user