Skip to content

Commit

Permalink
Move start/stop to be handled by the platform
Browse files Browse the repository at this point in the history
  • Loading branch information
silverchris committed Aug 10, 2022
1 parent ee0dec6 commit e5196fc
Show file tree
Hide file tree
Showing 14 changed files with 75 additions and 40 deletions.
6 changes: 3 additions & 3 deletions include/Platforms/Mazda/Managers/HttpManager.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -16,17 +16,17 @@ using HttpServer = SimpleWeb::Server<SimpleWeb::HTTP>;

class HttpManager {
public:
HttpManager(IVideoManager::Pointer videosignals, AASignals::Pointer aasignals);
explicit HttpManager(IVideoManager::Pointer videosignals);
~HttpManager();
void handle_aa_connect(bool state);
private:
bool has_video_focus = false;
bool has_audio_focus = false;
bool aa_connected = false;
IVideoManager::Pointer videoManager;
AASignals::Pointer aasignals_;
HttpServer server;
std::thread serverThread;

void handle_video_focus(bool state);
void handle_aa_connect(bool state);

};
3 changes: 3 additions & 0 deletions include/Platforms/Mazda/mazda.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,9 @@ class Mazda: public IPlatform{
public:
Mazda(asio::io_service &ioService, autoapp::configuration::IConfiguration::Pointer configuration);

void start() override;
void stop() override;

std::shared_ptr<DBus::Dispatcher> dispatcher;
std::shared_ptr<DBus::Connection> session_connection;
std::shared_ptr<DBus::Connection> system_connection;
Expand Down
3 changes: 3 additions & 0 deletions include/Platforms/RPI/RPI.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,9 @@ class RPI: public IPlatform{
public:
RPI();

void start() override;
void stop() overrride;

IVideoManager::Pointer videoManager;
AASignals::Pointer aaSignals;

Expand Down
6 changes: 6 additions & 0 deletions include/autoapp/Platform/IPlatform.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -11,5 +11,11 @@ class IPlatform {

Signals::Pointer signals;

/// Called when Android Auto connection starts
virtual void start() = 0;

/// Called when Android Auto connection stops
virtual void stop() = 0;


};
6 changes: 3 additions & 3 deletions include/autoapp/Service/AndroidAutoEntity.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@
#include <autoapp/Service/IService.hpp>
#include <autoapp/Service/IPinger.hpp>
#include <autoapp/Service/AudioFocus.hpp>
#include <autoapp/Signals/Signals.hpp>
#include <autoapp/Platform/IPlatform.hpp>

namespace autoapp::service {

Expand All @@ -45,7 +45,7 @@ class AndroidAutoEntity
configuration::IConfiguration::Pointer configuration,
ServiceList serviceList,
IPinger::Pointer pinger,
Signals::Pointer signals,
IPlatform::Pointer Device,
AudioFocusRequest::Pointer audioFocusRequest);
~AndroidAutoEntity() override;

Expand Down Expand Up @@ -84,7 +84,7 @@ class AndroidAutoEntity
ServiceList serviceList_;
IPinger::Pointer pinger_;
IAndroidAutoEntityEventHandler *eventHandler_;
Signals::Pointer signals_;
IPlatform::Pointer device;
AudioFocusRequest::Pointer audioFocusRequest_;
};

Expand Down
6 changes: 3 additions & 3 deletions include/autoapp/Service/AndroidAutoEntityFactory.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
#include <autoapp/Configuration/IConfiguration.hpp>
#include <autoapp/Service/IAndroidAutoEntityFactory.hpp>
#include <autoapp/Service/IServiceFactory.hpp>
#include <autoapp/Signals/Signals.hpp>
#include <autoapp/Platform/IPlatform.hpp>

namespace autoapp::service {

Expand All @@ -32,7 +32,7 @@ class AndroidAutoEntityFactory : public IAndroidAutoEntityFactory {
AndroidAutoEntityFactory(asio::io_service &ioService,
configuration::IConfiguration::Pointer configuration,
IServiceFactory &serviceFactory,
Signals::Pointer Signals);
IPlatform::Pointer device);

IAndroidAutoEntity::Pointer create(aasdk::usb::IAOAPDevice::Pointer aoapDevice) override;
IAndroidAutoEntity::Pointer create(aasdk::tcp::ITCPEndpoint::Pointer tcpEndpoint) override;
Expand All @@ -43,7 +43,7 @@ class AndroidAutoEntityFactory : public IAndroidAutoEntityFactory {
asio::io_service &ioService_;
configuration::IConfiguration::Pointer configuration_;
IServiceFactory &serviceFactory_;
Signals::Pointer signals_;
IPlatform::Pointer device;
};

}
5 changes: 2 additions & 3 deletions src/Platforms/Mazda/Managers/HttpManager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@
#include "easylogging++.h"
#include "version.h"

HttpManager::HttpManager(IVideoManager::Pointer videosignals, AASignals::Pointer aasignals)
: videoManager(std::move(videosignals)), aasignals_(std::move(aasignals)) {
HttpManager::HttpManager(IVideoManager::Pointer videosignals)
: videoManager(std::move(videosignals)) {
server.config.port = 9999;

// Add resources using path-regex and method-string, and an anonymous function
Expand Down Expand Up @@ -68,7 +68,6 @@ HttpManager::HttpManager(IVideoManager::Pointer videosignals, AASignals::Pointer

serverThread = std::thread([&]() { server.start(); });
videoManager->registerFocus([this](bool focus){this->handle_video_focus(focus);});
aasignals_->connected.connect(sigc::mem_fun(*this, &HttpManager::handle_aa_connect));
}

HttpManager::~HttpManager() {
Expand Down
9 changes: 8 additions & 1 deletion src/Platforms/Mazda/Managers/NavigationManager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,14 @@ void NavigationManager::start() {
}

void NavigationManager::stop() {

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();
}

uint32_t NavigationManager::roundabout(int degrees, aasdk::proto::enums::NavigationTurnSide_Enum side) {
Expand Down
31 changes: 22 additions & 9 deletions src/Platforms/Mazda/mazda.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -23,13 +23,13 @@ Mazda::Mazda(asio::io_service &ioService, autoapp::configuration::IConfiguration
setenv("DBUS_SYSTEM_BUS_ADDRESS", "unix:path=/tmp/dbus_service_socket", 1);
setenv("DBUS_SESSION_BUS_ADDRESS", "unix:path=/tmp/dbus_hmi_socket", 1);

int fd;
fd = open("/sys/bus/usb/devices/usb1/authorized_default", O_WRONLY);
write(fd, "1", 1);
close(fd);
fd = open("/sys/bus/usb/devices/usb2/authorized_default", O_WRONLY);
write(fd, "1", 1);
close(fd);
int fileDescriptor;
fileDescriptor = open("/sys/bus/usb/devices/usb1/authorized_default", O_WRONLY);
write(fileDescriptor, "1", 1);
close(fileDescriptor);
fileDescriptor = open("/sys/bus/usb/devices/usb2/authorized_default", O_WRONLY);
write(fileDescriptor, "1", 1);
close(fileDescriptor);

// DBus::set_logging_function(DBus::log_std_err);
// DBus::set_log_level(SL_TRACE);
Expand All @@ -51,13 +51,26 @@ Mazda::Mazda(asio::io_service &ioService, autoapp::configuration::IConfiguration
nightManager = std::make_shared<NightManager>(ioService);
audioManager = std::make_shared<AudioManager>(system_connection);

httpManager = new HttpManager(videoManager, aaSignals);
httpManager = new HttpManager(videoManager);

navigationManager = std::make_shared<NavigationManager>(system_connection);
navigationManager->start();

bluetoothManager = std::make_shared<BluetoothManager>(configuration, session_connection);
signals = std::make_shared<Signals>(videoManager, audioManager, gpsManager, aaSignals, nightManager, bluetoothManager, navigationManager);
}

void Mazda::start() {
videoManager->start();
audioManager->start();
navigationManager->start();
httpManager->handle_aa_connect(true);
}

void Mazda::stop() {
navigationManager->stop();
videoManager->stop();
audioManager->stop();
httpManager->handle_aa_connect(false);
}
#endif

7 changes: 7 additions & 0 deletions src/Platforms/RPI/RPI.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,13 @@ RPI::RPI() {
signals = std::make_shared<Signals>(videoManager, audioManager, gpsManager, aaSignals, nightManager, bluetoothManager);
}

RPI::start(){

}

RPI::stop(){

}

#endif

21 changes: 9 additions & 12 deletions src/autoapp/Service/AndroidAutoEntity.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ AndroidAutoEntity::AndroidAutoEntity(asio::io_service &ioService,
configuration::IConfiguration::Pointer configuration,
ServiceList serviceList,
IPinger::Pointer pinger,
Signals::Pointer signals,
IPlatform::Pointer Device,
AudioFocusRequest::Pointer audioFocusRequest)
: strand_(ioService),
cryptor_(std::move(cryptor)),
Expand All @@ -40,7 +40,7 @@ AndroidAutoEntity::AndroidAutoEntity(asio::io_service &ioService,
serviceList_(std::move(serviceList)),
pinger_(std::move(pinger)),
eventHandler_(nullptr),
signals_(signals),
device(Device),
audioFocusRequest_(std::move(audioFocusRequest)) {
}

Expand All @@ -56,14 +56,13 @@ void AndroidAutoEntity::start(IAndroidAutoEntityEventHandler &eventHandler) {
std::for_each(serviceList_.begin(), serviceList_.end(), [](IService::Pointer &service) { service->start(); });
this->schedulePing();

signals_->audioManager->registerFocusCallback([this](aasdk::messenger::ChannelId channelId,
device->signals->audioManager->registerFocusCallback([this](aasdk::messenger::ChannelId channelId,
aasdk::proto::enums::AudioFocusState_Enum focus) {
this->onAudioFocusResponse(channelId,
focus);
});
signals_->aaSignals->connected.emit(true);
signals_->videoManager->start();
signals_->audioManager->start();
device->start();


auto versionRequestPromise = aasdk::channel::SendPromise::defer(strand_);
versionRequestPromise->then([]() {}, [&](const aasdk::error::Error &e) { onChannelError(e); });
Expand All @@ -83,9 +82,7 @@ void AndroidAutoEntity::stop() {
messenger_->stop();
transport_->stop();
cryptor_->deinit();
signals_->videoManager->stop();
signals_->audioManager->stop();
signals_->aaSignals->connected.emit(false);
device->stop();
} catch (...) {
LOG(INFO) << "[AndroidAutoEntity] exception in stop.";
}
Expand Down Expand Up @@ -220,19 +217,19 @@ void AndroidAutoEntity::onAudioFocusRequest(const aasdk::proto::messages::AudioF

case aasdk::proto::enums::AudioFocusType_Enum_NONE:break;
case aasdk::proto::enums::AudioFocusType_Enum_GAIN:
signals_->audioManager->requestFocus(aasdk::messenger::ChannelId::MEDIA_AUDIO,
device->signals->audioManager->requestFocus(aasdk::messenger::ChannelId::MEDIA_AUDIO,
request.audio_focus_type());
break;
case aasdk::proto::enums::AudioFocusType_Enum_GAIN_TRANSIENT:
// signals_.audioManager->requestFocus(aasdk::messenger::ChannelId::SYSTEM_AUDIO,
// request.audio_focus_type());
// break;
case aasdk::proto::enums::AudioFocusType_Enum_GAIN_TRANSIENT_MAY_DUCK:
signals_->audioManager->requestFocus(aasdk::messenger::ChannelId::SPEECH_AUDIO,
device->signals->audioManager->requestFocus(aasdk::messenger::ChannelId::SPEECH_AUDIO,
request.audio_focus_type());
break;
case aasdk::proto::enums::AudioFocusType_Enum_RELEASE:
signals_->audioManager->releaseFocus(aasdk::messenger::ChannelId::NONE);
device->signals->audioManager->releaseFocus(aasdk::messenger::ChannelId::NONE);
// onAudioFocusResponse(aasdk::messenger::ChannelId::NONE,
// aasdk::proto::enums::AudioFocusState_Enum::AudioFocusState_Enum_LOSS);
break;
Expand Down
6 changes: 3 additions & 3 deletions src/autoapp/Service/AndroidAutoEntityFactory.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -33,11 +33,11 @@ namespace autoapp::service {

AndroidAutoEntityFactory::AndroidAutoEntityFactory(asio::io_service &ioService,
configuration::IConfiguration::Pointer configuration,
IServiceFactory &serviceFactory, Signals::Pointer signals)
IServiceFactory &serviceFactory, IPlatform::Pointer Device)
: ioService_(ioService),
configuration_(std::move(configuration)),
serviceFactory_(serviceFactory),
signals_(signals) {
device(Device) {

}

Expand Down Expand Up @@ -76,7 +76,7 @@ IAndroidAutoEntity::Pointer AndroidAutoEntityFactory::create(aasdk::transport::I
configuration_,
std::move(serviceList),
std::move(pinger),
signals_,
device,
std::move(audioFocusRequest));
}

Expand Down
4 changes: 2 additions & 2 deletions src/autoapp/Service/SensorService.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -127,10 +127,10 @@ void SensorService::sendNightData(bool isNight) {
aasdk::proto::messages::SensorEventIndication indication;

if (isNight) {
LOG(INFO) << "[SensorService] Mode night triggered";
LOG(DEBUG) << "[SensorService] Mode night triggered";
indication.add_night_mode()->set_is_night(true);
} else {
LOG(INFO) << "[SensorService] Mode day triggered";
LOG(DEBUG) << "[SensorService] Mode day triggered";
indication.add_night_mode()->set_is_night(false);
}

Expand Down
2 changes: 1 addition & 1 deletion src/autoapp/autoapp.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -167,7 +167,7 @@ int main(int argc, char *argv[]) {
aasdk::usb::AccessoryModeQueryChainFactory queryChainFactory(usbWrapper, ioService, queryFactory);
autoapp::service::ServiceFactory serviceFactory(ioService, configuration, device->signals);
autoapp::service::AndroidAutoEntityFactory
androidAutoEntityFactory(ioService, configuration, serviceFactory, device->signals);
androidAutoEntityFactory(ioService, configuration, serviceFactory, device);
auto usbHub(std::make_shared<aasdk::usb::USBHub>(usbWrapper, ioService, queryChainFactory));
auto connectedAccessoriesEnumerator
(std::make_shared<aasdk::usb::ConnectedAccessoriesEnumerator>(usbWrapper, ioService, queryChainFactory));
Expand Down

0 comments on commit e5196fc

Please sign in to comment.