⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 smcp-message-factory.c

📁 smcp报文处理,阅读您的文件包然后写出其具体功能
💻 C
字号:
#include "smcp-message-factory.h"#include <string.h>#include <stdlib.h>#include <stdio.h>char msg_name[32][40] ={        "BOOT_NOTIFY",        "BOOT_RESPONSE",        "OPERATION_START_REQUEST",        "OPERATION_START_RESPONSE ",        "ALIVE_CHECK_REQUEST",        "ALIVE_CHECK_RESPONSE",        "MAPPING_CHANGE_REQUEST",        "MAPPING_CHANGE_RESPONSE",        "DOWNLOAD_START_INDICATE",        "DOWNLOAD_START_RESPONSE",        "DOWNLOAD_COMPLETE_NOTIFY",        "DOWNLOAD_COMPLETE_RESPONSE",        "OPERATION_STATUS_CHANGE_INDICATE",        "OPERATION_STATUS_CHANGE_RESPONSE",        "CARD_INFORMATION_GET_REQUEST",        "CARD_INFORMATION_GET_RESPONSE",        "OPERATION_DATA_CHANGE_REQUEST",        "OPERATION_DATA_CHANGE_RESPONSE",        "OPERATION_DATA_CHANGE_REPORT",        "OPERATION_DATA_CHANGE_REPORT_RESPONSE",        "RESET_INDICATE",        "RESET_INDICATE_RESPONSE",        "EVENT_TRAP_NOTIFY",        "EVENT_TRAP_RESPONSE",        "ACT_NOTIFY",        "ACT_RESPONSE ",        "TIME_ADJUST_REQUEST ",        "TIME_ADJUST_RESPONSE",        "RRU_INFO_CHG_NOTIFY",        "RRU_INFO_CHG_RESPONSE",        "OPERATION_STOP_INDICATE",        "OPERATION_STOP_RESPONSE" };/**************************************************** * FOR MHPU ****************************************************/void event_trap_notify(){}void operation_start_response(smcp_msg *msg, unsigned char result){    smcp_msg snd_msg;    snd_msg.msg_id = OPERATION_START_RESPONSE;    snd_msg.des_rack = rack.mhpu.rack;    snd_msg.des_slot = rack.mhpu.slot;    snd_msg.src_rack = rack.clpu.rack;    snd_msg.src_slot = rack.clpu.slot;    snd_msg.pdata = (char *) malloc(2 * sizeof(char));    snd_msg.pdata[0] = result;    snd_msg.data_length = 5;    smcp_msg_send(&snd_msg);    if (snd_msg.pdata)        free(snd_msg.pdata);}void alive_check_response(smcp_msg *msg){    smcp_msg snd_msg;    snd_msg.msg_id = ALIVE_CHECK_RESPONSE;    snd_msg.des_rack = msg->src_rack;    snd_msg.des_slot = msg->src_slot;    snd_msg.src_rack = rack.clpu.rack;    snd_msg.src_slot = rack.clpu.slot;    snd_msg.pdata = NULL;    snd_msg.data_length = 2;    smcp_msg_send(&snd_msg);    if (snd_msg.pdata)        free(snd_msg.pdata);}void operation_status_chang_response(smcp_msg *msg, unsigned char result){    //response    smcp_msg snd_msg;    snd_msg.msg_id = OPERATION_STATUS_CHANGE_RESPONSE;    snd_msg.des_rack = rack.mhpu.rack;    snd_msg.des_slot = rack.mhpu.slot;    snd_msg.src_rack = rack.clpu.rack;    snd_msg.src_slot = rack.clpu.slot;    snd_msg.pdata = (char*) malloc(2 * sizeof(char));    snd_msg.pdata[0] = result;    snd_msg.pdata[1] = 0xff;    snd_msg.data_length = 2 + 2;    smcp_msg_send(&snd_msg);    if (snd_msg.pdata)        free(snd_msg.pdata);}void reset_indicate_response(smcp_msg *msg, unsigned char result){    smcp_msg snd_msg;    snd_msg.msg_id = RESET_INDICATE_RESPONSE;    snd_msg.des_rack = rack.mhpu.rack;    snd_msg.des_slot = rack.mhpu.slot;    snd_msg.src_rack = rack.clpu.rack;    snd_msg.src_slot = rack.clpu.slot;    snd_msg.pdata = (char*) malloc(2 * sizeof(char));    snd_msg.pdata[0] = result;    snd_msg.pdata[1] = 0x00;    snd_msg.data_length = 2 + 2;    smcp_msg_send(&snd_msg);    if (snd_msg.pdata)        free(snd_msg.pdata);}/**************************************************** * FOR CSWU ****************************************************/void boot_notify(){    // init_rack();    smcp_msg snd_msg;    snd_msg.msg_id = BOOT_NOTIFY;    snd_msg.des_rack = rack.cswu.rack;    snd_msg.des_slot = rack.cswu.slot;    snd_msg.src_rack = rack.clpu.rack;    snd_msg.src_slot = rack.clpu.slot;    snd_msg.pdata = (char *) malloc(24 * sizeof(char));    snd_msg.pdata[0] = rack.clpu.type;    snd_msg.pdata[1] = rack.clpu.boot_cause;    memcpy(snd_msg.pdata + 2, rack.clpu.soft_ver, sizeof(rack.clpu.soft_ver));    memcpy(snd_msg.pdata + 12, rack.clpu.param_ver, sizeof(rack.clpu.param_ver));    snd_msg.pdata[22] = 0xff;    snd_msg.pdata[23] = 0xff;    snd_msg.data_length = 2 + 24;    smcp_msg_send(&snd_msg);    free(snd_msg.pdata);}void download_start_response(smcp_msg *msg){    smcp_msg snd_msg;    snd_msg.msg_id = DOWNLOAD_START_RESPONSE;    snd_msg.des_rack = msg->src_rack;    snd_msg.des_slot = msg->src_slot;    snd_msg.src_rack = rack.clpu.rack;    snd_msg.src_slot = rack.clpu.slot;    snd_msg.pdata = NULL;    snd_msg.data_length = 3;    smcp_msg_send(&snd_msg);    if (snd_msg.pdata)        free(snd_msg.pdata);}void act_response(smcp_msg *msg){    smcp_msg snd_msg;    snd_msg.msg_id = ACT_RESPONSE;    snd_msg.des_rack = msg->src_rack;    snd_msg.des_slot = msg->src_slot;    snd_msg.src_rack = rack.clpu.rack;    snd_msg.src_slot = rack.clpu.slot;    snd_msg.pdata = NULL;    snd_msg.data_length = 3;    smcp_msg_send(&snd_msg);    if (snd_msg.pdata)        free(snd_msg.pdata);}/*********************************************** * FOR RRU **********************************************/void act_notify(struct rru_t *rru){    smcp_msg snd_msg;    snd_msg.msg_id = ACT_NOTIFY;    snd_msg.des_rack = rru->rack;    snd_msg.des_slot = rru->slot;    snd_msg.src_rack = rack.clpu.rack;    snd_msg.src_slot = rack.clpu.slot;    snd_msg.pdata = NULL;    snd_msg.data_length = 3;    smcp_msg_send(&snd_msg);}void boot_response(smcp_msg *msg){    smcp_msg snd_msg;    snd_msg.msg_id = BOOT_RESPONSE;    snd_msg.des_rack = msg->src_rack;    snd_msg.des_slot = msg->src_slot;    snd_msg.src_rack = rack.clpu.rack;    snd_msg.src_slot = rack.clpu.slot;    snd_msg.pdata = NULL;    snd_msg.data_length = 3;    smcp_msg_send(&snd_msg);}void alive_check(struct rru_t *rru){    smcp_msg snd_msg;    snd_msg.msg_id = ALIVE_CHECK_REQUEST;    snd_msg.des_rack = rru->rack;    snd_msg.des_slot = rru->slot;    snd_msg.src_rack = rack.clpu.rack;    snd_msg.src_slot = rack.clpu.slot;    snd_msg.pdata = NULL;    snd_msg.data_length = 3;    smcp_msg_send(&snd_msg);}void show_message(smcp_msg *rev_msg){    printf("*******************\n");    printf("%s\n", msg_name[rev_msg->msg_id-1]);    printf("data length is:%d\n", rev_msg->data_length);    int i;    printf("content is:");    for (i = 0; i < rev_msg->data_length && rev_msg->pdata; i++)        printf("%x ", rev_msg->pdata[i]);    printf("\n--------------------\n");}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -