hpm_sdmmc_osal.h 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. /*
  2. * Copyright (c) 2024 HPMicro
  3. *
  4. * SPDX-License-Identifier: BSD-3-Clause
  5. *
  6. */
  7. #ifndef HPM_SDMMC_OSAL_H
  8. #define HPM_SDMMC_OSAL_H
  9. /**
  10. *
  11. * @brief HPM SDMMC OSAL APIs
  12. * @defgroup hpm_sdmmc HPM SDMMC stack
  13. * @ingroup hpm_sdmmc_interfaces
  14. * @{
  15. *
  16. */
  17. #include <stdint.h>
  18. #include "hpm_common.h"
  19. #if defined(HPM_SDMMC_USE_CMSIS_OS2) && (HPM_SDMMC_USE_CMSIS_OS2 == 1)
  20. #include "cmsis_os2.h"
  21. typedef osEventFlagsId_t hpm_sdmmc_osal_event_t;
  22. #define HPM_SDMMC_OSAL_WAIT_FOREVER osWaitForever
  23. #else
  24. typedef volatile uint32_t *hpm_sdmmc_osal_event_t;
  25. #define HPM_SDMMC_OSAL_WAIT_FOREVER (0xFFFFFFFFUL)
  26. #endif
  27. #ifdef __cplusplus
  28. extern "C" {
  29. #endif
  30. /**
  31. * @brief Delay in milliseconds
  32. *
  33. * @param [in] ctx OSAL context
  34. * @param [in] ms Delay in milliseconds
  35. */
  36. void hpm_sdmmc_osal_delay(void *ctx, uint32_t ms);
  37. /**
  38. * @brief Create Event
  39. *
  40. * @param [in] ctx OSAL context
  41. *
  42. * @return The created event
  43. */
  44. hpm_sdmmc_osal_event_t hpm_sdmmc_osal_event_create(void *ctx);
  45. /**
  46. * @brief Delete an event
  47. *
  48. * @param [in] ctx OSAL context
  49. * @param [in] event The event to be removed
  50. *
  51. * @return the Operation status
  52. */
  53. hpm_stat_t hpm_sdmmc_osal_event_delete(void *ctx, hpm_sdmmc_osal_event_t event);
  54. /**
  55. * @brief Wait specified event flags
  56. *
  57. * @param [in] ctx OSAL context
  58. * @param [in] event The event
  59. * @param [in] flags The flags to wait
  60. * @param [in] timeout Timeout in milliseconds
  61. *
  62. * @return The operation status
  63. */
  64. hpm_stat_t hpm_sdmmc_osal_event_wait(void *ctx, hpm_sdmmc_osal_event_t event, uint32_t flags, uint32_t timeout);
  65. /**
  66. * @brief Set specified event flags
  67. *
  68. * @param [in] ctx OSAL context
  69. * @param [in] event The event
  70. * @param [in] flags The flags to set
  71. */
  72. void hpm_sdmmc_osal_event_set(void *ctx, hpm_sdmmc_osal_event_t event, uint32_t flags);
  73. /**
  74. * @brief Clear specified event flags
  75. *
  76. * @param [in] ctx OSAL context
  77. * @param [in] event The event
  78. * @param [in] flags The flags to clear
  79. */
  80. void hpm_sdmmc_osal_event_clear(void *ctx, hpm_sdmmc_osal_event_t event, uint32_t flags);
  81. /**
  82. * @brief Enter critical section
  83. *
  84. * @param [in] ctx OSAL context
  85. */
  86. void hpm_sdmmc_osal_enter_critical(void *ctx);
  87. /**
  88. * @brief Exit critical section
  89. *
  90. * @param [in] ctx OSAL context
  91. */
  92. void hpm_sdmmc_osal_exit_critical(void *ctx);
  93. #ifdef __cplusplus
  94. }
  95. #endif
  96. /**
  97. * @}
  98. */
  99. #endif /* HPM_SDMMC_OSAL_H */