RyanMqttPlatform.h 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. #ifndef __RyanMqttPlatform__
  2. #define __RyanMqttPlatform__
  3. #ifdef __cplusplus
  4. extern "C" {
  5. #endif
  6. #include "platformSystem.h"
  7. #include "platformNetwork.h"
  8. #include "RyanMqttPublic.h"
  9. #ifndef RyanMqttMemset
  10. #define RyanMqttMemset memset
  11. #endif
  12. #ifndef RyanMqttStrlen
  13. #define RyanMqttStrlen strlen
  14. #endif
  15. #ifndef RyanMqttMemcpy
  16. #define RyanMqttMemcpy memcpy
  17. #endif
  18. #ifndef RyanMqttStrncmp
  19. #define RyanMqttStrncmp strncmp
  20. #endif
  21. #ifndef platformAssert
  22. #define platformAssert assert
  23. #endif
  24. #ifndef RyanMqttSnprintf
  25. #define RyanMqttSnprintf snprintf
  26. #endif
  27. #ifndef RyanMqttVsnprintf
  28. #define RyanMqttVsnprintf vsnprintf
  29. #endif
  30. // RyanMqtt内部 timer 接口
  31. typedef struct
  32. {
  33. uint32_t time;
  34. uint32_t timeOut;
  35. } RyanMqttTimer_t;
  36. extern void RyanMqttTimerInit(RyanMqttTimer_t *platformTimer);
  37. extern void RyanMqttTimerCutdown(RyanMqttTimer_t *platformTimer, uint32_t timeout);
  38. extern uint32_t RyanMqttTimerGetConfigTimeout(RyanMqttTimer_t *platformTimer);
  39. extern uint32_t RyanMqttTimerRemain(RyanMqttTimer_t *platformTimer);
  40. // 需用户实现的网络接口
  41. extern RyanMqttError_e platformNetworkInit(void *userData, platformNetwork_t *platformNetwork);
  42. extern RyanMqttError_e platformNetworkDestroy(void *userData, platformNetwork_t *platformNetwork);
  43. extern RyanMqttError_e platformNetworkConnect(void *userData, platformNetwork_t *platformNetwork, const char *host,
  44. uint16_t port);
  45. extern int32_t platformNetworkRecvAsync(void *userData, platformNetwork_t *platformNetwork, char *recvBuf,
  46. size_t recvLen, int32_t timeout);
  47. extern int32_t platformNetworkSendAsync(void *userData, platformNetwork_t *platformNetwork, char *sendBuf,
  48. size_t sendLen, int32_t timeout);
  49. extern RyanMqttError_e platformNetworkClose(void *userData, platformNetwork_t *platformNetwork);
  50. // 需用户实现的内存接口
  51. extern void *platformMemoryMalloc(size_t size);
  52. extern void platformMemoryFree(void *ptr);
  53. // 需用户实现的打印接口
  54. extern void platformPrint(char *str, uint16_t strLen);
  55. // 需用户实现的ms延时接口
  56. extern void platformDelay(uint32_t ms);
  57. // 需用户实现的获取开机ms时间戳接口
  58. extern uint32_t platformUptimeMs(void);
  59. // 需用户实现的 RTOS 接口
  60. extern RyanMqttError_e platformThreadInit(void *userData, platformThread_t *platformThread, const char *name,
  61. void (*entry)(void *), void *const param, uint32_t stackSize,
  62. uint32_t priority);
  63. extern RyanMqttError_e platformThreadDestroy(void *userData, platformThread_t *platformThread);
  64. extern RyanMqttError_e platformThreadStart(void *userData, platformThread_t *platformThread);
  65. extern RyanMqttError_e platformThreadStop(void *userData, platformThread_t *platformThread);
  66. // 互斥锁需支持递归
  67. extern RyanMqttError_e platformMutexInit(void *userData, platformMutex_t *platformMutex);
  68. extern RyanMqttError_e platformMutexDestroy(void *userData, platformMutex_t *platformMutex);
  69. extern RyanMqttError_e platformMutexLock(void *userData, platformMutex_t *platformMutex);
  70. extern RyanMqttError_e platformMutexUnLock(void *userData, platformMutex_t *platformMutex);
  71. extern RyanMqttError_e platformCriticalInit(void *userData, platformCritical_t *platformCritical);
  72. extern RyanMqttError_e platformCriticalDestroy(void *userData, platformCritical_t *platformCritical);
  73. extern RyanMqttError_e platformCriticalEnter(void *userData, platformCritical_t *platformCritical);
  74. extern RyanMqttError_e platformCriticalExit(void *userData, platformCritical_t *platformCritical);
  75. #ifdef __cplusplus
  76. }
  77. #endif
  78. #endif