Added Logout
This commit is contained in:
		@@ -175,12 +175,49 @@ void MessageHelper::createLoginMessage() {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
QByteArrayList const &MessageHelper::createLoginMessageChunksToSend(char etx) {
 | 
					void MessageHelper::createLogoutMessage() {
 | 
				
			||||||
 | 
					    m_logoutMessage.clear();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    m_logoutMessage.push_back((char)0x85); // 5 in 0x85 is the size
 | 
				
			||||||
 | 
					    m_logoutMessage = m_loginMessage.append(QByteArray("Logout"));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    m_loginMessage.push_back((char)0x04);
 | 
				
			||||||
 | 
					    m_loginMessage = m_loginMessage.append(QByteArray("Time"));
 | 
				
			||||||
 | 
					    m_loginMessage.push_back((char)0x00);
 | 
				
			||||||
 | 
					    m_loginMessage.push_back((char)0x13);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    QDateTime current = QDateTime::currentDateTime();
 | 
				
			||||||
 | 
					    // TODO: wieder entfernen
 | 
				
			||||||
 | 
					    current.setTime(QTime(12, 0, 0));
 | 
				
			||||||
 | 
					    current.setDate(QDate(2024, 6, 12));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    QByteArray time(current.toString(Qt::ISODate).toStdString().c_str());
 | 
				
			||||||
 | 
					    time[10] = ' ';
 | 
				
			||||||
 | 
					    m_logoutMessage = m_logoutMessage.append(time);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    m_loginMessage.push_back((char)0x00);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (DBG_LEVEL >= DBG_INFORMATION) {
 | 
				
			||||||
 | 
					        qCritical() << DBG_HEADER << "loginMessage" << m_logoutMessage.toHex(':');
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					QByteArrayList const &MessageHelper::createMessageChunksToSend(AsyncPosCommand cmd, char etx) {
 | 
				
			||||||
    QByteArray encryptedPacketID(QByteArray("\x01\x02\x03\x04\x05\x06\x07\x08"));
 | 
					    QByteArray encryptedPacketID(QByteArray("\x01\x02\x03\x04\x05\x06\x07\x08"));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    m_messageChunkList.clear();
 | 
					    m_messageChunkList.clear();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    switch (cmd) {
 | 
				
			||||||
 | 
					    case (int)MessageHelper::AsyncPosCommand::LOGIN:
 | 
				
			||||||
        createLoginMessage();
 | 
					        createLoginMessage();
 | 
				
			||||||
        createRawPacket(PacketType::POS_ECR, encryptedPacketID, m_loginMessage);
 | 
					        createRawPacket(PacketType::POS_ECR, encryptedPacketID, m_loginMessage);
 | 
				
			||||||
 | 
					        break;
 | 
				
			||||||
 | 
					    case (int)MessageHelper::AsyncPosCommand::LOGOUT:
 | 
				
			||||||
 | 
					        createLogoutMessage();
 | 
				
			||||||
 | 
					        createRawPacket(PacketType::POS_ECR, encryptedPacketID, m_logoutMessage);
 | 
				
			||||||
 | 
					        break;
 | 
				
			||||||
 | 
					    default:;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (DBG_LEVEL >= DBG_DEBUG) {
 | 
					    if (DBG_LEVEL >= DBG_DEBUG) {
 | 
				
			||||||
        qCritical() << DBG_HEADER << m_rawPacket.toHex(':');
 | 
					        qCritical() << DBG_HEADER << m_rawPacket.toHex(':');
 | 
				
			||||||
@@ -296,6 +333,14 @@ QByteArrayList const &MessageHelper::createLoginMessageChunksToSend(char etx) {
 | 
				
			|||||||
    return m_messageChunkList;
 | 
					    return m_messageChunkList;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					QByteArrayList MessageHelper::createLoginMessageChunksToSend(char etx) {
 | 
				
			||||||
 | 
					    return createMessageChunksToSend(AsyncPosCommand::LOGIN, etx);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					QByteArrayList MessageHelper::createLogoutMessageChunksToSend(char etx) {
 | 
				
			||||||
 | 
					    return createMessageChunksToSend(AsyncPosCommand::LOGOUT, etx);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
bool MessageHelper::insertEncryptedPacketID(QByteArray const &encryptedPacketID) {
 | 
					bool MessageHelper::insertEncryptedPacketID(QByteArray const &encryptedPacketID) {
 | 
				
			||||||
    if (encryptedPacketID.size() == PACKET_ID_SIZE) {
 | 
					    if (encryptedPacketID.size() == PACKET_ID_SIZE) {
 | 
				
			||||||
        // m_rawPacket has already full length
 | 
					        // m_rawPacket has already full length
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -17,6 +17,11 @@ public:
 | 
				
			|||||||
        // POS_HOST_FORMAT_1_UNENCRYPTED = 0x21
 | 
					        // POS_HOST_FORMAT_1_UNENCRYPTED = 0x21
 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    enum AsyncPosCommand : std::uint8_t {
 | 
				
			||||||
 | 
					        LOGIN  = 0,
 | 
				
			||||||
 | 
					        LOGOUT = 1
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    explicit MessageHelper(QString const &posID = "T-TPS-SELF2002in",
 | 
					    explicit MessageHelper(QString const &posID = "T-TPS-SELF2002in",
 | 
				
			||||||
                           QString const &apak = "8AC304380E0E476BA2558B75DB9E2516");
 | 
					                           QString const &apak = "8AC304380E0E476BA2558B75DB9E2516");
 | 
				
			||||||
    explicit MessageHelper(QByteArray const &posID, QString const &apak);
 | 
					    explicit MessageHelper(QByteArray const &posID, QString const &apak);
 | 
				
			||||||
@@ -29,8 +34,9 @@ public:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    bool insertEncryptedPacketID(QByteArray const &encryptedPacketID);
 | 
					    bool insertEncryptedPacketID(QByteArray const &encryptedPacketID);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    QByteArrayList const &getMessageChunksToSend();
 | 
					    QByteArrayList createLoginMessageChunksToSend(char etx);
 | 
				
			||||||
    QByteArrayList const &createLoginMessageChunksToSend(char ext);
 | 
					    QByteArrayList createLogoutMessageChunksToSend(char etx);
 | 
				
			||||||
 | 
					    QByteArrayList const &createMessageChunksToSend(AsyncPosCommand cmd, char etx);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// private:
 | 
					// private:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -40,11 +46,13 @@ public:
 | 
				
			|||||||
    QByteArray m_messageHeaderPrefix;
 | 
					    QByteArray m_messageHeaderPrefix;
 | 
				
			||||||
    QByteArray m_rawPacket; // without leading STX and trailing [ETX(1/2), LRC]
 | 
					    QByteArray m_rawPacket; // without leading STX and trailing [ETX(1/2), LRC]
 | 
				
			||||||
    QByteArray m_loginMessage;
 | 
					    QByteArray m_loginMessage;
 | 
				
			||||||
 | 
					    QByteArray m_logoutMessage;
 | 
				
			||||||
    QByteArrayList m_messageChunkList;
 | 
					    QByteArrayList m_messageChunkList;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    bool setMessageHeaderPacketType(PacketType packetType);
 | 
					    bool setMessageHeaderPacketType(PacketType packetType);
 | 
				
			||||||
    bool createMessageHeaderPrefix(PacketType packetType, QByteArray const &encryptedPacketID);
 | 
					    bool createMessageHeaderPrefix(PacketType packetType, QByteArray const &encryptedPacketID);
 | 
				
			||||||
    void createLoginMessage();
 | 
					    void createLoginMessage();
 | 
				
			||||||
 | 
					    void createLogoutMessage();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    static QByteArray const &mask(QByteArray &messageChunk);
 | 
					    static QByteArray const &mask(QByteArray &messageChunk);
 | 
				
			||||||
    static QByteArray const &unMask(QByteArray &messageChunk);
 | 
					    static QByteArray const &unMask(QByteArray &messageChunk);
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user