Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of mbed-os-example-mbed5-blinky by
baidu_ca_scheduler.h
00001 // Copyright 2017 Baidu Inc. All Rights Reserved. 00002 // Author: Su Hao (suhao@baidu.com) 00003 // 00004 // Description: Scheduler 00005 00006 #ifndef BAIDU_IOT_TINYDU_IOT_OS_SRC_IOT_BAIDU_CA_SCHEDULER_BAIDU_CA_SCHEDULER_H 00007 #define BAIDU_IOT_TINYDU_IOT_OS_SRC_IOT_BAIDU_CA_SCHEDULER_BAIDU_CA_SCHEDULER_H 00008 00009 #include "rtos.h" 00010 #include "baidu_ca.h" 00011 #include "baidu_ca_handler.h" 00012 #include "baidu_ca_network_socket.h" 00013 #include "baidu_util_list.h" 00014 #include "baidu_ca_object.h" 00015 00016 namespace duer { 00017 00018 class Scheduler : public Handler::OnMessageListener { 00019 public: 00020 00021 /** 00022 * @brief Scheduler 的事件回调接口 00023 */ 00024 class IOnEvent { 00025 public: 00026 /** 00027 * @brief Scheduler 在启动时的回调函数接口 00028 */ 00029 virtual int on_start() = 0; 00030 /** 00031 * @brief Scheduler 在停止时的回调函数接口 00032 */ 00033 virtual int on_stop() = 0; 00034 /** 00035 * @brief Scheduler 在有数据通信时的回调函数接口 00036 */ 00037 virtual int on_action(const char* action) = 0; 00038 00039 }; 00040 /** 00041 * @brief 获取 Scheduler 的唯一单例引用 00042 */ 00043 static Scheduler& instance(); 00044 /** 00045 * @brief 注册 Scheduler 的事件回调接口 00046 * @param[in] listener 事件回调接口 00047 * @return 0 00048 */ 00049 int set_on_event_listener(IOnEvent* listener); 00050 /** 00051 * @brief 添加控制点 00052 * @param[in] list_res 待注册的控制点数组 00053 * @param[in] list_res_size 控制点数组长度 00054 * @return 0 00055 */ 00056 int add_controll_points(const bca_res_t list_res[], bca_size_t list_res_size); 00057 /** 00058 * @brief 启动 Scheduler 00059 * @return 0 00060 */ 00061 int start(); 00062 /** 00063 * @brief 停止 Scheduler 00064 * @return 0 00065 */ 00066 int stop(); 00067 /** 00068 * @brief 上报数据 json格式 00069 * @param[in] data 具体的数据内容 00070 * @return 0 00071 */ 00072 int report(const Object& data); 00073 /** 00074 * @brief 上报数据 json格式 00075 * @param[in] data 数据内容 00076 * @param[in] size 数据长度 00077 * @return 0 00078 */ 00079 int report(const void* data, size_t size); 00080 /** 00081 * @brief 回复对端的请求 00082 * @param[in] req 请求 00083 * @param[in] msg_code 回复的code 00084 * @param[in] payload 回复的内容 00085 * @return 0 00086 */ 00087 int response(const bca_msg_t* req, int msg_code, const char* payload); 00088 /** 00089 * @brief 上报语音数据 00090 * @param[in] data 语音数据 00091 * @param[in] size 语音数据长度 00092 * @param[in] eof 是否最后一个数据包 00093 * @return 0 00094 */ 00095 int send_content(const void* data, size_t size, bool eof); 00096 /** 00097 * @brief 清除待处理传输数据 00098 * @return 0 00099 */ 00100 int clear_content(); 00101 /** 00102 * @brief handler回调接口 00103 * @param[in] message 需要处理的消息 00104 * @return true 00105 */ 00106 virtual bool on_message(Message& message); 00107 00108 private: 00109 00110 Scheduler(); 00111 00112 virtual ~Scheduler(); 00113 00114 void data_available(const bca_addr_t* addr); 00115 00116 int start_handle(); 00117 00118 int stop_handle(); 00119 00120 int report_handle(Message& message); 00121 00122 int data_available_handle(Message& message); 00123 00124 void keep_alive_handle(); 00125 00126 void timer_callback(); 00127 00128 int report_list_clear(); 00129 00130 int on_start(int status); 00131 00132 int on_stop(); 00133 00134 int on_action(const char* action); 00135 00136 static bca_status_t play_uri(bca_context ctx, bca_msg_t* msg, bca_addr_t* addr); 00137 00138 static bca_status_t update_package(bca_context ctx, 00139 bca_msg_t* msg, 00140 bca_addr_t* addr); 00141 00142 static bca_status_t output_result(bca_context ctx, 00143 bca_msg_t* msg, 00144 bca_addr_t* addr); 00145 00146 IOnEvent* _on_event_listener; 00147 00148 Handler _event_handler; 00149 00150 bca_handler _handler; 00151 00152 int _state; 00153 00154 rtos::Mutex _mutex; 00155 00156 rtos::RtosTimer _timer; 00157 00158 unsigned int _start_timeout; 00159 00160 duer::SocketAdapter::Callback _on_read_callback; 00161 00162 bu_list_t _send_list; 00163 00164 mbed::Timer _stop_timer; 00165 00166 unsigned int _stop_timeout; 00167 00168 int _topic_id; 00169 bool _enable_ota; 00170 00171 static Scheduler _s_scheduler; 00172 }; 00173 00174 } // namespace duer 00175 00176 #endif // BAIDU_IOT_TINYDU_IOT_OS_SRC_IOT_BAIDU_CA_SCHEDULER_BAIDU_CA_SCHEDULER_H
Generated on Tue Jul 12 2022 16:28:52 by
1.7.2
