⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mobile_ip.cpp

📁 各种视频压缩格式的网络传输的模拟信道分析
💻 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 + -