protected:
void SetRouteToSpeaker();
+ void SetRouteToMicrophone();
int32_t WritePcmFromFile(pcm_handle pcm_h);
+ int32_t ReadPcmFromDevice(pcm_handle pcm_h);
uint32_t BytesToFrames(uint32_t bytes, audio_pcm_sample_spec_t *spec);
uint32_t BytesToFrames(uint32_t bytes);
uint32_t FramesToBytes(uint32_t frames, audio_pcm_sample_spec_t *spec);
free(info.device_infos);
}
+void AudioHalTest::SetRouteToMicrophone()
+{
+ hal_route_info info;
+ int32_t num_of_devices = 1;
+
+ memset(&info, 0, sizeof(hal_route_info));
+
+ info.role = "media";
+ info.device_infos = (hal_device_info*)malloc(sizeof(hal_device_info) * num_of_devices);
+ if (info.device_infos == nullptr) {
+ cout << "malloc error!!! : " << errno << endl;
+ return;
+ }
+ info.device_infos[0].direction = DIRECTION_IN;
+ info.device_infos[0].type = "builtin-mic";
+ info.device_infos[0].id = 100;
+ info.num_of_devices = num_of_devices;
+
+ int32_t ret = audio_hal_interface_update_route(m_h, &info);
+ cout << "update route : " << ret << endl;
+
+ free(info.device_infos);
+}
+
int32_t AudioHalTest::WritePcmFromFile(pcm_handle pcm_h)
{
int32_t ret = AUDIO_HAL_SUCCESS;
return ret;
}
+int32_t AudioHalTest::ReadPcmFromDevice(pcm_handle pcm_h)
+{
+ int32_t ret = AUDIO_HAL_SUCCESS;
+ uint32_t avail_frames = 0;
+ char buffer[65536];
+ int iter_left = 100;
+
+ cout << "start to record for few seconds..." << endl;
+
+ do {
+ ret = audio_hal_interface_pcm_available(m_h, pcm_h, &avail_frames);
+ if (ret == AUDIO_HAL_ERROR)
+ break;
+
+ if (avail_frames == 0) {
+ usleep(20000); // 20ms
+ continue;
+ }
+
+ ret = audio_hal_interface_pcm_read(m_h, pcm_h, buffer, avail_frames);
+ if (ret == AUDIO_HAL_ERROR)
+ break;
+
+ cout << iter_left << ", read success, avail frames : " << avail_frames << endl;
+ } while (--iter_left);
+
+ cout << "Done!!!" << endl;
+
+ return ret;
+}
+
uint32_t AudioHalTest::BytesToFrames(uint32_t bytes, audio_pcm_sample_spec_t *spec)
{
// ToDo : support various sample format
}
/**
+ * @testcase PcmOpenReadCloseP
+ * @since_tizen 4.0
+ * @author SR(seungbae.shin)
+ * @reviewer SR(sc11.lee)
+ * @type auto
+ * @description Positive, open pcm handle, start pcm handle, read pcm buffers, stop pcm handle and close pcm_handle
+ * @apicovered audio_pcm_open, audio_pcm_start, audio_pcm_avail, audio_pcm_read, audio_pcm_stop, audio_pcm_close
+ * @passcase XXX
+ * @failcase YYY
+ * @precondition None
+ * @postcondition None
+ */
+TEST_F(AudioHalTest, PcmOpenReadCloseP)
+{
+ pcm_handle pcm_h = nullptr;
+
+ SetRouteToMicrophone();
+
+ int32_t ret = audio_hal_interface_pcm_open(m_h, default_card.c_str(), default_device.c_str(),
+ DIRECTION_IN, &m_spec, GetDefaultFrames(), default_periods, &pcm_h);
+ ASSERT_EQ(ret, AUDIO_HAL_SUCCESS);
+
+ ret = audio_hal_interface_pcm_start(m_h, pcm_h);
+ EXPECT_EQ(ret, AUDIO_HAL_SUCCESS);
+
+ ret = ReadPcmFromDevice(pcm_h);
+ EXPECT_EQ(ret, AUDIO_HAL_SUCCESS);
+
+ ret = audio_hal_interface_pcm_stop(m_h, pcm_h);
+ EXPECT_EQ(ret, AUDIO_HAL_SUCCESS);
+
+ ret = audio_hal_interface_pcm_close(m_h, pcm_h);
+ EXPECT_EQ(ret, AUDIO_HAL_SUCCESS);
+}
+
+/**
* @testcase PcmRecoverN
* @since_tizen 4.0
* @author SR(seungbae.shin)