@@ -217,28 +217,39 @@ where
217
217
T : Write ,
218
218
U : Read ,
219
219
{
220
- let mut connection = MQTTSessionSettings :: new ( "88.198.226.54" , 1883 ) ;
221
- let mqtt = Mqtt :: new ( connection) ;
222
- let mqtt_session = mqtt
223
- . create_session ( & mut modem)
224
- . map_err ( |_| AtError :: MqttFailure ) ?;
225
- let mqtt_connection = mqtt_session
226
- . connect (
227
- & MQTTConnectionSettings {
228
- mqtt_id : 0 ,
229
- version : MQTTVersion :: MQTT31 ,
230
- client_id : "0" ,
231
- keepalive_interval : 0 ,
232
- clean_session : false ,
233
- will_flag : false ,
234
- username : "marius" ,
235
- password : "Haufenhistory" ,
236
- } ,
237
- & mut modem,
238
- )
239
- . unwrap ( ) ;
220
+ let connection = MQTTSessionSettings :: new ( "88.198.226.54" , 1883 ) ;
221
+
240
222
loop {
241
223
delay. delay_ms ( 1000 ) ;
224
+ info ! ( "creating mqtt session." ) ;
225
+
226
+ let mqtt = Mqtt :: new ( & connection) ;
227
+ let mqtt_session = mqtt
228
+ . create_session ( & mut modem)
229
+ . map_err ( |_| AtError :: MqttFailure ) ;
230
+ if let Err ( e) = mqtt_session {
231
+ info ! ( "mqtt session creation failed: {:?}. Retry" , e) ;
232
+ continue ;
233
+ }
234
+ let mqtt_session = mqtt_session. unwrap ( ) ;
235
+ delay. delay_ms ( 1000 ) ;
236
+ let mqtt_connection = mqtt_session
237
+ . connect (
238
+ & MQTTConnectionSettings {
239
+ mqtt_id : 0 , // mqtt_id should be taken from session!
240
+ version : MQTTVersion :: MQTT31 ,
241
+ client_id : "nbiot" ,
242
+ keepalive_interval : 0 ,
243
+ clean_session : false ,
244
+ will_flag : false ,
245
+ username : "marius" ,
246
+ password : "Haufenhistory" ,
247
+ } ,
248
+ & mut modem,
249
+ )
250
+ . unwrap ( ) ;
251
+ delay. delay_ms ( 1000 ) ;
252
+
242
253
match mqtt_connection. publish (
243
254
& at_command:: mqtt:: MQTTMessage {
244
255
topic : "test" , // length max 128b
@@ -257,6 +268,9 @@ where
257
268
continue ;
258
269
}
259
270
} ;
271
+ delay. delay_ms ( 1000 ) ;
272
+ let mqtt = mqtt_connection. disconnect ( & mut modem) . unwrap ( ) ;
273
+ delay. delay_ms ( 10000 ) ;
260
274
}
261
275
262
276
// connected_mqtt.
0 commit comments