LibDriver WM8978
Loading...
Searching...
No Matches
wav_player.h
Go to the documentation of this file.
1
36
37#ifndef WAV_PLAYER_H
38#define WAV_PLAYER_H
39
40#include <stdio.h>
41#include <stdint.h>
42#include <string.h>
43
44#ifdef __cplusplus
45extern "C"{
46#endif
47
54
58#ifndef WAV_BUFFER_SIZE
59 #define WAV_BUFFER_SIZE (1024 * 32)
60#endif
61
65typedef enum
66{
70
74typedef struct wav_header_s
75{
76 char chunk_id[4];
77 uint32_t chunk_size;
78 char format[4];
79 char sub_chunk1_id[4];
80 uint32_t sub_chunk1_size;
81 uint16_t audio_format;
82 uint16_t num_channel;
83 uint32_t sample_rate;
84 uint32_t byte_rate;
85 uint16_t block_align;
86 uint16_t bit_per_sample;
87 char sub_chunk2_id[4];
88 uint32_t sub_chunk2_size;
90
94typedef struct wav_handle_s
95{
96 uint8_t (*iis_init)(uint32_t standard, uint32_t mode, uint32_t polarity,
97 uint32_t format, uint32_t enable, uint32_t freq);
98 uint8_t (*iis_deinit)(void);
99 uint8_t (*iis_stop)(void);
100 uint8_t (*iis_pause)(void);
101 uint8_t (*iis_resume)(void);
102 uint8_t (*iis_set_freq)(uint32_t freq);
103 uint8_t (*iis_write)(uint16_t *buf, uint16_t len);
104 uint8_t (*iis_read)(uint16_t *buf, uint16_t len);
105 uint8_t (*audio_init)(uint8_t type, char *name, uint32_t *size);
106 uint8_t (*audio_deinit)(void);
107 uint8_t (*audio_read)(uint32_t addr, uint16_t size, uint8_t *buffer);
108 uint8_t (*audio_write)(uint32_t addr, uint16_t size, uint8_t *buffer);
109 void (*delay_ms)(uint32_t ms);
110 void (*debug_print)(const char *const fmt, ...);
111 uint8_t inited;
112 uint8_t status;
114 uint32_t size;
115 uint32_t pos;
118
125#define WAV_LINK_INIT(HANDLE, STRUCTURE) memset(HANDLE, 0, sizeof(STRUCTURE))
126
133#define WAV_LINK_AUDIO_INIT(HANDLE, FUC) (HANDLE)->audio_init = FUC
134
141#define WAV_LINK_AUDIO_DEINIT(HANDLE, FUC) (HANDLE)->audio_deinit = FUC
142
149#define WAV_LINK_AUDIO_READ(HANDLE, FUC) (HANDLE)->audio_read = FUC
150
157#define WAV_LINK_AUDIO_WRITE(HANDLE, FUC) (HANDLE)->audio_write = FUC
158
165#define WAV_LINK_IIS_INIT(HANDLE, FUC) (HANDLE)->iis_init = FUC
166
173#define WAV_LINK_IIS_DEINIT(HANDLE, FUC) (HANDLE)->iis_deinit = FUC
174
181#define WAV_LINK_IIS_STOP(HANDLE, FUC) (HANDLE)->iis_stop = FUC
182
189#define WAV_LINK_IIS_PAUSE(HANDLE, FUC) (HANDLE)->iis_pause = FUC
190
197#define WAV_LINK_IIS_RESUME(HANDLE, FUC) (HANDLE)->iis_resume = FUC
198
205#define WAV_LINK_IIS_SET_FREQ(HANDLE, FUC) (HANDLE)->iis_set_freq = FUC
206
213#define WAV_LINK_IIS_WRITE(HANDLE, FUC) (HANDLE)->iis_write = FUC
214
221#define WAV_LINK_IIS_READ(HANDLE, FUC) (HANDLE)->iis_read = FUC
222
229#define WAV_LINK_DELAY_MS(HANDLE, FUC) (HANDLE)->delay_ms = FUC
230
237#define WAV_LINK_DEBUG_PRINT(HANDLE, FUC) (HANDLE)->debug_print = FUC
238
248uint8_t wav_init(wav_handle_t *handle);
249
260uint8_t wav_deinit(wav_handle_t *handle);
261
274uint8_t wav_player_init(wav_handle_t *handle, char *path);
275
288uint8_t wav_player_buffer_fill(wav_handle_t *handle, uint8_t index);
289
302uint8_t wav_record_file_fill(wav_handle_t *handle, uint8_t index);
303
315uint8_t wav_player_get_status(wav_handle_t *handle, wav_status_t *status);
316
333uint8_t wav_player_config(wav_handle_t *handle, uint32_t standard,
334 uint32_t mode, uint32_t polarity,
335 uint32_t format, uint32_t enable, uint32_t freq);
336
350uint8_t wav_record_start(wav_handle_t *handle, uint32_t sample_rate, char *path);
351
363uint8_t wav_record_stop(wav_handle_t *handle);
364
376uint8_t wav_player_start(wav_handle_t *handle);
377
389uint8_t wav_player_stop(wav_handle_t *handle);
390
402uint8_t wav_player_pause(wav_handle_t *handle);
403
415uint8_t wav_player_resume(wav_handle_t *handle);
416
420
421#ifdef __cplusplus
422}
423#endif
424
425#endif
struct wav_handle_s wav_handle_t
wav handle structure definition
uint8_t wav_record_stop(wav_handle_t *handle)
wav record stop
Definition wav_player.c:611
uint8_t wav_player_config(wav_handle_t *handle, uint32_t standard, uint32_t mode, uint32_t polarity, uint32_t format, uint32_t enable, uint32_t freq)
wav player config
Definition wav_player.c:391
struct wav_header_s wav_header_t
wav header structure definition
wav_status_t
wav status enumeration definition
Definition wav_player.h:66
uint8_t wav_record_file_fill(wav_handle_t *handle, uint8_t index)
wav record file fill
Definition wav_player.c:558
uint8_t wav_player_stop(wav_handle_t *handle)
wav player stop
Definition wav_player.c:670
uint8_t wav_player_resume(wav_handle_t *handle)
wav player resume
Definition wav_player.c:759
uint8_t wav_player_get_status(wav_handle_t *handle, wav_status_t *status)
wav get status
Definition wav_player.c:797
uint8_t wav_player_pause(wav_handle_t *handle)
wav player pause
Definition wav_player.c:721
#define WAV_BUFFER_SIZE
wav buffer size definition
Definition wav_player.h:59
uint8_t wav_record_start(wav_handle_t *handle, uint32_t sample_rate, char *path)
wav record start
Definition wav_player.c:479
uint8_t wav_init(wav_handle_t *handle)
initialize the wav
Definition wav_player.c:117
uint8_t wav_player_start(wav_handle_t *handle)
wav player start
Definition wav_player.c:431
uint8_t wav_deinit(wav_handle_t *handle)
wav deinit
Definition wav_player.c:221
uint8_t wav_player_buffer_fill(wav_handle_t *handle, uint8_t index)
wav player buffer fill
Definition wav_player.c:825
uint8_t wav_player_init(wav_handle_t *handle, char *path)
initialize the wav player
Definition wav_player.c:249
@ WAV_STATUS_PLAY
Definition wav_player.h:68
@ WAV_STATUS_STOP
Definition wav_player.h:67
wav handle structure definition
Definition wav_player.h:95
uint8_t(* iis_deinit)(void)
Definition wav_player.h:98
uint8_t(* iis_pause)(void)
Definition wav_player.h:100
uint8_t inited
Definition wav_player.h:111
void(* delay_ms)(uint32_t ms)
Definition wav_player.h:109
uint8_t(* iis_stop)(void)
Definition wav_player.h:99
uint8_t buf[WAV_BUFFER_SIZE]
Definition wav_player.h:116
uint8_t(* iis_resume)(void)
Definition wav_player.h:101
uint8_t(* iis_write)(uint16_t *buf, uint16_t len)
Definition wav_player.h:103
void(* debug_print)(const char *const fmt,...)
Definition wav_player.h:110
uint8_t(* iis_init)(uint32_t standard, uint32_t mode, uint32_t polarity, uint32_t format, uint32_t enable, uint32_t freq)
Definition wav_player.h:96
uint8_t(* audio_init)(uint8_t type, char *name, uint32_t *size)
Definition wav_player.h:105
wav_header_t wav
Definition wav_player.h:113
uint8_t(* audio_read)(uint32_t addr, uint16_t size, uint8_t *buffer)
Definition wav_player.h:107
uint8_t(* iis_set_freq)(uint32_t freq)
Definition wav_player.h:102
uint8_t(* iis_read)(uint16_t *buf, uint16_t len)
Definition wav_player.h:104
uint32_t size
Definition wav_player.h:114
uint8_t status
Definition wav_player.h:112
uint8_t(* audio_deinit)(void)
Definition wav_player.h:106
uint32_t pos
Definition wav_player.h:115
uint8_t(* audio_write)(uint32_t addr, uint16_t size, uint8_t *buffer)
Definition wav_player.h:108
wav header structure definition
Definition wav_player.h:75
uint32_t sub_chunk1_size
Definition wav_player.h:80
uint32_t sample_rate
Definition wav_player.h:83
uint32_t sub_chunk2_size
Definition wav_player.h:88
char chunk_id[4]
Definition wav_player.h:76
char sub_chunk2_id[4]
Definition wav_player.h:87
uint16_t num_channel
Definition wav_player.h:82
char format[4]
Definition wav_player.h:78
char sub_chunk1_id[4]
Definition wav_player.h:79
uint32_t byte_rate
Definition wav_player.h:84
uint16_t block_align
Definition wav_player.h:85
uint32_t chunk_size
Definition wav_player.h:77
uint16_t bit_per_sample
Definition wav_player.h:86
uint16_t audio_format
Definition wav_player.h:81