LibDriver LD3320
Loading...
Searching...
No Matches
driver_ld3320_register_test.c
Go to the documentation of this file.
1
36
38#include <stdlib.h>
39
40static ld3320_handle_t gs_handle;
41
50{
51 uint8_t res;
52 uint8_t len;
53 uint8_t volume_left, volume_left_check;
54 uint8_t volume_right, volume_right_check;
55 char text[1][50];
56 char text_check[1][50];
57 ld3320_info_t info;
58 ld3320_mode_t mode;
60 ld3320_vad_t vad;
61 ld3320_status_t status;
62
63 /* link driver */
79
80 /* get information */
81 res = ld3320_info(&info);
82 if (res != 0)
83 {
84 ld3320_interface_debug_print("ld3320: get info failed.\n");
85
86 return 1;
87 }
88 else
89 {
90 /* print chip info */
91 ld3320_interface_debug_print("ld3320: chip is %s.\n", info.chip_name);
92 ld3320_interface_debug_print("ld3320: manufacturer is %s.\n", info.manufacturer_name);
93 ld3320_interface_debug_print("ld3320: interface is %s.\n", info.interface);
94 ld3320_interface_debug_print("ld3320: driver version is %d.%d.\n", info.driver_version / 1000, (info.driver_version % 1000) / 100);
95 ld3320_interface_debug_print("ld3320: min supply voltage is %0.1fV.\n", info.supply_voltage_min_v);
96 ld3320_interface_debug_print("ld3320: max supply voltage is %0.1fV.\n", info.supply_voltage_max_v);
97 ld3320_interface_debug_print("ld3320: max current is %0.2fmA.\n", info.max_current_ma);
98 ld3320_interface_debug_print("ld3320: max temperature is %0.1fC.\n", info.temperature_max);
99 ld3320_interface_debug_print("ld3320: min temperature is %0.1fC.\n", info.temperature_min);
100 }
101
102 /* start register test */
103 ld3320_interface_debug_print("ld3320: start register test.\n");
104
105 /* init */
106 res = ld3320_init(&gs_handle);
107 if (res != 0)
108 {
109 ld3320_interface_debug_print("ld3320: init failed.\n");
110
111 return 1;
112 }
113
114 /* ld3320_set_mode/ld3320_get_mode test */
115 ld3320_interface_debug_print("ld3320: ld3320_set_mode/ld3320_get_mode test.\n");
116
117 /* mp3 mode */
118 res = ld3320_set_mode(&gs_handle, LD3320_MODE_MP3);
119 if (res != 0)
120 {
121 ld3320_interface_debug_print("ld3320: set mode failed.\n");
122 (void)ld3320_deinit(&gs_handle);
123
124 return 1;
125 }
126 ld3320_interface_debug_print("ld3320: set mp3 mode.\n");
127 res = ld3320_get_mode(&gs_handle, &mode);
128 if (res != 0)
129 {
130 ld3320_interface_debug_print("ld3320: get mode failed.\n");
131 (void)ld3320_deinit(&gs_handle);
132
133 return 1;
134 }
135 ld3320_interface_debug_print("ld3320: check mode %s.\n", mode == LD3320_MODE_MP3 ? "ok" : "error");
136
137 /* asr mode */
138 res = ld3320_set_mode(&gs_handle, LD3320_MODE_ASR);
139 if (res != 0)
140 {
141 ld3320_interface_debug_print("ld3320: set mode failed.\n");
142 (void)ld3320_deinit(&gs_handle);
143
144 return 1;
145 }
146 ld3320_interface_debug_print("ld3320: set asr mode.\n");
147 res = ld3320_get_mode(&gs_handle, &mode);
148 if (res != 0)
149 {
150 ld3320_interface_debug_print("ld3320: get mode failed.\n");
151 (void)ld3320_deinit(&gs_handle);
152
153 return 1;
154 }
155 ld3320_interface_debug_print("ld3320: check mode %s.\n", mode == LD3320_MODE_ASR ? "ok" : "error");
156
157 /* ld3320_set_key_words/ld3320_get_key_words test */
158 ld3320_interface_debug_print("ld3320: ld3320_set_key_words/ld3320_get_key_words test.\n");
159 memset(text[0], 0, sizeof(char) * 50);
160 strncpy((char *)text[0], "ni hao", strlen("ni hao"));
161 res = ld3320_set_key_words(&gs_handle, text, 1);
162 if (res != 0)
163 {
164 ld3320_interface_debug_print("ld3320: set key words failed.\n");
165 (void)ld3320_deinit(&gs_handle);
166
167 return 1;
168 }
169 ld3320_interface_debug_print("ld3320: set key words \"ni hao\".\n");
170 res = ld3320_get_key_words(&gs_handle, text_check, (uint8_t *)&len);
171 if (res != 0)
172 {
173 ld3320_interface_debug_print("ld3320: get key words failed.\n");
174 (void)ld3320_deinit(&gs_handle);
175
176 return 1;
177 }
178 ld3320_interface_debug_print("ld3320: check key words %s.\n",
179 (len == 1) && (strncmp((char *)text[0], (char *)text_check[0], (uint16_t)strlen("ni hao")) == 0) ? "ok" : "error");
180
181 /* ld3320_set_mic_gain/ld3320_get_mic_gain test */
182 ld3320_interface_debug_print("ld3320: ld3320_set_mic_gain/ld3320_get_mic_gain test.\n");
183
184 /* set gain common */
186 if (res != 0)
187 {
188 ld3320_interface_debug_print("ld3320: set mic gain failed.\n");
189 (void)ld3320_deinit(&gs_handle);
190
191 return 1;
192 }
193 ld3320_interface_debug_print("ld3320: set mic common gain.\n");
194 res = ld3320_get_mic_gain(&gs_handle, &gain);
195 if (res != 0)
196 {
197 ld3320_interface_debug_print("ld3320: get mic gain failed.\n");
198 (void)ld3320_deinit(&gs_handle);
199
200 return 1;
201 }
202 ld3320_interface_debug_print("ld3320: check mic gain %s.\n", gain == LD3320_MIC_GAIN_COMMON ? "ok" : "error");
203
204 /* set gain noise */
206 if (res != 0)
207 {
208 ld3320_interface_debug_print("ld3320: set mic gain failed.\n");
209 (void)ld3320_deinit(&gs_handle);
210
211 return 1;
212 }
213 ld3320_interface_debug_print("ld3320: set mic noise gain.\n");
214 res = ld3320_get_mic_gain(&gs_handle, &gain);
215 if (res != 0)
216 {
217 ld3320_interface_debug_print("ld3320: get mic gain failed.\n");
218 (void)ld3320_deinit(&gs_handle);
219
220 return 1;
221 }
222 ld3320_interface_debug_print("ld3320: check mic gain %s.\n", gain == LD3320_MIC_GAIN_NOISE ? "ok" : "error");
223
224 /* ld3320_set_vad/ld3320_get_vad test */
225 ld3320_interface_debug_print("ld3320: ld3320_set_vad/ld3320_get_vad test.\n");
226
227 /* set vad common */
228 res = ld3320_set_vad(&gs_handle, LD3320_VAD_COMMON);
229 if (res != 0)
230 {
231 ld3320_interface_debug_print("ld3320: set vad failed.\n");
232 (void)ld3320_deinit(&gs_handle);
233
234 return 1;
235 }
236 ld3320_interface_debug_print("ld3320: set vad common.\n");
237 res = ld3320_get_vad(&gs_handle, &vad);
238 if (res != 0)
239 {
240 ld3320_interface_debug_print("ld3320: get vad failed.\n");
241 (void)ld3320_deinit(&gs_handle);
242
243 return 1;
244 }
245 ld3320_interface_debug_print("ld3320: check vad %s.\n", vad == LD3320_VAD_COMMON ? "ok" : "error");
246
247 /* set vad far */
248 res = ld3320_set_vad(&gs_handle, LD3320_VAD_FAR);
249 if (res != 0)
250 {
251 ld3320_interface_debug_print("ld3320: set vad failed.\n");
252 (void)ld3320_deinit(&gs_handle);
253
254 return 1;
255 }
256 ld3320_interface_debug_print("ld3320: set vad far.\n");
257 res = ld3320_get_vad(&gs_handle, &vad);
258 if (res != 0)
259 {
260 ld3320_interface_debug_print("ld3320: get vad failed.\n");
261 (void)ld3320_deinit(&gs_handle);
262
263 return 1;
264 }
265 ld3320_interface_debug_print("ld3320: check vad %s.\n", vad == LD3320_VAD_FAR ? "ok" : "error");
266
267 /* ld3320_set_speaker_volume/ld3320_get_speaker_volume test */
268 ld3320_interface_debug_print("ld3320: ld3320_set_speaker_volume/ld3320_get_speaker_volume test.\n");
269 volume_left = rand() % 16;
270 res = ld3320_set_speaker_volume(&gs_handle, volume_left);
271 if (res != 0)
272 {
273 ld3320_interface_debug_print("ld3320: set speaker volume failed.\n");
274 (void)ld3320_deinit(&gs_handle);
275
276 return 1;
277 }
278 ld3320_interface_debug_print("ld3320: set volume 0x%02X.\n", volume_left);
279 res = ld3320_get_speaker_volume(&gs_handle, (uint8_t *)&volume_left_check);
280 if (res != 0)
281 {
282 ld3320_interface_debug_print("ld3320: get speaker volume failed.\n");
283 (void)ld3320_deinit(&gs_handle);
284
285 return 1;
286 }
287 ld3320_interface_debug_print("ld3320: check volume %s.\n", volume_left_check == volume_left ? "ok" : "error");
288
289 /* ld3320_set_headset_volume/ld3320_get_headset_volume test */
290 ld3320_interface_debug_print("ld3320: ld3320_set_headset_volume/ld3320_get_headset_volume test.\n");
291 volume_left = rand() % 16;
292 volume_right = rand() % 16;
293 res = ld3320_set_headset_volume(&gs_handle, volume_left, volume_right);
294 if (res != 0)
295 {
296 ld3320_interface_debug_print("ld3320: set headset volume failed.\n");
297 (void)ld3320_deinit(&gs_handle);
298
299 return 1;
300 }
301 ld3320_interface_debug_print("ld3320: set left volume 0x%02X.\n", volume_left);
302 ld3320_interface_debug_print("ld3320: set right volume 0x%02X.\n", volume_right);
303 res = ld3320_get_headset_volume(&gs_handle, (uint8_t *)&volume_left_check, (uint8_t *)&volume_right_check);
304 if (res != 0)
305 {
306 ld3320_interface_debug_print("ld3320: get headset volume failed.\n");
307 (void)ld3320_deinit(&gs_handle);
308
309 return 1;
310 }
311 ld3320_interface_debug_print("ld3320: check left volume %s.\n", volume_left_check == volume_left ? "ok" : "error");
312 ld3320_interface_debug_print("ld3320: check right volume %s.\n", volume_right_check == volume_right ? "ok" : "error");
313
314 /* ld3320_get_status test */
315 ld3320_interface_debug_print("ld3320: ld3320_get_status test.\n");
316 res = ld3320_get_status(&gs_handle, &status);
317 if (res != 0)
318 {
319 ld3320_interface_debug_print("ld3320: get status failed.\n");
320 (void)ld3320_deinit(&gs_handle);
321
322 return 1;
323 }
324 ld3320_interface_debug_print("ld3320: status is 0x%02X.\n", status);
325
326 /* finish register test */
327 ld3320_interface_debug_print("ld3320: finish register test.\n");
328 (void)ld3320_deinit(&gs_handle);
329
330 return 0;
331}
driver ld3320 register test header file
uint8_t ld3320_get_mode(ld3320_handle_t *handle, ld3320_mode_t *mode)
get the chip mode
struct ld3320_info_s ld3320_info_t
ld3320 information structure definition
uint8_t ld3320_get_mic_gain(ld3320_handle_t *handle, ld3320_mic_gain_t *gain)
get the microphone gain
uint8_t ld3320_set_vad(ld3320_handle_t *handle, ld3320_vad_t vad)
set the vad
uint8_t ld3320_deinit(ld3320_handle_t *handle)
deinit the chip
uint8_t ld3320_get_key_words(ld3320_handle_t *handle, char text[50][50], uint8_t *len)
get the key words
ld3320_mode_t
ld3320 mode enumeration definition
ld3320_status_t
ld3320 asr status enumeration definition
uint8_t ld3320_init(ld3320_handle_t *handle)
initialize the chip
uint8_t ld3320_set_key_words(ld3320_handle_t *handle, char text[50][50], uint8_t len)
set the key words
uint8_t ld3320_get_speaker_volume(ld3320_handle_t *handle, uint8_t *volume)
get the speaker volume
ld3320_vad_t
ld3320 vad enumeration definition
struct ld3320_handle_s ld3320_handle_t
ld3320 handle structure definition
uint8_t ld3320_set_headset_volume(ld3320_handle_t *handle, uint8_t volume_left, uint8_t volume_right)
set the headset volume
uint8_t ld3320_info(ld3320_info_t *info)
get chip's information
uint8_t ld3320_get_vad(ld3320_handle_t *handle, ld3320_vad_t *vad)
get the vad
uint8_t ld3320_get_headset_volume(ld3320_handle_t *handle, uint8_t *volume_left, uint8_t *volume_right)
get the headset volume
uint8_t ld3320_set_mode(ld3320_handle_t *handle, ld3320_mode_t mode)
set the chip mode
uint8_t ld3320_set_mic_gain(ld3320_handle_t *handle, ld3320_mic_gain_t gain)
set the microphone gain
uint8_t ld3320_get_status(ld3320_handle_t *handle, ld3320_status_t *status)
get the status
uint8_t ld3320_set_speaker_volume(ld3320_handle_t *handle, uint8_t volume)
set the speaker volume
ld3320_mic_gain_t
ld3320 mic gain enumeration definition
@ LD3320_MODE_ASR
@ LD3320_MODE_MP3
@ LD3320_VAD_COMMON
@ LD3320_VAD_FAR
@ LD3320_MIC_GAIN_COMMON
@ LD3320_MIC_GAIN_NOISE
uint8_t ld3320_interface_mp3_read(uint32_t addr, uint16_t size, uint8_t *buffer)
interface mp3 read
uint8_t ld3320_interface_reset_gpio_init(void)
interface reset gpio init
uint8_t ld3320_interface_spi_write_cmd(uint8_t *buf, uint16_t len)
interface spi bus write
void ld3320_interface_delay_ms(uint32_t ms)
interface delay ms
uint8_t ld3320_interface_reset_gpio_deinit(void)
interface reset gpio deinit
uint8_t ld3320_interface_spi_init(void)
interface spi bus init
uint8_t ld3320_interface_reset_gpio_write(uint8_t data)
interface reset gpio write
uint8_t ld3320_interface_spi_read_address16(uint16_t reg, uint8_t *buf, uint16_t len)
interface spi bus read
uint8_t ld3320_interface_mp3_deinit(void)
interface mp3 deinit
uint8_t ld3320_interface_spi_deinit(void)
interface spi bus deinit
void ld3320_interface_receive_callback(uint8_t type, uint8_t ind, char *text)
interface receive callback
uint8_t ld3320_interface_mp3_init(char *name, uint32_t *size)
interface mp3 init
void ld3320_interface_delay_us(uint32_t us)
interface delay us
void ld3320_interface_debug_print(const char *const fmt,...)
interface print format data
uint8_t ld3320_register_test(void)
register test
float supply_voltage_max_v
uint32_t driver_version
char manufacturer_name[32]
float supply_voltage_min_v
char chip_name[32]