mirror of
https://github.com/openharmony/drivers_peripheral.git
synced 2026-08-24 07:45:51 -04:00
!9271 merge master into master
add start event Created-by: hoperun_wangyupan Commit-by: hoperun_wangyupan Merged-by: openharmony_ci Description: ### 相关的Issue https://gitcode.com/openharmony/drivers_peripheral/issues/7385?ref=&did=4238273#tid-4238273 ### 原因(目的、解决的问题等) ### 描述(做了什么,变更了什么) ### 测试用例(新增、改动、可能影响的功能) See merge request: openharmony/drivers_peripheral!9271
This commit is contained in:
@@ -111,6 +111,7 @@ private:
|
||||
float GetFadeRate(uint32_t currentIndex, const uint32_t durationIndex);
|
||||
int32_t FadeInProcess(const uint32_t durationFrame, int8_t* frameData, const size_t frameLength);
|
||||
int32_t SetOffloadParamsChange(const std::string &offloadParams);
|
||||
int32_t NotifyPlayStatusChange(const std::string &changeType);
|
||||
#ifdef DAUDIO_SUPPORT_SHARED_BUFFER
|
||||
int32_t CreateAshmem(int32_t ashmemLength);
|
||||
int32_t WriteToShmem(const AudioData &data);
|
||||
|
||||
@@ -251,6 +251,37 @@ int32_t AudioRenderInterfaceImpl::IsSupportsDrain(bool &support)
|
||||
return HDF_SUCCESS;
|
||||
}
|
||||
|
||||
int32_t AudioRenderInterfaceImpl::NotifyPlayStatusChange(const std::string &changeType)
|
||||
{
|
||||
cJSON *jParam = cJSON_CreateObject();
|
||||
if (jParam == nullptr) {
|
||||
DHLOGE("Failed to create cJSON object.");
|
||||
return HDF_FAILURE;
|
||||
}
|
||||
cJSON_AddStringToObject(jParam, KEY_DH_ID, std::to_string(devDesc_.pins).c_str());
|
||||
cJSON_AddStringToObject(jParam, "ChangeType", changeType.c_str());
|
||||
char *jsonData = cJSON_PrintUnformatted(jParam);
|
||||
if (jsonData == nullptr) {
|
||||
DHLOGE("Failed to create JSON data.");
|
||||
cJSON_Delete(jParam);
|
||||
return HDF_FAILURE;
|
||||
}
|
||||
std::string content(jsonData);
|
||||
cJSON_Delete(jParam);
|
||||
cJSON_free(jsonData);
|
||||
|
||||
DAudioEvent event = { HDF_AUDIO_EVENT_CHANGE_PLAY_STATUS, content };
|
||||
if (audioExtCallback_ == nullptr) {
|
||||
DHLOGE("Callback is nullptr.");
|
||||
return HDF_FAILURE;
|
||||
}
|
||||
int32_t ret = audioExtCallback_->NotifyEvent(renderId_, event);
|
||||
if (ret != HDF_SUCCESS) {
|
||||
DHLOGE("Notify play status change failed, type: %{public}s.", changeType.c_str());
|
||||
}
|
||||
return HDF_SUCCESS;
|
||||
}
|
||||
|
||||
int32_t AudioRenderInterfaceImpl::Start()
|
||||
{
|
||||
DHLOGI("Start render.");
|
||||
@@ -258,35 +289,15 @@ int32_t AudioRenderInterfaceImpl::Start()
|
||||
DHLOGI("Render status wrong, return false.");
|
||||
return HDF_FAILURE;
|
||||
}
|
||||
|
||||
std::string changeType = firstOpenFlag_ ? HDF_EVENT_START : HDF_EVENT_RESTART;
|
||||
if (firstOpenFlag_) {
|
||||
firstOpenFlag_ = false;
|
||||
} else {
|
||||
cJSON *jParam = cJSON_CreateObject();
|
||||
if (jParam == nullptr) {
|
||||
DHLOGE("Failed to create cJSON object.");
|
||||
return HDF_FAILURE;
|
||||
}
|
||||
cJSON_AddStringToObject(jParam, KEY_DH_ID, std::to_string(devDesc_.pins).c_str());
|
||||
cJSON_AddStringToObject(jParam, "ChangeType", HDF_EVENT_RESTART.c_str());
|
||||
char *jsonData = cJSON_PrintUnformatted(jParam);
|
||||
if (jsonData == nullptr) {
|
||||
DHLOGE("Failed to create JSON data.");
|
||||
cJSON_Delete(jParam);
|
||||
return HDF_FAILURE;
|
||||
}
|
||||
std::string content(jsonData);
|
||||
cJSON_Delete(jParam);
|
||||
cJSON_free(jsonData);
|
||||
DAudioEvent event = { HDF_AUDIO_EVENT_CHANGE_PLAY_STATUS, content};
|
||||
if (audioExtCallback_ == nullptr) {
|
||||
DHLOGE("Callback is nullptr.");
|
||||
return HDF_FAILURE;
|
||||
}
|
||||
int32_t ret = audioExtCallback_->NotifyEvent(renderId_, event);
|
||||
if (ret != HDF_SUCCESS) {
|
||||
DHLOGE("Restart failed.");
|
||||
}
|
||||
}
|
||||
if (NotifyPlayStatusChange(changeType) != HDF_SUCCESS) {
|
||||
return HDF_FAILURE;
|
||||
}
|
||||
|
||||
#ifdef DAUDIO_SUPPORT_SHARED_BUFFER
|
||||
writeIndex_ = 0;
|
||||
writeNum_ = 0;
|
||||
|
||||
+53
-1
@@ -352,7 +352,7 @@ HWTEST_F(AudioRenderInterfaceImplTest, Start_003, TestSize.Level1)
|
||||
EXPECT_EQ(HDF_FAILURE, audioRenderInterfaceImpl_->Start());
|
||||
audioRenderInterfaceImpl_->SetRenderStatus(RENDER_STATUS_OPEN);
|
||||
audioRenderInterfaceImpl_->audioExtCallback_ = sptr<IDAudioCallback>(new MockRevertIDAudioCallback());
|
||||
EXPECT_EQ(HDF_SUCCESS, audioRenderInterfaceImpl_->Start());
|
||||
EXPECT_EQ(HDF_FAILURE, audioRenderInterfaceImpl_->Start());
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -971,6 +971,58 @@ HWTEST_F(AudioRenderInterfaceImplTest, FadeInProcess_001, TestSize.Level1)
|
||||
EXPECT_EQ(HDF_ERR_INVALID_PARAM, audioRenderInterfaceImpl_->FadeInProcess(durationFrame, frameData, errLength));
|
||||
delete[] frameData;
|
||||
}
|
||||
|
||||
/**
|
||||
* @tc.name: NotifyPlayStatusChange_001
|
||||
* @tc.desc: Verify the NotifyPlayStatusChange function when callback is nullptr.
|
||||
* @tc.type: FUNC
|
||||
* @tc.require: AR000H0E6H
|
||||
*/
|
||||
HWTEST_F(AudioRenderInterfaceImplTest, NotifyPlayStatusChange_001, TestSize.Level1)
|
||||
{
|
||||
ASSERT_NE(nullptr, audioRenderInterfaceImpl_);
|
||||
audioRenderInterfaceImpl_->audioExtCallback_ = nullptr;
|
||||
EXPECT_EQ(HDF_FAILURE, audioRenderInterfaceImpl_->NotifyPlayStatusChange(DistributedHardware::HDF_EVENT_START));
|
||||
}
|
||||
|
||||
/**
|
||||
* @tc.name: NotifyPlayStatusChange_002
|
||||
* @tc.desc: Verify the NotifyPlayStatusChange function when NotifyEvent fails.
|
||||
* @tc.type: FUNC
|
||||
* @tc.require: AR000H0E6H
|
||||
*/
|
||||
HWTEST_F(AudioRenderInterfaceImplTest, NotifyPlayStatusChange_002, TestSize.Level1)
|
||||
{
|
||||
ASSERT_NE(nullptr, audioRenderInterfaceImpl_);
|
||||
audioRenderInterfaceImpl_->audioExtCallback_ = sptr<IDAudioCallback>(new MockRevertIDAudioCallback());
|
||||
EXPECT_EQ(HDF_SUCCESS, audioRenderInterfaceImpl_->NotifyPlayStatusChange(DistributedHardware::HDF_EVENT_START));
|
||||
}
|
||||
|
||||
/**
|
||||
* @tc.name: NotifyPlayStatusChange_003
|
||||
* @tc.desc: Verify the NotifyPlayStatusChange function with HDF_EVENT_START.
|
||||
* @tc.type: FUNC
|
||||
* @tc.require: AR000H0E6H
|
||||
*/
|
||||
HWTEST_F(AudioRenderInterfaceImplTest, NotifyPlayStatusChange_003, TestSize.Level1)
|
||||
{
|
||||
ASSERT_NE(nullptr, audioRenderInterfaceImpl_);
|
||||
audioRenderInterfaceImpl_->audioExtCallback_ = sptr<IDAudioCallback>(new MockIDAudioCallback());
|
||||
EXPECT_EQ(HDF_SUCCESS, audioRenderInterfaceImpl_->NotifyPlayStatusChange(DistributedHardware::HDF_EVENT_START));
|
||||
}
|
||||
|
||||
/**
|
||||
* @tc.name: NotifyPlayStatusChange_004
|
||||
* @tc.desc: Verify the NotifyPlayStatusChange function with HDF_EVENT_RESTART.
|
||||
* @tc.type: FUNC
|
||||
* @tc.require: AR000H0E6H
|
||||
*/
|
||||
HWTEST_F(AudioRenderInterfaceImplTest, NotifyPlayStatusChange_004, TestSize.Level1)
|
||||
{
|
||||
ASSERT_NE(nullptr, audioRenderInterfaceImpl_);
|
||||
audioRenderInterfaceImpl_->audioExtCallback_ = sptr<IDAudioCallback>(new MockIDAudioCallback());
|
||||
EXPECT_EQ(HDF_SUCCESS, audioRenderInterfaceImpl_->NotifyPlayStatusChange(DistributedHardware::HDF_EVENT_RESTART));
|
||||
}
|
||||
} // V2_0
|
||||
} // Audio
|
||||
} // Distributedaudio
|
||||
|
||||
@@ -53,6 +53,7 @@ const std::string HDF_EVENT_RESULT_FAILED = "DH_FAILED";
|
||||
|
||||
const std::string HDF_EVENT_RESTART = "restart";
|
||||
const std::string HDF_EVENT_PAUSE = "pause";
|
||||
const std::string HDF_EVENT_START = "start";
|
||||
|
||||
const std::string PRINT_SPK = "spk";
|
||||
const std::string PRINT_MIC = "mic";
|
||||
|
||||
Reference in New Issue
Block a user