summaryrefslogtreecommitdiff
path: root/src/components/application_manager/rpc_plugins/rc_rpc_plugin/src/rc_app_extension.cc
diff options
context:
space:
mode:
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.cc58
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