luat_msgbus_air101.c 986 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. #include "luat_msgbus.h"
  2. #include "wm_osal.h"
  3. static tls_os_queue_t *queue = NULL;
  4. void luat_msgbus_init(void)
  5. {
  6. if (queue == NULL)
  7. {
  8. tls_os_queue_create(&queue, 256);
  9. }
  10. }
  11. uint32_t luat_msgbus_put(rtos_msg_t *msg, size_t timeout)
  12. {
  13. if (queue == NULL)
  14. {
  15. return 1;
  16. }
  17. rtos_msg_t* dst = luat_heap_malloc(sizeof(rtos_msg_t));
  18. memcpy(dst, msg, sizeof(rtos_msg_t));
  19. int ret = tls_os_queue_send(queue, (void *)dst, sizeof(rtos_msg_t));
  20. return ret;
  21. }
  22. uint32_t luat_msgbus_get(rtos_msg_t *_msg, size_t timeout)
  23. {
  24. if (queue == NULL)
  25. {
  26. return 1;
  27. }
  28. void* msg;
  29. int ret = tls_os_queue_receive(queue, (void **)&msg, sizeof(rtos_msg_t), timeout);
  30. if (ret == TLS_OS_SUCCESS) {
  31. memcpy(_msg, (rtos_msg_t*)msg, sizeof(rtos_msg_t));
  32. luat_heap_free(msg);
  33. return 0;
  34. }
  35. return -1;
  36. }
  37. uint32_t luat_msgbus_freesize(void)
  38. {
  39. if (queue == NULL)
  40. {
  41. return 1;
  42. }
  43. return 1;
  44. }