blob: 2f6edf0e8d1e445d0301b868b4bf4527e1f11530
1 | #include "CAudioCustomerCtrl.h" |
2 | #include <dlfcn.h> |
3 | #include "CTvLog.h" |
4 | #include "tvsetting/audio_cfg.h" |
5 | |
6 | CAudioCustomerCtrl::CAudioCustomerCtrl() |
7 | { |
8 | gExternalDacLibHandler = NULL; |
9 | mpDacMuteFun = NULL; |
10 | mpDacMainVolFun = NULL; |
11 | mpDacBalanceFun = NULL; |
12 | mpSetSourceTypeFun = NULL; |
13 | } |
14 | |
15 | CAudioCustomerCtrl::~CAudioCustomerCtrl() |
16 | { |
17 | UnLoadExternalDacLib(); |
18 | } |
19 | |
20 | int CAudioCustomerCtrl::UnLoadExternalDacLib(void) |
21 | { |
22 | if (gExternalDacLibHandler != NULL) { |
23 | dlclose(gExternalDacLibHandler); |
24 | gExternalDacLibHandler = NULL; |
25 | } |
26 | |
27 | mpDacMuteFun = NULL; |
28 | mpDacMainVolFun = NULL; |
29 | mpDacBalanceFun = NULL; |
30 | mpSetSourceTypeFun = NULL; |
31 | |
32 | return 0; |
33 | } |
34 | |
35 | int CAudioCustomerCtrl::LoadExternalDacLib(void) |
36 | { |
37 | char *error; |
38 | |
39 | LOGD("%s, entering...\n", __FUNCTION__); |
40 | |
41 | if (gExternalDacLibHandler != NULL) { |
42 | return 0; |
43 | } |
44 | |
45 | const char *config_value = GetAudExtDacLibPath(); |
46 | gExternalDacLibHandler = dlopen(config_value, RTLD_NOW); |
47 | if (!gExternalDacLibHandler) { |
48 | LOGE("%s, failed to load external dac lib (%s)\n", __FUNCTION__, config_value); |
49 | goto Error; |
50 | } |
51 | |
52 | mpDacMuteFun = (int(*)(int))dlsym(gExternalDacLibHandler, "HandleDacMute"); |
53 | if (mpDacMuteFun == NULL) { |
54 | LOGE("%s, fail find fun mpDacMuteFun()\n", __FUNCTION__); |
55 | goto Error; |
56 | } |
57 | mpDacMainVolFun = (int(*)(int))dlsym(gExternalDacLibHandler, "HandleDacMainVolume"); |
58 | if (mpDacMainVolFun == NULL) { |
59 | LOGE("%s, fail find fun HandleDacMainVolume()\n", __FUNCTION__); |
60 | goto Error; |
61 | } |
62 | mpDacBalanceFun = (int(*)(int))dlsym(gExternalDacLibHandler, "HandleDacBalance"); |
63 | if (mpDacBalanceFun == NULL) { |
64 | LOGE("%s, fail find fun HandleDacBalance()\n", __FUNCTION__); |
65 | goto Error; |
66 | } |
67 | mpSetSourceTypeFun = (int(*)(int))dlsym(gExternalDacLibHandler, "HandleAudioSourceType"); |
68 | if (mpSetSourceTypeFun == NULL) { |
69 | LOGE("%s, fail find fun HandleAudioSourceType()\n", __FUNCTION__); |
70 | goto Error; |
71 | } |
72 | |
73 | return 0; |
74 | |
75 | Error: // |
76 | mpDacMuteFun = NULL; |
77 | mpDacMainVolFun = NULL; |
78 | mpDacBalanceFun = NULL; |
79 | mpSetSourceTypeFun = NULL; |
80 | |
81 | if (gExternalDacLibHandler != NULL) { |
82 | dlclose(gExternalDacLibHandler); |
83 | gExternalDacLibHandler = NULL; |
84 | } |
85 | return -1; |
86 | } |
87 | |
88 | // 0 mute, 1 unmute |
89 | int CAudioCustomerCtrl::SetMute(int mute) |
90 | { |
91 | int ret = LoadExternalDacLib(); |
92 | if (mpDacMuteFun != NULL) { |
93 | ret = (*mpDacMuteFun)(mute); |
94 | } |
95 | return ret; |
96 | } |
97 | |
98 | int CAudioCustomerCtrl::SetVolumeBar(int vol) |
99 | { |
100 | int ret = LoadExternalDacLib(); |
101 | if (mpDacMainVolFun != NULL) { |
102 | LOGD("%s, call external dac lib HandleDacMainVolume (para = %d).\n", __FUNCTION__, vol); |
103 | ret = (*mpDacMainVolFun)(vol); |
104 | } |
105 | return ret; |
106 | } |
107 | |
108 | int CAudioCustomerCtrl::SetBlance(int balance) |
109 | { |
110 | int ret = LoadExternalDacLib(); |
111 | if (mpDacBalanceFun != NULL) { |
112 | LOGD("%s, call external dac lib HandleDacBalance (para = %d).\n", __FUNCTION__, balance); |
113 | ret = (*mpDacBalanceFun)(balance); |
114 | } |
115 | return ret; |
116 | } |
117 | |
118 | int CAudioCustomerCtrl::SetSource(int source) |
119 | { |
120 | int ret = LoadExternalDacLib(); |
121 | if (mpSetSourceTypeFun != NULL) { |
122 | LOGD("%s, call external dac lib HandleAudioSourceType (para = %d).\n", __FUNCTION__, source); |
123 | ret = (*mpSetSourceTypeFun)(source); |
124 | } |
125 | return ret; |
126 | } |
127 |