@@ -73,6 +73,8 @@ def connect(self, timeout = DEFAULT_CELLULAR_TIMEOUT):
7373 self .logger .info ('Successfully connected to cell network' )
7474 # Disable at sockets mode since we're already establishing PPP.
7575 # This call is needed in certain modems that have limited interfaces to work with.
76+ time .sleep (2 )
77+ # give the device a little time to enumerate
7678 self .disable_at_sockets_mode ()
7779 self .__configure_routing ()
7880 self ._connection_status = CLOUD_CONNECTED
@@ -85,6 +87,7 @@ def connect(self, timeout = DEFAULT_CELLULAR_TIMEOUT):
8587
8688 def disconnect (self ):
8789 self .logger .info ('Disconnecting from cell network' )
90+ self .__remove_routing ()
8891 success = self .modem .disconnect ()
8992 if success :
9093 self .logger .info ('Successfully disconnected from cell network' )
@@ -166,13 +169,23 @@ def __reconnect_after_forced_disconnect(self):
166169 self .logger .info ('Ready to receive data on port %s' , self .__receive_port )
167170
168171 def __configure_routing (self ):
172+ # maybe we don't have to tear down the routes but we probably should
169173 self .logger .info ('Adding routes to Hologram cloud' )
170174 self ._route .add ('10.176.0.0/16' , self .localIPAddress )
171175 self ._route .add ('10.254.0.0/16' , self .localIPAddress )
172176 if self .scope == NetworkScope .SYSTEM :
173177 self .logger .info ('Adding system-wide default route to cellular interface' )
174178 self ._route .add_default (self .localIPAddress )
175179
180+ def __remove_routing (self ):
181+ self .logger .info ('Removing routes to Hologram cloud' )
182+ if self .localIPAddress :
183+ self ._route .delete ('10.176.0.0/16' , self .localIPAddress )
184+ self ._route .delete ('10.254.0.0/16' , self .localIPAddress )
185+ if self .scope == NetworkScope .SYSTEM :
186+ self .logger .info ('Removing system-wide default route to cellular interface' )
187+ self ._route .delete_default (self .localIPAddress )
188+
176189 def _load_modem_drivers (self ):
177190 dl = DriverLoader .DriverLoader ()
178191 for (modemName , modemHandler ) in self ._modemHandlers .items ():
0 commit comments