| | |
| | | #include "pch.h" |
| | | #include "CHsmsActive.h" |
| | | #include "Log.h" |
| | | |
| | | |
| | | CHsmsActive::CHsmsActive() |
| | |
| | | { |
| | | m_strIp = pszIp; |
| | | m_nPort = port; |
| | | ++m_nSessionId; |
| | | |
| | | auto onStatusChanged = [&](void* pFrom, ACTIVESTATE state) -> void { |
| | | if (m_listener.onStateChanged != nullptr) { |
| | |
| | | } |
| | | |
| | | if (ACTIVESTATE::NOT_SELECTED == state) { |
| | | LOGI("Active state changed(NOT_SELECTED)."); |
| | | hsmsSelectRequest(); |
| | | } |
| | | else if (ACTIVESTATE::SELECTED == state) { |
| | | LOGI("Active state changed(SELECTED)."); |
| | | hsmsEstablishCommunications(); |
| | | } |
| | | else if (ACTIVESTATE::NOT_CONNECTED == state) { |
| | | LOGI("Active state changed(NOT_CONNECTED)."); |
| | | m_pActive->disconnect(); |
| | | } |
| | | }; |
| | | auto onRecvSysMessage = [&](void* pFrom, IMessage* pMessage) -> void { |
| | | LOGI("onRecvSysMessage(sessionId:%d, sType:%d).", |
| | | pMessage->getHeader()->sessionId, pMessage->getHeader()->sType); |
| | | TRACE("sessionId:%d, sType:%d\n", pMessage->getHeader()->sessionId, pMessage->getHeader()->sType); |
| | | }; |
| | | |
| | |
| | | HEADER* pHeader = pMessage->getHeader(); |
| | | TRACE("收到消息 S%dF%d================\n", pHeader->stream & 0x7F, pHeader->function); |
| | | TRACE("Body:%s\n", pMessage->toString()); |
| | | LOGI("onRecvDataMessage(%s).", pMessage->toString()); |
| | | }; |
| | | |
| | | ActiveListener listener; |
| | |
| | | |
| | | return 0; |
| | | } |
| | | |
| | | int CHsmsActive::hsmsAreYouThere() |
| | | { |
| | | IMessage* pMessage = nullptr; |
| | | int nRet = HSMS_Create1Message(pMessage, m_nSessionId, 1 | REPLY, 1, ++m_nSystemByte); |
| | | m_pActive->sendMessage(pMessage); |
| | | HSMS_Destroy1Message(pMessage); |
| | | |
| | | return 0; |
| | | } |
| | | |
| | | int CHsmsActive::hsmsDatetimeSync() |
| | | { |
| | | CTime time = CTime::GetCurrentTime(); |
| | | char szTime[256]; |
| | | sprintf_s(szTime, 256, _T("%4d%02d%02d%02d%02d%02d00"), time.GetYear(), |
| | | time.GetMonth(), time.GetDay(), time.GetHour(), time.GetMinute(), time.GetSecond()); |
| | | |
| | | IMessage* pMessage = nullptr; |
| | | int nRet = HSMS_Create1Message(pMessage, m_nSessionId, 2 | REPLY, 31, ++m_nSystemByte); |
| | | ISECS2Item* pItem = pMessage->getBody(); |
| | | pItem->setString((const char*)szTime, _T("Date time")); |
| | | m_pActive->sendMessage(pMessage); |
| | | HSMS_Destroy1Message(pMessage); |
| | | |
| | | return 0; |
| | | } |
| | | |
| | | int CHsmsActive::hsmsTerminalDisplay(BYTE tid, const char* pszText) |
| | | { |
| | | char szTid[1]; |
| | | szTid[0] = tid; |
| | | |
| | | IMessage* pMessage = nullptr; |
| | | int nRet = HSMS_Create1Message(pMessage, m_nSessionId, 10 | REPLY, 3, ++m_nSystemByte); |
| | | ISECS2Item* pItem = pMessage->getBody(); |
| | | pItem->addBinaryItem(szTid, 1, _T("TID")); |
| | | pItem->addItem(pszText, _T("TEXT")); |
| | | m_pActive->sendMessage(pMessage); |
| | | HSMS_Destroy1Message(pMessage); |
| | | |
| | | return 0; |
| | | } |