Skip to content

Commit

Permalink
Make sure we shut things down gracefully
Browse files Browse the repository at this point in the history
  • Loading branch information
silverchris committed Aug 10, 2022
1 parent b7e0af7 commit abd6f32
Show file tree
Hide file tree
Showing 12 changed files with 44 additions and 35 deletions.
5 changes: 2 additions & 3 deletions include/Platforms/Mazda/Managers/AAPA.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,7 @@ class AADBus final : public com_jci_aapa {
explicit AADBus(std::function<void(bool)> FocusChanged);
~AADBus() = default;

typedef DBus::MultipleReturn<std::tuple<uint8_t, std::string, std::string, std::string, std::string>,
int32_t> NowPlayingInfo;
using NowPlayingInfo = DBus::MultipleReturn<std::tuple<uint8_t, std::string, std::string, std::string, std::string>, int32_t>;
void MDSettingModeData(uint32_t selectMode) override {};
void VideoProjectionEventToMD(uint32_t videoProjectionEvent) override;
void InputKey(uint32_t keyCode, bool absolute, int32_t step) override {};
Expand Down Expand Up @@ -58,7 +57,7 @@ class AAPA : public IVideoManager {

public:
explicit AAPA(std::shared_ptr<DBus::Connection> session_connection);
~AAPA();
~AAPA() override;

void start() override;
void stop() override;
Expand Down
2 changes: 1 addition & 1 deletion include/Platforms/Mazda/Managers/GPSManager.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ class GPSManager: public IGPSManager{
public:
GPSManager(asio::io_service &IoService, const std::shared_ptr<DBus::Connection> &system_connection);

~GPSManager() = default;
~GPSManager() override;

void start() override;
void stop() override;
Expand Down
2 changes: 1 addition & 1 deletion include/Platforms/Mazda/Managers/NavigationManager.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ class NavigationManager: public INavigationManager {
std::shared_ptr<DBus::Connection> dbusConnection;
std::shared_ptr<com_jci_vbs_navi_tmcProxy> tmcClient_;
std::shared_ptr<com_jci_vbs_naviProxy> naviClient_;
NaviData *navi_data;
NaviData navi_data{};

using TurnIcon = std::array<MazdaIcons, 3>;
using hudDisplayMsg = std::tuple<uint32_t, uint16_t, uint8_t, uint16_t, uint8_t, uint8_t>;
Expand Down
2 changes: 1 addition & 1 deletion include/Platforms/Mazda/Managers/NightManager.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
class NightManager: public INightManager{
public:
explicit NightManager(asio::io_service &IoService );
~NightManager() override = default;
~NightManager() override;

void start() override;
void stop() override;
Expand Down
3 changes: 2 additions & 1 deletion src/Platforms/Mazda/Managers/AAPA.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,6 @@ void AAPA::releaseFocus() {
}

AAPA::~AAPA() {

}

void AAPA::start() {
Expand All @@ -86,6 +85,8 @@ void AAPA::start() {
void AAPA::stop() {
LOG(DEBUG) << "Stopping AAPA";
releaseFocus();
adapter->signal_Available()->emit(0);
sleep(1);
displayModeConnection.disconnect();
bucpsa.reset();
session_object.reset();
Expand Down
8 changes: 4 additions & 4 deletions src/Platforms/Mazda/Managers/AudioManager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -150,7 +150,6 @@ AudioManager::AudioManager(const std::shared_ptr<DBus::Connection> &session_conn
}

AudioManager::~AudioManager() {

}

void AudioManager::requestFocus(aasdk::messenger::ChannelId channelId,
Expand Down Expand Up @@ -252,10 +251,11 @@ void AudioManager::stop() {
for (auto &stream : streams) {
if (stream.second->id >= 0) {
try {
releaseFocus(stream.first);
json args = {{"sessionId", stream.second->id}};
std::string result = AudioProxy->Request("closeSession", args.dump());
LOG(DEBUG) << "closeSession(" << args.dump().c_str() << ")\n" << result.c_str() << "\n";
std::string result = AudioProxy->Request("abandonAudioFocus", args.dump());
LOG(DEBUG) << "abandonAudioFocus(" << args.dump() << ")\n" << result;
result = AudioProxy->Request("closeSession", args.dump());
LOG(DEBUG) << "closeSession(" << args.dump() << ")\n" << result;
}
catch (DBus::Error &error) {
LOG(ERROR) << error.name() << ": " << error.message();
Expand Down
3 changes: 2 additions & 1 deletion src/Platforms/Mazda/Managers/BluetoothManager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,8 @@ void BluetoothManager::ConnectionStatusResp(uint32_t found_serviceId, uint32_t c
}
}

BluetoothManager::~BluetoothManager() = default;
BluetoothManager::~BluetoothManager(){
};

void BluetoothManager::start() {
LOG(DEBUG) << "Reading BdsConfiguration.xml";
Expand Down
4 changes: 4 additions & 0 deletions src/Platforms/Mazda/Managers/GPSManager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,10 @@ GPSManager::GPSManager(asio::io_service &IoService, const std::shared_ptr<DBus::

}

GPSManager::~GPSManager() {
stop();
}

void GPSManager::start() {
std::lock_guard<std::mutex> lock(timerMutex);
try {
Expand Down
42 changes: 21 additions & 21 deletions src/Platforms/Mazda/Managers/NavigationManager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@ void NavigationManager::start() {

if (HUDStatus == 1) {

navi_data = new NaviData;

AA2MAZ.insert(std::pair(aasdk::proto::enums::NavigationTurnEvent::DEPART,
TurnIcon{MazdaIcons::FLAG_LEFT, MazdaIcons::FLAG_RIGHT, MazdaIcons::FLAG}));
Expand Down Expand Up @@ -75,12 +74,12 @@ void NavigationManager::start() {
}

void NavigationManager::stop() {
navi_data = NaviData{};
if (tmcClient_ && naviClient_) {
tmcClient_->SetHUD_Display_Msg2(guidancePointData("", 0));
naviClient_->SetHUDDisplayMsgReq(hudDisplayMsg(0, 0, 0, 0, 0, 0));
}
AA2MAZ.clear();
delete navi_data;
tmcClient_.reset();
naviClient_.reset();
}
Expand All @@ -98,21 +97,21 @@ void NavigationManager::NavigationTurn(int turn_number,
aasdk::proto::enums::NavigationTurnEvent_Enum turn_event,
int turn_angle) {
if (naviClient_ && tmcClient_) {
if (turn_number != navi_data->turn_number || turn_name != navi_data->turn_name) {
navi_data->turn_number = turn_number;
navi_data->turn_name = turn_name;
navi_data->msg++;
if (navi_data->msg >= 8) {
navi_data->msg = 1;
if (turn_number != navi_data.turn_number || turn_name != navi_data.turn_name) {
navi_data.turn_number = turn_number;
navi_data.turn_name = turn_name;
navi_data.msg++;
if (navi_data.msg >= 8) {
navi_data.msg = 1;
}
}
navi_data->turn_side = turn_side;
navi_data->turn_event = turn_event;
navi_data->turn_angle = turn_angle;
navi_data.turn_side = turn_side;
navi_data.turn_event = turn_event;
navi_data.turn_angle = turn_angle;

LOG(DEBUG) << "msg" << navi_data->msg << " " << turn_name;
LOG(DEBUG) << "msg" << navi_data.msg << " " << turn_name;

tmcClient_->SetHUD_Display_Msg2(guidancePointData(turn_name, navi_data->msg));
tmcClient_->SetHUD_Display_Msg2(guidancePointData(turn_name, navi_data.msg));
}
}

Expand All @@ -124,14 +123,14 @@ void NavigationManager::NavigationDistance([[maybe_unused]] int distance,
uint32_t diricon = 0;
uint16_t nowDistance;
MazdaDistanceUnits nowUnit;
if (navi_data->turn_event == aasdk::proto::enums::NavigationTurnEvent::ROUNDABOUT_ENTER_AND_EXIT) {
if (navi_data.turn_event == aasdk::proto::enums::NavigationTurnEvent::ROUNDABOUT_ENTER_AND_EXIT) {
LOG(DEBUG) << "Roundabout";
diricon = roundabout(navi_data->turn_angle, navi_data->turn_side);
diricon = roundabout(navi_data.turn_angle, navi_data.turn_side);
} else {
if (AA2MAZ.count(navi_data->turn_event) > 0) {
diricon = AA2MAZ[navi_data->turn_event][navi_data->turn_side - 1];
if (AA2MAZ.count(navi_data.turn_event) > 0) {
diricon = AA2MAZ[navi_data.turn_event][navi_data.turn_side - 1];
} else {
LOG(DEBUG) << "No matching navigation icon for " << navi_data->turn_event << " " << navi_data->turn_side;
LOG(DEBUG) << "No matching navigation icon for " << navi_data.turn_event << " " << navi_data.turn_side;
}
}

Expand All @@ -156,14 +155,14 @@ void NavigationManager::NavigationDistance([[maybe_unused]] int distance,
default:break;
}

LOG(DEBUG) << "msg" << navi_data->msg << " " << static_cast<int>(diricon) << " " << nowDistance << " " << nowUnit;
LOG(DEBUG) << "msg" << navi_data.msg << " " << static_cast<int>(diricon) << " " << nowDistance << " " << nowUnit;

naviClient_->SetHUDDisplayMsgReq(hudDisplayMsg(diricon,
nowDistance,
nowUnit,
0,
0,
navi_data->msg));
navi_data.msg));

}
}
Expand All @@ -185,4 +184,5 @@ void NavigationManager::NavigationStop() {
system("smctl -l -n jcinavi &");
}

NavigationManager::~NavigationManager() = default;
NavigationManager::~NavigationManager() {
};
3 changes: 3 additions & 0 deletions src/Platforms/Mazda/Managers/NightManager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,9 @@ NightManager::NightManager(asio::io_service &IoService) : timer(IoService) {

};

NightManager::~NightManager(){
}

void NightManager::start() {
std::lock_guard<std::mutex> lock(timerMutex);
LOG(DEBUG) << "Starting NightManager";
Expand Down
3 changes: 2 additions & 1 deletion src/Platforms/Mazda/Managers/VideoManager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -68,4 +68,5 @@ void VideoManager::stop() {
gui.reset();
}

VideoManager::~VideoManager() = default;
VideoManager::~VideoManager(){
};
2 changes: 1 addition & 1 deletion src/autoapp/autoapp.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -188,7 +188,7 @@ int main(int argc, char *argv[]) {
}

device->signals->bluetoothManager->stop();

device->stop();
sleep(2);

LOG(DEBUG) << "Calling app->stop()";
Expand Down

0 comments on commit abd6f32

Please sign in to comment.