# Copyright 1999-2024 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

EAPI=8

inherit edo linux-info optfeature

DESCRIPTION="Firmware and configuration instructions for Alcatel SpeedTouch USB modems"
HOMEPAGE="http://www.speedtouch.com/"
SRC_URI="http://www.speedtouch.com/download/drivers/USB/SpeedTouch330_firmware_${PV//./}.zip"
S=${WORKDIR}

# Taken from http://www.speedtouch.com/driver_upgrade_lx_3.0.1.2.htm
LICENSE="SpeedTouch-USB-Firmware"
SLOT="0"
KEYWORDS="~amd64 x86"

RDEPEND="net-dialup/ppp"
BDEPEND="app-arch/unzip"

pkg_pretend() {
	if [[ ${MERGE_TYPE} != buildonly ]]; then
		local CONFIG_CHECK="~FW_LOADER ~NET ~PACKET ~ATM ~NETDEVICES ~USB_DEVICEFS ~USB_ATM ~USB_SPEEDTOUCH \
			~PPP ~PPPOATM ~PPPOE ~ATM_BR2684"
		local WARNING_PPPOATM="CONFIG_PPPOATM:\t is not set (required for PPPoA links)"
		local WARNING_PPPOE="CONFIG_PPPOE:\t is not set (required for PPPoE links)"
		local WARNING_ATM_BR2684="CONFIG_ATM_BR2684:\t is not set (required for PPPoE links)"
		check_extra_config
	fi
}

src_compile() {
	local VER=$(ver_rs 2-4 '')  # {major_ver}.{minor_digits}

	# Extract the "stage 1" portion of the firmware
	edob -m "Extraction of stage 1 firmware (step 1)" \
		dd if=KQD6_${VER} of="${T}/speedtch-1.bin.2" ibs=1 obs=991 count=991 skip=36
	edob -m "Extraction of stage 1 firmware (step 2)" \
		dd if=ZZZL_${VER} of="${T}/speedtch-1.bin.4" ibs=1 obs=935 count=935 skip=32

	# Extract the "stage 2" portion of the firmware
	edob -m "Extraction of stage 2 firmware (step 1)" \
		dd if=KQD6_${VER} of="${T}/speedtch-2.bin.2" ibs=1 obs=762650 count=762650 skip=1027
	edob -m "Extraction of stage 2 firmware (step 2)" \
		dd if=ZZZL_${VER} of="${T}/speedtch-2.bin.4" ibs=1 obs=775545 count=775545 skip=967
}

src_install() {
	# Copy to the firmware directory
	insinto /lib/firmware
	insopts -m 600
	doins "${T}"/speedtch-{1,2}.bin.{2,4}

	# Symlinks for other revisions of the modem
	for n in 1 2 ; do
		dosym speedtch-${n}.bin.2 /lib/firmware/speedtch-${n}.bin.0
		dosym speedtch-${n}.bin.2 /lib/firmware/speedtch-${n}.bin.1
		# Seems like a reasonable guess, for revision 3
		dosym speedtch-${n}.bin.4 /lib/firmware/speedtch-${n}.bin.3
	done

	# Documentation necessary to complete the setup
	dodoc "${FILESDIR}/README"
}

pkg_postinst() {
	[[ -e /etc/hotplug/usb.usermap ]] && grep -E -q " 0x06[bB]9 +0x4061 " /etc/hotplug/usb.usermap && \
		ewarn "Please remove the SpeedTouch line from /etc/hotplug/usb.usermap"

	optfeature "connecting via PPPoA protocol" "net-dialup/ppp[atm]"
	optfeature "connecting via PPPoE protocol" "net-dialup/linux-atm"

	ewarn "To complete the installation, you must read the documentation in"
	ewarn "   ${ROOT}/usr/share/doc/${PF}"
}