| | |
| | | else if (nStream == 2 && pHeader->function == 41) { |
| | | replyCommand(pMessage); |
| | | } |
| | | else if (nStream == 2 && pHeader->function == 43) { |
| | | replyConfigureSpooling(pMessage); |
| | | } |
| | | else if (nStream == 5 && pHeader->function == 3) { |
| | | replyEanbleDisableAlarmReport(pMessage); |
| | | } |
| | |
| | | return 0; |
| | | } |
| | | |
| | | // S2F43 |
| | | int CHsmsPassive::replyConfigureSpooling(IMessage* pRecv) |
| | | { |
| | | if (m_pPassive == NULL || STATE::SELECTED != m_pPassive->getState()) { |
| | | return ER_NOTSELECT; |
| | | } |
| | | ISECS2Item* pBody = pRecv->getBody(); |
| | | if (pBody == nullptr || pBody->getType() != SITYPE::L) ER_PARAM_ERROR; |
| | | |
| | | // 清空所有 |
| | | if (pBody->getSubItemSize() == 0) { |
| | | m_spoolingConfig.clear(); |
| | | goto MYREPLY; |
| | | } |
| | | |
| | | // 依次配置Stream |
| | | for (int i = 0; i < pBody->getSubItemSize(); i++) { |
| | | ISECS2Item* pStreamItem = pBody->getSubItem(i); |
| | | ASSERT(pStreamItem); |
| | | unsigned char STRID; |
| | | pStreamItem->getSubItemU1(0, STRID); |
| | | ISECS2Item* pFcnItem = pStreamItem->getSubItem(1); |
| | | for (int j = 0; j < pFcnItem->getSubItemSize(); j++) { |
| | | |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | 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); |
| | | } |
| | | } |
| | | 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; |
| | | } |
| | | |
| | | // S5F3 |
| | | int CHsmsPassive::replyEanbleDisableAlarmReport(IMessage* pRecv) |
| | | { |