@@ -60,11 +60,77 @@ bool CProtocol_Packet::Protocol_Packet_HDRComm(XCHAR* ptszMsgBuffer, int* pInt_M
6060 Protocol_dwErrorCode = ERROR_AUTHORIZE_MODULE_PROTOCOL_PARAMENT;
6161 return false ;
6262 }
63- if (0 == enDeviceType)
63+
64+ if (XENGINE_AUTH_APP_NETTYPE_TCP == enDeviceType)
6465 {
6566 *pInt_MsgLen = sizeof (XENGINE_PROTOCOLHDR);
6667 memcpy (ptszMsgBuffer, pSt_ProtocolHdr, *pInt_MsgLen);
6768 }
69+ else if (XENGINE_AUTH_APP_NETTYPE_MQTT == enDeviceType)
70+ {
71+ int nRVLen = 0 ;
72+ XCHAR tszRVBuffer[1024 ] = {};
73+
74+ if (XENGINE_COMMUNICATION_PROTOCOL_OPERATOR_CODE_AUTH_REPLOGIN == pSt_ProtocolHdr->unOperatorCode )
75+ {
76+ if (0 == pSt_ProtocolHdr->wReserve )
77+ {
78+ int nRVLen = 0 ;
79+ int nListCount = 6 ;
80+ XCHAR tszRVBuffer[1024 ];
81+ MQTTPROTOCOL_HDRPROPERTY** ppSt_HDRProperty;
82+
83+ BaseLib_Memory_Malloc ((XPPPMEM)&ppSt_HDRProperty, nListCount, sizeof (MQTTPROTOCOL_HDRPROPERTY));
84+
85+ ppSt_HDRProperty[0 ]->nProLen = 4 ;
86+ ppSt_HDRProperty[0 ]->st_unValue .nValue = 1024000 ;
87+ ppSt_HDRProperty[0 ]->byProFlag = XENGINE_RFCCOMPONENTS_MQTT_PROTOCOL_PROPERTY_PACKMAX;
88+
89+ ppSt_HDRProperty[1 ]->nProLen = 1 ;
90+ ppSt_HDRProperty[1 ]->st_unValue .byValue = 1 ;
91+ ppSt_HDRProperty[1 ]->byProFlag = XENGINE_RFCCOMPONENTS_MQTT_PROTOCOL_PROPERTY_REVERAVAI;
92+
93+ ppSt_HDRProperty[2 ]->nProLen = 1 ;
94+ ppSt_HDRProperty[2 ]->st_unValue .byValue = 1 ;
95+ ppSt_HDRProperty[2 ]->byProFlag = XENGINE_RFCCOMPONENTS_MQTT_PROTOCOL_PROPERTY_SHAREDSUBAVAI;
96+
97+ ppSt_HDRProperty[3 ]->nProLen = 1 ;
98+ ppSt_HDRProperty[3 ]->st_unValue .byValue = 1 ;
99+ ppSt_HDRProperty[3 ]->byProFlag = XENGINE_RFCCOMPONENTS_MQTT_PROTOCOL_PROPERTY_SUBIDAVAI;
100+
101+ ppSt_HDRProperty[4 ]->nProLen = 2 ;
102+ ppSt_HDRProperty[4 ]->st_unValue .wValue = 65535 ;
103+ ppSt_HDRProperty[4 ]->byProFlag = XENGINE_RFCCOMPONENTS_MQTT_PROTOCOL_PROPERTY_ALIASMAX;
104+
105+ ppSt_HDRProperty[5 ]->nProLen = 1 ;
106+ ppSt_HDRProperty[5 ]->st_unValue .byValue = 1 ;
107+ ppSt_HDRProperty[5 ]->byProFlag = XENGINE_RFCCOMPONENTS_MQTT_PROTOCOL_PROPERTY_WILDCARDSUBAVAI;
108+
109+ MQTTProtocol_Packet_REPConnect (tszRVBuffer, &nRVLen, 0 , XENGINE_RFCCOMPONENTS_MQTT_PROTOCOL_REASON_SUCCESS, &ppSt_HDRProperty, nListCount);
110+ MQTTProtocol_Packet_Header (ptszMsgBuffer, pInt_MsgLen, XENGINE_RFCCOMPONENTS_MQTT_PROTOCOL_TYPE_CONNACK, tszRVBuffer, nRVLen);
111+ BaseLib_Memory_Free ((XPPPMEM)&ppSt_HDRProperty, nListCount);
112+ }
113+ else
114+ {
115+ MQTTProtocol_Packet_REPConnect (tszRVBuffer, &nRVLen, 0 , XENGINE_RFCCOMPONENTS_MQTT_PROTOCOL_REASON_USERPASS);
116+ MQTTProtocol_Packet_Header (ptszMsgBuffer, pInt_MsgLen, XENGINE_RFCCOMPONENTS_MQTT_PROTOCOL_TYPE_CONNACK, tszRVBuffer, nRVLen);
117+ }
118+ }
119+ else if (XENGINE_COMMUNICATION_PROTOCOL_OPERATOR_CODE_AUTH_EXPIRED == pSt_ProtocolHdr->unOperatorCode )
120+ {
121+ Json::Value st_JsonRoot;
122+ st_JsonRoot[" wHeader" ] = pSt_ProtocolHdr->wHeader ;
123+ st_JsonRoot[" wTail" ] = pSt_ProtocolHdr->wTail ;
124+ st_JsonRoot[" xhToken" ] = (Json::Value::UInt64)pSt_ProtocolHdr->xhToken ;
125+ st_JsonRoot[" unOperatorType" ] = pSt_ProtocolHdr->unOperatorType ;
126+ st_JsonRoot[" unOperatorCode" ] = pSt_ProtocolHdr->unOperatorCode ;
127+ st_JsonRoot[" wCrypto" ] = pSt_ProtocolHdr->wCrypto ;
128+ st_JsonRoot[" wReserve" ] = pSt_ProtocolHdr->wReserve ;
129+
130+ MQTTProtocol_Packet_REQPublish (tszRVBuffer, &nRVLen, _X (" authorize" ), st_JsonRoot.toStyledString ().c_str (), st_JsonRoot.toStyledString ().length ());
131+ MQTTProtocol_Packet_Header (ptszMsgBuffer, pInt_MsgLen, XENGINE_RFCCOMPONENTS_MQTT_PROTOCOL_TYPE_PUBLISH, tszRVBuffer, nRVLen);
132+ }
133+ }
68134 else
69135 {
70136 Json::Value st_JsonRoot;
0 commit comments