LibDriver LD3320
Loading...
Searching...
No Matches
driver_ld3320.h
Go to the documentation of this file.
1
36
37#ifndef DRIVER_LD3320_H
38#define DRIVER_LD3320_H
39
40#include <stdio.h>
41#include <stdint.h>
42#include <string.h>
43
44#ifdef __cplusplus
45extern "C"{
46#endif
47
53
58
62#ifndef LD3320_CYSTAL_MHZ
63 #define LD3320_CYSTAL_MHZ 22.1184f /* 22.1184 MHz */
64#endif
65
69typedef enum
70{
74
83
87typedef enum
88{
92
108
112typedef struct ld3320_handle_s
113{
114 uint8_t (*spi_init)(void);
115 uint8_t (*spi_deinit)(void);
116 uint8_t (*spi_read_address16)(uint16_t addr, uint8_t *buf, uint16_t len);
117 uint8_t (*spi_write_cmd)(uint8_t *buf, uint16_t len);
118 uint8_t (*reset_gpio_init)(void);
119 uint8_t (*reset_gpio_deinit)(void);
120 uint8_t (*reset_gpio_write)(uint8_t data);
121 void (*delay_ms)(uint32_t ms);
122 void (*delay_us)(uint32_t us);
123 void (*debug_print)(const char *const fmt, ...);
124 void (*receive_callback)(uint8_t type, uint8_t index, char *text);
125 uint8_t (*mp3_read_init)(char *name, uint32_t *size);
126 uint8_t (*mp3_read)(uint32_t addr, uint16_t size, uint8_t *buffer);
127 uint8_t (*mp3_read_deinit)(void);
128 uint8_t inited;
129 uint8_t mode;
131 uint8_t mic_gain;
132 uint8_t vad;
133 char text[50][50];
134 uint8_t len;
135 uint32_t point;
136 uint32_t size;
137 uint8_t buf[512];
139
155
159
166
173#define DRIVER_LD3320_LINK_INIT(HANDLE, STRUCTURE) memset(HANDLE, 0, sizeof(STRUCTURE))
174
181#define DRIVER_LD3320_LINK_SPI_INIT(HANDLE, FUC) (HANDLE)->spi_init = FUC
182
189#define DRIVER_LD3320_LINK_SPI_DEINIT(HANDLE, FUC) (HANDLE)->spi_deinit = FUC
190
197#define DRIVER_LD3320_LINK_SPI_READ_ADDRESS16(HANDLE, FUC) (HANDLE)->spi_read_address16 = FUC
198
205#define DRIVER_LD3320_LINK_SPI_WRITE_COMMAND(HANDLE, FUC) (HANDLE)->spi_write_cmd = FUC
206
213#define DRIVER_LD3320_LINK_RESET_GPIO_INIT(HANDLE, FUC) (HANDLE)->reset_gpio_init = FUC
214
221#define DRIVER_LD3320_LINK_RESET_GPIO_DEINIT(HANDLE, FUC) (HANDLE)->reset_gpio_deinit = FUC
222
229#define DRIVER_LD3320_LINK_RESET_GPIO_WRITE(HANDLE, FUC) (HANDLE)->reset_gpio_write = FUC
230
237#define DRIVER_LD3320_LINK_DELAY_MS(HANDLE, FUC) (HANDLE)->delay_ms = FUC
238
245#define DRIVER_LD3320_LINK_DELAY_US(HANDLE, FUC) (HANDLE)->delay_us = FUC
246
253#define DRIVER_LD3320_LINK_DEBUG_PRINT(HANDLE, FUC) (HANDLE)->debug_print = FUC
254
261#define DRIVER_LD3320_LINK_DEBUG_RECEIVE_CALLBACK(HANDLE, FUC) (HANDLE)->receive_callback = FUC
262
269#define DRIVER_LD3320_LINK_MP3_READ_INT(HANDLE, FUC) (HANDLE)->mp3_read_init = FUC
270
277#define DRIVER_LD3320_LINK_MP3_READ_DEINT(HANDLE, FUC) (HANDLE)->mp3_read_deinit = FUC
278
285#define DRIVER_LD3320_LINK_MP3_READ(HANDLE, FUC) (HANDLE)->mp3_read = FUC
286
290
297
306uint8_t ld3320_info(ld3320_info_t *info);
307
319uint8_t ld3320_irq_handler(ld3320_handle_t *handle);
320
332uint8_t ld3320_init(ld3320_handle_t *handle);
333
347uint8_t ld3320_deinit(ld3320_handle_t *handle);
348
359uint8_t ld3320_start(ld3320_handle_t *handle);
360
371uint8_t ld3320_stop(ld3320_handle_t *handle);
372
384uint8_t ld3320_configure_mp3(ld3320_handle_t *handle, char *name);
385
396uint8_t ld3320_set_mode(ld3320_handle_t *handle, ld3320_mode_t mode);
397
408uint8_t ld3320_get_mode(ld3320_handle_t *handle, ld3320_mode_t *mode);
409
421uint8_t ld3320_set_key_words(ld3320_handle_t *handle, char text[50][50], uint8_t len);
422
434uint8_t ld3320_get_key_words(ld3320_handle_t *handle, char text[50][50], uint8_t *len);
435
447
459
470uint8_t ld3320_set_vad(ld3320_handle_t *handle, ld3320_vad_t vad);
471
482uint8_t ld3320_get_vad(ld3320_handle_t *handle, ld3320_vad_t *vad);
483
494uint8_t ld3320_get_status(ld3320_handle_t *handle, ld3320_status_t *status);
495
508uint8_t ld3320_set_speaker_volume(ld3320_handle_t *handle, uint8_t volume);
509
521uint8_t ld3320_get_speaker_volume(ld3320_handle_t *handle, uint8_t *volume);
522
536uint8_t ld3320_set_headset_volume(ld3320_handle_t *handle, uint8_t volume_left, uint8_t volume_right);
537
550uint8_t ld3320_get_headset_volume(ld3320_handle_t *handle, uint8_t *volume_left, uint8_t *volume_right);
551
555
562
575uint8_t ld3320_set_reg(ld3320_handle_t *handle, uint8_t reg, uint8_t data);
576
589uint8_t ld3320_get_reg(ld3320_handle_t *handle, uint8_t reg, uint8_t *data);
590
594
598
599#ifdef __cplusplus
600}
601#endif
602
603#endif
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_stop(ld3320_handle_t *handle)
stop the process
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_configure_mp3(ld3320_handle_t *handle, char *name)
configure the mp3
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_start(ld3320_handle_t *handle)
start the process
uint8_t ld3320_irq_handler(ld3320_handle_t *handle)
irq handler
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_STATUS_MP3_END
@ LD3320_STATUS_ASR_ERROR
@ LD3320_STATUS_MP3_LOAD
@ LD3320_STATUS_ASR_RUNNING
@ LD3320_STATUS_ASR_FOUND_OK
@ LD3320_STATUS_MP3_ERROR
@ LD3320_STATUS_NONE
@ LD3320_STATUS_MP3_RUNNING
@ LD3320_STATUS_ASR_FOUND_ZERO
@ LD3320_VAD_COMMON
@ LD3320_VAD_FAR
@ LD3320_MIC_GAIN_COMMON
@ LD3320_MIC_GAIN_NOISE
uint8_t ld3320_set_reg(ld3320_handle_t *handle, uint8_t reg, uint8_t data)
set the chip register
uint8_t ld3320_get_reg(ld3320_handle_t *handle, uint8_t reg, uint8_t *data)
get the chip register
ld3320 handle structure definition
uint8_t(* mp3_read_init)(char *name, uint32_t *size)
uint8_t(* spi_init)(void)
uint8_t(* mp3_read)(uint32_t addr, uint16_t size, uint8_t *buffer)
void(* delay_ms)(uint32_t ms)
uint8_t(* reset_gpio_deinit)(void)
uint8_t(* mp3_read_deinit)(void)
void(* debug_print)(const char *const fmt,...)
uint8_t(* spi_read_address16)(uint16_t addr, uint8_t *buf, uint16_t len)
uint8_t buf[512]
void(* receive_callback)(uint8_t type, uint8_t index, char *text)
void(* delay_us)(uint32_t us)
uint8_t(* spi_deinit)(void)
uint8_t(* reset_gpio_init)(void)
uint8_t(* spi_write_cmd)(uint8_t *buf, uint16_t len)
char text[50][50]
uint8_t(* reset_gpio_write)(uint8_t data)
ld3320 information structure definition
float supply_voltage_max_v
uint32_t driver_version
char manufacturer_name[32]
float supply_voltage_min_v
char chip_name[32]