diff --git a/src/ntrip_client/ntrip_base.py b/src/ntrip_client/ntrip_base.py index f353018..4277977 100644 --- a/src/ntrip_client/ntrip_base.py +++ b/src/ntrip_client/ntrip_base.py @@ -46,22 +46,16 @@ def disconnect(self): raise NotImplementedError("Must override disconnect") def reconnect(self): - if self._connected: - while not self._shutdown: - self._reconnect_attempt_count += 1 - self.disconnect() - connect_success = self.connect() - if not connect_success and self._reconnect_attempt_count < self.reconnect_attempt_max: - self._logerr('Reconnect failed. Retrying in {} seconds'.format(self.reconnect_attempt_wait_seconds)) - time.sleep(self.reconnect_attempt_wait_seconds) - elif self._reconnect_attempt_count >= self.reconnect_attempt_max: - self._reconnect_attempt_count = 0 - raise Exception("Reconnect was attempted {} times, but never succeeded".format(self._reconnect_attempt_count)) - elif connect_success: - self._reconnect_attempt_count = 0 - break - else: - self._logdebug('Reconnect called while not connected, ignoring') + self.disconnect() + while not self._shutdown: + self._reconnect_attempt_count += 1 + connect_success = self.connect() + if connect_success: + self._reconnect_attempt_count = 0 + break + self._logerr('Reconnect attempt {} failed. Retrying in {} seconds'.format( + self._reconnect_attempt_count, self.reconnect_attempt_wait_seconds)) + time.sleep(self.reconnect_attempt_wait_seconds) def send_nmea(self): raise NotImplementedError("Must override send_nmea") diff --git a/src/ntrip_client/ntrip_ros_base.py b/src/ntrip_client/ntrip_ros_base.py index 9719555..604db8f 100755 --- a/src/ntrip_client/ntrip_ros_base.py +++ b/src/ntrip_client/ntrip_ros_base.py @@ -82,10 +82,16 @@ def run(self): # Setup a shutdown hook rospy.on_shutdown(self.stop) - # Connect the client - if not self._client.connect(): - rospy.logerr('Unable to connect to NTRIP server') - return 1 + # Retry initial connection indefinitely until wifi/network is available + while not rospy.is_shutdown(): + if self._client.connect(): + break + rospy.logwarn('Unable to connect to NTRIP server, retrying in {} seconds...'.format( + self._reconnect_attempt_wait_seconds)) + rospy.sleep(self._reconnect_attempt_wait_seconds) + + if rospy.is_shutdown(): + return 0 # Setup our subscriber self._nmea_sub = rospy.Subscriber('nmea', Sentence, self.subscribe_nmea, queue_size=10) @@ -173,4 +179,4 @@ def _create_rtcm_msgs_rtcm_message(self, rtcm): frame_id=self._rtcm_frame_id ), message=rtcm - ) \ No newline at end of file + )