void recv_create_object(void) { /* Unpack the object header. */ int i = new_object(); int n = recv_index(); int j, k; struct object *o = get_object(i); struct object_mesh *m = NULL; o->count = 1; /* Unpack the vertices and meshes. */ o->vv = recv_vector(); o->mv = vecnew(n, sizeof (struct object_mesh)); for (j = 0; j < n; ++j) if ((k = vecadd(o->mv)) >= 0) { m = (struct object_mesh *) vecget(o->mv, k); m->brush = recv_index(); m->fv = recv_vector(); m->ev = recv_vector(); } /* Encapsulate this object in an entity. */ recv_create_entity(); }
Point_to_Point_TDD_Performance_Test::Point_to_Point_TDD_Performance_Test(Ui_MainWindow *ui) { number_transceivers=2; ivec fd_ext; fd_ext.set_size(number_transceivers); //create transceivers for(int i=0;i<number_transceivers;i++){ stringstream tun_i; tun_i << "tun" << i; fd_ext[i]=tun_alloc((char*)(tun_i.str().c_str())); stringstream cmd; cmd << "ifconfig " << tun_i.str() << " 192.168.1." << i+1 << " netmask 255.255.255.0 broadcast 192.168.1.255"; popen(cmd.str().c_str(),"r"); Point_to_Point_TDD_TX *tmp=new Point_to_Point_TDD_TX(ui); Point_to_Point_TDD_RX *tmp2=new Point_to_Point_TDD_RX(ui); transmitters.push_back(tmp); receivers.push_back(tmp2); } //Connect transmitters with their corresponding receivers for(int i=0;i<number_transceivers;i++){ QObject::connect(transmitters[i],SIGNAL(valuechanged(bool)),receivers[i],SLOT(setvalue(bool)),Qt::BlockingQueuedConnection); QObject::connect(receivers[i],SIGNAL(valuechanged(bool,double)),transmitters[i],SLOT(setvalue(bool,double)),Qt::BlockingQueuedConnection); QObject::connect(receivers[i],SIGNAL(valuechanged(int)),transmitters[i],SLOT(setvalue(int)),Qt::BlockingQueuedConnection); QObject::connect(receivers[i],SIGNAL(waveformset(int)),transmitters[i],SLOT(setwaveform(int)),Qt::BlockingQueuedConnection); } //connect to simulator device qRegisterMetaType<timestamp_data>("timestamp_data"); for(int i=0;i<number_transceivers;i++){ for(int j=0;j<number_transceivers;j++){ QObject::connect(transmitters[i]->device,SIGNAL(send_vector(timestamp_data)),receivers[j]->device,SLOT(recv_vector(timestamp_data)),Qt::BlockingQueuedConnection); } QObject::connect(receivers[i]->device,SIGNAL(updated_timer(double)),transmitters[i]->device,SLOT(update_timer(double)),Qt::BlockingQueuedConnection); } //Fix positions of the nodes and calculate distance matrix cvec positions(number_transceivers); for (int i=0;i<number_transceivers;i++){ positions[i]=complex<double>(0,0)+0.010*i*complex<double>(1,1); } for (int i=0;i<number_transceivers;i++){ receivers[i]->device->channel_model->calculate_distance_matrix(positions); } //Determine which transceivers talk to which transceivers for(int i=0;i<number_transceivers;i++){ transmitters[i]->myaddress=i; receivers[i]->myaddress=i; transmitters[i]->device->my_address=i; receivers[i]->device->my_address=i; if(number_transceivers==1){ transmitters[i]->destaddress=i; receivers[i]->destaddress=i; } else{ if((i/2)*2==i){ transmitters[i]->destaddress=i+1; receivers[i]->destaddress=i+1; } else{ transmitters[i]->destaddress=i-1; receivers[i]->destaddress=i-1; } } } //start transceivers for(int i=0;i<number_transceivers;i++){ receivers[i]->start(); transmitters[i]->start(); } sleep(1); //Start BER test TX and RX for(int i=0;i<number_transceivers;i++){ transmitters[i]->packet->ptr=fd_ext[i]; receivers[i]->packet->ptr=fd_ext[i]; transmitters[i]->is_time_set=true; transmitters[i]->tx_timestamp=i*transmitters[i]->time_gap/2; transmitters[i]->packet->is_ip=true; receivers[i]->packet->is_ip=true; transmitters[i]->state="SEND"; } //transmitters[1]->packet->is_ber_count=false; //transmitters[1]->state="NOSTATE"; }