LAPTOP-SNT8I5JK\Boounion
2025-07-28 bfe14e41fa5b07771d78af4511ba18d706bc23cc
1.Spooling Config功能EAP模拟测试;
已修改8个文件
108 ■■■■■ 文件已修改
Document/Panel Bonder八零联合 SecsTest CheckList_v3.0.xlsx 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/EAPSimulator/CHsmsActive.cpp 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/EAPSimulator/CHsmsActive.h 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/EAPSimulator/EAPSimulator.rc 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/EAPSimulator/EAPSimulatorDlg.cpp 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/EAPSimulator/EAPSimulatorDlg.h 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/EAPSimulator/Resource.h 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/HsmsPassive.cpp 53 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Document/Panel Bonder八零联合 SecsTest CheckList_v3.0.xlsx
Binary files differ
SourceCode/Bond/EAPSimulator/CHsmsActive.cpp
@@ -245,6 +245,27 @@
    return 0;
}
int CHsmsActive::hsmsConfigureSpooling(std::map<unsigned int, std::set<unsigned int>>& spoolingConfig)
{
    IMessage* pMessage = nullptr;
    int nRet = HSMS_Create1Message(pMessage, m_nSessionId, 2 | REPLY, 43, ++m_nSystemByte);
    if (spoolingConfig.size() > 0) {
        for (auto s : spoolingConfig) {
            ISECS2Item* pItemStreamList = pMessage->getBody()->addItem();
            pItemStreamList->addU1Item(s.first, "STRID");
            ISECS2Item* pItemFcnList = pItemStreamList->addItem();
            for (auto f : s.second) {
                pItemFcnList->addU1Item(f, "FCNID");
            }
        }
    }
    m_pActive->sendMessage(pMessage);
    HSMS_Destroy1Message(pMessage);
    return 0;
}
int CHsmsActive::replyAck0(IMessage* pMessage)
{
    return 0;
SourceCode/Bond/EAPSimulator/CHsmsActive.h
@@ -2,6 +2,7 @@
#include <string>
#include <vector>
#include <map>
#include <set>
#include "CCollectionEvent.h"
@@ -53,6 +54,9 @@
    // Line Event Report
    int hsmsLinkEventReport(std::map<unsigned int, std::vector<unsigned int>>& mapEvent);
    // Configure Spooling
    int hsmsConfigureSpooling(std::map<unsigned int, std::set<unsigned int>>& spoolingConfig);
    // 閫氳繃鐨剅eply鍑芥暟
    void replyAck(int s, int f, unsigned int systemBytes, BYTE ack, const char* pszAckName);
SourceCode/Bond/EAPSimulator/EAPSimulator.rc
Binary files differ
SourceCode/Bond/EAPSimulator/EAPSimulatorDlg.cpp
@@ -84,6 +84,7 @@
    ON_BN_CLICKED(IDC_BUTTON_ED_ALARM_REPORT, &CEAPSimulatorDlg::OnBnClickedButtonEdAlarmReport)
    ON_BN_CLICKED(IDC_BUTTON_DEFINE_REPORT, &CEAPSimulatorDlg::OnBnClickedButtonDefineReport)
    ON_BN_CLICKED(IDC_BUTTON_LINE_REPORT, &CEAPSimulatorDlg::OnBnClickedButtonLineReport)
    ON_BN_CLICKED(IDC_BUTTON_CONFIGURE_SPOOLING, &CEAPSimulatorDlg::OnBnClickedButtonConfigureSpooling)
END_MESSAGE_MAP()
@@ -267,6 +268,7 @@
    GetDlgItem(IDC_BUTTON_ED_ALARM_REPORT)->EnableWindow(enabled);    
    GetDlgItem(IDC_BUTTON_DEFINE_REPORT)->EnableWindow(enabled);
    GetDlgItem(IDC_BUTTON_LINE_REPORT)->EnableWindow(enabled);    
    GetDlgItem(IDC_BUTTON_CONFIGURE_SPOOLING)->EnableWindow(enabled);
}
void CEAPSimulatorDlg::OnBnClickedButtonConnect()
@@ -328,3 +330,28 @@
    CLinkReportDlg dlg;
    dlg.DoModal();
}
void CEAPSimulatorDlg::OnBnClickedButtonConfigureSpooling()
{
    std::map<unsigned int, std::set<unsigned int>> spoolingConfig;
    // test clear all
    // theApp.m_model.m_pHsmsActive->hsmsConfigureSpooling(spoolingConfig);
    // test add s2[1,3,5];
    // spoolingConfig[2].insert(1);
    // spoolingConfig[2].insert(3);
    // spoolingConfig[2].insert(5);
    // spoolingConfig[3].insert(2);
    // spoolingConfig[3].insert(4);
    // spoolingConfig[3].insert(6);
    // theApp.m_model.m_pHsmsActive->hsmsConfigureSpooling(spoolingConfig);
    // test clear S2
    // spoolingConfig[2].clear();
    // theApp.m_model.m_pHsmsActive->hsmsConfigureSpooling(spoolingConfig);
    spoolingConfig[5].insert(66);
    theApp.m_model.m_pHsmsActive->hsmsConfigureSpooling(spoolingConfig);
}
SourceCode/Bond/EAPSimulator/EAPSimulatorDlg.h
@@ -53,4 +53,5 @@
    afx_msg void OnBnClickedButtonEdAlarmReport();
    afx_msg void OnBnClickedButtonDefineReport();
    afx_msg void OnBnClickedButtonLineReport();
    afx_msg void OnBnClickedButtonConfigureSpooling();
};
SourceCode/Bond/EAPSimulator/Resource.h
@@ -29,6 +29,8 @@
#define IDC_BUTTON_DEFINE_REPORT        1010
#define IDC_BUTTON_LINE_REPORT          1011
#define IDC_RADIO_ENABLE                1012
#define IDC_BUTTON_LINE_REPORT2         1012
#define IDC_BUTTON_CONFIGURE_SPOOLING   1012
#define IDC_RADIO_DISABLE               1013
#define IDC_EDIT_CEID                   1014
#define IDC_LIST1                       1015
SourceCode/Bond/Servo/HsmsPassive.cpp
@@ -1089,50 +1089,27 @@
    for (int i = 0; i < pBody->getSubItemSize(); i++) {
        ISECS2Item* pStreamItem = pBody->getSubItem(i);
        ASSERT(pStreamItem);
        unsigned char STRID;
        unsigned char STRID, FCNID;
        pStreamItem->getSubItemU1(0, STRID);
        ISECS2Item* pFcnItem = pStreamItem->getSubItem(1);
        for (int j = 0; j < pFcnItem->getSubItemSize(); j++) {
        ISECS2Item* pFcnItemList = pStreamItem->getSubItem(1);
        if (pFcnItemList->getSubItemSize() == 0) {
            m_spoolingConfig[STRID].clear();
        }
        else {
            for (int j = 0; j < pFcnItemList->getSubItemSize(); j++) {
                pFcnItemList->getSubItemU1(j, FCNID);
                m_spoolingConfig[STRID].insert(FCNID);
            }
        }
    }
    BOOL bCheckData = FALSE;
    const char* pszCmdName;
    std::vector<CommandParameter> params;
    {
        ISECS2Item* pItemParams, * pItemParam;
        ISECS2Item* pItem = pRecv->getBody();
        if (pItem->getSubItemSize() < 2) goto MYREPLY;
        if (!pItem->getSubItemString(0, pszCmdName)) goto MYREPLY;
        pItemParams = pItem->getSubItem(1);
        if (pItemParams == nullptr || pItemParams->getType() != SITYPE::L) goto MYREPLY;
        for (int i = 0; i < pItemParams->getSubItemSize(); i++) {
            const char* pszParamName, * pszParamValue;
            pItemParam = pItemParams->getSubItem(i);
            if (pItemParam != nullptr
                && pItemParam->getSubItemString(0, pszParamName)
                && pItemParam->getSubItemString(1, pszParamValue)) {
                CommandParameter cp;
                strcpy_s(cp.szName, COMMAND_NAME_MAX, pszParamName);
                strcpy_s(cp.szValue, COMMAND_VALUE_MAX, pszParamValue);
                params.push_back(cp);
    // 鎵撳嵃楠岃瘉缁撴灉
    for (auto s : m_spoolingConfig) {
        LOGI("====> stream:%d", s.first);
        for (auto f : s.second) {
            LOGI("function:%d", f);
            }
        }
        bCheckData = TRUE;
    }
    // 鍥炶皟鍒板簲鐢ㄥ眰
    if (bCheckData) {
        if (m_listener.onCommand != nullptr) {
            m_listener.onCommand(this, pszCmdName, params);
        }
    }
MYREPLY:
    replyAck(2, 42, pRecv->getHeader()->systemBytes, BYTE(0), "ERACK");
    return 0;