• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2022 HPMicro
3  *
4  * SPDX-License-Identifier: BSD-3-Clause
5  *
6  */
7 
8 #ifndef HPM_AUDIO_CODEC_H
9 #define HPM_AUDIO_CODEC_H
10 #include "stdint.h"
11 #include "hpm_common.h"
12 /**
13  * @brief audio codec return type
14  *
15  */
16 enum hpm_audio_codec_status {
17     status_audio_codec_format_err = MAKE_STATUS(status_group_audio_codec, 2),
18     status_audio_codec_non_standard = MAKE_STATUS(status_group_audio_codec, 3),
19     status_audio_codec_none_file = MAKE_STATUS(status_group_audio_codec, 4),
20     status_audio_codec_none_dir = MAKE_STATUS(status_group_audio_codec, 5),
21     status_audio_codec_end = MAKE_STATUS(status_group_audio_codec, 6),
22 };
23 
24 typedef uint32_t HPM_AUDIOCODEC_FILE;
25 
26 typedef struct {
27     HPM_AUDIOCODEC_FILE  file;
28     hpm_stat_t (*search_file)(char *file_name, HPM_AUDIOCODEC_FILE *fil);
29     hpm_stat_t (*read_file)(HPM_AUDIOCODEC_FILE fil, uint32_t num_bytes, uint8_t *data, uint32_t *br);
30     hpm_stat_t (*write_file)(HPM_AUDIOCODEC_FILE fil, uint32_t num_bytes, uint8_t *data, uint32_t *br);
31     hpm_stat_t (*lseek_file)(HPM_AUDIOCODEC_FILE fil, uint32_t num_bytes, uint8_t *data);
32     hpm_stat_t (*close_file)(HPM_AUDIOCODEC_FILE fil);
33 } hpm_audiocodec_callback;
34 
35 /**
36  * @brief file search callback
37  *
38  * @param[in] file_name file name string
39  * @param[out] fil return the file handle
40  * @return hpm_stat_t @ref hpm_audio_codec_status
41  */
42 hpm_stat_t hpm_audiocodec_search_file(char *file_name, HPM_AUDIOCODEC_FILE *fil);
43 
44 /**
45  * @brief read file callback
46  *
47  * @param[in] fil file handle
48  * @param[in] num_bytes number of bytes
49  * @param[out] data read data
50  * @param[out] br Actual number of bytes read
51  * @return hpm_stat_t @ref hpm_audio_codec_status
52  */
53 hpm_stat_t hpm_audiocodec_read_file(HPM_AUDIOCODEC_FILE fil, uint32_t num_bytes, uint8_t *data, uint32_t *br);
54 
55 /**
56  * @brief write file callback
57  *
58  * @param[in] fil file handle
59  * @param[in] num_bytes number of bytes
60  * @param[in] data read data
61  * @param[out] br Actual number of bytes read
62  * @return hpm_stat_t hpm_stat_t @ref hpm_audio_codec_status
63  */
64 hpm_stat_t hpm_audiocodec_write_file(HPM_AUDIOCODEC_FILE fil, uint32_t num_bytes, uint8_t *data, uint32_t *br);
65 
66 /**
67  * @brief close file callback
68  *
69  * @param fil file handle
70  * @return hpm_stat_t hpm_stat_t @ref hpm_audio_codec_status
71  */
72 hpm_stat_t hpm_audiocodec_close_file(HPM_AUDIOCODEC_FILE fil);
73 
74 
75 #endif
76