| | |
| | | else if (nStream == 5 && pHeader->function == 3) { |
| | | replyEanbleDisableAlarmReport(pMessage); |
| | | } |
| | | else if (nStream == 10 && pHeader->function == 3) { |
| | | replyTerminalDisplay(pMessage); |
| | | } |
| | | }; |
| | | |
| | | PassiveListener listener; |
| | |
| | | return 0; |
| | | } |
| | | |
| | | // 通用的reply ack函数 |
| | | void CHsmsPassive::replyAck(int s, int f, unsigned int systemBytes, BYTE ack, const char* pszAckName) |
| | | { |
| | | IMessage* pMessage = NULL; |
| | | HSMS_Create1Message(pMessage, m_nSessionId, s, f, systemBytes); |
| | | ASSERT(pMessage); |
| | | ISECS2Item* pItem = pMessage->getBody(); |
| | | pItem->setBinary(ack, pszAckName); |
| | | m_pPassive->sendMessage(pMessage); |
| | | LOGI("<HSMS>[SECS Msg SEND]S%dF%d (SysByte=%u)", s, f, systemBytes); |
| | | HSMS_Destroy1Message(pMessage); |
| | | } |
| | | |
| | | // S1F1 |
| | | int CHsmsPassive::requestAreYouThere() |
| | | { |
| | |
| | | SetLocalTime(&time); |
| | | } |
| | | |
| | | |
| | | IMessage* pMessage = NULL; |
| | | HSMS_Create1Message(pMessage, m_nSessionId, 2, 32, pRecv->getHeader()->systemBytes); |
| | | ASSERT(pMessage); |
| | | |
| | | ISECS2Item* pItem = pMessage->getBody(); |
| | | pItem->setBinary(BYTE(0), "TIACK"); |
| | | m_pPassive->sendMessage(pMessage); |
| | | LOGI("<HSMS>[SECS Msg SEND]S2F32 (SysByte=%u)", pRecv->getHeader()->systemBytes); |
| | | HSMS_Destroy1Message(pMessage); |
| | | |
| | | replyAck(2, 32, pRecv->getHeader()->systemBytes, BYTE(0), "TIACK"); |
| | | return 0; |
| | | } |
| | | |
| | |
| | | |
| | | |
| | | MYREPLY: |
| | | int s = 2; |
| | | int f = 38; |
| | | IMessage* pMessage = NULL; |
| | | HSMS_Create1Message(pMessage, m_nSessionId, s, f, pRecv->getHeader()->systemBytes); |
| | | ASSERT(pMessage); |
| | | ISECS2Item* pItem = pMessage->getBody(); |
| | | pItem->setBinary(BYTE(0), "ERACK"); |
| | | m_pPassive->sendMessage(pMessage); |
| | | LOGI("<HSMS>[SECS Msg SEND]S%dF%d (SysByte=%u)", s, f, pRecv->getHeader()->systemBytes); |
| | | HSMS_Destroy1Message(pMessage); |
| | | |
| | | |
| | | replyAck(2, 38, pRecv->getHeader()->systemBytes, BYTE(0), "ERACK"); |
| | | return 0; |
| | | } |
| | | |
| | |
| | | |
| | | |
| | | MYREPLY: |
| | | int s = 5; |
| | | int f = 4; |
| | | IMessage* pMessage = NULL; |
| | | HSMS_Create1Message(pMessage, m_nSessionId, s, f, pRecv->getHeader()->systemBytes); |
| | | ASSERT(pMessage); |
| | | ISECS2Item* pItem = pMessage->getBody(); |
| | | pItem->setBinary(BYTE(0), "ACKC5"); |
| | | m_pPassive->sendMessage(pMessage); |
| | | LOGI("<HSMS>[SECS Msg SEND]S%dF%d (SysByte=%u)", s, f, pRecv->getHeader()->systemBytes); |
| | | HSMS_Destroy1Message(pMessage); |
| | | replyAck(5, 4, pRecv->getHeader()->systemBytes, BYTE(0), "ACKC5"); |
| | | return 0; |
| | | } |
| | | |
| | | // S10F3 |
| | | int CHsmsPassive::replyTerminalDisplay(IMessage* pRecv) |
| | | { |
| | | if (m_pPassive == NULL || STATE::SELECTED != m_pPassive->getState()) { |
| | | return ER_NOTSELECT; |
| | | } |
| | | ISECS2Item* pBody = pRecv->getBody(); |
| | | if (pBody == nullptr || pBody->getType() != SITYPE::A) ER_PARAM_ERROR; |
| | | |
| | | |
| | | |
| | | BOOL bCheckData = FALSE; |
| | | BYTE tid; |
| | | char* pszText = nullptr;; |
| | | { |
| | | ISECS2Item* pItem = pRecv->getBody(); |
| | | if (pItem->getSubItemSize() < 2) goto MYREPLY; |
| | | if (!pItem->getSubItemBinary(0, tid)) goto MYREPLY; |
| | | if (!pItem->getSubItemString(1, pszText)) goto MYREPLY; |
| | | bCheckData = TRUE; |
| | | LOGI("TerminalDisplay tid:%d, pszText:%s", tid, pszText); |
| | | m_pModel->notifyText(RX_HSMS_TERMINAL_TEXT, pszText); |
| | | } |
| | | |
| | | |
| | | MYREPLY: |
| | | replyAck(10, 4, pRecv->getHeader()->systemBytes, BYTE(0), "ACKC10"); |
| | | return 0; |
| | | } |
| | | |