常规更新
This commit is contained in:
@@ -2,6 +2,7 @@
|
||||
#include "Data_Source.h"
|
||||
#include "Local_Server/server/Global.h"
|
||||
#include <string_view>
|
||||
#include "Local_Server/server/io_coro.h"
|
||||
using namespace Psc;
|
||||
std::shared_ptr<Data_Source> ds(Data_Source_Handler* dsh) {
|
||||
return dynamic_cast<Data_Source*>(dsh)->that();
|
||||
@@ -130,28 +131,41 @@ size_t Data_Source_Handler::process_mode_acs_data(std::string_view origin_data)
|
||||
std::cout << source->key + " read:[mode_s_serial]:" << mem2hex(mode_data)
|
||||
<< std::endl;
|
||||
}
|
||||
SSR::Binary_Format_handle_buffer(
|
||||
source->buffer, mode_data, [this, source, &ret](std::string& packet) {
|
||||
ret++;
|
||||
auto msg = create_msg(packet);
|
||||
if (!msg) return;
|
||||
source->push_to_feed(msg);
|
||||
auto mt = msg->type;
|
||||
bool mode_s = mt == SSR::Msg::S7 || mt == SSR::Msg::S14;
|
||||
if (mt == SSR::Msg::HULC_Status) {
|
||||
source->handle_HULC(packet);
|
||||
}
|
||||
else if (mt == SSR::Msg::Radarcape_status) {
|
||||
auto radarcape_msg = SSR::create_Radarcape_STATUS_Message(packet);
|
||||
std::cout << radarcape_msg.toJson().to_json_string() << std::endl;
|
||||
SSR::mode_s_logger->debug("Radarcape_status/radarcape", {},
|
||||
radarcape_msg.toJson().to_json_string());
|
||||
}
|
||||
else if (mode_s) {
|
||||
// 拓展点
|
||||
handle_mode_s(std::dynamic_pointer_cast<SSR::Mode_S_Msg>(msg));
|
||||
}
|
||||
});
|
||||
auto handle_packet = [this, source, &ret](std::string& packet) {
|
||||
ret++;
|
||||
auto msg = create_msg(packet);
|
||||
if (!msg) return;
|
||||
source->push_to_feed(msg);
|
||||
auto mt = msg->type;
|
||||
bool mode_s = mt == SSR::Msg::S7 || mt == SSR::Msg::S14;
|
||||
if (mt == SSR::Msg::HULC_Status) {
|
||||
source->handle_HULC(packet);
|
||||
}
|
||||
else if (mt == SSR::Msg::Radarcape_status) {
|
||||
auto radarcape_msg = SSR::create_Radarcape_STATUS_Message(packet);
|
||||
std::cout << radarcape_msg.toJson().to_json_string() << std::endl;
|
||||
SSR::mode_s_logger->debug("Radarcape_status/radarcape", {},
|
||||
radarcape_msg.toJson().to_json_string());
|
||||
}
|
||||
else if (mode_s) {
|
||||
// 拓展点
|
||||
handle_mode_s(std::dynamic_pointer_cast<SSR::Mode_S_Msg>(msg));
|
||||
}
|
||||
};
|
||||
auto f = [this, source, handle_packet](std::string& packet) {
|
||||
auto& wait = Global::instance()->mode_acs.wait_process_msg;
|
||||
if (wait) {
|
||||
handle_packet(packet);
|
||||
}
|
||||
else {
|
||||
auto co = Coro::instance();
|
||||
auto executor = co->process_data->get_executor();
|
||||
asio::post(executor, [handle_packet, packet = std::move(packet)]() mutable {
|
||||
handle_packet(packet);
|
||||
});
|
||||
}
|
||||
};
|
||||
SSR::Binary_Format_handle_buffer(source->buffer, mode_data, f);
|
||||
return ret;
|
||||
}
|
||||
void Data_Source_Handler::handle_mode_s(std::shared_ptr<SSR::Mode_S_Msg> mode_s_msg) {
|
||||
|
||||
Reference in New Issue
Block a user