串口改协程前

This commit is contained in:
2026-06-23 11:00:00 +08:00
parent 3a4a3abe3f
commit 8ca05115ec
5 changed files with 153 additions and 38 deletions
+17 -2
View File
@@ -107,6 +107,12 @@ public:
virtual std::shared_ptr<SSR::Msg> create_msg(const std::shared_ptr<SSR::Data_Source_Interface>& source, const std::string& packet);
virtual void update_msg_day_time(std::shared_ptr<SSR::Msg> msg);
virtual void handle_mode_acs_source();
virtual ucoro::awaitable<void> handle_in_loop_coro();
virtual ucoro::awaitable<std::string> recv_coro();
virtual ucoro::awaitable<void> source_step_coro();
void process_mode_acs_data(const std::string& mode_data);
void refresh_data_feed_key_list();
@@ -196,6 +202,7 @@ public:
}
return true;
}
bool is_open() const { return _open_; }
void close() {
if (_open_) {
_open_ = false;
@@ -224,7 +231,11 @@ protected:
struct TCP_Client_Data_Source : Data_Source {
void handle_in_loop() override {
ucoro::sync_await(cli.tick_coro());
ucoro::sync_await(handle_in_loop_coro());
}
ucoro::awaitable<void> handle_in_loop_coro() override {
co_await cli.tick_coro();
co_return;
}
Psc::JSON get_custom_state_json() override {
auto& state = cli.state;
@@ -263,7 +274,10 @@ struct TCP_Client_Data_Source : Data_Source {
}
std::string read() override {
return ucoro::sync_await(cli.read_coro());
return ucoro::sync_await(recv_coro());
}
ucoro::awaitable<std::string> recv_coro() override {
co_return co_await cli.read_coro();
}
};
struct Serial_Data_Source : Data_Source {
@@ -377,6 +391,7 @@ struct File_Data_Source : public Data_Source {
}
std::string read() override;
void handle_mode_acs_source() override;
ucoro::awaitable<void> source_step_coro() override;
protected:
std::optional<std::string> get_raw_line(int &ret_index);