3ebfc29d35
Adds the AT-command-based GPS daemon for the Quectel EC25 modem (the device has no u-blox chip and qcomgpsd's diag interface hangs on this hardware). Trimmed from broken's version: dropped cloudlog calls and the IsDaylight / ScreenDisplayMode auto-switching (those belong to the display-modes feature, port later). Used solely for system clock initialization, on-screen UI speed, and per-segment dashcam GPS metadata. Self-driving must NOT consume gpsLocation — feeding it to locationd's kalman filter screws up the math. Patch locationd to skip GPS: - locationd_thread() no longer subscribes to gpsLocation/gpsLocationExternal - handle_msg's GPS branches commented (dead code without subscription) - the "save LastGPSPosition once a minute when gpsOK" block commented (dead because gpsOK is now permanently false) Result: liveLocationKalman.gpsOK = false for all self-driving consumers (controlsd, paramsd, torqued, frogpilot_planner). They already handle that case. Other liveLocationKalman fields still publish from the camera-odometry + IMU + calibration kalman state. system/clearpilot/__init__.py added so system.clearpilot.gpsd is a valid Python module.