Skip to content

Commit

Permalink
Seperate out most "Mazda" specific code to Platforms/Mazda, and creat…
Browse files Browse the repository at this point in the history
…e Platforms/RPI to allow building/testing on Linux/Raspberry Pi
  • Loading branch information
silverchris committed Aug 7, 2022
1 parent 2d87ad4 commit 2dd64f6
Show file tree
Hide file tree
Showing 33 changed files with 298 additions and 53 deletions.
14 changes: 10 additions & 4 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ if (NOT DEFINED BUILD_RPI)
set(BUILD_MAZDA ON)
endif ()


if (DEFINED BUILD_MAZDA)
message("BUILD_MAZDA")
add_compile_definitions(BUILD_MAZDA)
Expand All @@ -24,6 +25,8 @@ if (DEFINED BUILD_MAZDA)
set(CMAKE_LINK_SEARCH_START_STATIC ON)
set(OPENSSL_USE_STATIC_LIBS TRUE) #Statically link openssl for Mazda target
set(Protobuf_USE_STATIC_LIBS ON) #Statically link protobuf for Mazda target
elseif (DEFINED BUILD_RPI)
add_compile_definitions(BUILD_RPI)
endif ()

set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake_modules/")
Expand Down Expand Up @@ -122,14 +125,16 @@ endif ()
link_directories(${CMAKE_LIBRARY_OUTPUT_DIRECTORY})

set(autoapp_sources_directory ${sources_directory}/autoapp)
set(autoapp_include_directory)
set(autoapp_include_directory ${include_directory}/autoapp)
file(GLOB_RECURSE autoapp_source_files ${autoapp_sources_directory}/*.cpp)

add_executable(autoapp ${autoapp_source_files})
target_include_directories(autoapp PUBLIC ${CMAKE_CURRENT_BINARY_DIR}/generated/)
target_include_directories(autoapp PRIVATE ${include_directory})

if (DEFINED BUILD_MAZDA)
file(GLOB_RECURSE MAZDA_SRC_FILES ${sources_directory}/Platforms/Mazda/*.cpp)
target_sources(autoapp PRIVATE ${MAZDA_SRC_FILES})
add_subdirectory(src/Mazda/Dbus/com.jci.bca)
target_link_libraries(autoapp com.jci.bca)

Expand Down Expand Up @@ -159,6 +164,9 @@ if (DEFINED BUILD_MAZDA)

add_subdirectory(src/Mazda/Dbus/com.jci.vbs.navi)
target_link_libraries(autoapp com.jci.vbs.navi)
elseif (DEFINED BUILD_RPI)
file(GLOB_RECURSE RPI_SRC_FILES ${sources_directory}/Platforms/RPI/*.cpp)
target_sources(autoapp PRIVATE ${RPI_SRC_FILES})
endif ()

target_compile_options(autoapp PUBLIC "-ffile-prefix-map=${CMAKE_SOURCE_DIR}=.")
Expand All @@ -173,6 +181,7 @@ if (DEFINED BUILD_MAZDA)
target_link_libraries(autoapp nlohmann_json::nlohmann_json)
target_link_libraries(autoapp tinyxml2)
target_link_libraries(autoapp ${DBUS_LIBRARIES})
target_link_libraries(autoapp -static -static-libstdc++ -static-libgcc)
endif ()

target_link_libraries(autoapp
Expand All @@ -184,9 +193,6 @@ target_link_libraries(autoapp
fdk-aac
easylogging++
toml++
-static
-static-libstdc++
-static-libgcc
-pthread
)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@

#include <atomic>
#include <set>
#include <autoapp/Managers/IVideoManager.hpp>
#include <autoapp/Service/VideoService.hpp>
#include <autoapp/Signals/AASignals.hpp>
#include "autoapp/Managers/IVideoManager.hpp"
#include "autoapp/Service/VideoService.hpp"
#include "autoapp/Signals/AASignals.hpp"

#include <com_jci_aapa_objectAdapter.h>
#include <com_jci_bucpsa_objectProxy.h>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
#include <dbus-cxx.h>
#include <nlohmann/json.hpp>

#include <autoapp/Managers/IAudioManager.hpp>
#include "autoapp/Managers/IAudioManager.hpp"

#include <com_xsembedded_ServiceProvider_objectProxy.h>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,15 +9,15 @@

#include <tinyxml2.h>

#include <aasdk_proto/WifiInfoRequestMessage.pb.h>
#include <aasdk_proto/WifiInfoResponseMessage.pb.h>
#include <aasdk_proto/WifiSecurityResponseMessage.pb.h>
#include "external/aasdk/aasdk_proto/WifiInfoRequestMessage.pb.h"
#include "external/aasdk/aasdk_proto/WifiInfoResponseMessage.pb.h"
#include "external/aasdk/aasdk_proto/WifiSecurityResponseMessage.pb.h"

#include <autoapp/Configuration/IConfiguration.hpp>
#include "autoapp/Configuration/IConfiguration.hpp"

#include <com_jci_bca_objectProxy.h>

#include <autoapp/Managers/IBluetoothManager.hpp>
#include "autoapp/Managers/IBluetoothManager.hpp"

class BluetoothManager : public IBluetoothManager {
public:
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
#pragma once

#include <ctime>
#include <autoapp/Managers/IGPSManager.hpp>
#include "autoapp/Managers/IGPSManager.hpp"

#include <com_jci_lds_data_objectProxy.h>
#include <com_jci_lds_control_objectProxy.h>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
#include <vector>
#include <nlohmann/json.hpp>

#include <autoapp/Signals/Signals.hpp>
#include "autoapp/Signals/Signals.hpp"

using HttpServer = SimpleWeb::Server<SimpleWeb::HTTP>;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
#include <set>
#include <dbus-cxx.h>

#include <autoapp/Signals/NavigationSignals.hpp>
#include "autoapp/Signals/NavigationSignals.hpp"

#include <com_jci_navi2IHU_HUDSettings_objectProxy.h>
#include <com_jci_vbs_navi_tmc_objectProxy.h>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
#include <mutex>
#include <asio/io_service.hpp>
#include <asio/basic_waitable_timer.hpp>
#include <autoapp/Managers/INightManager.hpp>
#include "autoapp/Managers/INightManager.hpp"


class NightManager: public INightManager{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@

#include <atomic>
#include <set>
#include <autoapp/Managers/IVideoManager.hpp>
#include <autoapp/Service/VideoService.hpp>
#include "autoapp/Managers/IVideoManager.hpp"
#include "autoapp/Service/VideoService.hpp"

#include <com_jci_nativeguictrl_objectProxy.h>
#include <com_jci_bucpsa_objectProxy.h>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,18 @@
#ifdef BUILD_MAZDA
#include "autoapp/Platform/IPlatform.hpp"
#include <dbus-cxx.h>
#include "autoapp/Managers/VideoManager.hpp"
#include "autoapp/Managers/AAPA.hpp"
#include "autoapp/Managers/AudioManager.hpp"
#include "autoapp/Managers/GPSManager.hpp"
#include "autoapp/Managers/HttpManager.hpp"
#include "autoapp/Managers/BluetoothManager.hpp"
#include "autoapp/Managers/NavigationManager.hpp"

#include "Platforms/Mazda/Managers/VideoManager.hpp"
#include "Platforms/Mazda/Managers/AudioManager.hpp"
#include "Platforms/Mazda/Managers/AAPA.hpp"
#include "Platforms/Mazda/Managers/GPSManager.hpp"
#include "Platforms/Mazda/Managers/HttpManager.hpp"
#include "Platforms/Mazda/Managers/BluetoothManager.hpp"
#include "autoapp/Managers/IVideoManager.hpp"
#include "autoapp/Configuration/Configuration.hpp"
#include "autoapp/Managers/NightManager.hpp"
#include "Platforms/Mazda/Managers/NightManager.hpp"
#include "Platforms/Mazda/Managers/NavigationManager.hpp"


#include <cstdlib>
#include <unistd.h>
Expand Down
24 changes: 24 additions & 0 deletions include/Platforms/RPI/Managers/AudioManager.hpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
#include <set>

#include "autoapp/Managers/IAudioManager.hpp"

#include <thread>
#include <mutex>

using AudioFocusState = aasdk::proto::enums::AudioFocusState;

class AudioManager : public IAudioManager {
private:
public:
AudioManager();

~AudioManager() override;

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

//calling requestAudioFocus directly doesn't work on the audio mgr
void requestFocus(aasdk::messenger::ChannelId channelId, aasdk::proto::enums::AudioFocusType_Enum aa_type) override;
void releaseFocus(aasdk::messenger::ChannelId channelId) override;

};
11 changes: 11 additions & 0 deletions include/Platforms/RPI/Managers/BluetoothManager.hpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
#pragma once
#include "autoapp/Managers/IBluetoothManager.hpp"

class BluetoothManager : public IBluetoothManager {
public:
explicit BluetoothManager();
~BluetoothManager() override;

void start() override;
void stop() override;
};
16 changes: 16 additions & 0 deletions include/Platforms/RPI/Managers/GPSManager.hpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
#pragma once

#include <ctime>
#include "autoapp/Managers/IGPSManager.hpp"

class GPSManager: public IGPSManager{

public:
GPSManager();

~GPSManager() = default;

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

};
18 changes: 18 additions & 0 deletions include/Platforms/RPI/Managers/NightManager.hpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
#pragma once

#include <vector>
#include <functional>
#include <mutex>
#include <asio/io_service.hpp>
#include <asio/basic_waitable_timer.hpp>
#include "autoapp/Managers/INightManager.hpp"


class NightManager: public INightManager{
public:
NightManager();
~NightManager() override = default;

void start() override;
void stop() override;
};
10 changes: 10 additions & 0 deletions include/Platforms/RPI/Managers/RPI.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
#include "Platforms/RPI/RPI.hpp"

#ifdef BUILD_RPI



#endif
RPI::RPI() {

}
19 changes: 19 additions & 0 deletions include/Platforms/RPI/Managers/VideoManager.hpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
#pragma once


#include <atomic>
#include <set>
#include "autoapp/Managers/IVideoManager.hpp"


class VideoManager: public IVideoManager{
public:
VideoManager();
~VideoManager() override;

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

void requestFocus() override ;
void releaseFocus() override ;
};
31 changes: 31 additions & 0 deletions include/Platforms/RPI/RPI.hpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
#pragma once
#ifdef BUILD_RPI
#include "autoapp/Platform/IPlatform.hpp"

#include <Platforms/RPI/Managers/VideoManager.hpp>
#include <Platforms/RPI/Managers/AudioManager.hpp>
#include <Platforms/RPI/Managers/GPSManager.hpp>
#include <Platforms/RPI/Managers/NightManager.hpp>
#include <Platforms/RPI/Managers/BluetoothManager.hpp>


#include <cstdlib>
#include <unistd.h>
#include <fcntl.h>


class RPI: public IPlatform{
public:
RPI();

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

IGPSManager::Pointer gpsManager;
INightManager::Pointer nightManager;
IAudioManager::Pointer audioManager;
IBluetoothManager::Pointer bluetoothManager;

};

#endif
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
#include "autoapp/Managers/AAPA.hpp"
#include <easylogging++.h>
#include "Platforms/Mazda/Managers/AAPA.hpp"
#include "easylogging++.h"

#include <utility>

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
#include <autoapp/Managers/AudioManager.hpp>
#include <easylogging++.h>
#include "Platforms/Mazda/Managers/AudioManager.hpp"
#include "easylogging++.h"
#include <thread>

void AudioManager::onRequestAudioFocusResult(json result, Stream *stream) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#include <autoapp/Managers/BluetoothManager.hpp>
#include "Platforms/Mazda/Managers/BluetoothManager.hpp"

#include <easylogging++.h>
#include "easylogging++.h"
#include <sys/socket.h>
#include <sys/ioctl.h>
#include <net/if.h>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
#include "autoapp/Managers/GPSManager.hpp"
#include <easylogging++.h>
#include "Platforms/Mazda/Managers/GPSManager.hpp"
#include "easylogging++.h"

void GPSManager::update_position(const asio::error_code &error) {
std::lock_guard<std::mutex> lock(timerMutex);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
#include <autoapp/Managers/HttpManager.hpp>
#include <easylogging++.h>
#include "Platforms/Mazda/Managers/HttpManager.hpp"
#include "easylogging++.h"
#include "version.h"

HttpManager::HttpManager(IVideoManager::Pointer videosignals, AASignals::Pointer aasignals)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
#include "autoapp/Managers/NavigationManager.hpp"
#include <easylogging++.h>
#include "Platforms/Mazda/Managers/NavigationManager.hpp"
#include "easylogging++.h"

NavigationManager::NavigationManager(NavigationSignals::Pointer navSignals,
const std::shared_ptr<DBus::Connection> &systemconnection) : navSignals_(std::move(
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
#include <autoapp/Managers/NightManager.hpp>
#include <easylogging++.h>
#include "Platforms/Mazda/Managers/NightManager.hpp"
#include "easylogging++.h"

NightManager::NightManager(asio::io_service &IoService) : timer(IoService) {

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
#include "autoapp/Managers/VideoManager.hpp"
#include <easylogging++.h>
#include "Platforms/Mazda/Managers/VideoManager.hpp"
#include "easylogging++.h"

VideoManager::VideoManager(const std::shared_ptr<DBus::Connection> &session_connection){
gui =
Expand Down
Loading

2 comments on commit 2dd64f6

@YouHusam
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Does this mean we need BUILD_MAZDA=true on cmake?

@silverchris
Copy link
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Does this mean we need BUILD_MAZDA=true on cmake?

No, it sets that if BUILD_RPI isn't set, automagically, as I figured we would most likely be building it for Mazda most of the time anyway.

Just need to build it to run on normal linux for some profiling and testing that I can't do on the limited hardware/software of the CMU lol

Please sign in to comment.