aml_audio_hal: Add more hal tests [1/1]
PD#TV-17788
Problem:
Audio HAL added BYPASS option
Solution:
Added BYPASS option in digital_mode setting
test code.
Also added a generic hal_param test code
to send audio HAL set_param kvpairs for
testing purpose.
Verify:
Verified on u212 with "digital_mode 6" and
audio_client_test_ac3 to get MS12 passthrough
output on AVR.
Change-Id: Ifde21626623e93a5b9373af71d12fb50986470fc
diff --git a/Makefile b/Makefile
index 7851c34..e3bc5eb 100644
--- a/Makefile
+++ b/Makefile
@@ -17,6 +17,7 @@
TEST_DIGITAL_MODE_OBJS=src/digital_mode.o
TEST_ARC_TEST_OBJS=src/test_arc.o
TEST_START_ARC_OBJS=src/start_arc.o
+TEST_HAL_PARAM_OBJS=src/hal_param.o
PROTOC=$(HOST_DIR)/bin/protoc
PROTOC_INC=$(HOST_DIR)/include
@@ -41,7 +42,7 @@
%.o: %.c
$(CC) -c $(CFLAGS) -o $@ $<
-all: audio_server libaudio_client.so audio_client_test audio_client_test_ac3 halplay dap_setting speaker_delay digital_mode test_arc start_arc
+all: audio_server libaudio_client.so audio_client_test audio_client_test_ac3 halplay dap_setting speaker_delay digital_mode test_arc start_arc hal_param
audio_server: $(SERVER_OBJS)
$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^
@@ -73,6 +74,9 @@
start_arc: $(TEST_START_ARC_OBJS)
$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^
+hal_param: $(TEST_HAL_PARAM_OBJS) libaudio_client.so
+ $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^
+
.PHONY: install
install:
install -m 755 -D audio_server -t $(TARGET_DIR)/usr/bin/
@@ -84,6 +88,7 @@
install -m 755 -D digital_mode $(TARGET_DIR)/usr/bin/
install -m 755 -D test_arc $(TARGET_DIR)/usr/bin/
install -m 755 -D start_arc $(TARGET_DIR)/usr/bin/
+ install -m 755 -D hal_param $(TARGET_DIR)/usr/bin/
install -m 644 -D libaudio_client.so -t $(TARGET_DIR)/usr/lib/
install -m 644 -D libaudio_client.so -t $(STAGING_DIR)/usr/lib/
install -m 644 -D include/audio_if_client.h -t $(STAGING_DIR)/usr/include
@@ -103,6 +108,7 @@
rm -f halplay
rm -f test_arc
rm -f start_arc
+ rm -f hal_param
rm -rf $(STAGING_DIR)/usr/include/hardware
rm -rf $(STAGING_DIR)/usr/include/system
rm -f libaudio_client.so
@@ -114,6 +120,7 @@
rm -f $(TARGET_DIR)/usr/bin/digital_mode
rm -f $(TARGET_DIR)/usr/bin/test_arc
rm -f $(TARGET_DIR)/usr/bin/start_arc
+ rm -f $(TARGET_DIR)/usr/bin/hal_param
rm -f $(TARGET_DIR)/usr/lib/libaudio_client.so
rm -f $(STAGING_DIR)/usr/lib/libaudio_client.so
rm -f $(STAGING_DIR)/usr/include/audio_if_client.h
diff --git a/src/digital_mode.c b/src/digital_mode.c
index aac594a..dc7dea6 100644
--- a/src/digital_mode.c
+++ b/src/digital_mode.c
@@ -2,9 +2,10 @@
#include <stdlib.h>
#include <audio_if.h>
-#define DIGITAL_MODE_PCM 0
-#define DIGITAL_MODE_DD 4
-#define DIGITAL_MODE_AUTO 5
+#define DIGITAL_MODE_PCM 0
+#define DIGITAL_MODE_DD 4
+#define DIGITAL_MODE_AUTO 5
+#define DIGITAL_MODE_BYPASS 6
#define DIGITAL_MODE_CMD "hdmi_format="
@@ -22,7 +23,8 @@
mode = atoi(argv[1]);
if ((mode != DIGITAL_MODE_PCM) &&
(mode != DIGITAL_MODE_DD) &&
- (mode != DIGITAL_MODE_AUTO)) {
+ (mode != DIGITAL_MODE_AUTO) &&
+ (mode != DIGITAL_MODE_BYPASS)) {
printf("Invalid mode\n");
return -2;
}
diff --git a/src/hal_param.c b/src/hal_param.c
new file mode 100644
index 0000000..04edbb1
--- /dev/null
+++ b/src/hal_param.c
@@ -0,0 +1,34 @@
+#include <stdio.h>
+#include <audio_if.h>
+
+int main(int argc, char **argv)
+{
+ audio_hw_device_t *device;
+ int ret = audio_hw_load_interface(&device);
+
+ if (argc < 2) {
+ printf("Usage: hal_param <param string (kvpair)>\n");
+ return -1;
+ }
+
+ if (ret) {
+ fprintf(stderr, "audio_hw_load_interface failed: %d\n", ret);
+ return ret;
+ }
+
+ int inited = device->init_check(device);
+ if (inited) {
+ printf("device not inited, quit\n");
+ audio_hw_unload_interface(device);
+ return -1;
+ }
+
+ ret = device->set_parameters(device, argv[1]);
+
+ audio_hw_unload_interface(device);
+
+ printf("Parameters sent to Audio HAL.\n");
+
+ return ret;
+}
+