diff --git a/ComHS-main.cpp b/ComHS-main.cpp index 0c68c8f..b5c505c 100644 --- a/ComHS-main.cpp +++ b/ComHS-main.cpp @@ -2,41 +2,65 @@ #include #include #include +#include #include "ComHS.h" using namespace std; +/* 全局运行标志 */ +static volatile int keep_running = 1; + +/* 信号处理函数 */ +void signal_handler(int signum) +{ + keep_running = 0; + cout << "\n[INFO] Received signal " << signum << ", stopping..." << endl; +} + +/* + * 主函数 + * + * 命令行参数: + * argv[1]: 遥控串口设备路径 (默认: /dev/ttyUSB0) + * argv[2]: 遥测串口设备路径 (默认: /dev/ttyUSB1) + * argv[3]: 波特率 (默认: 115200) + */ int main(int argc, char *argv[]) { - // 默认串口配置 - const char *dev_telec = "/dev/ttyUSB0"; // 遥控串口 - const char *dev_telem = "/dev/ttyUSB1"; // 遥测串口 + const char *dev_telec = "/dev/ttyUSB0"; /* 遥控串口 */ + const char *dev_telem = "/dev/ttyUSB1"; /* 遥测串口 */ int baudrate = 115200; - - // 从命令行参数获取配置 - if (argc >= 3) - { + + /* 从命令行参数获取配置 */ + if (argc >= 3) { dev_telec = argv[1]; dev_telem = argv[2]; } - if (argc >= 4) - { + if (argc >= 4) { baudrate = atoi(argv[3]); } - - // 启动服务 + + + /* 设置信号处理 */ + signal(SIGINT, signal_handler); + signal(SIGTERM, signal_handler); + + /* 启动服务 */ start_scomm_service(dev_telec, dev_telem, baudrate); - - // 主循环 - int counter = 0; - while (1) - { + + while (keep_running) { + static int counter = 0; + if (counter++ >= 10) { + counter = 0; + } + sleep(1); } - - // 服务停止 + + cout << "[INFO] Stopping service..." << endl; stop_scomm_service(); - + + cout << "[INFO] Service stopped successfully" << endl; return 0; } \ No newline at end of file diff --git a/ComHS.cpp b/ComHS.cpp index daec3e2..d5799da 100644 --- a/ComHS.cpp +++ b/ComHS.cpp @@ -5,627 +5,702 @@ #include #include #include -#include -#include #include #include +#include +#include #include "ComHS.h" #include "SimMsg.h" using namespace std; -// 全局变量定义 -static int fd_telecontrol = -1; // 遥控串口 通信硬件服务化发送给通信机 -static int fd_telemetry = -1; // 遥测串口 通信机发送给通信硬件服务化 +/* + * 全局变量定义 + */ -S_Comm_telemetry_data_t S_TELE; // 维护遥测数据缓存,供状态查询使用 -uint8_t cmderPadding[1] = {0xA5}; // 用于填充指令 +/* 串口文件描述符 */ +static int fd_telecontrol = -1; /* 遥控串口 - 通信机发送给通信硬件服务化 */ +static int fd_telemetry = -1; /* 遥测串口 - 通信硬件服务化发送给通信机 */ + +/* 遥测数据缓存 */ +S_Comm_telemetry_data_t S_TELE; /* 维护遥测数据缓存,供状态查询使用 */ + +/* 填充指令 */ +uint8_t cmderPadding[1] = {0xA5}; + +/* 通信机开关状态 */ uint8_t S_COMM_ON_OFF = 0; -uint8_t scommHeaderErrCnt = 0; // 帧头错误 -uint8_t scommResIDErrCnt = 0; // 应答帧ID错误 -uint8_t scommCheckErrCnt = 0; // 帧校验错误 -uint8_t scommUartResetCnt = 0; // 无应答串口复位计数 -uint8_t sendCmderCnt = 0; // 向通信机发送控制指令计数 -uint8_t sendCmderSuccessCnt = 0; // 通信机控制指令执行成功应答计数 -uint8_t sendCmderErrCnt = 0; // 通信机控制指令错误应答计数 -uint8_t sendTelemCnt = 0; // 向通信机发送遥测帧计数 -uint8_t sendTelemSuccessCnt = 0; // 接收通信机遥测帧应答计数 -uint8_t sendGetSelfTelemCmderCnt = 0; // 发送查询通信机工程遥测计数 +/* 统计计数器 */ +uint8_t scommHeaderErrCnt = 0; /* 帧头错误 */ +uint8_t scommResIDErrCnt = 0; /* 应答帧ID错误 */ +uint8_t scommCheckErrCnt = 0; /* 帧校验错误 */ +uint8_t scommUartResetCnt = 0; /* 无应答串口复位计数 */ +uint8_t sendCmderCnt = 0; /* 向通信机发送控制指令计数 */ +uint8_t sendCmderSuccessCnt = 0; /* 通信机控制指令执行成功应答计数 */ +uint8_t sendCmderErrCnt = 0; /* 通信机控制指令错误应答计数 */ +uint8_t sendTelemCnt = 0; /* 向通信机发送遥测帧计数 */ +uint8_t sendTelemSuccessCnt = 0; /* 接收通信机遥测帧应答计数 */ +uint8_t sendGetSelfTelemCmderCnt = 0; /* 发送查询通信机工程遥测计数 */ -unsigned char S_Telec1_Data[512] = {0}; // 遥控 -unsigned char S_Telem_Data[512] = {0}; // 遥测 +/* 数据缓冲区 */ +unsigned char S_Telec1_Data[512] = {0}; /* 遥控数据 */ +unsigned char S_Telem_Data[512] = {0}; /* 遥测数据 */ -// ComHS相关全局变量 -SimMsg* ComHS_part = nullptr; +/* ComHS相关全局变量 */ +SimMsg *ComHS_part = nullptr; string servername = "Com_Hardware_Service"; string topic_name_cmd = "Command"; string topic_name_tlm = "Telemetry"; -const char* fastdds_dest = "Com_Service"; +const char *fastdds_dest = "Com_Service"; -// 运行控制 +/* 运行控制 */ static volatile int g_running = 1; -static pthread_t telemetry_thread, monitor_thread; -// 信号处理函数 +/* 函数前向声明 */ +static int process_received_data(uint8_t *data, uint16_t size); + +/* + * 信号处理函数 + */ static void signal_handler(int signum) { - g_running = 0; + g_running = 0; } -// ComHS日志函数 +/* + * ComHS日志函数 + */ void ComHSWriteLog(const string &msg) { - cout << msg << endl; + cout << msg << endl; } -// 初始化ComHS的fastdds +/* + * 初始化ComHS的fastdds + * + * @domainid: 域ID + * @appname: 应用程序名称 + */ void ComHS_init(uint8_t domainid, string appname) { - vector parameters; - string expression = "dest = '" + servername + "'"; - - if (nullptr == ComHS_part) - { - ComHS_part = new SimMsg(domainid, 3000, appname, ComHSWriteLog); - ComHS_part->create_pub(topic_name_cmd); - ComHS_part->create_pub(topic_name_tlm); - - ComHS_part->create_sub(topic_name_cmd, command_callback, expression, parameters); - ComHS_part->create_sub(topic_name_tlm, telemetry_callback, expression, parameters); - - } + vector parameters; + string expression = "dest = '" + servername + "'"; + + if (nullptr == ComHS_part) { + ComHS_part = new SimMsg(domainid, 3000, appname, ComHSWriteLog); + ComHS_part->create_pub(topic_name_cmd); + ComHS_part->create_pub(topic_name_tlm); + + ComHS_part->create_sub(topic_name_cmd, command_callback, + expression, parameters); + ComHS_part->create_sub(topic_name_tlm, telemetry_callback, + expression, parameters); + } } -// 通信硬件服务化遥控发布 -void ComHS_command_Pub(uint8_t* data, string dest, uint16_t len) +/* + * 通信硬件服务化遥控发布 + * + * @data: 要发布的数据 + * @dest: 目标对象 + * @len: 数据长度 + */ +void ComHS_command_Pub(uint8_t *data, string dest, uint16_t len) { - if (ComHS_part) - { - ComHS_part->publish(topic_name_cmd, "Com_Hardware_Service", dest, "command", data, len); - } + if (ComHS_part) { + ComHS_part->publish(topic_name_cmd, "Com_Hardware_Service", + dest, "command", data, len); + } } -// 通信硬件服务化遥测发布 -void ComHS_telemetry_Pub(uint8_t* data, string dest, uint16_t len) +/* + * 通信硬件服务化遥测发布 + * + * @data: 要发布的数据 + * @dest: 目标对象 + * @len: 数据长度 + */ +void ComHS_telemetry_Pub(uint8_t *data, string dest, uint16_t len) { - if (ComHS_part) - { - ComHS_part->publish(topic_name_tlm, "Com_Hardware_Service", dest, "telemetry", data, len); - } + if (ComHS_part) { + ComHS_part->publish(topic_name_tlm, "Com_Hardware_Service", + dest, "telemetry", data, len); + } } -// ComHS命令回调函数 +/* + * ComHS命令回调函数 + * + * 将接收到的遥控指令通过send_S_COMM_Cmder()函数发送给串口 + */ void command_callback(string src, string dest, string type, - string reserve1, string reserve2, - vector& data) + string reserve1, string reserve2, + vector &data) { - - if (S_COMM_ON_OFF != 1) - { - cout << "[ERROR] S_COMM is not available" << endl; - return; - } - - if (data.empty()) - { - cout << "[ERROR] No command data provided" << endl; - return; - } - - // 直接发送给通信机 - uint8_t *cmd_data = data.data(); - uint16_t cmd_len = data.size(); - - cout << "[INFO] Sending command to S_COMM: " << data.size() << " bytes" << endl; - - // 发送控制指令 - send_S_COMM_Cmder(cmd_data, cmd_len); + if (S_COMM_ON_OFF != 1) { + cerr << "S_COMM not available" << endl; + return; + } + + if (data.empty()) { + cerr << "No command data provided" << endl; + return; + } + + /* 直接发送给通信机 */ + uint8_t *cmd_data = data.data(); + uint16_t cmd_len = data.size(); + + /* 发送控制指令 */ + send_S_COMM_Cmder(cmd_data, cmd_len); } -// ComHS遥测回调函数 +/* + * ComHS遥测回调函数 + * + * 1、当接收到的为命令类型,即为取遥测指令时,触发取遥测 + * 2、当接收到的为遥测类型,即为需要下行的遥测时,将遥测下行 + */ void telemetry_callback(string src, string dest, string type, - string reserve1, string reserve2, - vector& data) + string reserve1, string reserve2, + vector &data) { - - if (S_COMM_ON_OFF != 1) - { - cout << "[ERROR] S_COMM is not available" << endl; - return; - } - - if (data.empty()) - { - cout << "[ERROR] No telemetry data provided" << endl; - return; - } - - // 解析为Multi_EPDU_packet_t结构体 - if (data.size() >= sizeof(Multi_EPDU_packet_t)) - { - Multi_EPDU_packet_t *down_pkt = (Multi_EPDU_packet_t *)data.data(); - - // 通过通信机发送下行遥测 - Send_Telemetry_From_S((uint8_t *)down_pkt, sizeof(Multi_EPDU_packet_t)); - cout << "[INFO] Downlink telemetry sent via S_COMM" << endl; - } - else - { - cout << "[ERROR] Telemetry data too small: " << data.size() - << " bytes, need at least " << sizeof(Multi_EPDU_packet_t) << " bytes" << endl; + if (S_COMM_ON_OFF != 1) { + cerr << "S_COMM not available" << endl; + return; + } + + if (data.empty()) { + cerr << "No telemetry data provided" << endl; + return; + } + + if (type == "command" ) { + if (data.size() == 1 && data[0] == 0xFF) { + Get_S_COMM_UP_CMD(); + } + } else if (type == "telemetry") { + if (data.size() >= sizeof(Multi_EPDU_packet_t)) { + Multi_EPDU_packet_t *down_pkt = (Multi_EPDU_packet_t *)data.data(); + Send_Telemetry_From_S((uint8_t *)down_pkt, sizeof(Multi_EPDU_packet_t)); + } else { + cerr << "Telemetry data too small" << endl; + } } } -// 串口初始化 +/* + * 串口初始化 + * + * @dev_telec: 遥控串口设备路径 + * @dev_telem: 遥测串口设备路径 + * @baudrate: 波特率 + * + * 返回值: 成功返回0,失败返回-1 + */ int scomm_uart_init(const char *dev_telec, const char *dev_telem, int baudrate) { - // 初始化遥控串口 - fd_telecontrol = open(dev_telec, O_RDWR | O_NOCTTY | O_NDELAY); - if (fd_telecontrol < 0) - { - perror("open telecontrol serial failed"); - return -1; - } + /* 初始化遥控串口 */ + fd_telecontrol = open(dev_telec, O_RDWR | O_NOCTTY | O_NDELAY); + if (fd_telecontrol < 0) { + perror("Open telecontrol serial failed"); + return -1; + } - // 设置为非阻塞模式 - fcntl(fd_telecontrol, F_SETFL, 0); + /* 设置为非阻塞模式 */ + fcntl(fd_telecontrol, F_SETFL, 0); - // 初始化遥测串口 - fd_telemetry = open(dev_telem, O_RDWR | O_NOCTTY | O_NDELAY); - if (fd_telemetry < 0) - { - perror("open telemetry serial failed"); - close(fd_telecontrol); - fd_telecontrol = -1; - return -1; - } + /* 初始化遥测串口 */ + fd_telemetry = open(dev_telem, O_RDWR | O_NOCTTY | O_NDELAY); + if (fd_telemetry < 0) { + perror("Open telemetry serial failed"); + close(fd_telecontrol); + fd_telecontrol = -1; + return -1; + } - // 设置为非阻塞模式 - fcntl(fd_telemetry, F_SETFL, 0); + /* 设置为非阻塞模式 */ + fcntl(fd_telemetry, F_SETFL, 0); - // 设置两个串口参数 - int fds[] = {fd_telecontrol, fd_telemetry}; - for (int i = 0; i < 2; i++) - { - struct termios tty; - if (tcgetattr(fds[i], &tty) != 0) - { - perror("tcgetattr failed"); - continue; - } + /* 设置两个串口参数 */ + int fds[] = {fd_telecontrol, fd_telemetry}; + for (int i = 0; i < 2; i++) { + struct termios tty; - // 设置波特率 - speed_t speed; - switch(baudrate) { - case 9600: speed = B9600; break; - case 19200: speed = B19200; break; - case 38400: speed = B38400; break; - case 57600: speed = B57600; break; - case 115200: speed = B115200; break; - default: speed = B115200; break; - } - - cfsetospeed(&tty, speed); - cfsetispeed(&tty, speed); + if (tcgetattr(fds[i], &tty) != 0) { + perror("tcgetattr failed"); + continue; + } - // 8N1: 8位数据位,无奇偶校验,1位停止位 - tty.c_cflag &= ~PARENB; // 无奇偶校验 - tty.c_cflag &= ~CSTOPB; // 1位停止位 - tty.c_cflag &= ~CSIZE; - tty.c_cflag |= CS8; // 8位数据位 - tty.c_cflag |= CREAD | CLOCAL; // 启用接收器,忽略调制解调器控制线 + /* 设置波特率 */ + speed_t speed; + switch (baudrate) { + case 9600: + speed = B9600; + break; + case 19200: + speed = B19200; + break; + case 38400: + speed = B38400; + break; + case 57600: + speed = B57600; + break; + case 115200: + speed = B115200; + break; + default: + speed = B115200; + break; + } - // 关闭流控 - tty.c_cflag &= ~CRTSCTS; + cfsetospeed(&tty, speed); + cfsetispeed(&tty, speed); - // 设置输入模式 - tty.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG); // 非规范模式 - tty.c_iflag &= ~(IXON | IXOFF | IXANY); // 关闭软件流控 - tty.c_iflag &= ~(INLCR | ICRNL | IGNCR | IUCLC); // 关闭输入转换 + /* 8N1: 8位数据位,无奇偶校验,1位停止位 */ + tty.c_cflag &= ~PARENB; /* 无奇偶校验 */ + tty.c_cflag &= ~CSTOPB; /* 1位停止位 */ + tty.c_cflag &= ~CSIZE; + tty.c_cflag |= CS8; /* 8位数据位 */ + tty.c_cflag |= CREAD | CLOCAL; /* 启用接收器,忽略调制解调器控制线 */ - // 设置输出模式 - tty.c_oflag &= ~OPOST; // 原始输出 - tty.c_oflag &= ~ONLCR; // 不转换换行 + /* 关闭流控 */ + tty.c_cflag &= ~CRTSCTS; - // 设置超时和最小读取字符数 - tty.c_cc[VMIN] = 0; // 非阻塞 - tty.c_cc[VTIME] = 5; // 0.5秒超时 + /* 设置输入模式 */ + tty.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG); /* 非规范模式 */ + tty.c_iflag &= ~(IXON | IXOFF | IXANY); /* 关闭软件流控 */ + tty.c_iflag &= ~(INLCR | ICRNL | IGNCR | IUCLC); /* 关闭输入转换 */ - if (tcsetattr(fds[i], TCSANOW, &tty) != 0) - { - perror("tcsetattr failed"); - } - - // 清空缓冲区 - tcflush(fds[i], TCIOFLUSH); - } + /* 设置输出模式 */ + tty.c_oflag &= ~OPOST; /* 原始输出 */ + tty.c_oflag &= ~ONLCR; /* 不转换换行 */ - cout << "[OK] S_COMM UART init telec=" << dev_telec - << " telem=" << dev_telem << " baud=" << baudrate << endl; - return 0; + /* 设置超时和最小读取字符数 */ + tty.c_cc[VMIN] = 0; /* 非阻塞 */ + tty.c_cc[VTIME] = 5; /* 0.5秒超时 */ + + if (tcsetattr(fds[i], TCSANOW, &tty) != 0) { + perror("tcsetattr failed"); + } + + /* 清空缓冲区 */ + tcflush(fds[i], TCIOFLUSH); + } + + cout << "S_COMM UART initialized: telec=" << dev_telec + << " telem=" << dev_telem << " baud=" << baudrate << endl; + return 0; } -// S遥测串口发送 +/* + * S遥测串口发送 + * + * 将遥测数据进行封装,然后发送到通信机串口 + * + * @cmd: 命令码 + * @len: 数据长度 + * @nums: 数据指针 + */ void S_UART_TELEMETRY_SEND(uint8_t cmd, uint16_t len, uint8_t *nums) { - uint8_t tele_check = 0; - uint16_t i; - memset(S_Telem_Data, 0, 512); + uint8_t tele_check = 0; + uint16_t i; - S_Telem_Data[0] = 0xEB; - S_Telem_Data[1] = 0x90; - S_Telem_Data[2] = cmd; - S_Telem_Data[3] = (unsigned char)len >> 8; - S_Telem_Data[4] = (unsigned char)len; + memset(S_Telem_Data, 0, 512); - for (i = 0; i < len; i++) - { - S_Telem_Data[i + 5] = *(nums + i); - } + S_Telem_Data[0] = 0xEB; + S_Telem_Data[1] = 0x90; + S_Telem_Data[2] = cmd; + S_Telem_Data[3] = (unsigned char)len >> 8; + S_Telem_Data[4] = (unsigned char)len; - for (i = 2; i < (len + 5); i++) - { - tele_check += S_Telem_Data[i]; - } + for (i = 0; i < len; i++) { + S_Telem_Data[i + 5] = *(nums + i); + } - S_Telem_Data[len + 5] = tele_check; + for (i = 2; i < (len + 5); i++) { + tele_check += S_Telem_Data[i]; + } - if (fd_telemetry >= 0) - { - int written = write(fd_telemetry, S_Telem_Data, (len + 6)); - if (written < 0) - { - perror("[ERROR] S_COMM write failed"); - } - else - { - printf("[INFO] S_COMM sent command: 0x%02X, len: %d, bytes: %d\n", cmd, len, written); - } - } + S_Telem_Data[len + 5] = tele_check; + + if (fd_telemetry >= 0) { + int written = write(fd_telemetry, S_Telem_Data, (len + 6)); + if (written < 0) { + perror("S_COMM write failed"); + } + } } -// 向S测控发送控制指令 -void send_S_COMM_Cmder(uint8_t *cmd, uint16_t len) +/* + * 超时读取 + * + * @timeout_ms: 超时时间(毫秒) + * @return: 读取到的字节数,-1表示超时或错误 + */ +int scomm_read_with_select(int timeout_ms) { - sendCmderCnt++; - - uint8_t kc = 0; - uint8_t cmd_buff[64] = {0}; - - cmd_buff[0] = 0x11; - cmd_buff[1] = 0x1A; - cmd_buff[2] = 0xC0; - cmd_buff[3] = 0x00; - - cmd_buff[4] = (uint8_t)(len + 1) >> 8; // 根据高层协议来,实际上是+2减1 - cmd_buff[5] = (uint8_t)len + 1; - - for (kc = 0; kc < len + 2; kc++) - cmd_buff[kc + 6] = cmd[kc]; - - S_UART_TELEMETRY_SEND(TELECONTROL_CMD, len + 8, cmd_buff); -} - -// 获取S测控常规遥测 -void Get_S_COMM_Telemetry_Data(void) -{ - if (S_COMM_ON_OFF == 1) - { - S_UART_TELEMETRY_SEND(CON_TELEMETRY, 1, cmderPadding); - printf("[INFO] S_COMM query telemetry sent\n"); - if (sendGetSelfTelemCmderCnt++ >= 10) - { - sendGetSelfTelemCmderCnt = 0; - printf("[WARN] S_COMM telemetry no response, reset UART\n"); - } - } -} - -// 获取上行遥控指令 -void Get_S_COMM_UP_CMD(void) -{ - if (S_COMM_ON_OFF == 1) - { - S_UART_TELEMETRY_SEND(QUERY_TELECMD, 1, cmderPadding); - printf("[INFO] S_COMM query uplink command sent\n"); - } -} - -// 通过S测控发送下行遥测 -void Send_Telemetry_From_S(uint8_t *tele, uint16_t len) -{ - sendTelemCnt++; - S_UART_TELEMETRY_SEND(SEND_TELEMETRY, len, tele); - printf("[INFO] S_COMM send telemetry from S, len: %d\n", len); -} - -// 接收数据处理函数 -int process_received_data(uint8_t *data, uint16_t size) -{ - if (size < 6) - { - printf("[ERROR] S_COMM received data too short: %d bytes\n", size); + if (fd_telecontrol < 0) { + cerr << "S_COMM telecontrol port not opened" << endl; return -1; } - - uint16_t i = 0; - uint8_t cmd = 0; - uint16_t frame_len = 0; - uint8_t checksum0 = 0, checksum1 = 0; - - memcpy(S_Telec1_Data, data, size); - - if ((S_Telec1_Data[0] == 0xEB) && (S_Telec1_Data[1] == 0x90)) - { - cmd = S_Telec1_Data[2]; - frame_len = (uint16_t)(S_Telec1_Data[3] << 8) | (S_Telec1_Data[4]); - checksum0 = S_Telec1_Data[frame_len + 5]; - - // 检查帧长度是否合理 - if (frame_len > 500) - { - printf("[ERROR] S_COMM frame length too large: %d\n", frame_len); - return -1; - } - - // 检查实际接收到的数据是否足够 - if (size < (frame_len + 6)) - { - printf("[ERROR] S_COMM incomplete frame: need %d bytes, got %d\n", - frame_len + 6, size); - return -1; - } - - // 计算校验和 - checksum1 = 0; - for (i = 2; i < (frame_len + 5); i++) - { - checksum1 += S_Telec1_Data[i]; - } - - if (checksum1 != checksum0) - { - scommCheckErrCnt++; - printf("[ERROR] S_COMM checksum error: calc=0x%02X recv=0x%02X\n", checksum1, checksum0); - return -1; - } - - // 根据命令类型处理 - switch (cmd) - { - case 0xF0: // 常规遥测数据 - printf("[INFO] S_COMM telemetry data received, frame_len=%d\n", frame_len); - if (size >= (13 + frame_len - 10)) - { - // 维护遥测数据缓存 - memcpy((uint8_t *)&S_TELE, (uint8_t *)&S_Telec1_Data[13], frame_len - 10); - if (sendGetSelfTelemCmderCnt > 0) - sendGetSelfTelemCmderCnt--; - - // 通过ComHS发布遥测数据 - if (frame_len - 10 > 0) - { - ComHS_telemetry_Pub((uint8_t *)&S_TELE, fastdds_dest, sizeof(S_Comm_telemetry_data_t)); - printf("[INFO] S_COMM telemetry published via ComHS\n"); - } - } - break; - - case 0xE1: // 遥控指令应答 - if ((S_Telec1_Data[5] == 0xAA) && (S_Telec1_Data[6] == 0x8C)) - { - sendCmderSuccessCnt++; - printf("[INFO] S_COMM command success\n"); - } - else - { - sendCmderErrCnt++; - printf("[ERROR] S_COMM command error\n"); - } - break; - - case 0xB4: // 上行遥控指令 - printf("[INFO] S_COMM uplink command received, frame_len=%d\n", frame_len); - if (size >= 9 && frame_len >= 4) - { - uint16_t total_data_len = frame_len; - - if (total_data_len > 4) - { - ComHS_command_Pub(&S_Telec1_Data[5], fastdds_dest, total_data_len); - printf("[INFO] S_COMM uplink command published, len=%d bytes\n", total_data_len); - } - else - { - printf("[INFO] No actual data in uplink command\n"); - } - } - break; - - case 0xA5: // 遥测确认 - if ((S_Telec1_Data[5] == 0xAA) && (S_Telec1_Data[6] == 0x50)) - { - sendTelemSuccessCnt = 1; - printf("[INFO] S_COMM telemetry sent successfully\n"); - } - break; - - default: - scommResIDErrCnt++; - printf("[ERROR] S_COMM unknown command ID: 0x%02X\n", cmd); - return -1; - } - - return 0; // 处理成功 - } - else - { - scommHeaderErrCnt++; - printf("[ERROR] S_COMM frame header error: 0x%02X 0x%02X\n", - S_Telec1_Data[0], S_Telec1_Data[1]); - return -1; - } -} - -// 读取通信机响应数据 -int read_scomm_response(void) -{ - if (fd_telecontrol < 0) - return -1; - + + fd_set read_fds; + struct timeval tv; uint8_t buffer[512]; int total_read = 0; - // 非阻塞读取所有可用数据 - while (g_running) - { - int bytes = read(fd_telecontrol, buffer + total_read, sizeof(buffer) - total_read); - if (bytes > 0) - { - total_read += bytes; - printf("[INFO] S_COMM received %d bytes response, total: %d\n", bytes, total_read); - } - else if (bytes < 0) - { - if (errno == EAGAIN || errno == EWOULDBLOCK) - { - // 无数据可读,退出循环 - break; - } - else - { - perror("[ERROR] S_COMM read error"); - break; - } - } - else - { - // read返回0,通常表示文件结束 - break; - } - - // 检查是否读取了足够的数据 - if (total_read >= sizeof(buffer)) - { - printf("[WARN] S_COMM buffer full\n"); - break; - } - usleep(1000); - } + // 设置超时时间 + tv.tv_sec = timeout_ms / 1000; + tv.tv_usec = (timeout_ms % 1000) * 1000; - if (total_read > 0) - { - // 处理接收到的数据 - process_received_data(buffer, total_read); + // 清空并设置文件描述符集合 + FD_ZERO(&read_fds); + FD_SET(fd_telecontrol, &read_fds); + + // 使用select等待数据到达 + int ret = select(fd_telecontrol + 1, &read_fds, NULL, NULL, &tv); + + if (ret > 0) { + // 有数据可读 + if (FD_ISSET(fd_telecontrol, &read_fds)) { + // 读取所有可用数据 + while (total_read < (int)sizeof(buffer)) { + int bytes = read(fd_telecontrol, buffer + total_read, + sizeof(buffer) - total_read); + if (bytes > 0) { + total_read += bytes; + + // 尝试处理数据 + if (process_received_data(buffer, total_read) == 0) { + return total_read; + } + } else if (bytes < 0) { + if (errno == EAGAIN || errno == EWOULDBLOCK) { + break; + } else { + perror("S_COMM read error"); + return -1; + } + } else { + break; + } + } + + return total_read; + } + } else if (ret == 0) { + return -1; // 超时 + } else { + perror("select failed"); + return -1; } return total_read; } -// 定时查询遥测数据线程 -static void *telemetry_query_thread(void *arg) +/* + * 发送指令并等待响应 + * + * @cmd: 命令码 + * @len: 数据长度 + * @nums: 数据指针 + * @timeout_ms: 等待响应超时时间 + * @return: 响应数据长度,-1表示失败 + */ +int S_UART_SEND_AND_WAIT(uint8_t cmd, uint16_t len, uint8_t *nums, int timeout_ms) { - while (g_running) - { - if (S_COMM_ON_OFF == 1) - { - // 定时查询遥测数据 - Get_S_COMM_UP_CMD(); - } - - // 每2秒查询一次 - sleep(2); + if (S_COMM_ON_OFF != 1) { + cerr << "S_COMM is not available" << endl; + return -1; } - return NULL; -} - -// 监听串口数据线程 -static void *serial_monitor_thread(void *arg) -{ - while (g_running) - { - if (S_COMM_ON_OFF == 1 && fd_telecontrol >= 0) - { - // 读取串口响应 - read_scomm_response(); - } - - // 短暂延时 - usleep(10000); // 10ms + if (fd_telemetry < 0 || fd_telecontrol < 0) { + cerr << "Serial ports not initialized" << endl; + return -1; } - return NULL; + // 1. 先清空输入缓冲区 + tcflush(fd_telecontrol, TCIFLUSH); + + // 2. 发送指令 + S_UART_TELEMETRY_SEND(cmd, len, nums); + + // 3. 等待响应 + return scomm_read_with_select(timeout_ms); } -// 启动SCOMM服务 +/* + * 向S测控发送控制指令 + * + * 将遥控指令封装,然后发送到通信机串口 + * + * @cmd: 指令数据 + * @len: 指令长度 + */ +void send_S_COMM_Cmder(uint8_t *cmd, uint16_t len) +{ + if (S_COMM_ON_OFF != 1) { + cerr << "S_COMM is not available" << endl; + return; + } + + sendCmderCnt++; + + // 构造命令数据 + uint8_t cmd_buff[64] = {0}; + uint8_t kc = 0; + + cmd_buff[0] = 0x11; + cmd_buff[1] = 0x1A; + cmd_buff[2] = 0xC0; + cmd_buff[3] = 0x00; + + cmd_buff[4] = (uint8_t)(len + 1) >> 8; + cmd_buff[5] = (uint8_t)len + 1; + + for (kc = 0; kc < len + 2; kc++) { + cmd_buff[kc + 6] = cmd[kc]; + } + + // 发送并等待响应 + int result = S_UART_SEND_AND_WAIT(TELECONTROL_CMD, len + 8, cmd_buff, 100); + + if (result > 0) { + sendCmderSuccessCnt++; + } else { + sendCmderErrCnt++; + cerr << "Command timeout (100ms)" << endl; + } +} + +/* + * 获取S测控常规遥测(同步版本,使用select超时) + * + * 向通信机串口写入常规遥测查询的指令,进行遥测的查询 + * + */ +void Get_S_COMM_Telemetry_Data(void) +{ + if (S_COMM_ON_OFF != 1) return; + + int result = S_UART_SEND_AND_WAIT(CON_TELEMETRY, 1, cmderPadding, 100); + + if (result > 0) { + sendGetSelfTelemCmderCnt = 0; + } else { + sendGetSelfTelemCmderCnt++; + if (sendGetSelfTelemCmderCnt >= 3) { + cerr << "Multiple telemetry queries failed" << endl; + } + } +} + +/* + * 获取上行遥控指令(同步版本,使用select超时) + * + * 向通信机串口写入获取上行遥控指令,进行上行遥控查询 + * + */ +void Get_S_COMM_UP_CMD(void) +{ + if (S_COMM_ON_OFF != 1) return; + + int result = S_UART_SEND_AND_WAIT(QUERY_TELECMD, 1, cmderPadding, 100); + + if (result < 0) { + cerr << "Uplink command query timeout" << endl; + } +} + +/* + * 通过S测控发送下行遥测(可选等待确认) + * + * @tele: 遥测数据 + * @len: 数据长度 + */ +void Send_Telemetry_From_S(uint8_t *tele, uint16_t len) +{ + if (S_COMM_ON_OFF != 1) return; + + sendTelemCnt++; + + S_UART_TELEMETRY_SEND(SEND_TELEMETRY, len, tele); + scomm_read_with_select(100); +} + +/* + * 接收数据处理函数 + * + * @data: 接收到的数据 + * @size: 数据大小 + * + * 返回值: 0-成功处理, -1-处理失败, -2-需要更多数据 + */ +static int process_received_data(uint8_t *data, uint16_t size) +{ + uint16_t i = 0; + uint8_t cmd = 0; + uint16_t frame_len = 0; + uint8_t checksum0 = 0, checksum1 = 0; + + if (size < 2) { + return -2; + } + + // 查找有效的帧头 + int header_pos = -1; + for (i = 0; i < size - 1; i++) { + if (data[i] == 0xEB && data[i+1] == 0x90) { + header_pos = i; + break; + } + } + + if (header_pos < 0) { + if (size > 10) { + scommHeaderErrCnt++; + cerr << "Frame header not found" << endl; + return -1; + } + return -2; + } + + if (header_pos > 0) { + memmove(S_Telec1_Data, data + header_pos, size - header_pos); + size -= header_pos; + } else { + memcpy(S_Telec1_Data, data, size); + } + + if (size < 6) { + return -2; + } + + cmd = S_Telec1_Data[2]; + frame_len = (uint16_t)(S_Telec1_Data[3] << 8) | (S_Telec1_Data[4]); + + if (size < (frame_len + 6)) { + return -2; + } + + /* 检查帧长度是否合理 */ + if (frame_len > 500) { + cerr << "Frame length too large: " << frame_len << endl; + return -1; + } + + checksum0 = S_Telec1_Data[frame_len + 5]; + + /* 计算校验和 */ + checksum1 = 0; + for (i = 2; i < (frame_len + 5); i++) { + checksum1 += S_Telec1_Data[i]; + } + + if (checksum1 != checksum0) { + scommCheckErrCnt++; + cerr << "Checksum error: calc=0x" << hex << (int)checksum1 + << " recv=0x" << hex << (int)checksum0 << endl; + return -1; + } + + /* 根据命令类型处理 */ + switch (cmd) { + case 0xF0: /* 常规遥测数据 */ + if (size >= (13 + frame_len - 10)) { + memcpy((uint8_t *)&S_TELE, (uint8_t *)&S_Telec1_Data[13], + frame_len - 10); + if (sendGetSelfTelemCmderCnt > 0) { + sendGetSelfTelemCmderCnt--; + } + + if (frame_len - 10 > 0) { + ComHS_telemetry_Pub((uint8_t *)&S_TELE, fastdds_dest, + sizeof(S_Comm_telemetry_data_t)); + } + } + break; + + case 0xE1: /* 遥控指令应答 */ + if ((S_Telec1_Data[5] == 0xAA) && (S_Telec1_Data[6] == 0x8C)) { + sendCmderSuccessCnt++; + } else { + sendCmderErrCnt++; + cerr << "Command execution failed" << endl; + } + break; + + case 0xB4: /* 上行遥控指令 */ + if (size >= 9 && frame_len >= 4) { + uint16_t total_data_len = frame_len; + + if (total_data_len > 4) { + ComHS_command_Pub(&S_Telec1_Data[5], fastdds_dest, + total_data_len); + } + } + break; + + case 0xA5: /* 遥测确认 */ + if ((S_Telec1_Data[5] == 0xAA) && (S_Telec1_Data[6] == 0x50)) { + sendTelemSuccessCnt = 1; + } + break; + + default: + scommResIDErrCnt++; + cerr << "Unknown command ID: 0x" << hex << (int)cmd << endl; + return -1; + } + + return 0; +} + +/* + * 启动SCOMM服务(同步模式,使用select超时) + * + * @dev_telec: 遥控串口设备 + * @dev_telem: 遥测串口设备 + * @baudrate: 波特率 + */ void start_scomm_service(const char *dev_telec, const char *dev_telem, int baudrate) { - // 设置信号处理 signal(SIGINT, signal_handler); signal(SIGTERM, signal_handler); - - // 初始化串口 - if (scomm_uart_init(dev_telec, dev_telem, baudrate) < 0) - { + + if (scomm_uart_init(dev_telec, dev_telem, baudrate) < 0) { S_COMM_ON_OFF = 0; - cerr << "[WARN] S_COMM UART init failed. Service will start but communication will fail." << endl; + cerr << "S_COMM UART init failed" << endl; + return; } - else - { - S_COMM_ON_OFF = 1; - } - - // 初始化ComHS通信 + + S_COMM_ON_OFF = 1; ComHS_init(0, "S_Comm_Hardware_Service"); - - // 创建线程 - if (pthread_create(&telemetry_thread, NULL, telemetry_query_thread, NULL) != 0) - { - perror("[ERROR] Failed to create telemetry query thread"); - } - - if (pthread_create(&monitor_thread, NULL, serial_monitor_thread, NULL) != 0) - { - perror("[ERROR] Failed to create serial monitor thread"); - } } -// 停止SCOMM服务 +/* + * 停止SCOMM服务 + */ void stop_scomm_service(void) { g_running = 0; - - // 等待线程结束 - if (telemetry_thread) - { - pthread_join(telemetry_thread, NULL); - } - if (monitor_thread) - { - pthread_join(monitor_thread, NULL); - } - - // 关闭串口 - if (fd_telecontrol >= 0) - { + + if (fd_telecontrol >= 0) { close(fd_telecontrol); fd_telecontrol = -1; } - if (fd_telemetry >= 0) - { + if (fd_telemetry >= 0) { close(fd_telemetry); fd_telemetry = -1; } - - // 清理ComHS资源 - if (ComHS_part) - { + + if (ComHS_part) { delete ComHS_part; ComHS_part = nullptr; } - - cout << "[INFO] S_COMM Hardware Service stopped" << endl; } \ No newline at end of file diff --git a/ComHS.h b/ComHS.h index 93741c2..0ffdf9c 100644 --- a/ComHS.h +++ b/ComHS.h @@ -7,178 +7,195 @@ using namespace std; -// 遥测cmd定义 -#define CON_TELEMETRY 0x0F //常规遥测查询 -#define TELECONTROL_CMD 0x1E //遥控指令 -#define QUERY_TELECMD 0x4B //遥控指令查询 -#define SEND_TELEMETRY 0x5A //发送遥测 +/* 遥测cmd定义 */ +#define CON_TELEMETRY 0x0F /* 常规遥测查询 */ +#define TELECONTROL_CMD 0x1E /* 遥控指令 */ +#define QUERY_TELECMD 0x4B /* 遥控指令查询 */ +#define SEND_TELEMETRY 0x5A /* 发送遥测 */ -// 星间通信机子遥测 +/* 所占bit长度定义 */ +#define EPDU_ID_VERSION_SIZE 3 /* 版本号 */ +#define EPDU_ID_TYPE_SIZE 1 /* 类型 */ +#define EPDU_ID_HEAD_SIZE 1 /* 副导头 */ +#define EPDU_APID 11 /* APID */ + +#define EPDU_CONTROL_GROUPID_SIZE 2 /* 分组标识 */ +#define EPDU_CONTROL_COUNT_SIZE 14 /* 包序列计数 */ + +#define MULTI_EPDU_LENS 244 + +/* 星间通信机子遥测 */ typedef union { - uint8_t ext[9]; //72位数据的联合体 - struct __attribute__((__packed__)) { - unsigned int temperature : 12; //温度遥测 - unsigned int temperature_calibrated : 12; //温度遥测标校 - unsigned int transmission_power : 12; //12V电源遥测 - unsigned int power_supply_5v4 : 12; //5.4V电源遥测 - unsigned int power_supply_2v5 : 12; //2.5V电源遥测 - unsigned int power_supply_1v2 : 12; //1.2V电源遥测 - }; + uint8_t ext[9]; /* 72位数据的联合体 */ + struct __attribute__((__packed__)) { + unsigned int temperature : 12; /* 温度遥测 */ + unsigned int temperature_calibrated : 12; /* 温度遥测标校 */ + unsigned int transmission_power : 12; /* 12V电源遥测 */ + unsigned int power_supply_5v4 : 12; /* 5.4V电源遥测 */ + unsigned int power_supply_2v5 : 12; /* 2.5V电源遥测 */ + unsigned int power_supply_1v2 : 12; /* 1.2V电源遥测 */ + }; } s_comm_telemetry_t; -// 星间通信机子遥测 +/* 星间通信机子遥测 */ typedef union { - uint8_t ext; - struct __attribute__((__packed__)) { - unsigned int loadNo : 2; //加载程序编号 - unsigned int loadMode : 2; //加载模式 - unsigned int AorB : 1; //AB机状态 - unsigned int FPGAFresh : 1; //FPGA刷新状态 - unsigned int zaiboSync : 1; //信息载波同步 - unsigned int weimaSync : 1; //信息伪码同步 - }; + uint8_t ext; + struct __attribute__((__packed__)) { + unsigned int loadNo : 2; /* 加载程序编号 */ + unsigned int loadMode : 2; /* 加载模式 */ + unsigned int AorB : 1; /* AB机状态 */ + unsigned int FPGAFresh : 1; /* FPGA刷新状态 */ + unsigned int zaiboSync : 1; /* 信息载波同步 */ + unsigned int weimaSync : 1; /* 信息伪码同步 */ + }; } s_comm_para0; -// 星间通信机子遥测 +/* 星间通信机子遥测 */ typedef union { - uint8_t ext; - struct __attribute__((__packed__)) { - unsigned int recDampCtrlMode : 1; //接收衰减控制模式 - unsigned int recDampCtrl : 3; //接收衰减控制字 - unsigned int trans : 1; //发射通道开关 - unsigned int transDampCtrl : 3; //发射衰减控制字 - }; + uint8_t ext; + struct __attribute__((__packed__)) { + unsigned int recDampCtrlMode : 1; /* 接收衰减控制模式 */ + unsigned int recDampCtrl : 3; /* 接收衰减控制字 */ + unsigned int trans : 1; /* 发射通道开关 */ + unsigned int transDampCtrl : 3; /* 发射衰减控制字 */ + }; } s_comm_para2; -// 星间通信机子遥测 +/* 星间通信机子遥测 */ typedef union { - uint8_t ext; - struct __attribute__((__packed__)) { - unsigned int recStatus : 1; // 接收缓存状态 - unsigned int workmode : 2; //工作模式 - unsigned int sendStatus : 1; //发射缓存状态 - unsigned int antsChoice : 1; //天线选择 - unsigned int FreqChoice : 1; //频点选择 - unsigned int telem_MM_Mode : 1; //遥测明/密状态 - unsigned int telec_MM_Mode : 1; //遥控明/密状态 - }; + uint8_t ext; + struct __attribute__((__packed__)) { + unsigned int recStatus : 1; /* 接收缓存状态 */ + unsigned int workmode : 2; /* 工作模式 */ + unsigned int sendStatus : 1; /* 发射缓存状态 */ + unsigned int antsChoice : 1; /* 天线选择 */ + unsigned int FreqChoice : 1; /* 频点选择 */ + unsigned int telem_MM_Mode : 1; /* 遥测明/密状态 */ + unsigned int telec_MM_Mode : 1; /* 遥控明/密状态 */ + }; } s_comm_para3; -// S通信机遥测结构体 -typedef struct __attribute__((packed)){ - uint8_t packet_cnt_1; // 遥测包计数 - uint8_t cmd1_success_count; //接收指令1正确计数 - uint8_t cmd1_err_type1_count; //接收指令1错误类型1计数 - uint8_t cmd2_success_count; //接收指令2正确计数 - uint8_t cmd2_err_count; //接收指令2错误计数 - uint8_t reset_count; //复位计数 - uint8_t refresh_count; //刷新状态计数 - s_comm_para0 para0; // - uint8_t para1; // - int8_t dopplerFreqInfoChannel; //信息通道多普勒频偏 - int8_t dopplerFreqMeasureChannel; //测量通道多普勒频偏 - uint8_t snrInfoChannel; //信息通道接收信噪比 - uint8_t snrMeasureChannel; //测量通道接收信噪比 - uint8_t receive_RSSI; //接收RSSI - uint8_t generalQueryCount; //常规遥测查询计数 - uint8_t forwardcmdcnt; //转发遥控指令计数 - uint8_t cmdinquiryCount; //空空接收后遥控计数 - uint8_t teletransmissionCount; //转发遥测计数 - uint8_t res0[2]; //LVDS预留参数,不使用 - s_comm_para2 para2; // - s_comm_telemetry_t s_telemetry; - uint8_t AD9364_configuration_count; //AD9364配置计数 - s_comm_para3 para3; - uint8_t res1[3]; //预留参数,CJB不使用 - uint8_t cmd1_err_type2_count; //接收指令1错误类型2计数 - uint16_t teletransmission_secretkey; //遥测当前密钥 - uint16_t telecmd_secretkey; //遥控当前密钥 +/* S通信机遥测结构体 */ +typedef struct __attribute__((packed)) { + uint8_t packet_cnt_1; /* 遥测包计数 */ + uint8_t cmd1_success_count; /* 接收指令1正确计数 */ + uint8_t cmd1_err_type1_count; /* 接收指令1错误类型1计数 */ + uint8_t cmd2_success_count; /* 接收指令2正确计数 */ + uint8_t cmd2_err_count; /* 接收指令2错误计数 */ + uint8_t reset_count; /* 复位计数 */ + uint8_t refresh_count; /* 刷新状态计数 */ + s_comm_para0 para0; + uint8_t para1; + int8_t dopplerFreqInfoChannel; /* 信息通道多普勒频偏 */ + int8_t dopplerFreqMeasureChannel; /* 测量通道多普勒频偏 */ + uint8_t snrInfoChannel; /* 信息通道接收信噪比 */ + uint8_t snrMeasureChannel; /* 测量通道接收信噪比 */ + uint8_t receive_RSSI; /* 接收RSSI */ + uint8_t generalQueryCount; /* 常规遥测查询计数 */ + uint8_t forwardcmdcnt; /* 转发遥控指令计数 */ + uint8_t cmdinquiryCount; /* 空空接收后遥控计数 */ + uint8_t teletransmissionCount; /* 转发遥测计数 */ + uint8_t res0[2]; /* LVDS预留参数,不使用 */ + s_comm_para2 para2; + s_comm_telemetry_t s_telemetry; + uint8_t AD9364_configuration_count; /* AD9364配置计数 */ + s_comm_para3 para3; + uint8_t res1[3]; /* 预留参数,CJB不使用 */ + uint8_t cmd1_err_type2_count; /* 接收指令1错误类型2计数 */ + uint16_t teletransmission_secretkey; /* 遥测当前密钥 */ + uint16_t telecmd_secretkey; /* 遥控当前密钥 */ } S_Comm_telemetry_data_t; -// 指令/注数单元格式 -typedef struct __attribute__((__packed__)){ - uint8_t cmd_type; //指令类型 - uint8_t cmd_len; //指令长度 数据内容+4 - uint8_t device; //设备号 - uint8_t REMAIN; //保留字 - uint8_t data[255]; //数据内容 最大60 +/* 指令/注数单元格式 */ +typedef struct __attribute__((__packed__)) { + uint8_t cmd_type; /* 指令类型 */ + uint8_t cmd_len; /* 指令长度 数据内容+4 */ + uint8_t device; /* 设备号 */ + uint8_t REMAIN; /* 保留字 */ + uint8_t data[255]; /* 数据内容 最大60 */ } CMD_unit; -// 遥控包 仅单指令 +/* 遥控包 仅单指令 */ typedef struct __attribute__((__packed__)) { - uint8_t serve_type; //服务类型 全为50H实时指令 - uint8_t cmd_num; //指令数 - CMD_unit cmd_unit; //指令单元 + uint8_t serve_type; /* 服务类型 全为50H实时指令 */ + uint8_t cmd_num; /* 指令数 */ + CMD_unit cmd_unit; /* 指令单元 */ } CMD_pack_t; -/*所占bit长度定义*/ -#define EPDU_ID_VERSION_SIZE 3 //版本号 -#define EPDU_ID_TYPE_SIZE 1 //类型 -#define EPDU_ID_HEAD_SIZE 1 //副导头 -#define EPDU_APID 11 //APID - -#define EPDU_CONTROL_GROUPID_SIZE 2 //分组标识 -#define EPDU_CONTROL_COUNT_SIZE 14 //包序列计数 - -#define MULTI_EPDU_LENS 244 - -/*包识别*/ -typedef union{ - uint16_t ext; //16位数据的联合体 - struct __attribute__((__packed__)) { - unsigned int version : EPDU_ID_VERSION_SIZE; //版本号 - unsigned int type : EPDU_ID_TYPE_SIZE; //类型 - unsigned int subhead : EPDU_ID_HEAD_SIZE; //副导头 - unsigned int reserve : EPDU_APID; //应用过程标识符 - }; +/* 包识别 */ +typedef union { + uint16_t ext; /* 16位数据的联合体 */ + struct __attribute__((__packed__)) { + unsigned int version : EPDU_ID_VERSION_SIZE; /* 版本号 */ + unsigned int type : EPDU_ID_TYPE_SIZE; /* 类型 */ + unsigned int subhead : EPDU_ID_HEAD_SIZE; /* 副导头 */ + unsigned int reserve : EPDU_APID; /* 应用过程标识符 */ + }; } packet_id_t; -/*包序列控制*/ -typedef union{ - uint16_t ext; // 16位数据的联合体 - struct __attribute__((__packed__)) { - unsigned int groupid : EPDU_CONTROL_GROUPID_SIZE; //分组标识 - unsigned int count : EPDU_CONTROL_COUNT_SIZE; //包序列计数 - }; +/* 包序列控制 */ +typedef union { + uint16_t ext; /* 16位数据的联合体 */ + struct __attribute__((__packed__)) { + unsigned int groupid : EPDU_CONTROL_GROUPID_SIZE; /* 分组标识 */ + unsigned int count : EPDU_CONTROL_COUNT_SIZE; /* 包序列计数 */ + }; } sequence_control_t; -/*E-PDU源包格式*/ +/* E-PDU源包格式 */ typedef struct __attribute__((__packed__)) { - packet_id_t id; //包识别 - sequence_control_t seq; //包控制序列 - uint16_t length; //包长 - uint8_t data[MULTI_EPDU_LENS]; + packet_id_t id; /* 包识别 */ + sequence_control_t seq; /* 包控制序列 */ + uint16_t length; /* 包长 */ + uint8_t data[MULTI_EPDU_LENS]; } EPDU_packet_t; typedef struct __attribute__((__packed__)) { - uint16_t epdu_len; - EPDU_packet_t epdu; + uint16_t epdu_len; + EPDU_packet_t epdu; } Multi_EPDU_packet_t; -// 声明ComHS接口函数 -void ComHSWriteLog(const string &msg); -void ComHS_init(uint8_t domainid, string appname); -void command_callback(string src, string dest, string type, - string reserve1, string reserve2, - vector& data); -void telemetry_callback(string src, string dest, string type, - string reserve1, string reserve2, - vector& data); -void ComHS_command_Pub(uint8_t* data, string dest, uint16_t len); -void ComHS_telemetry_Pub(uint8_t* data, string dest, uint16_t len); +/* + * ComHS接口函数声明 + */ -// 声明串口操作函数 +/* 日志函数 */ +void ComHSWriteLog(const string &msg); + +/* 初始化函数 */ +void ComHS_init(uint8_t domainid, string appname); + +/* 回调函数 */ +void command_callback(string src, string dest, string type, + string reserve1, string reserve2, + vector &data); + +void telemetry_callback(string src, string dest, string type, + string reserve1, string reserve2, + vector &data); + +/* 发布函数 */ +void ComHS_command_Pub(uint8_t *data, string dest, uint16_t len); +void ComHS_telemetry_Pub(uint8_t *data, string dest, uint16_t len); + +/* + * 串口操作函数声明 + */ int scomm_uart_init(const char *dev_telec, const char *dev_telem, int baudrate); void send_S_COMM_Cmder(uint8_t *cmd, uint16_t len); void Get_S_COMM_Telemetry_Data(void); void Get_S_COMM_UP_CMD(void); void Send_Telemetry_From_S(uint8_t *tele, uint16_t len); void S_UART_TELEMETRY_SEND(uint8_t cmd, uint16_t len, uint8_t *nums); -int read_scomm_response(void); -int process_received_data(uint8_t *data, uint16_t size); -// 声明运行控制函数 +/* 同步读取函数声明 */ +int scomm_read_with_select(int timeout_ms); +int S_UART_SEND_AND_WAIT(uint8_t cmd, uint16_t len, uint8_t *nums, int timeout_ms); + +/* + * 运行控制函数声明 + */ void start_scomm_service(const char *dev_telec, const char *dev_telem, int baudrate); void stop_scomm_service(void); -#endif // COMHS_H \ No newline at end of file +#endif /* COMHS_H */ \ No newline at end of file diff --git a/build/CMakeFiles/CMakeOutput.log b/build/CMakeFiles/CMakeOutput.log index 0192802..8f55926 100644 --- a/build/CMakeFiles/CMakeOutput.log +++ b/build/CMakeFiles/CMakeOutput.log @@ -28,10 +28,10 @@ The CXX compiler identification is GNU, found in "/home/xb/satellite/aircraft-1/ Detecting C compiler ABI info compiled with the following output: Change Dir: /home/xb/satellite/aircraft-1/container-2/通信硬件服务化/build/CMakeFiles/CMakeTmp -Run Build Command(s):/usr/bin/gmake -f Makefile cmTC_23e68/fast && /usr/bin/gmake -f CMakeFiles/cmTC_23e68.dir/build.make CMakeFiles/cmTC_23e68.dir/build +Run Build Command(s):/usr/bin/gmake -f Makefile cmTC_3bd6a/fast && /usr/bin/gmake -f CMakeFiles/cmTC_3bd6a.dir/build.make CMakeFiles/cmTC_3bd6a.dir/build gmake[1]: Entering directory '/home/xb/satellite/aircraft-1/container-2/通信硬件服务化/build/CMakeFiles/CMakeTmp' -Building C object CMakeFiles/cmTC_23e68.dir/CMakeCCompilerABI.c.o -/usr/bin/cc -v -o CMakeFiles/cmTC_23e68.dir/CMakeCCompilerABI.c.o -c /usr/share/cmake-3.22/Modules/CMakeCCompilerABI.c +Building C object CMakeFiles/cmTC_3bd6a.dir/CMakeCCompilerABI.c.o +/usr/bin/cc -v -o CMakeFiles/cmTC_3bd6a.dir/CMakeCCompilerABI.c.o -c /usr/share/cmake-3.22/Modules/CMakeCCompilerABI.c Using built-in specs. COLLECT_GCC=/usr/bin/cc OFFLOAD_TARGET_NAMES=nvptx-none:amdgcn-amdhsa @@ -41,8 +41,8 @@ Configured with: ../src/configure -v --with-pkgversion='Ubuntu 11.4.0-1ubuntu1~2 Thread model: posix Supported LTO compression algorithms: zlib zstd gcc version 11.4.0 (Ubuntu 11.4.0-1ubuntu1~22.04.2) -COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_23e68.dir/CMakeCCompilerABI.c.o' '-c' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_23e68.dir/' - /usr/lib/gcc/x86_64-linux-gnu/11/cc1 -quiet -v -imultiarch x86_64-linux-gnu /usr/share/cmake-3.22/Modules/CMakeCCompilerABI.c -quiet -dumpdir CMakeFiles/cmTC_23e68.dir/ -dumpbase CMakeCCompilerABI.c.c -dumpbase-ext .c -mtune=generic -march=x86-64 -version -fasynchronous-unwind-tables -fstack-protector-strong -Wformat -Wformat-security -fstack-clash-protection -fcf-protection -o /tmp/ccPBMoq0.s +COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_3bd6a.dir/CMakeCCompilerABI.c.o' '-c' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_3bd6a.dir/' + /usr/lib/gcc/x86_64-linux-gnu/11/cc1 -quiet -v -imultiarch x86_64-linux-gnu /usr/share/cmake-3.22/Modules/CMakeCCompilerABI.c -quiet -dumpdir CMakeFiles/cmTC_3bd6a.dir/ -dumpbase CMakeCCompilerABI.c.c -dumpbase-ext .c -mtune=generic -march=x86-64 -version -fasynchronous-unwind-tables -fstack-protector-strong -Wformat -Wformat-security -fstack-clash-protection -fcf-protection -o /tmp/cc5a7OUX.s GNU C17 (Ubuntu 11.4.0-1ubuntu1~22.04.2) version 11.4.0 (x86_64-linux-gnu) compiled by GNU C version 11.4.0, GMP version 6.2.1, MPFR version 4.1.0, MPC version 1.2.1, isl version isl-0.24-GMP @@ -62,15 +62,15 @@ GNU C17 (Ubuntu 11.4.0-1ubuntu1~22.04.2) version 11.4.0 (x86_64-linux-gnu) GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 Compiler executable checksum: 4011c2103cba78949d7e02d0f0047a3d -COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_23e68.dir/CMakeCCompilerABI.c.o' '-c' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_23e68.dir/' - as -v --64 -o CMakeFiles/cmTC_23e68.dir/CMakeCCompilerABI.c.o /tmp/ccPBMoq0.s +COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_3bd6a.dir/CMakeCCompilerABI.c.o' '-c' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_3bd6a.dir/' + as -v --64 -o CMakeFiles/cmTC_3bd6a.dir/CMakeCCompilerABI.c.o /tmp/cc5a7OUX.s GNU assembler version 2.38 (x86_64-linux-gnu) using BFD version (GNU Binutils for Ubuntu) 2.38 COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/11/:/usr/lib/gcc/x86_64-linux-gnu/11/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/11/:/usr/lib/gcc/x86_64-linux-gnu/ LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/11/:/usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/11/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/11/../../../:/lib/:/usr/lib/ -COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_23e68.dir/CMakeCCompilerABI.c.o' '-c' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_23e68.dir/CMakeCCompilerABI.c.' -Linking C executable cmTC_23e68 -/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_23e68.dir/link.txt --verbose=1 -/usr/bin/cc -v CMakeFiles/cmTC_23e68.dir/CMakeCCompilerABI.c.o -o cmTC_23e68 +COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_3bd6a.dir/CMakeCCompilerABI.c.o' '-c' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_3bd6a.dir/CMakeCCompilerABI.c.' +Linking C executable cmTC_3bd6a +/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_3bd6a.dir/link.txt --verbose=1 +/usr/bin/cc -v CMakeFiles/cmTC_3bd6a.dir/CMakeCCompilerABI.c.o -o cmTC_3bd6a Using built-in specs. COLLECT_GCC=/usr/bin/cc COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/11/lto-wrapper @@ -83,9 +83,9 @@ Supported LTO compression algorithms: zlib zstd gcc version 11.4.0 (Ubuntu 11.4.0-1ubuntu1~22.04.2) COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/11/:/usr/lib/gcc/x86_64-linux-gnu/11/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/11/:/usr/lib/gcc/x86_64-linux-gnu/ LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/11/:/usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/11/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/11/../../../:/lib/:/usr/lib/ -COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_23e68' '-mtune=generic' '-march=x86-64' '-dumpdir' 'cmTC_23e68.' - /usr/lib/gcc/x86_64-linux-gnu/11/collect2 -plugin /usr/lib/gcc/x86_64-linux-gnu/11/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/11/lto-wrapper -plugin-opt=-fresolution=/tmp/cczVHtZR.res -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -z now -z relro -o cmTC_23e68 /usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/11/crtbeginS.o -L/usr/lib/gcc/x86_64-linux-gnu/11 -L/usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/11/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/11/../../.. CMakeFiles/cmTC_23e68.dir/CMakeCCompilerABI.c.o -lgcc --push-state --as-needed -lgcc_s --pop-state -lc -lgcc --push-state --as-needed -lgcc_s --pop-state /usr/lib/gcc/x86_64-linux-gnu/11/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/crtn.o -COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_23e68' '-mtune=generic' '-march=x86-64' '-dumpdir' 'cmTC_23e68.' +COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_3bd6a' '-mtune=generic' '-march=x86-64' '-dumpdir' 'cmTC_3bd6a.' + /usr/lib/gcc/x86_64-linux-gnu/11/collect2 -plugin /usr/lib/gcc/x86_64-linux-gnu/11/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/11/lto-wrapper -plugin-opt=-fresolution=/tmp/ccBnXEwu.res -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -z now -z relro -o cmTC_3bd6a /usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/11/crtbeginS.o -L/usr/lib/gcc/x86_64-linux-gnu/11 -L/usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/11/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/11/../../.. CMakeFiles/cmTC_3bd6a.dir/CMakeCCompilerABI.c.o -lgcc --push-state --as-needed -lgcc_s --pop-state -lc -lgcc --push-state --as-needed -lgcc_s --pop-state /usr/lib/gcc/x86_64-linux-gnu/11/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/crtn.o +COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_3bd6a' '-mtune=generic' '-march=x86-64' '-dumpdir' 'cmTC_3bd6a.' gmake[1]: Leaving directory '/home/xb/satellite/aircraft-1/container-2/通信硬件服务化/build/CMakeFiles/CMakeTmp' @@ -109,10 +109,10 @@ Parsed C implicit link information from above output: link line regex: [^( *|.*[/\])(ld|CMAKE_LINK_STARTFILE-NOTFOUND|([^/\]+-)?ld|collect2)[^/\]*( |$)] ignore line: [Change Dir: /home/xb/satellite/aircraft-1/container-2/通信硬件服务化/build/CMakeFiles/CMakeTmp] ignore line: [] - ignore line: [Run Build Command(s):/usr/bin/gmake -f Makefile cmTC_23e68/fast && /usr/bin/gmake -f CMakeFiles/cmTC_23e68.dir/build.make CMakeFiles/cmTC_23e68.dir/build] + ignore line: [Run Build Command(s):/usr/bin/gmake -f Makefile cmTC_3bd6a/fast && /usr/bin/gmake -f CMakeFiles/cmTC_3bd6a.dir/build.make CMakeFiles/cmTC_3bd6a.dir/build] ignore line: [gmake[1]: Entering directory '/home/xb/satellite/aircraft-1/container-2/通信硬件服务化/build/CMakeFiles/CMakeTmp'] - ignore line: [Building C object CMakeFiles/cmTC_23e68.dir/CMakeCCompilerABI.c.o] - ignore line: [/usr/bin/cc -v -o CMakeFiles/cmTC_23e68.dir/CMakeCCompilerABI.c.o -c /usr/share/cmake-3.22/Modules/CMakeCCompilerABI.c] + ignore line: [Building C object CMakeFiles/cmTC_3bd6a.dir/CMakeCCompilerABI.c.o] + ignore line: [/usr/bin/cc -v -o CMakeFiles/cmTC_3bd6a.dir/CMakeCCompilerABI.c.o -c /usr/share/cmake-3.22/Modules/CMakeCCompilerABI.c] ignore line: [Using built-in specs.] ignore line: [COLLECT_GCC=/usr/bin/cc] ignore line: [OFFLOAD_TARGET_NAMES=nvptx-none:amdgcn-amdhsa] @@ -122,8 +122,8 @@ Parsed C implicit link information from above output: ignore line: [Thread model: posix] ignore line: [Supported LTO compression algorithms: zlib zstd] ignore line: [gcc version 11.4.0 (Ubuntu 11.4.0-1ubuntu1~22.04.2) ] - ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_23e68.dir/CMakeCCompilerABI.c.o' '-c' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_23e68.dir/'] - ignore line: [ /usr/lib/gcc/x86_64-linux-gnu/11/cc1 -quiet -v -imultiarch x86_64-linux-gnu /usr/share/cmake-3.22/Modules/CMakeCCompilerABI.c -quiet -dumpdir CMakeFiles/cmTC_23e68.dir/ -dumpbase CMakeCCompilerABI.c.c -dumpbase-ext .c -mtune=generic -march=x86-64 -version -fasynchronous-unwind-tables -fstack-protector-strong -Wformat -Wformat-security -fstack-clash-protection -fcf-protection -o /tmp/ccPBMoq0.s] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_3bd6a.dir/CMakeCCompilerABI.c.o' '-c' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_3bd6a.dir/'] + ignore line: [ /usr/lib/gcc/x86_64-linux-gnu/11/cc1 -quiet -v -imultiarch x86_64-linux-gnu /usr/share/cmake-3.22/Modules/CMakeCCompilerABI.c -quiet -dumpdir CMakeFiles/cmTC_3bd6a.dir/ -dumpbase CMakeCCompilerABI.c.c -dumpbase-ext .c -mtune=generic -march=x86-64 -version -fasynchronous-unwind-tables -fstack-protector-strong -Wformat -Wformat-security -fstack-clash-protection -fcf-protection -o /tmp/cc5a7OUX.s] ignore line: [GNU C17 (Ubuntu 11.4.0-1ubuntu1~22.04.2) version 11.4.0 (x86_64-linux-gnu)] ignore line: [ compiled by GNU C version 11.4.0 GMP version 6.2.1 MPFR version 4.1.0 MPC version 1.2.1 isl version isl-0.24-GMP] ignore line: [] @@ -143,15 +143,15 @@ Parsed C implicit link information from above output: ignore line: [] ignore line: [GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072] ignore line: [Compiler executable checksum: 4011c2103cba78949d7e02d0f0047a3d] - ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_23e68.dir/CMakeCCompilerABI.c.o' '-c' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_23e68.dir/'] - ignore line: [ as -v --64 -o CMakeFiles/cmTC_23e68.dir/CMakeCCompilerABI.c.o /tmp/ccPBMoq0.s] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_3bd6a.dir/CMakeCCompilerABI.c.o' '-c' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_3bd6a.dir/'] + ignore line: [ as -v --64 -o CMakeFiles/cmTC_3bd6a.dir/CMakeCCompilerABI.c.o /tmp/cc5a7OUX.s] ignore line: [GNU assembler version 2.38 (x86_64-linux-gnu) using BFD version (GNU Binutils for Ubuntu) 2.38] ignore line: [COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/11/:/usr/lib/gcc/x86_64-linux-gnu/11/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/11/:/usr/lib/gcc/x86_64-linux-gnu/] ignore line: [LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/11/:/usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/11/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/11/../../../:/lib/:/usr/lib/] - ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_23e68.dir/CMakeCCompilerABI.c.o' '-c' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_23e68.dir/CMakeCCompilerABI.c.'] - ignore line: [Linking C executable cmTC_23e68] - ignore line: [/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_23e68.dir/link.txt --verbose=1] - ignore line: [/usr/bin/cc -v CMakeFiles/cmTC_23e68.dir/CMakeCCompilerABI.c.o -o cmTC_23e68 ] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_3bd6a.dir/CMakeCCompilerABI.c.o' '-c' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_3bd6a.dir/CMakeCCompilerABI.c.'] + ignore line: [Linking C executable cmTC_3bd6a] + ignore line: [/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_3bd6a.dir/link.txt --verbose=1] + ignore line: [/usr/bin/cc -v CMakeFiles/cmTC_3bd6a.dir/CMakeCCompilerABI.c.o -o cmTC_3bd6a ] ignore line: [Using built-in specs.] ignore line: [COLLECT_GCC=/usr/bin/cc] ignore line: [COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/11/lto-wrapper] @@ -164,13 +164,13 @@ Parsed C implicit link information from above output: ignore line: [gcc version 11.4.0 (Ubuntu 11.4.0-1ubuntu1~22.04.2) ] ignore line: [COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/11/:/usr/lib/gcc/x86_64-linux-gnu/11/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/11/:/usr/lib/gcc/x86_64-linux-gnu/] ignore line: [LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/11/:/usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/11/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/11/../../../:/lib/:/usr/lib/] - ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_23e68' '-mtune=generic' '-march=x86-64' '-dumpdir' 'cmTC_23e68.'] - link line: [ /usr/lib/gcc/x86_64-linux-gnu/11/collect2 -plugin /usr/lib/gcc/x86_64-linux-gnu/11/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/11/lto-wrapper -plugin-opt=-fresolution=/tmp/cczVHtZR.res -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -z now -z relro -o cmTC_23e68 /usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/11/crtbeginS.o -L/usr/lib/gcc/x86_64-linux-gnu/11 -L/usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/11/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/11/../../.. CMakeFiles/cmTC_23e68.dir/CMakeCCompilerABI.c.o -lgcc --push-state --as-needed -lgcc_s --pop-state -lc -lgcc --push-state --as-needed -lgcc_s --pop-state /usr/lib/gcc/x86_64-linux-gnu/11/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/crtn.o] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_3bd6a' '-mtune=generic' '-march=x86-64' '-dumpdir' 'cmTC_3bd6a.'] + link line: [ /usr/lib/gcc/x86_64-linux-gnu/11/collect2 -plugin /usr/lib/gcc/x86_64-linux-gnu/11/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/11/lto-wrapper -plugin-opt=-fresolution=/tmp/ccBnXEwu.res -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -z now -z relro -o cmTC_3bd6a /usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/11/crtbeginS.o -L/usr/lib/gcc/x86_64-linux-gnu/11 -L/usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/11/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/11/../../.. CMakeFiles/cmTC_3bd6a.dir/CMakeCCompilerABI.c.o -lgcc --push-state --as-needed -lgcc_s --pop-state -lc -lgcc --push-state --as-needed -lgcc_s --pop-state /usr/lib/gcc/x86_64-linux-gnu/11/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/crtn.o] arg [/usr/lib/gcc/x86_64-linux-gnu/11/collect2] ==> ignore arg [-plugin] ==> ignore arg [/usr/lib/gcc/x86_64-linux-gnu/11/liblto_plugin.so] ==> ignore arg [-plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/11/lto-wrapper] ==> ignore - arg [-plugin-opt=-fresolution=/tmp/cczVHtZR.res] ==> ignore + arg [-plugin-opt=-fresolution=/tmp/ccBnXEwu.res] ==> ignore arg [-plugin-opt=-pass-through=-lgcc] ==> ignore arg [-plugin-opt=-pass-through=-lgcc_s] ==> ignore arg [-plugin-opt=-pass-through=-lc] ==> ignore @@ -188,7 +188,7 @@ Parsed C implicit link information from above output: arg [-znow] ==> ignore arg [-zrelro] ==> ignore arg [-o] ==> ignore - arg [cmTC_23e68] ==> ignore + arg [cmTC_3bd6a] ==> ignore arg [/usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/Scrt1.o] ==> obj [/usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/Scrt1.o] arg [/usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/crti.o] ==> obj [/usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/crti.o] arg [/usr/lib/gcc/x86_64-linux-gnu/11/crtbeginS.o] ==> obj [/usr/lib/gcc/x86_64-linux-gnu/11/crtbeginS.o] @@ -200,7 +200,7 @@ Parsed C implicit link information from above output: arg [-L/usr/lib/x86_64-linux-gnu] ==> dir [/usr/lib/x86_64-linux-gnu] arg [-L/usr/lib/../lib] ==> dir [/usr/lib/../lib] arg [-L/usr/lib/gcc/x86_64-linux-gnu/11/../../..] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/11/../../..] - arg [CMakeFiles/cmTC_23e68.dir/CMakeCCompilerABI.c.o] ==> ignore + arg [CMakeFiles/cmTC_3bd6a.dir/CMakeCCompilerABI.c.o] ==> ignore arg [-lgcc] ==> lib [gcc] arg [--push-state] ==> ignore arg [--as-needed] ==> ignore @@ -234,10 +234,10 @@ Parsed C implicit link information from above output: Detecting CXX compiler ABI info compiled with the following output: Change Dir: /home/xb/satellite/aircraft-1/container-2/通信硬件服务化/build/CMakeFiles/CMakeTmp -Run Build Command(s):/usr/bin/gmake -f Makefile cmTC_2433b/fast && /usr/bin/gmake -f CMakeFiles/cmTC_2433b.dir/build.make CMakeFiles/cmTC_2433b.dir/build +Run Build Command(s):/usr/bin/gmake -f Makefile cmTC_16078/fast && /usr/bin/gmake -f CMakeFiles/cmTC_16078.dir/build.make CMakeFiles/cmTC_16078.dir/build gmake[1]: Entering directory '/home/xb/satellite/aircraft-1/container-2/通信硬件服务化/build/CMakeFiles/CMakeTmp' -Building CXX object CMakeFiles/cmTC_2433b.dir/CMakeCXXCompilerABI.cpp.o -/usr/bin/c++ -v -o CMakeFiles/cmTC_2433b.dir/CMakeCXXCompilerABI.cpp.o -c /usr/share/cmake-3.22/Modules/CMakeCXXCompilerABI.cpp +Building CXX object CMakeFiles/cmTC_16078.dir/CMakeCXXCompilerABI.cpp.o +/usr/bin/c++ -v -o CMakeFiles/cmTC_16078.dir/CMakeCXXCompilerABI.cpp.o -c /usr/share/cmake-3.22/Modules/CMakeCXXCompilerABI.cpp Using built-in specs. COLLECT_GCC=/usr/bin/c++ OFFLOAD_TARGET_NAMES=nvptx-none:amdgcn-amdhsa @@ -247,8 +247,8 @@ Configured with: ../src/configure -v --with-pkgversion='Ubuntu 11.4.0-1ubuntu1~2 Thread model: posix Supported LTO compression algorithms: zlib zstd gcc version 11.4.0 (Ubuntu 11.4.0-1ubuntu1~22.04.2) -COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_2433b.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_2433b.dir/' - /usr/lib/gcc/x86_64-linux-gnu/11/cc1plus -quiet -v -imultiarch x86_64-linux-gnu -D_GNU_SOURCE /usr/share/cmake-3.22/Modules/CMakeCXXCompilerABI.cpp -quiet -dumpdir CMakeFiles/cmTC_2433b.dir/ -dumpbase CMakeCXXCompilerABI.cpp.cpp -dumpbase-ext .cpp -mtune=generic -march=x86-64 -version -fasynchronous-unwind-tables -fstack-protector-strong -Wformat -Wformat-security -fstack-clash-protection -fcf-protection -o /tmp/ccK3394e.s +COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_16078.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_16078.dir/' + /usr/lib/gcc/x86_64-linux-gnu/11/cc1plus -quiet -v -imultiarch x86_64-linux-gnu -D_GNU_SOURCE /usr/share/cmake-3.22/Modules/CMakeCXXCompilerABI.cpp -quiet -dumpdir CMakeFiles/cmTC_16078.dir/ -dumpbase CMakeCXXCompilerABI.cpp.cpp -dumpbase-ext .cpp -mtune=generic -march=x86-64 -version -fasynchronous-unwind-tables -fstack-protector-strong -Wformat -Wformat-security -fstack-clash-protection -fcf-protection -o /tmp/ccK0Mlj8.s GNU C++17 (Ubuntu 11.4.0-1ubuntu1~22.04.2) version 11.4.0 (x86_64-linux-gnu) compiled by GNU C version 11.4.0, GMP version 6.2.1, MPFR version 4.1.0, MPC version 1.2.1, isl version isl-0.24-GMP @@ -272,15 +272,15 @@ GNU C++17 (Ubuntu 11.4.0-1ubuntu1~22.04.2) version 11.4.0 (x86_64-linux-gnu) GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 Compiler executable checksum: 6c87588fc345655b93b8c25f48f88886 -COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_2433b.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_2433b.dir/' - as -v --64 -o CMakeFiles/cmTC_2433b.dir/CMakeCXXCompilerABI.cpp.o /tmp/ccK3394e.s +COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_16078.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_16078.dir/' + as -v --64 -o CMakeFiles/cmTC_16078.dir/CMakeCXXCompilerABI.cpp.o /tmp/ccK0Mlj8.s GNU assembler version 2.38 (x86_64-linux-gnu) using BFD version (GNU Binutils for Ubuntu) 2.38 COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/11/:/usr/lib/gcc/x86_64-linux-gnu/11/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/11/:/usr/lib/gcc/x86_64-linux-gnu/ LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/11/:/usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/11/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/11/../../../:/lib/:/usr/lib/ -COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_2433b.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_2433b.dir/CMakeCXXCompilerABI.cpp.' -Linking CXX executable cmTC_2433b -/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_2433b.dir/link.txt --verbose=1 -/usr/bin/c++ -v CMakeFiles/cmTC_2433b.dir/CMakeCXXCompilerABI.cpp.o -o cmTC_2433b +COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_16078.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_16078.dir/CMakeCXXCompilerABI.cpp.' +Linking CXX executable cmTC_16078 +/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_16078.dir/link.txt --verbose=1 +/usr/bin/c++ -v CMakeFiles/cmTC_16078.dir/CMakeCXXCompilerABI.cpp.o -o cmTC_16078 Using built-in specs. COLLECT_GCC=/usr/bin/c++ COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/11/lto-wrapper @@ -293,9 +293,9 @@ Supported LTO compression algorithms: zlib zstd gcc version 11.4.0 (Ubuntu 11.4.0-1ubuntu1~22.04.2) COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/11/:/usr/lib/gcc/x86_64-linux-gnu/11/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/11/:/usr/lib/gcc/x86_64-linux-gnu/ LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/11/:/usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/11/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/11/../../../:/lib/:/usr/lib/ -COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_2433b' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'cmTC_2433b.' - /usr/lib/gcc/x86_64-linux-gnu/11/collect2 -plugin /usr/lib/gcc/x86_64-linux-gnu/11/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/11/lto-wrapper -plugin-opt=-fresolution=/tmp/cc28PR3K.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -z now -z relro -o cmTC_2433b /usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/11/crtbeginS.o -L/usr/lib/gcc/x86_64-linux-gnu/11 -L/usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/11/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/11/../../.. CMakeFiles/cmTC_2433b.dir/CMakeCXXCompilerABI.cpp.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-linux-gnu/11/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/crtn.o -COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_2433b' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'cmTC_2433b.' +COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_16078' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'cmTC_16078.' + /usr/lib/gcc/x86_64-linux-gnu/11/collect2 -plugin /usr/lib/gcc/x86_64-linux-gnu/11/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/11/lto-wrapper -plugin-opt=-fresolution=/tmp/ccQLGb2c.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -z now -z relro -o cmTC_16078 /usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/11/crtbeginS.o -L/usr/lib/gcc/x86_64-linux-gnu/11 -L/usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/11/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/11/../../.. CMakeFiles/cmTC_16078.dir/CMakeCXXCompilerABI.cpp.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-linux-gnu/11/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/crtn.o +COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_16078' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'cmTC_16078.' gmake[1]: Leaving directory '/home/xb/satellite/aircraft-1/container-2/通信硬件服务化/build/CMakeFiles/CMakeTmp' @@ -325,10 +325,10 @@ Parsed CXX implicit link information from above output: link line regex: [^( *|.*[/\])(ld|CMAKE_LINK_STARTFILE-NOTFOUND|([^/\]+-)?ld|collect2)[^/\]*( |$)] ignore line: [Change Dir: /home/xb/satellite/aircraft-1/container-2/通信硬件服务化/build/CMakeFiles/CMakeTmp] ignore line: [] - ignore line: [Run Build Command(s):/usr/bin/gmake -f Makefile cmTC_2433b/fast && /usr/bin/gmake -f CMakeFiles/cmTC_2433b.dir/build.make CMakeFiles/cmTC_2433b.dir/build] + ignore line: [Run Build Command(s):/usr/bin/gmake -f Makefile cmTC_16078/fast && /usr/bin/gmake -f CMakeFiles/cmTC_16078.dir/build.make CMakeFiles/cmTC_16078.dir/build] ignore line: [gmake[1]: Entering directory '/home/xb/satellite/aircraft-1/container-2/通信硬件服务化/build/CMakeFiles/CMakeTmp'] - ignore line: [Building CXX object CMakeFiles/cmTC_2433b.dir/CMakeCXXCompilerABI.cpp.o] - ignore line: [/usr/bin/c++ -v -o CMakeFiles/cmTC_2433b.dir/CMakeCXXCompilerABI.cpp.o -c /usr/share/cmake-3.22/Modules/CMakeCXXCompilerABI.cpp] + ignore line: [Building CXX object CMakeFiles/cmTC_16078.dir/CMakeCXXCompilerABI.cpp.o] + ignore line: [/usr/bin/c++ -v -o CMakeFiles/cmTC_16078.dir/CMakeCXXCompilerABI.cpp.o -c /usr/share/cmake-3.22/Modules/CMakeCXXCompilerABI.cpp] ignore line: [Using built-in specs.] ignore line: [COLLECT_GCC=/usr/bin/c++] ignore line: [OFFLOAD_TARGET_NAMES=nvptx-none:amdgcn-amdhsa] @@ -338,8 +338,8 @@ Parsed CXX implicit link information from above output: ignore line: [Thread model: posix] ignore line: [Supported LTO compression algorithms: zlib zstd] ignore line: [gcc version 11.4.0 (Ubuntu 11.4.0-1ubuntu1~22.04.2) ] - ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_2433b.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_2433b.dir/'] - ignore line: [ /usr/lib/gcc/x86_64-linux-gnu/11/cc1plus -quiet -v -imultiarch x86_64-linux-gnu -D_GNU_SOURCE /usr/share/cmake-3.22/Modules/CMakeCXXCompilerABI.cpp -quiet -dumpdir CMakeFiles/cmTC_2433b.dir/ -dumpbase CMakeCXXCompilerABI.cpp.cpp -dumpbase-ext .cpp -mtune=generic -march=x86-64 -version -fasynchronous-unwind-tables -fstack-protector-strong -Wformat -Wformat-security -fstack-clash-protection -fcf-protection -o /tmp/ccK3394e.s] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_16078.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_16078.dir/'] + ignore line: [ /usr/lib/gcc/x86_64-linux-gnu/11/cc1plus -quiet -v -imultiarch x86_64-linux-gnu -D_GNU_SOURCE /usr/share/cmake-3.22/Modules/CMakeCXXCompilerABI.cpp -quiet -dumpdir CMakeFiles/cmTC_16078.dir/ -dumpbase CMakeCXXCompilerABI.cpp.cpp -dumpbase-ext .cpp -mtune=generic -march=x86-64 -version -fasynchronous-unwind-tables -fstack-protector-strong -Wformat -Wformat-security -fstack-clash-protection -fcf-protection -o /tmp/ccK0Mlj8.s] ignore line: [GNU C++17 (Ubuntu 11.4.0-1ubuntu1~22.04.2) version 11.4.0 (x86_64-linux-gnu)] ignore line: [ compiled by GNU C version 11.4.0 GMP version 6.2.1 MPFR version 4.1.0 MPC version 1.2.1 isl version isl-0.24-GMP] ignore line: [] @@ -363,15 +363,15 @@ Parsed CXX implicit link information from above output: ignore line: [] ignore line: [GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072] ignore line: [Compiler executable checksum: 6c87588fc345655b93b8c25f48f88886] - ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_2433b.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_2433b.dir/'] - ignore line: [ as -v --64 -o CMakeFiles/cmTC_2433b.dir/CMakeCXXCompilerABI.cpp.o /tmp/ccK3394e.s] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_16078.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_16078.dir/'] + ignore line: [ as -v --64 -o CMakeFiles/cmTC_16078.dir/CMakeCXXCompilerABI.cpp.o /tmp/ccK0Mlj8.s] ignore line: [GNU assembler version 2.38 (x86_64-linux-gnu) using BFD version (GNU Binutils for Ubuntu) 2.38] ignore line: [COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/11/:/usr/lib/gcc/x86_64-linux-gnu/11/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/11/:/usr/lib/gcc/x86_64-linux-gnu/] ignore line: [LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/11/:/usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/11/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/11/../../../:/lib/:/usr/lib/] - ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_2433b.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_2433b.dir/CMakeCXXCompilerABI.cpp.'] - ignore line: [Linking CXX executable cmTC_2433b] - ignore line: [/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_2433b.dir/link.txt --verbose=1] - ignore line: [/usr/bin/c++ -v CMakeFiles/cmTC_2433b.dir/CMakeCXXCompilerABI.cpp.o -o cmTC_2433b ] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_16078.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_16078.dir/CMakeCXXCompilerABI.cpp.'] + ignore line: [Linking CXX executable cmTC_16078] + ignore line: [/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_16078.dir/link.txt --verbose=1] + ignore line: [/usr/bin/c++ -v CMakeFiles/cmTC_16078.dir/CMakeCXXCompilerABI.cpp.o -o cmTC_16078 ] ignore line: [Using built-in specs.] ignore line: [COLLECT_GCC=/usr/bin/c++] ignore line: [COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/11/lto-wrapper] @@ -384,13 +384,13 @@ Parsed CXX implicit link information from above output: ignore line: [gcc version 11.4.0 (Ubuntu 11.4.0-1ubuntu1~22.04.2) ] ignore line: [COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/11/:/usr/lib/gcc/x86_64-linux-gnu/11/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/11/:/usr/lib/gcc/x86_64-linux-gnu/] ignore line: [LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/11/:/usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/11/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/11/../../../:/lib/:/usr/lib/] - ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_2433b' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'cmTC_2433b.'] - link line: [ /usr/lib/gcc/x86_64-linux-gnu/11/collect2 -plugin /usr/lib/gcc/x86_64-linux-gnu/11/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/11/lto-wrapper -plugin-opt=-fresolution=/tmp/cc28PR3K.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -z now -z relro -o cmTC_2433b /usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/11/crtbeginS.o -L/usr/lib/gcc/x86_64-linux-gnu/11 -L/usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/11/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/11/../../.. CMakeFiles/cmTC_2433b.dir/CMakeCXXCompilerABI.cpp.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-linux-gnu/11/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/crtn.o] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_16078' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'cmTC_16078.'] + link line: [ /usr/lib/gcc/x86_64-linux-gnu/11/collect2 -plugin /usr/lib/gcc/x86_64-linux-gnu/11/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/11/lto-wrapper -plugin-opt=-fresolution=/tmp/ccQLGb2c.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -z now -z relro -o cmTC_16078 /usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/11/crtbeginS.o -L/usr/lib/gcc/x86_64-linux-gnu/11 -L/usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/11/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/11/../../.. CMakeFiles/cmTC_16078.dir/CMakeCXXCompilerABI.cpp.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-linux-gnu/11/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/crtn.o] arg [/usr/lib/gcc/x86_64-linux-gnu/11/collect2] ==> ignore arg [-plugin] ==> ignore arg [/usr/lib/gcc/x86_64-linux-gnu/11/liblto_plugin.so] ==> ignore arg [-plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/11/lto-wrapper] ==> ignore - arg [-plugin-opt=-fresolution=/tmp/cc28PR3K.res] ==> ignore + arg [-plugin-opt=-fresolution=/tmp/ccQLGb2c.res] ==> ignore arg [-plugin-opt=-pass-through=-lgcc_s] ==> ignore arg [-plugin-opt=-pass-through=-lgcc] ==> ignore arg [-plugin-opt=-pass-through=-lc] ==> ignore @@ -408,7 +408,7 @@ Parsed CXX implicit link information from above output: arg [-znow] ==> ignore arg [-zrelro] ==> ignore arg [-o] ==> ignore - arg [cmTC_2433b] ==> ignore + arg [cmTC_16078] ==> ignore arg [/usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/Scrt1.o] ==> obj [/usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/Scrt1.o] arg [/usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/crti.o] ==> obj [/usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/crti.o] arg [/usr/lib/gcc/x86_64-linux-gnu/11/crtbeginS.o] ==> obj [/usr/lib/gcc/x86_64-linux-gnu/11/crtbeginS.o] @@ -420,7 +420,7 @@ Parsed CXX implicit link information from above output: arg [-L/usr/lib/x86_64-linux-gnu] ==> dir [/usr/lib/x86_64-linux-gnu] arg [-L/usr/lib/../lib] ==> dir [/usr/lib/../lib] arg [-L/usr/lib/gcc/x86_64-linux-gnu/11/../../..] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/11/../../..] - arg [CMakeFiles/cmTC_2433b.dir/CMakeCXXCompilerABI.cpp.o] ==> ignore + arg [CMakeFiles/cmTC_16078.dir/CMakeCXXCompilerABI.cpp.o] ==> ignore arg [-lstdc++] ==> lib [stdc++] arg [-lm] ==> lib [m] arg [-lgcc_s] ==> lib [gcc_s] diff --git a/build/CMakeFiles/ComHS.dir/ComHS-main.cpp.o b/build/CMakeFiles/ComHS.dir/ComHS-main.cpp.o index ee0ae3d..4d5b275 100644 Binary files a/build/CMakeFiles/ComHS.dir/ComHS-main.cpp.o and b/build/CMakeFiles/ComHS.dir/ComHS-main.cpp.o differ diff --git a/build/CMakeFiles/ComHS.dir/ComHS-main.cpp.o.d b/build/CMakeFiles/ComHS.dir/ComHS-main.cpp.o.d index 3450c46..9b7abee 100644 --- a/build/CMakeFiles/ComHS.dir/ComHS-main.cpp.o.d +++ b/build/CMakeFiles/ComHS.dir/ComHS-main.cpp.o.d @@ -150,7 +150,28 @@ CMakeFiles/ComHS.dir/ComHS-main.cpp.o: \ /usr/include/x86_64-linux-gnu/bits/getopt_posix.h \ /usr/include/x86_64-linux-gnu/bits/getopt_core.h \ /usr/include/x86_64-linux-gnu/bits/unistd_ext.h \ - /usr/include/linux/close_range.h \ + /usr/include/linux/close_range.h /usr/include/signal.h \ + /usr/include/x86_64-linux-gnu/bits/signum-generic.h \ + /usr/include/x86_64-linux-gnu/bits/signum-arch.h \ + /usr/include/x86_64-linux-gnu/bits/types/sig_atomic_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/siginfo_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__sigval_t.h \ + /usr/include/x86_64-linux-gnu/bits/siginfo-arch.h \ + /usr/include/x86_64-linux-gnu/bits/siginfo-consts.h \ + /usr/include/x86_64-linux-gnu/bits/siginfo-consts-arch.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigval_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigevent_t.h \ + /usr/include/x86_64-linux-gnu/bits/sigevent-consts.h \ + /usr/include/x86_64-linux-gnu/bits/sigaction.h \ + /usr/include/x86_64-linux-gnu/bits/sigcontext.h \ + /usr/include/x86_64-linux-gnu/bits/types/stack_t.h \ + /usr/include/x86_64-linux-gnu/sys/ucontext.h \ + /usr/include/x86_64-linux-gnu/bits/sigstack.h \ + /usr/include/x86_64-linux-gnu/bits/sigstksz.h \ + /usr/include/x86_64-linux-gnu/bits/ss_flags.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_sigstack.h \ + /usr/include/x86_64-linux-gnu/bits/sigthread.h \ + /usr/include/x86_64-linux-gnu/bits/signal_ext.h \ /home/xb/satellite/aircraft-1/container-2/通信硬件服务化/ComHS.h \ /usr/include/c++/11/vector /usr/include/c++/11/bits/stl_uninitialized.h \ /usr/include/c++/11/bits/stl_vector.h \ diff --git a/build/CMakeFiles/ComHS.dir/ComHS.cpp.o b/build/CMakeFiles/ComHS.dir/ComHS.cpp.o index 3e36fa9..07692ea 100644 Binary files a/build/CMakeFiles/ComHS.dir/ComHS.cpp.o and b/build/CMakeFiles/ComHS.dir/ComHS.cpp.o differ diff --git a/build/CMakeFiles/ComHS.dir/ComHS.cpp.o.d b/build/CMakeFiles/ComHS.dir/ComHS.cpp.o.d index bf9c73e..81e671c 100644 --- a/build/CMakeFiles/ComHS.dir/ComHS.cpp.o.d +++ b/build/CMakeFiles/ComHS.dir/ComHS.cpp.o.d @@ -171,14 +171,7 @@ CMakeFiles/ComHS.dir/ComHS.cpp.o: \ /usr/include/x86_64-linux-gnu/bits/termios-c_lflag.h \ /usr/include/x86_64-linux-gnu/bits/termios-tcflow.h \ /usr/include/x86_64-linux-gnu/bits/termios-misc.h \ - /usr/include/x86_64-linux-gnu/sys/ttydefaults.h \ - /usr/include/x86_64-linux-gnu/sys/ioctl.h \ - /usr/include/x86_64-linux-gnu/bits/ioctls.h \ - /usr/include/x86_64-linux-gnu/asm/ioctls.h \ - /usr/include/asm-generic/ioctls.h /usr/include/linux/ioctl.h \ - /usr/include/x86_64-linux-gnu/asm/ioctl.h \ - /usr/include/asm-generic/ioctl.h \ - /usr/include/x86_64-linux-gnu/bits/ioctl-types.h /usr/include/signal.h \ + /usr/include/x86_64-linux-gnu/sys/ttydefaults.h /usr/include/signal.h \ /usr/include/x86_64-linux-gnu/bits/signum-generic.h \ /usr/include/x86_64-linux-gnu/bits/signum-arch.h \ /usr/include/x86_64-linux-gnu/bits/types/sig_atomic_t.h \ @@ -200,6 +193,7 @@ CMakeFiles/ComHS.dir/ComHS.cpp.o: \ /usr/include/x86_64-linux-gnu/bits/types/struct_sigstack.h \ /usr/include/x86_64-linux-gnu/bits/sigthread.h \ /usr/include/x86_64-linux-gnu/bits/signal_ext.h \ + /usr/include/x86_64-linux-gnu/sys/time.h \ /home/xb/satellite/aircraft-1/container-2/通信硬件服务化/ComHS.h \ /usr/local/include/simmsg/SimMsg.h \ /usr/local/include/simmsg/SimMessageType.h \ diff --git a/build/bin/ComHS b/build/bin/ComHS index b9852a4..e9dd16a 100755 Binary files a/build/bin/ComHS and b/build/bin/ComHS differ