diff --git a/src/CommunicationManager.cpp b/src/CommunicationManager.cpp index a1e125d..046a85c 100644 --- a/src/CommunicationManager.cpp +++ b/src/CommunicationManager.cpp @@ -44,7 +44,7 @@ namespace Xbee //***************************************************************************** CommunicationManager::CommunicationManager(): START_DLIMITER(static_cast(0x7E)), - LOOP_RATE(20) /* 10 fps */ + LOOP_RATE(10) /* 10 fps */ { } @@ -170,13 +170,10 @@ void CommunicationManager::Run_In_Swarm_Mode() ros::Rate loop_rate(LOOP_RATE); counter=0; - while (ros::ok()) { Check_In_Messages_and_Transfer_To_Topics(); Send_multi_msg(); - //if(counter==10) {test_1=5;} - //else counter++; ros::spinOnce(); loop_rate.sleep(); } @@ -375,20 +372,19 @@ inline void CommunicationManager::Check_In_Messages_and_Transfer_To_Topics() { std::size_t size_in_messages = in_messages_->Get_Size(); uint16_t* header; - //if(!multi_msgs_receive.empty()) steps++; - if(steps>200){ - steps=0; - multi_msgs_receive.clear(); - receiver_cur_checksum=0; - } - /*T0 overcome mesages after the stop transmission of multi packet*/ - if(counter!=0){ - multi_msgs_receive.clear(); - counter--; - } if (size_in_messages > 0) { - + /*if(!multi_msgs_receive.empty()) steps++; + if(steps>500){ + steps=0; + multi_msgs_receive.clear(); + receiver_cur_checksum=0; + }*/ + /*T0 overcome mesages after the stop transmission of multi packet*/ + if(counter!=0){ + multi_msgs_receive.clear(); + counter--; + } uint64_t current_int64 = 0; for (std::size_t j = 0; j < size_in_messages; j++) { @@ -402,26 +398,10 @@ inline void CommunicationManager::Check_In_Messages_and_Transfer_To_Topics() tot+=sizeof(uint64_t); /*sscanf(in_message->c_str(), "%" PRIu64 " ", ¤t_int64);*/ - std::cout<c_str(), &frame,sizeof(uint64_t) * ); - serial_device_.Send_Frame(frame); - } - if(current_int64 == (uint64_t)device_id ){ - - gettimeofday(&t2, NULL); - double time_spent = (t2.tv_sec - t1.tv_sec) * 1000.0; //(double)(end - begin) / CLOCKS_PER_SEC; - time_spent += (t2.tv_usec - t1.tv_usec) / 1000.0; - std::cout<<"Time taken for send and receive : "<1 && header[2]==1){ /*copy msg size*/ @@ -453,8 +433,8 @@ inline void CommunicationManager::Check_In_Messages_and_Transfer_To_Topics() else if (header[3]>1 && header[1]>1){ /*multimsg received send ack msg*/ - //char temporary_buffer[20]; - //std::string frame; + char temporary_buffer[20]; + std::string frame; std::cout << "Multi msg Received header " <0){ - test_1--; - char temporary_buffer[sizeof(uint64_t) * 5]; - std::string frame; - uint64_t constant_msg[3]; - constant_msg[1]=245253253253532; - constant_msg[2]=245253253253532; - constant_msg[3]=245253253253532; - constant_msg[0]=(uint64_t) device_id; - constant_msg[4]=(uint64_t) test_t; - gettimeofday(&t1, NULL); - /*Copy the data to char buff*/ - /*memcpy((void*)temporary_buffer,(void*)constant_msg,sizeof(uint64_t) * 5); - Generate_Transmit_Request_Frame(temporary_buffer, &frame,sizeof(uint64_t) * 5); - multi_msgs_send_dict.push_back(frame); - }*/ + if( !( multi_msgs_send_dict.empty() ) ){ /*If the sent message chunk not the last message then send else clear the dict*/ if( (uint16_t)(multi_msgs_send_dict.size() ) - 1 == sending_chunk_no && (uint16_t)ack_received_dict.size() == (uint16_t)(no_of_dev)-1){