Skip to content

Commit

Permalink
Implement_PCM_Streaming_Capabilities_support
Browse files Browse the repository at this point in the history
Add pcmStreamCapabilities in MOBILE_API.cml, hmi_capabilities.json,
smart_object_keys.h,

Add pcm_stream_capabilities_, pcm_stream_capabilities() in
hmi_capabilities.h

Add set_stream_pcm_capabilities() in hmi_capabilities.cc

Add pcm_stream_capabilities response parameters in
register_app_interface_request()

Implement: APPLINK-23181
  • Loading branch information
VProdanov authored and VProdanov committed Apr 28, 2016
1 parent d7c4c0c commit 88e0560
Show file tree
Hide file tree
Showing 8 changed files with 92 additions and 3 deletions.
8 changes: 7 additions & 1 deletion src/appMain/hmi_capabilities.json
Original file line number Diff line number Diff line change
Expand Up @@ -312,7 +312,13 @@
{
"samplingRate" : "44KHZ",
"bitsPerSample" : "RATE_8_BIT",
"audioType" : "PCM"
"audioType" : "PCM"
},
"pcmStreamCapabilities":
{
"samplingRate" : "16KHZ",
"bitsPerSample" : "RATE_16_BIT",
"audioType" : "PCM"
},
"hmiZoneCapabilities":"FRONT",
"softButtonCapabilities":
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -303,13 +303,28 @@ class HMICapabilities {
void set_audio_pass_thru_capabilities(
const smart_objects::SmartObject& audio_pass_thru_capabilities);

/*
* @brief Sets supported pcm_stream capabilities
*
* @param supported pcm stream capabilities
*/
void set_pcm_stream_capabilities(
const smart_objects::SmartObject& pcm_stream_capabilities);

/*
* @brief Retrieves information about the audio_pass_thru capabilities
*
* @return Currently supported audio_pass_thru capabilities
*/
inline const smart_objects::SmartObject* audio_pass_thru_capabilities() const;

/*
* @brief Retrieves information about the pcm_stream capabilities
*
* @return Currently supported pcm_streaming capabilities
*/
inline const smart_objects::SmartObject* pcm_stream_capabilities() const;

/*
* @brief Retrieves information about the preset bank capabilities
*
Expand Down Expand Up @@ -463,6 +478,7 @@ class HMICapabilities {
smart_objects::SmartObject* vr_capabilities_;
smart_objects::SmartObject* speech_capabilities_;
smart_objects::SmartObject* audio_pass_thru_capabilities_;
smart_objects::SmartObject* pcm_stream_capabilities_;
smart_objects::SmartObject* prerecorded_speech_;
std::string ccpu_version_;
bool is_navigation_supported_;
Expand Down Expand Up @@ -541,6 +557,11 @@ HMICapabilities::audio_pass_thru_capabilities() const {
return audio_pass_thru_capabilities_;
}

const smart_objects::SmartObject* HMICapabilities::pcm_stream_capabilities()
const {
return pcm_stream_capabilities_;
}

const smart_objects::SmartObject* HMICapabilities::preset_bank_capabilities()
const {
return preset_bank_capabilities_;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -157,6 +157,8 @@ extern const char* system_context;
extern const char* speech_capabilities;
extern const char* vr_capabilities;
extern const char* audio_pass_thru_capabilities;
extern const char* pcm_stream_capabilities;

// PutFile
extern const char* sync_file_name;
extern const char* file_name;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -464,6 +464,10 @@ void RegisterAppInterfaceRequest::SendRegisterAppInterfaceResponseToMobile() {
*hmi_capabilities.audio_pass_thru_capabilities();
}
}
if (hmi_capabilities.pcm_stream_capabilities() ) {
response_params[strings::pcm_stream_capabilities] =
*hmi_capabilities.pcm_stream_capabilities();
}
if (hmi_capabilities.vehicle_type()) {
response_params[hmi_response::vehicle_type] =
*hmi_capabilities.vehicle_type();
Expand Down
49 changes: 47 additions & 2 deletions src/components/application_manager/src/hmi_capabilities.cc
Original file line number Diff line number Diff line change
Expand Up @@ -132,15 +132,21 @@ std::map<std::string, hmi_apis::Common_ImageType::eType> image_type_enum = {
{"DYNAMIC", hmi_apis::Common_ImageType::DYNAMIC}};

std::map<std::string, hmi_apis::Common_SamplingRate::eType> sampling_rate_enum =
{{"8KHZ", hmi_apis::Common_SamplingRate::RATE_8KHZ},
{{"RATE_8KHZ", hmi_apis::Common_SamplingRate::RATE_8KHZ},
{"8KHZ", hmi_apis::Common_SamplingRate::RATE_8KHZ},
{"RATE_16KHZ", hmi_apis::Common_SamplingRate::RATE_16KHZ},
{"16KHZ", hmi_apis::Common_SamplingRate::RATE_16KHZ},
{"RATE_22KHZ", hmi_apis::Common_SamplingRate::RATE_22KHZ},
{"22KHZ", hmi_apis::Common_SamplingRate::RATE_22KHZ},
{"RATE_44KHZ", hmi_apis::Common_SamplingRate::RATE_44KHZ},
{"44KHZ", hmi_apis::Common_SamplingRate::RATE_44KHZ}};

std::map<std::string, hmi_apis::Common_BitsPerSample::eType>
bit_per_sample_enum = {
{"RATE_8_BIT", hmi_apis::Common_BitsPerSample::RATE_8_BIT},
{"RATE_16_BIT", hmi_apis::Common_BitsPerSample::RATE_16_BIT}};
{"8_BIT", hmi_apis::Common_BitsPerSample::RATE_8_BIT},
{"RATE_16_BIT", hmi_apis::Common_BitsPerSample::RATE_16_BIT},
{"16_BIT", hmi_apis::Common_BitsPerSample::RATE_16_BIT}};

std::map<std::string, hmi_apis::Common_AudioType::eType> audio_type_enum = {
{"PCM", hmi_apis::Common_AudioType::PCM}};
Expand Down Expand Up @@ -225,6 +231,7 @@ HMICapabilities::HMICapabilities(ApplicationManager& app_mngr)
, vr_capabilities_(NULL)
, speech_capabilities_(NULL)
, audio_pass_thru_capabilities_(NULL)
, pcm_stream_capabilities_(NULL)
, prerecorded_speech_(NULL)
, is_navigation_supported_(false)
, is_phone_call_supported_(false)
Expand Down Expand Up @@ -258,6 +265,7 @@ HMICapabilities::~HMICapabilities() {
delete vr_capabilities_;
delete speech_capabilities_;
delete audio_pass_thru_capabilities_;
delete pcm_stream_capabilities_;
delete prerecorded_speech_;
}

Expand Down Expand Up @@ -527,6 +535,15 @@ void HMICapabilities::set_audio_pass_thru_capabilities(
new smart_objects::SmartObject(audio_pass_thru_capabilities);
}

void HMICapabilities::set_pcm_stream_capabilities(
const smart_objects::SmartObject& pcm_stream_capabilities) {
if (pcm_stream_capabilities_) {
delete pcm_stream_capabilities_;
}
pcm_stream_capabilities_ = new smart_objects::SmartObject(
pcm_stream_capabilities);
}

void HMICapabilities::set_preset_bank_capabilities(
const smart_objects::SmartObject& preset_bank_capabilities) {
if (preset_bank_capabilities_) {
Expand Down Expand Up @@ -776,6 +793,34 @@ bool HMICapabilities::load_capabilities_from_file() {
set_audio_pass_thru_capabilities(audio_capabilities_so);
}

if (check_existing_json_member(ui, "pcmStreamCapabilities")) {
Json::Value pcm_capabilities = ui.get("pcmStreamCapabilities", "");
smart_objects::SmartObject pcm_capabilities_so =
smart_objects::SmartObject(smart_objects::SmartType_Map);

if (check_existing_json_member(pcm_capabilities, "samplingRate")) {
pcm_capabilities_so["samplingRate"] =
sampling_rate_enum.find(pcm_capabilities.get("samplingRate", "")
.asString())
->second;
}
if (check_existing_json_member(pcm_capabilities, "bitsPerSample")) {
pcm_capabilities_so["bitsPerSample"] =
bit_per_sample_enum.find(
pcm_capabilities.get("bitsPerSample", "")
.asString())
->second;
}
if (check_existing_json_member(pcm_capabilities, "audioType")) {
pcm_capabilities_so["audioType"] =
audio_type_enum.find(pcm_capabilities.get("audioType", "")
.asString())
->second;
}

set_pcm_stream_capabilities(pcm_capabilities_so);
}

if (check_existing_json_member(ui, "hmiZoneCapabilities")) {
smart_objects::SmartObject hmi_zone_capabilities_so =
smart_objects::SmartObject(smart_objects::SmartType_Array);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -124,6 +124,7 @@ const char* system_context = "systemContext";
const char* speech_capabilities = "speechCapabilities";
const char* vr_capabilities = "vrCapabilities";
const char* audio_pass_thru_capabilities = "audioPassThruCapabilities";
const char* pcm_stream_capabilities = "pcmStreamCapabilities";
// PutFile
const char* sync_file_name = "syncFileName";
const char* file_name = "fileName";
Expand Down
6 changes: 6 additions & 0 deletions src/components/application_manager/test/hmi_capabilities.json
Original file line number Diff line number Diff line change
Expand Up @@ -314,6 +314,12 @@
"bitsPerSample" : "RATE_8_BIT",
"audioType" : "PCM"
},
"pcmStreamCapabilities":
{
"samplingRate" : "16KHZ",
"bitsPerSample" : "RATE_16_BIT",
"audioType" : "PCM"
},
"hmiZoneCapabilities":"FRONT",
"softButtonCapabilities":
[
Expand Down
4 changes: 4 additions & 0 deletions src/components/interfaces/MOBILE_API.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2518,6 +2518,10 @@
<description>See AudioPassThruCapability</description>
</param>

<param name="pcmStreamCapabilities" type="AudioPassThruCapabilities" array="false" mandatory="false">
<description>See AudioPassThruCapability</description>
</param>

<param name="vehicleType" type="VehicleType" mandatory="false">
<description>Specifies the vehicle's type. See VehicleType.</description>
</param>
Expand Down

0 comments on commit 88e0560

Please # to comment.