Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions src/main/io/gps.c
Original file line number Diff line number Diff line change
Expand Up @@ -547,6 +547,13 @@ bool gpsUpdate(void)
}
#endif

// Driver-based providers (MSP, FAKE) never open a serial port; gpsPort stays NULL.
// If gps_provider is changed via CLI to a serial-based provider without rebooting,
// the serial handler would dereference NULL on the next tick and hard-fault.
if (!gpsProviders[gpsState.gpsConfig->provider].isDriverBased && !gpsState.gpsPort) {
return false;
}

switch (gpsState.state) {
default:
case GPS_INITIALIZING:
Expand Down Expand Up @@ -597,6 +604,10 @@ bool gpsUpdate(void)

void gpsEnablePassthrough(serialPort_t *gpsPassthroughPort)
{
if (!gpsState.gpsPort) {
return;
}

waitForSerialPortToFinishTransmitting(gpsState.gpsPort);
waitForSerialPortToFinishTransmitting(gpsPassthroughPort);

Expand Down
3 changes: 3 additions & 0 deletions src/test/unit/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,9 @@ set_property(SOURCE osd_unittest.cc PROPERTY definitions OSD_UNIT_TEST USE_MSP_D
set_property(SOURCE gps_ublox_unittest.cc PROPERTY depends "io/gps_ublox_utils.c")
set_property(SOURCE gps_ublox_unittest.cc PROPERTY definitions GPS_UBLOX_UNIT_TEST)

set_property(SOURCE gps_null_port_unittest.cc PROPERTY depends "io/gps.c")
set_property(SOURCE gps_null_port_unittest.cc PROPERTY definitions GPS_NULL_PORT_UNIT_TEST USE_GPS_PROTO_UBLOX)

set_property(SOURCE gimbal_serial_unittest.cc PROPERTY depends "io/gimbal_serial.c" "drivers/gimbal_common.c" "common/maths.c" "drivers/headtracker_common.c")
set_property(SOURCE gimbal_serial_unittest.cc PROPERTY definitions USE_SERIAL_GIMBAL GIMBAL_UNIT_TEST USE_HEADTRACKER)

Expand Down
Loading
Loading