summaryrefslogtreecommitdiff
path: root/src/components/config_profile/src/profile.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/components/config_profile/src/profile.cc')
-rw-r--r--src/components/config_profile/src/profile.cc160
1 files changed, 154 insertions, 6 deletions
diff --git a/src/components/config_profile/src/profile.cc b/src/components/config_profile/src/profile.cc
index e5a32f4560..dd0dc50f44 100644
--- a/src/components/config_profile/src/profile.cc
+++ b/src/components/config_profile/src/profile.cc
@@ -33,18 +33,18 @@
#include "config_profile/profile.h"
#include <errno.h>
-#include <numeric>
-#include <string.h>
#include <stdlib.h>
-#include <sstream>
+#include <string.h>
#include <algorithm>
+#include <numeric>
+#include <sstream>
#include <string>
#include "config_profile/ini_file.h"
+#include "utils/file_system.h"
#include "utils/logger.h"
#include "utils/threads/thread.h"
-#include "utils/file_system.h"
#ifdef ENABLE_SECURITY
#include <openssl/ssl.h>
@@ -97,6 +97,7 @@ const char* kTransportRequiredForResumptionSection =
const char* kLowBandwidthTransportResumptionLevelSection =
"LowBandwidthTransportResumptionLevel";
const char* kAppServicesSection = "AppServices";
+const char* kRCModuleConsentSection = "RCModuleConsent";
const char* kSDLVersionKey = "SDLVersion";
const char* kHmiCapabilitiesKey = "HMICapabilities";
@@ -184,6 +185,13 @@ const char* kAppHmiLevelNoneRequestsTimeScaleKey =
const char* kPendingRequestsAmoundKey = "PendingRequestsAmount";
const char* kSupportedDiagModesKey = "SupportedDiagModes";
const char* kTransportManagerDisconnectTimeoutKey = "DisconnectTimeout";
+const char* kBluetoothUUIDKey = "BluetoothUUID";
+const char* kAOAFilterManufacturerKey = "AOAFilterManufacturer";
+const char* kAOAFilterModelNameKey = "AOAFilterModelName";
+const char* kAOAFilterDescriptionKey = "AOAFilterDescription";
+const char* kAOAFilterVersionKey = "AOAFilterVersion";
+const char* kAOAFilterURIKey = "AOAFilterURI";
+const char* kAOAFilterSerialNumber = "AOAFilterSerialNumber";
const char* kTTSDelimiterKey = "TTSDelimiter";
const char* kRecordingFileNameKey = "RecordingFileName";
const char* kRecordingFileSourceKey = "RecordingFileSource";
@@ -240,6 +248,7 @@ const char* kSecondaryTransportForWiFiKey = "SecondaryTransportForWiFi";
const char* kAudioServiceTransportsKey = "AudioServiceTransports";
const char* kVideoServiceTransportsKey = "VideoServiceTransports";
const char* kRpcPassThroughTimeoutKey = "RpcPassThroughTimeout";
+const char* kPeriodForConsentExpirationKey = "PeriodForConsentExpiration";
const char* kDefaultTransportRequiredForResumptionKey =
"DefaultTransportRequiredForResumption";
@@ -396,7 +405,30 @@ const std::string kAllowedSymbols =
const bool kDefaultMultipleTransportsEnabled = false;
const char* kDefaultLowBandwidthResumptionLevel = "NONE";
const uint32_t kDefaultRpcPassThroughTimeout = 10000;
+const uint16_t kDefaultPeriodForConsentExpiration = 30;
const char* kDefaultHMIOriginId = "HMI_ID";
+const std::vector<uint8_t> kDefaultBluetoothUUID = {0x93,
+ 0x6D,
+ 0xA0,
+ 0x1F,
+ 0x9A,
+ 0xBD,
+ 0x4D,
+ 0x9D,
+ 0x80,
+ 0xC7,
+ 0x02,
+ 0xAF,
+ 0x85,
+ 0xC8,
+ 0x22,
+ 0xA8};
+const char* kDefaultAOAFilterManufacturer = "SDL";
+const char* kDefaultAOAFilterModelName = "Core";
+const char* kDefaultAOAFilterDescription = "SmartDeviceLink Core Component USB";
+const char* kDefaultAOAFilterVersion = "1.0";
+const char* kDefaultAOAFilterURI = "http://www.smartdevicelink.org";
+const char* kDefaultAOAFilterSerialNumber = "N000000";
} // namespace
namespace profile {
@@ -513,7 +545,8 @@ Profile::Profile()
, low_voltage_signal_offset_(kDefaultLowVoltageSignalOffset)
, wake_up_signal_offset_(kDefaultWakeUpSignalOffset)
, ignition_off_signal_offset_(kDefaultIgnitionOffSignalOffset)
- , rpc_pass_through_timeout_(kDefaultRpcPassThroughTimeout) {
+ , rpc_pass_through_timeout_(kDefaultRpcPassThroughTimeout)
+ , period_for_consent_expiration_(kDefaultPeriodForConsentExpiration) {
// SDL version
ReadStringValue(
&sdl_version_, kDefaultSDLVersion, kMainSection, kSDLVersionKey);
@@ -806,6 +839,34 @@ uint16_t Profile::cloud_app_max_retry_attempts() const {
return cloud_app_max_retry_attempts_;
}
+const uint8_t* Profile::bluetooth_uuid() const {
+ return bluetooth_uuid_.data();
+}
+
+const std::string& Profile::aoa_filter_manufacturer() const {
+ return aoa_filter_manufacturer_;
+}
+
+const std::string& Profile::aoa_filter_model_name() const {
+ return aoa_filter_model_name_;
+}
+
+const std::string& Profile::aoa_filter_description() const {
+ return aoa_filter_description_;
+}
+
+const std::string& Profile::aoa_filter_version() const {
+ return aoa_filter_version_;
+}
+
+const std::string& Profile::aoa_filter_uri() const {
+ return aoa_filter_uri_;
+}
+
+const std::string& Profile::aoa_filter_serial_number() const {
+ return aoa_filter_serial_number_;
+}
+
const std::string& Profile::tts_delimiter() const {
return tts_delimiter_;
}
@@ -1089,6 +1150,10 @@ uint32_t Profile::rpc_pass_through_timeout() const {
return rpc_pass_through_timeout_;
}
+uint16_t Profile::period_for_consent_expiration() const {
+ return period_for_consent_expiration_;
+}
+
const std::vector<std::string>& Profile::secondary_transports_for_bluetooth()
const {
return secondary_transports_for_bluetooth_;
@@ -1821,6 +1886,64 @@ void Profile::UpdateValues() {
kCloudAppMaxRetryAttemptsKey,
kCloudAppTransportSection);
+ bool read_result = true;
+ bluetooth_uuid_ = ReadUint8Container(
+ kTransportManagerSection, kBluetoothUUIDKey, &read_result);
+ if (!read_result || bluetooth_uuid_.size() != 16) {
+ bluetooth_uuid_ = kDefaultBluetoothUUID;
+ }
+
+ ReadStringValue(&aoa_filter_manufacturer_,
+ kDefaultAOAFilterManufacturer,
+ kTransportManagerSection,
+ kAOAFilterManufacturerKey);
+
+ LOG_UPDATED_VALUE(aoa_filter_manufacturer_,
+ kAOAFilterManufacturerKey,
+ kTransportManagerSection);
+
+ ReadStringValue(&aoa_filter_model_name_,
+ kDefaultAOAFilterModelName,
+ kTransportManagerSection,
+ kAOAFilterModelNameKey);
+
+ LOG_UPDATED_VALUE(
+ aoa_filter_model_name_, kAOAFilterModelNameKey, kTransportManagerSection);
+
+ ReadStringValue(&aoa_filter_description_,
+ kDefaultAOAFilterDescription,
+ kTransportManagerSection,
+ kAOAFilterDescriptionKey);
+
+ LOG_UPDATED_VALUE(aoa_filter_description_,
+ kAOAFilterDescriptionKey,
+ kTransportManagerSection);
+
+ ReadStringValue(&aoa_filter_version_,
+ kDefaultAOAFilterVersion,
+ kTransportManagerSection,
+ kAOAFilterVersionKey);
+
+ LOG_UPDATED_VALUE(
+ aoa_filter_version_, kAOAFilterVersionKey, kTransportManagerSection);
+
+ ReadStringValue(&aoa_filter_uri_,
+ kDefaultAOAFilterURI,
+ kTransportManagerSection,
+ kAOAFilterURIKey);
+
+ LOG_UPDATED_VALUE(
+ aoa_filter_uri_, kAOAFilterURIKey, kTransportManagerSection);
+
+ ReadStringValue(&aoa_filter_serial_number_,
+ kDefaultAOAFilterSerialNumber,
+ kTransportManagerSection,
+ kAOAFilterSerialNumber);
+
+ LOG_UPDATED_VALUE(aoa_filter_serial_number_,
+ kAOAFilterSerialNumber,
+ kTransportManagerSection);
+
// Event MQ
ReadStringValue(
&event_mq_name_, kDefaultEventMQ, kTransportManagerSection, kEventMQKey);
@@ -2263,6 +2386,15 @@ void Profile::UpdateValues() {
kRpcPassThroughTimeoutKey,
kAppServicesSection);
+ ReadUIntValue(&period_for_consent_expiration_,
+ kDefaultPeriodForConsentExpiration,
+ kRCModuleConsentSection,
+ kPeriodForConsentExpirationKey);
+
+ LOG_UPDATED_VALUE(period_for_consent_expiration_,
+ kPeriodForConsentExpirationKey,
+ kRCModuleConsentSection);
+
{ // Secondary Transports and ServicesMap
struct KeyPair {
std::vector<std::string>* ini_vector;
@@ -2449,6 +2581,10 @@ int32_t hex_to_int(const std::string& value) {
return static_cast<int32_t>(strtol(value.c_str(), NULL, 16));
}
+uint8_t hex_to_uint8(const std::string& value) {
+ return static_cast<uint8_t>(strtol(value.c_str(), NULL, 16));
+}
+
std::string trim_string(const std::string& str) {
const char* delims = " \t";
@@ -2460,7 +2596,7 @@ std::string trim_string(const std::string& str) {
return str.substr(start, end - start + 1);
}
-}
+} // namespace
std::vector<int> Profile::ReadIntContainer(const char* const pSection,
const char* const pKey,
@@ -2474,6 +2610,18 @@ std::vector<int> Profile::ReadIntContainer(const char* const pSection,
return value_list;
}
+std::vector<uint8_t> Profile::ReadUint8Container(const char* const pSection,
+ const char* const pKey,
+ bool* out_result) const {
+ const std::vector<std::string> string_list =
+ ReadStringContainer(pSection, pKey, out_result);
+ std::vector<uint8_t> value_list;
+ value_list.resize(string_list.size());
+ std::transform(
+ string_list.begin(), string_list.end(), value_list.begin(), hex_to_uint8);
+ return value_list;
+}
+
std::vector<std::string> Profile::ReadStringContainer(
const char* const pSection,
const char* const pKey,