|
|
|
|
@ -81,7 +81,6 @@ int main(int argc, char** argv)
|
|
|
|
|
// For store Discover systems in a list
|
|
|
|
|
std::vector<systemHandlerInfo> systemHandlerInfos;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Subscribe to new system discovery
|
|
|
|
|
mavsdk.subscribe_on_new_system([&mavsdk, &systemHandlerInfos]() {
|
|
|
|
|
// Get the last subscribed system
|
|
|
|
|
@ -91,19 +90,21 @@ int main(int argc, char** argv)
|
|
|
|
|
|
|
|
|
|
// Avoid Duplicate System ID
|
|
|
|
|
bool duplicated;
|
|
|
|
|
for(int i=0; i<comingSystems.size(); i++){
|
|
|
|
|
// for(int i=0; i<comingSystems.size(); i++){
|
|
|
|
|
for(int i=comingSystems.size()-1; i>=0; i--){
|
|
|
|
|
sys = comingSystems[i];
|
|
|
|
|
if (!sys->is_connected()) {continue;}
|
|
|
|
|
sysid = static_cast<int>(sys->get_system_id());
|
|
|
|
|
duplicated = false;
|
|
|
|
|
|
|
|
|
|
for(int j=0; j<systemHandlerInfos.size(); j++){
|
|
|
|
|
if(sysid == systemHandlerInfos[j].systemID){
|
|
|
|
|
duplicated = true;
|
|
|
|
|
break;
|
|
|
|
|
break; // this will break the j for loop
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if(duplicated == false){
|
|
|
|
|
|
|
|
|
|
// Get New System
|
|
|
|
|
System& new_system = *sys; // make std::shared_ptr<MAVSDK::System> back to MAVSDK::System
|
|
|
|
|
std::cout << "(mavone.cpp:subscribe_on_new_system) system detect sysid : " << sysid << "(Debug)"<< std::endl; // debug
|
|
|
|
|
@ -120,12 +121,10 @@ int main(int argc, char** argv)
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
// only get ONE system each time
|
|
|
|
|
break;
|
|
|
|
|
break; // this will break the i for loop
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Need some extra time fpr complete init
|
|
|
|
|
// sleep_for(milliseconds(500));
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
// MySQL connection is here
|
|
|
|
|
@ -261,12 +260,17 @@ int main(int argc, char** argv)
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 刪除被輪尋到的 handlerInfo
|
|
|
|
|
// systemHandlerInfos.erase(std::remove_if(systemHandlerInfos.begin(), systemHandlerInfos.end(), [&](const auto& info) {
|
|
|
|
|
// return info.handlerState == systemHandlerState::Disconnected;
|
|
|
|
|
// }), systemHandlerInfos.end());
|
|
|
|
|
// 刪除 Disconnected 的 handlerInfo
|
|
|
|
|
for (auto it = systemHandlerInfos.begin(); it != systemHandlerInfos.end(); /* no increment here */) {
|
|
|
|
|
if (it->handlerState == systemHandlerState::Disconnected) {
|
|
|
|
|
if (it->systemThread.joinable()) {
|
|
|
|
|
it->systemThread.join();
|
|
|
|
|
}
|
|
|
|
|
it = systemHandlerInfos.erase(it);
|
|
|
|
|
} else {
|
|
|
|
|
++it;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@ -285,9 +289,6 @@ int main(int argc, char** argv)
|
|
|
|
|
handlerInfo.systemThread.join();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// delete mavsdk;
|
|
|
|
|
// ~mavsdk;
|
|
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|