diff options
Diffstat (limited to 'src/components/application_manager/rpc_plugins/rc_rpc_plugin/src/rc_app_extension.cc')
-rw-r--r-- | src/components/application_manager/rpc_plugins/rc_rpc_plugin/src/rc_app_extension.cc | 58 |
1 files changed, 50 insertions, 8 deletions
diff --git a/src/components/application_manager/rpc_plugins/rc_rpc_plugin/src/rc_app_extension.cc b/src/components/application_manager/rpc_plugins/rc_rpc_plugin/src/rc_app_extension.cc index 5282da8d83..ea9c13113c 100644 --- a/src/components/application_manager/rpc_plugins/rc_rpc_plugin/src/rc_app_extension.cc +++ b/src/components/application_manager/rpc_plugins/rc_rpc_plugin/src/rc_app_extension.cc @@ -31,29 +31,51 @@ */ #include "rc_rpc_plugin/rc_app_extension.h" +#include <algorithm> +#include "rc_rpc_plugin/rc_module_constants.h" +#include "smart_objects/smart_object.h" namespace rc_rpc_plugin { RCAppExtension::RCAppExtension(application_manager::AppExtensionUID uid) : AppExtension(uid) {} -void RCAppExtension::SubscribeToInteriorVehicleData( - const std::string& module_type) { - subscribed_interior_vehicle_data_.insert(module_type); +void RCAppExtension::SubscribeToInteriorVehicleData(const ModuleUid& module) { + subscribed_interior_vehicle_data_.insert(module); } void RCAppExtension::UnsubscribeFromInteriorVehicleData( + const ModuleUid& module) { + subscribed_interior_vehicle_data_.erase(module); +} + +void RCAppExtension::UnsubscribeFromInteriorVehicleDataOfType( const std::string& module_type) { - subscribed_interior_vehicle_data_.erase(module_type); + for (auto& item : subscribed_interior_vehicle_data_) { + if (module_type == item.first) { + subscribed_interior_vehicle_data_.erase(item); + } + } } void RCAppExtension::UnsubscribeFromInteriorVehicleData() { subscribed_interior_vehicle_data_.clear(); } -bool RCAppExtension::IsSubscibedToInteriorVehicleData( +bool RCAppExtension::IsSubscribedToInteriorVehicleDataOfType( const std::string& module_type) { - std::set<std::string>::iterator it = - subscribed_interior_vehicle_data_.find(module_type); + auto it = std::find_if(subscribed_interior_vehicle_data_.begin(), + subscribed_interior_vehicle_data_.end(), + [&module_type](ModuleUid module) -> bool { + return module_type == module.first; + }); + + return (it != subscribed_interior_vehicle_data_.end()); +} + +bool RCAppExtension::IsSubscribedToInteriorVehicleData( + const ModuleUid& module) { + std::set<ModuleUid>::iterator it = + subscribed_interior_vehicle_data_.find(module); return (it != subscribed_interior_vehicle_data_.end()); } @@ -65,9 +87,29 @@ void RCAppExtension::ProcessResumption( const ns_smart_device_link::ns_smart_objects::SmartObject& resumption_data) {} -std::set<std::string> RCAppExtension::InteriorVehicleDataSubscriptions() const { +std::set<ModuleUid> RCAppExtension::InteriorVehicleDataSubscriptions() const { return subscribed_interior_vehicle_data_; } +Grid RCAppExtension::GetUserLocation() const { + return user_location_; +} + +void RCAppExtension::SetUserLocation( + const ns_smart_device_link::ns_smart_objects::SmartObject& user_location) { + const auto grid = user_location[strings::kGrid]; + const int32_t col = grid[strings::kCol].asInt(); + const int32_t row = grid[strings::kRow].asInt(); + const int32_t level = grid[strings::kLevel].asInt(); + const int32_t colspan = grid[strings::kColspan].asInt(); + const int32_t rowspan = grid[strings::kRowspan].asInt(); + const int32_t levelspan = grid[strings::kLevelspan].asInt(); + user_location_ = Grid(col, row, level, colspan, rowspan, levelspan); +} + +void RCAppExtension::SetUserLocation(const Grid& grid) { + user_location_ = grid; +} + RCAppExtension::~RCAppExtension() {} } // namespace rc_rpc_plugin |