luat_lib_sys_doc.c 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157
  1. /*
  2. @module sys
  3. @summary sys库
  4. @version 1.0
  5. @date 2019.11.23
  6. @video https://www.bilibili.com/video/BV1194y1o7q2
  7. */
  8. /*
  9. Task协程等待指定时长
  10. @api sys.wait(timeout)
  11. @int 等待时长,单位毫秒,必须大于0,否则无效
  12. @return any 通常为nil,除非主动被唤醒(通常不会)
  13. @usage
  14. sys.taskInit(function()
  15. while 1 do
  16. sys.wait(500)
  17. end
  18. end)
  19. */
  20. void doc_sys_wait(void){};
  21. /*
  22. Task协程等待指定时长或者特定的topic
  23. @api sys.waitUntil(topic, timeout)
  24. @string 事件topic
  25. @int 等待时长,单位毫秒,必须大于0,否则无效
  26. @return boolean 如果是超时,返回false,否则返回true
  27. @return any 对应topic的内容
  28. @usage
  29. sys.taskInit(function()
  30. // do something
  31. local result, data = sys.waitUntil("NET_READY", 30000)
  32. // do something else
  33. end)
  34. */
  35. void doc_sys_waitUntil(void){};
  36. /*
  37. 创建一个Task协程
  38. @api sys.taskInit(func, arg1, arg2, argN)
  39. @function 待执行的函数,可以是匿名函数, 也可以是local或全局函数
  40. @any 需要传递的参数1,可选
  41. @any 需要传递的参数2,可选
  42. @any 需要传递的参数N,可选
  43. @return task 协程对象
  44. @usage
  45. sys.taskInit(function(a, b, c)
  46. log.info("task", a, b, c) -- 打印 task A B C
  47. end, "A", "B", "N")
  48. */
  49. void doc_sys_taskInit(void){};
  50. /*
  51. 创建一个定时器.非Task,函数里不能直接sys.waitXXX
  52. @api sys.timerStart(func, timeout, arg1, arg2, argN)
  53. @function 待执行的函数,可以是匿名函数, 也可以是local或全局函数
  54. @int 延时时长,单位毫秒
  55. @any 需要传递的参数1,可选
  56. @any 需要传递的参数2,可选
  57. @any 需要传递的参数N,可选
  58. @return int 定时器id
  59. @usage
  60. sys.timerStart(function(a, b, c)
  61. log.info("task", a, b, c) -- 1000毫秒后才会执行, 打印 task A B C
  62. end, 1000, "A", "B", "N")
  63. */
  64. void doc_sys_timerStart(void){};
  65. /*
  66. 创建一个循环定时器.非Task,函数里不能直接sys.waitXXX
  67. @api sys.timerLoopStart(func, timeout, arg1, arg2, argN)
  68. @function 待执行的函数,可以是匿名函数, 也可以是local或全局函数
  69. @int 延时时长,单位毫秒
  70. @any 需要传递的参数1,可选
  71. @any 需要传递的参数2,可选
  72. @any 需要传递的参数N,可选
  73. @return int 定时器id
  74. @usage
  75. sys.timerLoopStart(function(a, b, c)
  76. log.info("task", a, b, c) -- 1000毫秒后才会执行, 打印 task A B C
  77. end, 1000, "A", "B", "N")
  78. */
  79. void doc_sys_timerLoopStart(void){};
  80. /*
  81. 关闭一个定时器.
  82. @api sys.timerStop(id)
  83. @int 定时器id
  84. @return nil 无返回值
  85. @usage
  86. local tcount = 0
  87. local tid = sys.timerLoopStart(function(a, b, c)
  88. log.info("task", a, b, c) -- 1000毫秒后才会执行, 打印 task A B C
  89. if tcount > 10 then
  90. sys.timerStop(tid)
  91. end
  92. tcount = tcount + 1
  93. end, 1000, "A", "B", "N")
  94. */
  95. void doc_sys_timerStop(void){};
  96. /*
  97. 往特定topic通道发布一个消息
  98. @api sys.publish(topic, arg1, agr2, argN)
  99. @string topic的值
  100. @any 附带的参数1
  101. @any 附带的参数2
  102. @any 附带的参数N
  103. @return nil 无返回值
  104. @usage
  105. sys.publish("BT_READY", false)
  106. */
  107. void doc_sys_publish(void){};
  108. /*
  109. 订阅一个topic通道
  110. @api sys.subscribe(topic, func)
  111. @string topic的值
  112. @function 回调函数, 注意, 不能直接使用sys.waitXXX
  113. @return nil 无返回值
  114. @usage
  115. local function bt_cb(state)
  116. log.info("bt", state)
  117. end
  118. sys.subscribe("BT_READY", bt_cb)
  119. sys.subscribe("BT_READY", function(state)
  120. log.info("sys", "Got BT_READY", state)
  121. end)
  122. */
  123. void doc_sys_subscribe(void){};
  124. /*
  125. 取消订阅topic通道
  126. @api sys.unsubscribe(topic, func)
  127. @string topic的值
  128. @function 回调函数, 注意, 不能直接使用sys.waitXXX
  129. @return nil 无返回值
  130. @usage
  131. local function bt_cb(state)
  132. log.info("bt", state)
  133. end
  134. sys.unsubscribe("BT_READY", bt_cb)
  135. */
  136. void doc_sys_unsubscribe(void){};
  137. /*
  138. sys库主循环方法,仅允许在main.lua的末尾调用
  139. @api sys.run()
  140. @return nil 无返回值. 这个方法几乎不可能返回.
  141. @usage
  142. -- 总是main.lua的结尾一句,将来也许会简化掉
  143. sys.run()
  144. -- 之后的代码不会被执行
  145. */
  146. void doc_sys_run(void){};