Pārlūkot izejas kodu

20211125, outlet singlechip communicaton

huli 3 gadi atpakaļ
vecāks
revīzija
11881009bf

Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 1619 - 0
message/notify_message.pb.cc


Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 1146 - 0
message/notify_message.pb.h


+ 28 - 0
message/notify_message.proto

@@ -0,0 +1,28 @@
+syntax = "proto2";
+package message;
+import "message_base.proto";
+import "singlechip_msg.proto";
+message Notify_request_msg
+{
+    required Base_info                  base_info=1;                 //消息类型
+    required string                     command_key=2;
+    required int32                      terminal_id=3;              //终端id
+    required Car_info                   car_info=4;                  //车辆标识(车牌号)
+}
+
+message Notify_response_msg
+{
+    required Base_info                  base_info=1;                 //消息类型
+    required string                     command_key=2;
+    required int32                      terminal_id=3;              //终端id
+    required Error_manager              code=4;                     //请求结果码
+}
+
+message Notify_status_msg
+{
+    required Base_info                  base_info=1;                 //消息类型
+    required int32                      terminal_id=2;
+    required Error_manager              error_manager = 3;
+    optional Singlechip_data	        singlechipData=4; //单片机的数据
+    optional bool		                singlechip_validity = 5;//单片机数据有效性
+}

+ 48 - 1
system/system_executor.cpp

@@ -125,6 +125,25 @@ Error_manager System_executor::check_msg(Communication_message* p_msg)
 				}
 				break;
 			}
+			case Communication_message::Message_type::eNotify_status_msg:
+			{
+				message::Notify_status_msg t_notify_status_msg;
+				//针对消息类型, 对消息进行二次解析
+				if (t_notify_status_msg.ParseFromString(p_msg->get_message_buf()))
+				{
+					if ( t_notify_status_msg.terminal_id() == Dispatch_manager::get_instance_references().get_dispatch_manager_id()*2 ||
+					t_notify_status_msg.terminal_id() == Dispatch_manager::get_instance_references().get_dispatch_manager_id()*2+1)
+					{
+						return Error_code::SUCCESS;
+					}
+				}
+				else
+				{
+					return Error_manager(Error_code::SYSTEM_EXECUTOR_PARSE_ERROR, Error_level::MINOR_ERROR,
+										 " message::Dispatch_request_msg  ParseFromString error ");
+				}
+				break;
+			}
 			default :
 				;
 				break;
@@ -278,6 +297,23 @@ Error_manager System_executor::execute_msg(Communication_message* p_msg)
 				}
 				break;
 			}
+			case Communication_message::Message_type::eNotify_status_msg:
+			{
+				message::Notify_status_msg t_notify_status_msg;
+				//针对消息类型, 对消息进行二次解析
+				if (t_notify_status_msg.ParseFromString(p_msg->get_message_buf()))
+				{
+					//往线程池添加执行任务, 之后会唤醒一个线程去执行他.
+					m_thread_pool.enqueue(&System_executor::execute_for_notify_status_msg, this,
+										  t_notify_status_msg	);
+				}
+				else
+				{
+					return Error_manager(Error_code::SYSTEM_EXECUTOR_PARSE_ERROR, Error_level::MINOR_ERROR,
+										 " message::Dispatch_request_msg  ParseFromString error ");
+				}
+				break;
+			}
 			default:
 				break;
 		}
@@ -547,5 +583,16 @@ void System_executor::execute_for_terminal_status_msg(message::Terminal_status_m
 	return ;
 }
 
-
+//调度模块 ///单片机的状态消息
+void System_executor::execute_for_notify_status_msg(message::Notify_status_msg notify_status_msg)
+{
+	Error_manager t_error;
+	t_error = Dispatch_manager::get_instance_references().execute_for_singlechip_data_msg(notify_status_msg.singlechipdata(), notify_status_msg.singlechip_validity());
+	if ( t_error != Error_code::SUCCESS )
+	{
+		LOG(INFO) << " System_executor::execute_for_singlechip_data_msg fun error "<< this;
+		LOG(INFO) << t_error.to_string() << "   "<< this;
+	}
+	return ;
+}
 

+ 3 - 0
system/system_executor.h

@@ -18,6 +18,7 @@
 //#include "../locate/locate_manager.h"
 #include "../system/system_communication.h"
 #include "../message/dispatch_message.pb.h"
+#include "../message/notify_message.pb.h"
 #include "../dispatch/dispatch_manager.h"
 
 class System_executor:public Singleton<System_executor>
@@ -91,6 +92,8 @@ public:
 	void execute_for_ground_status_msg(message::Ground_status_msg ground_status_msg);
 	//调度模块 ///单片机的状态消息
 	void execute_for_terminal_status_msg(message::Terminal_status_msg terminal_status_msg);
+	//调度模块 ///单片机的状态消息
+	void execute_for_notify_status_msg(message::Notify_status_msg notify_status_msg);
 protected://member variable
 
 	System_executor_status		m_system_executor_status;		//系统执行者的状态