LibDriver LD3320
Loading...
Searching...
No Matches
driver_ld3320_mp3_test.c
Go to the documentation of this file.
1
36
38
39static ld3320_handle_t gs_handle;
40static volatile uint8_t gs_flag;
41
50{
51 if (ld3320_irq_handler(&gs_handle) != 0)
52 {
53 return 1;
54 }
55 else
56 {
57 return 0;
58 }
59}
60
68static void a_callback(uint8_t type, uint8_t i, char *text)
69{
70 if (type == LD3320_STATUS_MP3_LOAD)
71 {
72 /* do nothing */
73 }
74 else if (type == LD3320_STATUS_MP3_END)
75 {
76 /* flag end */
77 gs_flag = 1;
78 ld3320_interface_debug_print("ld3320: irq mp3 end.\n");
79 }
80 else
81 {
82 ld3320_interface_debug_print("ld3320: irq unknown type.\n");
83 }
84}
85
94uint8_t ld3320_mp3_test(char *name)
95{
96 uint8_t res;
97 uint32_t timeout;
98 ld3320_info_t info;
99
100 /* link driver */
112 DRIVER_LD3320_LINK_DEBUG_RECEIVE_CALLBACK(&gs_handle, a_callback);
116
117 /* get information */
118 res = ld3320_info(&info);
119 if (res != 0)
120 {
121 ld3320_interface_debug_print("ld3320: get info failed.\n");
122
123 return 1;
124 }
125 else
126 {
127 /* print chip info */
128 ld3320_interface_debug_print("ld3320: chip is %s.\n", info.chip_name);
129 ld3320_interface_debug_print("ld3320: manufacturer is %s.\n", info.manufacturer_name);
130 ld3320_interface_debug_print("ld3320: interface is %s.\n", info.interface);
131 ld3320_interface_debug_print("ld3320: driver version is %d.%d.\n", info.driver_version / 1000, (info.driver_version % 1000) / 100);
132 ld3320_interface_debug_print("ld3320: min supply voltage is %0.1fV.\n", info.supply_voltage_min_v);
133 ld3320_interface_debug_print("ld3320: max supply voltage is %0.1fV.\n", info.supply_voltage_max_v);
134 ld3320_interface_debug_print("ld3320: max current is %0.2fmA.\n", info.max_current_ma);
135 ld3320_interface_debug_print("ld3320: max temperature is %0.1fC.\n", info.temperature_max);
136 ld3320_interface_debug_print("ld3320: min temperature is %0.1fC.\n", info.temperature_min);
137 }
138
139 /* start register test */
140 ld3320_interface_debug_print("ld3320: start mp3 test.\n");
141
142 /* init */
143 res = ld3320_init(&gs_handle);
144 if (res != 0)
145 {
146 ld3320_interface_debug_print("ld3320: init failed.\n");
147
148 return 1;
149 }
150
151 /* set mp3 mode */
152 res = ld3320_set_mode(&gs_handle, LD3320_MODE_MP3);
153 if (res != 0)
154 {
155 ld3320_interface_debug_print("ld3320: set mode failed.\n");
156 (void)ld3320_deinit(&gs_handle);
157
158 return 1;
159 }
160
161 /* configure the mp3 */
162 ld3320_interface_debug_print("ld3320: play %s.\n", name);
163 res = ld3320_configure_mp3(&gs_handle, name);
164 if (res != 0)
165 {
166 ld3320_interface_debug_print("ld3320: configure mp3 failed.\n");
167 (void)ld3320_deinit(&gs_handle);
168
169 return 1;
170 }
171
172 /* start */
173 res = ld3320_start(&gs_handle);
174 if (res != 0)
175 {
176 ld3320_interface_debug_print("ld3320: start failed.\n");
177 (void)ld3320_deinit(&gs_handle);
178 }
179
180 /* set speaker volume */
181 res = ld3320_set_speaker_volume(&gs_handle, 1);
182 if (res != 0)
183 {
184 ld3320_interface_debug_print("ld3320: set speaker volume failed.\n");
185 (void)ld3320_deinit(&gs_handle);
186 }
187
188 /* set headset volume */
189 res = ld3320_set_headset_volume(&gs_handle, 1, 1);
190 if (res != 0)
191 {
192 ld3320_interface_debug_print("ld3320: set headset volume failed.\n");
193 (void)ld3320_deinit(&gs_handle);
194 }
195
196 timeout = 1000 * 60 * 10;
197 while (timeout != 0)
198 {
199 if (gs_flag != 0)
200 {
201 break;
202 }
203 timeout--;
205 }
206 if (timeout == 0)
207 {
208 ld3320_interface_debug_print("ld3320: wait timeout.\n");
209 (void)ld3320_deinit(&gs_handle);
210
211 return 1;
212 }
213
214 /* finish mp3 test */
215 ld3320_interface_debug_print("ld3320: finish mp3 test.\n");
216 (void)ld3320_deinit(&gs_handle);
217
218 return 0;
219}
driver ld3320 mp3 test header file
struct ld3320_info_s ld3320_info_t
ld3320 information structure definition
uint8_t ld3320_deinit(ld3320_handle_t *handle)
deinit the chip
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
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_set_mode(ld3320_handle_t *handle, ld3320_mode_t mode)
set the chip mode
uint8_t ld3320_set_speaker_volume(ld3320_handle_t *handle, uint8_t volume)
set the speaker volume
@ LD3320_MODE_MP3
@ LD3320_STATUS_MP3_END
@ LD3320_STATUS_MP3_LOAD
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
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_mp3_test(char *name)
mp3 test
uint8_t ld3320_mp3_test_irq_handler(void)
mp3 test irq
float supply_voltage_max_v
uint32_t driver_version
char manufacturer_name[32]
float supply_voltage_min_v
char chip_name[32]