Commit graph

12 commits

Author SHA1 Message Date
David Raeman
e57d22d525 mpm: speed up reading gps mboard sensors
This commit uses a more performant buffered I/O approach for reading the
gpsd socket. Previously, querying a gps mboard sensor on an mpm radio
would take 300-500ms due to the loop reading one byte at a time.
2022-03-23 16:19:04 -05:00
Martin Braun
d7ba6ae7c2 mpm: gpsd_iface: Make GPGGA generation more robust
The GPGGA string generation relies on TPV and SKY messages being
accurate, meaning they are a list of dictionaries. There have been cases
where this was inaccurate (an empty list was returned). MPM would show
errors as such:

[ERROR] [MPM.RPCServer] Uncaught exception in method get_mb_sensor :list
index out of range
 Traceback (most recent call last):
   File "/usr/lib/python3.7/site-packages/usrp_mpm/rpc_server.py", line
   184, in new_claimed_function
       return function(*args)
         File
	 "/usr/lib/python3.7/site-packages/usrp_mpm/periph_manager/base.py",
	 line 1000, in get_mb_sensor
	     self, self.mboard_sensor_callback_map.get(sensor_name)
	       File
	       "/usr/lib/python3.7/site-packages/usrp_mpm/gpsd_iface.py",
	       line 313, in get_gps_gpgga_sensor
	           tpv_sensor_data = gps_info.get('tpv', [{}])[0]
		   IndexError: list index out of range

This is a patch to check that the lists are not empty before directly
referencing index 0 therein.
2021-06-03 09:35:09 -05:00
Martin Braun
ff8b50e1b3 mpm: gpsd_iface: Refactor class
- There's a lengthy conversion of TPV/SKY dicts into GPGGA which is
  removed from the class to enhance readability
- The file had some Pylint issues, including a Python2-ism
2021-05-24 13:59:40 -05:00
Martin Braun
9ede696528 mpm: e310: Enable GPS sensors
The GPS sensors are pulled in via gpsd_iface.
2019-11-26 12:21:34 -08:00
Martin Braun
3b161d6f49 mpm: gpsd_iface: Sanitize return values for get_gps_info()
get_gps_info() can time out, or fail for other reasons. This adds some
checks to see if the return value is as expected.
2019-11-21 15:02:39 -08:00
Toni Jones
f63c089a34 mpm: Add gpgga sensor function to GPSd iface
Add method to generate GPGGA sensor data in MPM devices. This needs to
be constructed from TPV and SKY sensor data, and matches the GPGGA
sensor functionality in gpsd_iface.cpp.
2019-01-03 18:54:43 -08:00
Trung Tran
15051a3703 mpm:gpsd_iface: handle errors from gpsd
gpsd connection is not reliable.
Adding more error handling to re-connect during polling.
Add control flows to get_gps_time in order to give an effect of getting
the value on pps edge.
2018-11-13 17:12:38 -08:00
Brent Stapleton
6eaf521d2b mpm: n3xx: Factor out GPSd Iface functions
- Refactoring GPSd interface to be instead wrapped by a
GPSDIfaceExtension class. This class will faciliate "extending" an
object, allowing that object to call the GPSDIfaceExtension methods as
their own.
- New MPM devices (or whatever else) can now use the GPSDIfaceExtension
class instead of writing their own GPSDIface handling functions.
- N3XX now instantiates a GPSDIfaceExtension object, and extends
itself. This means that an n3xx object can call the `get_gps_time`
method as its own, for example.
- N3XX must get through initialization in order for the GPSd methods
to be registered.
2018-07-06 15:00:20 -07:00
Martin Braun
e9288a439c mpm: Update all license headers
- Fix typo in company name (missing 'a')
- Updated SPDX license identifier to version 3.0
2018-02-19 16:55:08 -08:00
Brent Stapleton
536ea85497 fixup! mpm: adding GPS sensor functions 2018-01-11 14:56:14 -08:00
Martin Braun
8815098747 mpm: Harmonize all license header
Now uses SPDX headers everywhere.
2017-12-22 15:05:58 -08:00
Brent Stapleton
cb6d78d9e8 mpm: adding GPS sensor functions
Adding GPS TPV and SKY sensors to MPM, and their respective getters.

Reviewed-By: Martin Braun <martin.braun@ettus.com>
2017-12-22 15:05:58 -08:00