# Copyright 2023 Google LLC
# SPDX-License-Identifier: Apache-2.0

config GNSS_NMEA_GENERIC
	bool "Generic GNSS NMEA device"
	default y
	depends on GNSS
	depends on DT_HAS_GNSS_NMEA_GENERIC_ENABLED
	select MODEM_MODULES
	select MODEM_BACKEND_UART
	select MODEM_CHAT
	select GNSS_PARSE
	select GNSS_NMEA0183
	select GNSS_NMEA0183_MATCH
	help
	  Generic NMEA based GNSS device.

if GNSS_NMEA_GENERIC

config GNSS_NMEA_GENERIC_SATELLITES_COUNT
	int "Maximum satellite count"
	depends on GNSS_SATELLITES
	default 24
	help
	  Maximum number of satellite that the driver that can be decoded from
	  the GNSS device. This does not affect the number of devices that the
	  device is actually tracking, just how many of those can be reported
	  in the satellites callback.

endif
