6464MQTT_SUB = b'\x82 '
6565MQTT_UNSUB = b'\xA2 '
6666MQTT_PUB = bytearray (b'\x30 \0 ' )
67- MQTT_CON = bytearray (b"\x10 \x00 \x00 \x00 " )
6867# Variable CONNECT header [MQTT 3.1.2]
69- MQTT_CON_HEADER = bytearray (b"\x04 MQTT\x04 \x02 \0 \0 " )
68+ MQTT_VAR_HEADER = bytearray (b"\x04 MQTT\x04 \x02 \0 \0 " )
7069MQTT_DISCONNECT = b'\xe0 \0 '
7170
7271CONNACK_ERRORS = {const (0x01 ) : 'Connection Refused - Incorrect Protocol Version' ,
@@ -238,22 +237,16 @@ def connect(self, clean_session=True):
238237 self ._sock .connect (addr , TCP_MODE )
239238 except RuntimeError as e :
240239 raise MMQTTException ("Invalid broker address defined." , e )
241-
242- # Google core IOT Premsg
243- #fixed_header = bytearray(b"\x10\x00\x00\x00")
244- # Adafruit IO
245- #fixed_header = bytearray(b'\x10\x00\x00')
246240
247241 # Fixed Header
248242 fixed_header = bytearray ()
249243 fixed_header .append (0x10 )
250244
251245 # Variable Header
252- var_header = MQTT_CON_HEADER
246+ var_header = MQTT_VAR_HEADER
253247 var_header [6 ] = clean_session << 1
254-
255-
256- # 12 + (protocol information, we're not supporting MQTTv311..)
248+
249+ # Set up variable header and remaining_length
257250 remaining_length = 12 + len (self ._client_id )
258251 if self ._user is not None :
259252 remaining_length += 2 + len (self ._user ) + 2 + len (self ._pass )
@@ -266,65 +259,30 @@ def connect(self, clean_session=True):
266259 remaining_length += 2 + len (self ._lw_topic ) + 2 + len (self ._lw_msg )
267260 var_header [6 ] |= 0x4 | (self ._lw_qos & 0x1 ) << 3 | (self ._lw_qos & 0x2 ) << 3
268261 var_header [6 ] |= self ._lw_retain << 5
269-
270262
271- # Remaining length
272- i = 1
273- test_byte = 0
263+ # Remaining length calculation
264+ large_rel_length = False
274265 if remaining_length > 0x7f :
266+ large_rel_length = True
275267 # Calculate Remaining Length [2.2.3]
276- remaining_bytes = bytearray ()
277268 while remaining_length > 0 :
278- test_byte = 1
279269 encoded_byte = remaining_length % 0x80
280270 remaining_length = remaining_length // 0x80
281271 # if there is more data to encode, set the top bit of the byte
282272 if remaining_length > 0 :
283273 encoded_byte |= 0x80
284- print ('enc byte: ' , encoded_byte )
285- remaining_bytes .append (encoded_byte )
286274 fixed_header .append (encoded_byte )
287- print ('_prl: packet' , fixed_header )
288- print ('prl, rel.length: ' , remaining_length )
289- print ('prl, byte: ' , encoded_byte )
290- i += 1
291- if test_byte :
275+ if large_rel_length :
292276 fixed_header .append (0x00 )
293277 else :
294- print (fixed_header )
295- print (remaining_length )
296- fixed_header .append (remaining_length )
297- fixed_header .append (0x00 )
298-
299-
300- """
301- # Old, non-working MMQT/UMQTT IMPL
302- i = 1
303- print(remaining_length)
304- while remaining_length > 0x7f:
305- print("with variable header...")
306- fixed_header[i] = (remaining_length & 0x7f) | 0x80
307- remaining_length >>= 7
308- i += 1
309- print("i: ", i)
310- fixed_header[i] = remaining_length
311- print(fixed_header)
312- print(remaining_length)
313- """
278+ fixed_header .append (remaining_length + 0x00 )
314279
315280 if self ._logger is not None :
316- self ._logger .debug ('Sending CONNECT packet to broker' )
317- print ("---fixed_header----" )
318- print ("rel len: " , remaining_length )
319- print (fixed_header )
281+ self ._logger .debug ('Sending CONNECT to broker' )
282+ self ._logger .debug ('Fixed Header: {}\n Variable Header: {}' .format (fixed_header ,
283+ var_header ))
320284 self ._sock .write (fixed_header )
321- #print("remaining len: ", fixed_header[i])
322- print ("---var_header----" )
323- print (var_header )
324285 self ._sock .write (var_header )
325- print ("Keepalive Bytes:" )
326- print (hex (var_header [7 ]))
327- print (hex (var_header [8 ]))
328286 # [MQTT-3.1.3-4]
329287 self ._send_str (self ._client_id )
330288 if self ._lw_topic :
@@ -765,4 +723,4 @@ def set_logger_level(self, log_level):
765723 elif log_level == 'ERROR' :
766724 self ._logger .setLevel (logging .CRITICIAL )
767725 else :
768- raise MMQTTException ('Incorrect logging level provided!' )
726+ raise MMQTTException ('Incorrect logging level provided!' )
0 commit comments