-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathVehicleManager.cpp
60 lines (49 loc) · 1.43 KB
/
VehicleManager.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#include "VehicleManager.h"
#include "QuadApplication.h"
#include "linkmanager.h"
#include "PX4AutopioltPlugins/PX4AutopilotPlugin.h"
#include "PX4FirmwarePlugin.h"
#include "UAS.h"
#include <QDebug>
VehicleManager::VehicleManager(QuadApplication *app)
:ToolBase(app)
, _linkMgr(NULL)
, _activeVehicle(NULL)
, _firmwarePlugin(NULL)
{
}
VehicleManager::~VehicleManager()
{
}
void VehicleManager::setToolbox(Toolbox* toolbox)
{
ToolBase::setToolbox(toolbox);
_linkMgr = _toolbox->linkManager();
_firmwarePlugin = _toolbox->firmwarePlugin();
connect(_linkMgr,&LinkManager::vehicleHeartbeatInfo,this,&VehicleManager::_vehicleHeartbeatInfo);
}
void VehicleManager::_vehicleHeartbeatInfo(SerialLink* link, int vehicleId)
{
if(vehicleId == 0) {
return;
}
if(_activeVehicle && _activeVehicle->id() == vehicleId) {
//qDebug()<<"Vehicle already exists.";
return;
}
Vehicle* vehicle = new Vehicle(link,vehicleId,_firmwarePlugin);
if(vehicle) {
qDebug()<<"vehicle created";
_activeVehicle = vehicle;
connect(vehicle,&Vehicle::linkDeleted,this,&VehicleManager::_deleteVehicle);
emit activeVehicleChanged(_activeVehicle);
}
}
void VehicleManager::_deleteVehicle(Vehicle* vehicle)
{
if(_activeVehicle == vehicle) {
_activeVehicle->uas()->shutdownVehicle();
_activeVehicle = NULL;
emit activeVehicleChanged(_activeVehicle);
}
}