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