# Copyright 2023-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2 or later

# WWAN Linux support for Fibocom FM350 5G and Fibocom L860R+ LTE modems
#
# https://download.lenovo.com/pccbbs/mobiles_pdf/wwan-enablement-on-Linux.pdf
# https://pcsupport.lenovo.com/us/en/downloads/ds563599-fibocom-wireless-wan-l860-gl-16-fcc-unlock-and-sar-config-tool-for-linux-thinkpad

EAPI=8


inherit systemd

DESCRIPTION="FCC unlock for Fibocom L860R+ LTE and Fibocom FM350 5G modem"
HOMEPAGE="https://download.lenovo.com/pccbbs/mobiles_pdf/wwan-enablement-on-Linux.pdf"

ZIP_VER=04
INNER_VER=2.1

if [[ ${PV} == *9999 ]] ; then
	SRC_URI=""
	KEYWORDS=""
else
	SRC_URI="https://download.lenovo.com/pccbbs/mobiles/n3xwp${ZIP_VER}w.zip -> ${P}.zip"
	KEYWORDS="~amd64 ~x86"
fi


LICENSE="Lenovo-COE-30002-01"
SLOT="0"
IUSE=""
REQUIRED_USE=""

RDEPEND="net-misc/modemmanager[mbim]"
DEPEND="${RDEPEND}"

S="${WORKDIR}/lenovo-wwan-unlock"

src_unpack() {
	# the outer lenovo zip file
	unpack ${A}
	# the actual fccunlock_package file
	unpack ${WORKDIR}/lenovo-wwan-unlock_ver${INNER_VER}.tar.gz

	cd $S
	unpack $S/fcc-unlock.d.tar.gz
	unpack $S/sar_config_files.tar.gz
}

src_configure() {
	# fix location of executables
	sed -ri 's|^./opt/fcc_lenovo|/opt/fcc_lenovo|g' fcc-unlock.d/*
}

src_install() {
	dolib.so libmodemauth.so
	dolib.so libconfigserviceR+.so
	dolib.so libconfigservice350.so
	dolib.so libmbimtools.so

	exeinto /opt/fcc_lenovo
	doexe DPR_Fcc_unlock_service

	insinto /opt/fcc_lenovo
	doins -r sar_config_files/

	# apparently the "configservice" is not needed?
	#systemd_dounit lenovo-cfgservice.service
	#doexe configservice_lenovo

	exeinto /usr/share/ModemManager/fcc-unlock.available.d
	pushd fcc-unlock.d
		chmod +x *
		doexe *
	popd

}

pkg_postinst() {
	einfo "To use your Lenovo WWAN modem:"
	einfo "Don't forget to link your modem's id (lspci) from"
	einfo "/usr/share/ModemManager/fcc-unlock.available.d/... to"
	einfo "/etc/ModemManager/fcc-unlock.d/..."
	einfo "see: https://modemmanager.org/docs/modemmanager/fcc-unlock/"
}