hpm_audio_codec.h 2.3 KB

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