Added SPECTRA modifications for demo polishing and bug fixing (v1.13)
git-svn-id: http://svn.eurecom.fr/openair4G/trunk@5891 818b1a75-f10b-46b9-bf7c-635c3b92a50f
This commit is contained in:
@@ -7,7 +7,7 @@
|
||||
#
|
||||
# Rui Costa <ferreira@eurecom.fr>
|
||||
#
|
||||
# v1.12 (13 Oct 2014)
|
||||
# v1.13 (15 Oct 2014)
|
||||
#
|
||||
########################################
|
||||
|
||||
@@ -83,6 +83,14 @@
|
||||
2.3. CRM
|
||||
This component of the demo MUST be compiled and installed separately.
|
||||
Check <spectra_root_folder>/CRM/ for more details.
|
||||
There is a google app that must be running in the google cloud,
|
||||
and it's url configured in the source code. The local client is based
|
||||
on the C++ REST framework codenamed "Casablanca".
|
||||
Furthermore you need to compile the local client components
|
||||
(CRMClient and CRMMain).
|
||||
In the CRM client you will find a folder <tosend> which includes some
|
||||
basic scripts that populate the google app database, and show how to
|
||||
interact with it.
|
||||
|
||||
2.4. TVWS Sensing Measurements
|
||||
There is a server and client for simulating the TVWS measurements and
|
||||
@@ -180,7 +188,7 @@
|
||||
|
||||
|
||||
|
||||
########################################
|
||||
################################################################################
|
||||
CHANGELOG
|
||||
|
||||
v0.99 (03/09/2014)
|
||||
@@ -248,4 +256,15 @@ v1.12 (13/10/2014)
|
||||
- Added final version to openair svn
|
||||
- Reworked README file.
|
||||
|
||||
v1.13 (15/10/2014)
|
||||
- Polishing of the demo
|
||||
- Added bug fixes on launch scripts for enb1
|
||||
- Added feature to put measurements on CRM from enb1
|
||||
- Changed readable output of received measurement reports on enb2
|
||||
- Added more informative output on the sensingClient (TVWS)
|
||||
- Demonstration now stops at end of MIH_Link_Actions.confirm
|
||||
message on MIH_User of enb2
|
||||
- Added info on sensing client and CRM
|
||||
- Reworked README file.
|
||||
|
||||
################################################################################ EOF
|
||||
|
||||
Binary file not shown.
+9
-8
@@ -109,10 +109,10 @@ void *connection_handler(int fd) {
|
||||
|
||||
/* now loop, receiving data and printing what we received */
|
||||
for (;;) {
|
||||
printf("---\n Waiting on port %d\n", PORT);
|
||||
printf("\n[SPECTRA Sensing Module] Started!\n[SPECTRA Sensing Module] ---\n[SPECTRA Sensing Module] Waiting on port %d\n", PORT);
|
||||
recvlen = recvfrom(fd, rawPacket, MAX_PACKET_SIZE, 0,
|
||||
(struct sockaddr *) &remaddr, &addrlen);
|
||||
printf("Received %d bytes > ", recvlen);
|
||||
printf("\n[SPECTRA Sensing Module] Received Data (%d bytes) > ", recvlen);
|
||||
|
||||
for (i=0; i<recvlen;i++){
|
||||
printf("%x ", (rawPacket[i] & 0xff));
|
||||
@@ -126,7 +126,7 @@ void *connection_handler(int fd) {
|
||||
} else {
|
||||
|
||||
request = assembleMessage(&rawPacket);
|
||||
printf(" > Received spectra packet %i of type %i for function %i with %i parameters\n",
|
||||
printf("\n[SPECTRA Sensing Module] > Received spectra packet %i of type %i for function %i with %i parameters\n",
|
||||
request.messageID,
|
||||
(uint32_t) request.type, (uint32_t) request.function,
|
||||
(uint32_t) request.numberOfparameters);
|
||||
@@ -135,7 +135,7 @@ void *connection_handler(int fd) {
|
||||
if (request.type == EndProcessing) {
|
||||
|
||||
returnMessage = createReturnPacket(&request, 0, EndProcessing);
|
||||
printf("End processing!!!\n");
|
||||
printf("\n[SPECTRA Sensing Module] Received: End of cognitive algorithm processing!\n");
|
||||
fflush(stdout);
|
||||
} else {
|
||||
if (request.function == EnergyDetection) {
|
||||
@@ -143,11 +143,11 @@ void *connection_handler(int fd) {
|
||||
// circular loop over the score list
|
||||
scoreIndex = (scoreIndex < (sizeof(scoresList)/ sizeof(scoresList[0]))) ?
|
||||
scoreIndex : 0;
|
||||
|
||||
printf("Score value: %16llx (%lld)\n",
|
||||
printf("\n[SPECTRA Sensing Module] Received: Energy Detection Request!\n");
|
||||
printf("\n[SPECTRA Sensing Module] Processing Score value: %16llx (%lld)\n",
|
||||
(long long int)scoresList[scoreIndex],
|
||||
(long long int)scoresList[scoreIndex]);
|
||||
printf("Score host to network value: 0x%016llx (%lld)\n",
|
||||
printf("\n[SPECTRA Sensing Module] Processing Score host to network value: 0x%016llx (%lld)\n",
|
||||
(long long int)htonll(scoresList[scoreIndex]),
|
||||
(long long int)htonll(scoresList[scoreIndex]));
|
||||
|
||||
@@ -157,6 +157,7 @@ void *connection_handler(int fd) {
|
||||
}
|
||||
|
||||
// Sends the answer
|
||||
printf("\n[SPECTRA Sensing Module] Sending: Reply Message!\n");
|
||||
int retError = returnSpectraPacket(returnMessage, fd, remaddr);
|
||||
if (retError == -1) {
|
||||
perror("Send failed!!!\n");
|
||||
@@ -203,7 +204,7 @@ int socketBind() {
|
||||
perror("bind failed");
|
||||
return 0;
|
||||
}
|
||||
puts("bind done");
|
||||
puts("\n[SPECTRA Sensing Module] Initialization done");
|
||||
return fd;
|
||||
}
|
||||
|
||||
|
||||
+21
-3
@@ -1395,18 +1395,36 @@ void mih_user::receive_MIH_Link_Parameters_Report(odtone::mih::message& msg, con
|
||||
log_(0, "[MSC_MSG]["+getTimeStamp4Log()+"]["+ msg.source().to_string() +"][--- MIH_Link_Parameters_Report.indication --->]["+msg.destination().to_string()+"]\n");
|
||||
log_(0, " - LINK_TUPLE_ID - Link identifier: ", link_id2string(link).c_str());
|
||||
std::cout<<"LINK_TUPLE_ID - Link identifier: "<<link<<std::endl;
|
||||
|
||||
|
||||
for (odtone::mih::link_param_rpt_list::iterator i=lprl.begin(); i!=lprl.end(); i++)
|
||||
{
|
||||
log_(0, "Meausrement Type: --- 0 => RSRP ----- 1=>RSRQ ---- 2=>CQI ", i->param.type);
|
||||
if(odtone::mih::link_param_val *value = boost::get<odtone::mih::link_param_val>(&i->param.value))
|
||||
{
|
||||
log_(0, "Meausrement Value: ", (short) *value );
|
||||
// ferreira: Upload of measurements to gae-spectra.com
|
||||
// FIXME This will not work for: more than 3 types of measurements OR out of sequence types of measurements
|
||||
std::string crmc_cmd_str;
|
||||
std::stringstream crmc_ss;
|
||||
std::string result;
|
||||
if (count % 10 == 0) // All measures at CRM are outdated! do server cleanup!
|
||||
result = exec ("./CRMClient DEL 2");
|
||||
if (count % 3 == 0) // Add 1st measurement (RSRP)
|
||||
crmc_ss << "./CRMClient PUT 2 meas_no." << count << " " << msg.source().to_string() << "_" << link_id2string(link).c_str() << " RSRP dB " << (short) *value << " 3" ;
|
||||
if (count % 3 == 1) // Add 2nd measurement (RSRQ)
|
||||
crmc_ss << "./CRMClient PUT 2 meas_no." << count << " " << msg.source().to_string() << "_" << link_id2string(link).c_str() << " RSRQ dB " << (short) *value << " 3" ;
|
||||
if (count % 3 == 2) // Add 3rd measurement (CQI)
|
||||
crmc_ss << "./CRMClient PUT 2 meas_no." << count << " " << msg.source().to_string() << "_" << link_id2string(link).c_str() << " CQI - " << (short) *value << " 3" ;
|
||||
crmc_cmd_str = crmc_ss.str();
|
||||
const char* crmc_cmd_cstr = crmc_cmd_str.c_str();
|
||||
char* crmc_cmd_char = new char [strlen(crmc_cmd_cstr)+1];
|
||||
strcpy(crmc_cmd_char, crmc_cmd_cstr);
|
||||
result = exec (crmc_cmd_char);
|
||||
delete [] crmc_cmd_char;
|
||||
}
|
||||
}
|
||||
log_(0, "MIH_Link_Parameters_Report.indication - End");
|
||||
|
||||
|
||||
|
||||
//eNB1: Forward the message to UE 2
|
||||
forward_Parameters_Report_indication(msg);
|
||||
|
||||
|
||||
@@ -68,8 +68,8 @@ source $THIS_SCRIPT_PATH/env_802dot21.bash
|
||||
###########################################################
|
||||
bash_exec "ifconfig $EMULATION_DEV_INTERFACE up $EMULATION_DEV_ADDRESS netmask 255.255.255.0"
|
||||
bash_exec "ifconfig eth2 up 192.168.14.3 netmask 255.255.255.0"
|
||||
#bash_exec "ip r d default dev eth0"
|
||||
#bash_exec "ip r a default via 192.168.14.4 dev eth2"
|
||||
bash_exec "ip r d default via 192.168.14.4 dev eth2"
|
||||
bash_exec "ip r a default via 192.168.12.100 dev eth0"
|
||||
###########################################################
|
||||
IPTABLES=/sbin/iptables
|
||||
THIS_SCRIPT_PATH=$(dirname $(readlink -f $0))
|
||||
|
||||
+54
-24
@@ -1372,13 +1372,15 @@ void mih_user::receive_MIH_Link_Actions_confirm(odtone::mih::message& msg)
|
||||
// #endif // SCENARIO_2
|
||||
|
||||
log_(0, "MIH_Link_Actions.confirm - End\n");
|
||||
// ferreira: Added sleep time + exit + output to make visible the end of SPECTRA demo
|
||||
if( second_link_activated == 1 )
|
||||
{
|
||||
unsigned int pause_time = 30; // in seconds to show the result of the demo then proceed
|
||||
log_(0, "\n\n\n\n\t----- Confirmed Configuration of LTE Link for TVWS -----\n");
|
||||
log_(0, "\n\t----- END OF SPECTRA DEMO ! -----\n");
|
||||
log_(0, "\n\n MIH User regular function will resume in (secs) : ", pause_time );
|
||||
usleep(pause_time * 1000000);
|
||||
// log_(0, "\n\n MIH User regular function will resume in (secs) : ", pause_time );
|
||||
// usleep(pause_time * 1000000);
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1422,20 +1424,34 @@ void mih_user::receive_MIH_MN_HO_Candidate_Query_request(odtone::mih::message& m
|
||||
& odtone::mih::tlv_link_identifier(link)
|
||||
& odtone::mih::tlv_link_param_rpt_list(lprl);
|
||||
|
||||
log_(0, "MIH_MN_HO_Candidate_Query.request - RECEIVED - Begin");
|
||||
log_(0, "\t- LINK CFG STATUS LIST - Length: ", lprl.size());
|
||||
log_(0, "[MSC_MSG]["+getTimeStamp4Log()+"]["+ msg.source().to_string() +"][--- MIH_Link_Parameters_Report.indication --->]["+msg.destination().to_string()+"]\n");
|
||||
log_(0, " - LINK_TUPLE_ID - Link identifier: ", link_id2string(link).c_str());
|
||||
// log_(0, "MIH_MN_HO_Candidate_Query.request - RECEIVED - Begin");
|
||||
// log_(0, "\t- LINK CFG STATUS LIST - Length: ", lprl.size());
|
||||
// log_(0, "[MSC_MSG]["+getTimeStamp4Log()+"]["+ msg.source().to_string() +"][--- MIH_Link_Parameters_Report.indication --->]["+msg.destination().to_string()+"]\n");
|
||||
// log_(0, " - LINK_TUPLE_ID - Link identifier: ", link_id2string(link).c_str());
|
||||
//
|
||||
// for (odtone::mih::link_param_rpt_list::iterator i=lprl.begin(); i!=lprl.end(); i++)
|
||||
// {
|
||||
// log_(0, "Meausrement Type: --- 0 => RSRP ----- 1=>RSRQ ---- 2=>CQI ", i->param.type);
|
||||
// if(odtone::mih::link_param_val *value = boost::get<odtone::mih::link_param_val>(&i->param.value))
|
||||
// {
|
||||
// log_(0, "Meausrement Value: ", (short) *value );
|
||||
// }
|
||||
// }
|
||||
|
||||
|
||||
// ferreira: changed output of message for better readability!
|
||||
log_(0, "\n["+getTimeStamp4Log()+"] [RX] [FROM: "+ msg.source().to_string() +"] [Link ID: "+ link_id2string(link).c_str() +"]");
|
||||
log_(0, "\t[MIH_MN_HO_Candidate_Query [MIH_Link_Parameters_Report]]");
|
||||
|
||||
for (odtone::mih::link_param_rpt_list::iterator i=lprl.begin(); i!=lprl.end(); i++)
|
||||
for (odtone::mih::link_param_rpt_list::iterator i=lprl.begin(); i!=lprl.end(); i++)
|
||||
{
|
||||
log_(0, "Meausrement Type: --- 0 => RSRP ----- 1=>RSRQ ---- 2=>CQI ", i->param.type);
|
||||
if(odtone::mih::link_param_val *value = boost::get<odtone::mih::link_param_val>(&i->param.value))
|
||||
{
|
||||
log_(0, "Meausrement Value: ", (short) *value );
|
||||
}
|
||||
if(odtone::mih::link_param_val *value = boost::get<odtone::mih::link_param_val>(&i->param.value))
|
||||
{
|
||||
log_(0, "\t[Measurement Types: RSRP 0|RSRQ 1|CQI 2] [type: ", i->param.type, "| value: ", (short) *value, "]" );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//eNB2 : Action Power Up the TVWS Link after running the cognitive algorithm
|
||||
|
||||
//First Phase: Collect the data as input fot the cognitive algorithm
|
||||
@@ -1461,12 +1477,13 @@ void mih_user::receive_MIH_MN_HO_Candidate_Query_request(odtone::mih::message& m
|
||||
// link1.type = type;
|
||||
// send_MIH_Link_Actions_request(link, odtone::mih::link_ac_type_power_up);
|
||||
|
||||
// ferreira: commented out the count printouts and changed the comparison value (originally count >= 30 )
|
||||
//Send ONLY ONCE RRC_Connection_Reconfiguration request to the UE on LTE link 0
|
||||
// log_(0, "COUNT: ", count );
|
||||
if (second_link_activated==0)
|
||||
{
|
||||
// log_(0, "COUNT: ", count );
|
||||
if (count >= 750)
|
||||
if (count >= 1500)
|
||||
{
|
||||
// log_(0, "COUNT: ", count );
|
||||
send_MIH_Link_Action_Power_Up_request(_link_id_list[0]);//Link LTE
|
||||
@@ -1497,21 +1514,34 @@ void mih_user::receive_MIH_Link_Parameters_Report(odtone::mih::message& msg, con
|
||||
& odtone::mih::tlv_link_identifier(link)
|
||||
& odtone::mih::tlv_link_param_rpt_list(lprl);
|
||||
|
||||
log_(0, "MIH_Link_Parameters_Report.indication - RECEIVED - Begin");
|
||||
log_(0, "\t- LINK CFG STATUS LIST - Length: ", lprl.size());
|
||||
log_(0, "[MSC_MSG]["+getTimeStamp4Log()+"]["+ msg.source().to_string() +"][--- MIH_Link_Parameters_Report.indication --->]["+msg.destination().to_string()+"]\n");
|
||||
log_(0, " - LINK_TUPLE_ID - Link identifier: ", link_id2string(link).c_str());
|
||||
std::cout<<"LINK_TUPLE_ID - Link identifier: "<<link<<std::endl;
|
||||
// log_(0, "MIH_Link_Parameters_Report.indication - RECEIVED - Begin");
|
||||
// log_(0, "\t- LINK CFG STATUS LIST - Length: ", lprl.size());
|
||||
// log_(0, "[MSC_MSG]["+getTimeStamp4Log()+"]["+ msg.source().to_string() +"][--- MIH_Link_Parameters_Report.indication --->]["+msg.destination().to_string()+"]\n");
|
||||
// log_(0, " - LINK_TUPLE_ID - Link identifier: ", link_id2string(link).c_str());
|
||||
// std::cout<<"LINK_TUPLE_ID - Link identifier: "<<link<<std::endl;
|
||||
//
|
||||
// for (odtone::mih::link_param_rpt_list::iterator i=lprl.begin(); i!=lprl.end(); i++)
|
||||
// {
|
||||
// log_(0, "Meausrement Type: --- 0 => RSRP ----- 1=>RSRQ ---- 2=>CQI ", i->param.type);
|
||||
// if(odtone::mih::link_param_val *value = boost::get<odtone::mih::link_param_val>(&i->param.value))
|
||||
// {
|
||||
// log_(0, "Meausrement Value: ", (short) *value );
|
||||
// }
|
||||
// }
|
||||
// log_(0, "MIH_Link_Parameters_Report.indication - End");
|
||||
|
||||
// ferreira: changed output of message for better readability!
|
||||
log_(0, "\n["+getTimeStamp4Log()+"] [RX] [FROM: "+ msg.source().to_string() +"] [Link ID: "+ link_id2string(link).c_str() +"]");
|
||||
log_(0, "\t[MIH_Link_Parameters_Report]");
|
||||
|
||||
for (odtone::mih::link_param_rpt_list::iterator i=lprl.begin(); i!=lprl.end(); i++)
|
||||
{
|
||||
log_(0, "Meausrement Type: --- 0 => RSRP ----- 1=>RSRQ ---- 2=>CQI ", i->param.type);
|
||||
if(odtone::mih::link_param_val *value = boost::get<odtone::mih::link_param_val>(&i->param.value))
|
||||
{
|
||||
log_(0, "Meausrement Value: ", (short) *value );
|
||||
}
|
||||
if(odtone::mih::link_param_val *value = boost::get<odtone::mih::link_param_val>(&i->param.value))
|
||||
{
|
||||
log_(0, "\t[Measurement Types: RSRP 0|RSRQ 1|CQI 2] [type: ", i->param.type, "| value: ", (short) *value, "]" );
|
||||
}
|
||||
}
|
||||
log_(0, "MIH_Link_Parameters_Report.indication - End");
|
||||
// log_(0, "MIH_Link_Parameters_Report.indication - End");
|
||||
|
||||
|
||||
//eNB1: Forward the message to UE 2
|
||||
|
||||
@@ -68,8 +68,8 @@ source $THIS_SCRIPT_PATH/env_802dot21.bash
|
||||
###########################################################
|
||||
bash_exec "ifconfig $EMULATION_DEV_INTERFACE up $EMULATION_DEV_ADDRESS netmask 255.255.255.0"
|
||||
bash_exec "ifconfig eth2 up 192.168.14.3 netmask 255.255.255.0"
|
||||
#bash_exec "ip r d default dev eth0"
|
||||
#bash_exec "ip r a default via 192.168.14.4 dev eth2"
|
||||
bash_exec "ip r d default via 192.168.14.4 dev eth2"
|
||||
bash_exec "ip r a default via 192.168.12.100 dev eth0"
|
||||
###########################################################
|
||||
IPTABLES=/sbin/iptables
|
||||
THIS_SCRIPT_PATH=$(dirname $(readlink -f $0))
|
||||
|
||||
Reference in New Issue
Block a user