📄 mobile_ip.cpp
字号:
/*
==========================================================================================
ITU-T Telecommunications Standardization Sector Document: VCEG-M77
Study Group 16 Question 6 Filename: main.cc
Video Coding Experts Group (VCEG) Generated: 27 June, 2001
----------------------------------------
Thirteenth meeting: Austin, Texas, 2-4 April, 2001
Intention:
~~~~~~~~~~~~
Simple offline software simulator for RTP/IP over 3GPP/3GPP2 bearers
Source:
~~~~~~~
Thomas Stockhammer, Guenther Liebl Tel: +49 89 28923473
Institute for Communications Engineering Fax: +49 89 28923490
Munich University of Technology Email: {stockhammer,liebl}@ei.tum.de
80290 Munich, Germany
==========================================================================================
*/
#include "global.h"
#include "loss_generator.h"
#include "packet_data_agent.h"
#include "radio_link_agent.h"
int main(int ac, char *av[])
{
// int i,j;
LOSS_GENERATOR Loss_Generator;
PACKET_DATA_AGENT Packet_Data_Agent;
RADIO_LINK_AGENT Radio_Link_Agent;
char *ModuleName = "MAIN";
char *ParameterFile, LogFile[100], StatisticsFile[100];
FILE *ParameterFile_ptr, *LogFile_ptr, *StatisticsFile_ptr;
RADIO_LINK_FRAME *transmit_frame;
Boolean frame_error_indicator;
if ( ac == 2 )
{
ParameterFile = av[1];
}
else
{
fprintf(stderr,"Usage: sim3G <ParameterFile>\n");
exit(-1);
}
// open given parameter file for input
if ( (ParameterFile_ptr=fopen(ParameterFile,"r")) == NULL )
{
fprintf(stderr,"!!error in module %s: couldn't open file %s \n",ModuleName,ParameterFile);
exit(-1);
}
fscanf(ParameterFile_ptr,"Parameter File for setting up the RTP/IP over 3G simulator:\n\n");
fscanf(ParameterFile_ptr,"===========================================================\n\n");
fscanf(ParameterFile_ptr,"General Settings:\n\n");
fscanf(ParameterFile_ptr,"-----------------\n\n");
fscanf(ParameterFile_ptr,"- file for writing simulation log report: %s\n",LogFile);
fscanf(ParameterFile_ptr,"- file for writing final statistics: %s\n\n",StatisticsFile);
// open log file and statistics file
if ( (LogFile_ptr=fopen(LogFile,"w")) == NULL )
{
fprintf(stderr,"!!error in module %s: couldn't open file %s \n",ModuleName,LogFile);
exit(-1);
}
else
{
fprintf(LogFile_ptr,"%s: reading simulation parameter settings from file %s\n",ModuleName,ParameterFile);
fprintf(LogFile_ptr,"%s: writing log report to file %s\n",ModuleName,LogFile);
}
if ( (StatisticsFile_ptr=fopen(StatisticsFile,"w")) == NULL )
{
fprintf(stderr,"!!error in module %s: couldn't open file %s \n",ModuleName,StatisticsFile);
exit(-1);
}
else
{
fprintf(LogFile_ptr,"%s: writing final statistics to file %s\n",ModuleName,StatisticsFile);
}
// initialize loss generator
fscanf(ParameterFile_ptr,"===========================================================\n\n");
fscanf(ParameterFile_ptr,"Loss Generator Settings:\n");
fscanf(ParameterFile_ptr,"------------------------\n\n");
Loss_Generator.initialize(ParameterFile_ptr,LogFile_ptr);
fscanf(ParameterFile_ptr,"\n");
// initialize packet data agent
fscanf(ParameterFile_ptr,"===========================================================\n\n");
fscanf(ParameterFile_ptr,"Packet Data Agent Settings:\n");
fscanf(ParameterFile_ptr,"---------------------------\n\n");
Packet_Data_Agent.initialize(ParameterFile_ptr,LogFile_ptr);
fscanf(ParameterFile_ptr,"\n");
// initialize radio link agent
fscanf(ParameterFile_ptr,"===========================================================\n\n");
fscanf(ParameterFile_ptr,"Radio Link Agent Settings:\n");
fscanf(ParameterFile_ptr,"--------------------------\n\n");
Radio_Link_Agent.initialize(ParameterFile_ptr,LogFile_ptr,&Packet_Data_Agent);
fscanf(ParameterFile_ptr,"\n");
// transmission loop
while ( Radio_Link_Agent.send_frame(&transmit_frame) )
{
frame_error_indicator = Loss_Generator.bit_error_indication(transmit_frame->size);
Radio_Link_Agent.receive_frame(transmit_frame,frame_error_indicator);
}
// accumulate statistics
Loss_Generator.write_statistics(StatisticsFile_ptr);
Packet_Data_Agent.write_statistics(StatisticsFile_ptr);
Radio_Link_Agent.write_statistics(StatisticsFile_ptr);
// close all input/output files
fclose(StatisticsFile_ptr);
fclose(LogFile_ptr);
fclose(ParameterFile_ptr);
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -