#include #include #include #include /*-------------Global Variables------------------*/ double rate1, rate2; //in Mbps double length1, length2; //in msec double start_time, period; int pack_size; char *Out_FILE_NAME; //s, *Out_FILE_NAME1; main(int argc, char *argv[]) { if (argc != 8){ printf(" Error! You need to input rate1 length1 rate2 length2 period pack_size and Output-Dada-File-Name\n"); exit(0); } rate1 = atof(argv[1]); //Mbps length1 = atof(argv[2]); //ms rate2 = atof(argv[3]); //Mbps length2 = atof(argv[4]); //ms period = atof(argv[5]); //ms pack_size = atoi(argv[6]); //Bytes Out_FILE_NAME = argv[7]; //s Out_FILE_NAME1 = argv[8]; if(Option_1()!=1){ printf("\n Error in Option 1"); exit(0); } exit(0); } /***************************************************************/ int Option_1() { double time_now, time_next, time_diff, time_beg_per; FILE * outfp; FILE * outfp1; if( (outfp = fopen(Out_FILE_NAME,"wb"))==NULL){ printf("\n Open Out file error\n"); exit(1); } //s if( (outfp1 = fopen(Out_FILE_NAME1,"wb"))==NULL){ //s printf("\n Open Out file error\n"); //s exit(1); //s } time_beg_per = 0; //ms time_now = 0; //ms while ((time_now/1000.0)< 205.0) { if (time_now < time_beg_per + length1) { // fprintf(outfp1,"%f %d\n", time_now/1000.0+20.0, 10); time_diff = ((pack_size*8.0)/(rate1*1000000.0))*1000.0; //ms time_now = time_now + time_diff; } else { if ((time_now >= time_beg_per+length1) && (time_now < time_beg_per+length1+length2)){ time_diff = ((pack_size*8.0)/(rate2*1000000.0))*1000.0; //ms // fprintf(outfp1,"%f %d\n", time_now/1000.0+20.0, 5); time_now = time_now + time_diff; } else { // fprintf(outfp1,"%f %d\n", time_now/1000.0+20.0, 0); time_beg_per = time_beg_per + period; time_diff = time_beg_per - time_now; time_now = time_beg_per; //s down // time_diff = time_diff/1000.0; //s up // fprintf(outfp1,"%f %d\n", time_now/1000.0+20.0, 0); } } //fprintf(outfp,"%f %f %d\n", time_now*1000.0, time_diff*1000.0, pack_size); //s fprintf(outfp,"%f %d\n", time_diff*1000.0, pack_size); fprintf(outfp,"%f\n", time_diff); //s print in msec //output is in micro sec //fprintf(outfp, "%f %d\n", 5000.0, pack_size); } fclose (outfp); //s fclose (outfp1); return(1); }