view scripts/config-headers.sh @ 303:f76436d19a7a default tip

!GPRS config: fix long-standing AT+COPS chance hanging bug There has been a long-standing bug in FreeCalypso going back years: sometimes in the AT command bring-up sequence of an ACI-only MS, the AT+COPS command would produce only a power scan followed by cessation of protocol stack activity (only L1 ADC traces), instead of the expected network search sequence. This behaviour was seen in different FC firmware versions going back to Citrine, and seemed to follow some law of chance, not reliably repeatable. This bug has been tracked down and found to be specific to !GPRS configuration, stemming from our TCS2/TCS3 hybrid and reconstruction of !GPRS support that was bitrotten in TCS3.2/LoCosto version. ACI module psa_mms.c, needed only for !GPRS, was missing in the TCS3 version and had to be pulled from TCS2 - but as it turns out, there is a new field in the MMR_REG_REQ primitive that needs to be set correctly, and that psa_mms.c module is the place where this initialization needed to be added.
author Mychaela Falconia <falcon@freecalypso.org>
date Thu, 08 Jun 2023 08:23:37 +0000
parents 8dfdf88d632f
children
line wrap: on
line source

#!/bin/sh

if [ -z "$TARGET" ]
then
	echo "Error: TARGET= must be passed via environment" 1>&2
	exit 1
fi

if [ -z "$BUILD_DIR" ]
then
	echo "Error: BUILD_DIR= must be passed via environment" 1>&2
	exit 1
fi

# The following vars will already be set when this script is invoked
# from configure.sh in a production build, but the following defaulting logic
# helps with manual invokation during development.

if [ -z "$CHIPSET" ]
then
	CHIPSET=10
fi
export CHIPSET

if [ -z "$DSP" ]
then
	DSP=36
fi
export DSP

if [ -z "$RF" ]
then
	RF=12
fi
export RF

if [ -z "$AMR" ]
then
	AMR=1
fi
export AMR

if [ -z "$L1_DYN_DSP_DWNLD" ]
then
	L1_DYN_DSP_DWNLD=1
fi
export L1_DYN_DSP_DWNLD

if [ -z "$L1_VOICE_MEMO_AMR" ]
then
	L1_VOICE_MEMO_AMR=1
fi
export L1_VOICE_MEMO_AMR

if [ -z "$MELODY_E2" ]
then
	MELODY_E2=1
fi
export MELODY_E2

if [ -z "$SPEECH_RECO" ]
then
	SPEECH_RECO=1
fi
export SPEECH_RECO

if [ -z "$GPRS" ]
then
	GPRS=1
fi
export GPRS

if [ -z "$SRVC" ]
then
	SRVC=1
fi
export SRVC

if [ -z "$ATP_STATE" ]
then
	ATP_STATE=0
fi
export ATP_STATE

if [ -z "$BUZM_STATE" ]
then
	BUZM_STATE=1
fi
export BUZM_STATE

if [ -z "$FCHG_STATE" ]
then
	FCHG_STATE=1
fi
export FCHG_STATE

if [ -z "$LCC_STATE" ]
then
	LCC_STATE=0
fi
export LCC_STATE

if [ -z "$MKS_STATE" ]
then
	MKS_STATE=0
fi
export MKS_STATE

if [ -z "$PWR_STATE" ]
then
	PWR_STATE=0
fi
export PWR_STATE

if [ -z "$R2D_STATE" ]
then
	R2D_STATE=1
fi
export R2D_STATE

if [ -z "$VIBR_STATE" ]
then
	VIBR_STATE=1
fi
export VIBR_STATE

if [ -z "$R2D_EMBEDDED_LCD" ]
then
	R2D_EMBEDDED_LCD=7
fi
export R2D_EMBEDDED_LCD

if [ -z "$TI_PROFILER" ]
then
	TI_PROFILER=0
fi
export TI_PROFILER

if [ -z "$TR_BAUD_CONFIG" ]
then
	TR_BAUD_CONFIG=TR_BAUD_115200
fi
export TR_BAUD_CONFIG

# FCBM_STATE is a derived setting from $MMI in normal configure.sh operation,
# and it also defaults to 0 (disabled) for manual invokation.

if [ "$MMI" = 2 ]
then
	FCBM_STATE=1
else
	FCBM_STATE=0
fi
export FCBM_STATE

# Derived settings only for the generation of *.cfg headers

case "$RF" in
	10)
		RF_FAM=10
		RF_PA=0
		RF_PG=0
		;;
	12)
		RF_FAM=12
		RF_PA=2
		RF_PG=2
		;;
	*)
		echo "Error: RF=$RF setting not understood" 1>&2
		exit 1
esac
export RF_FAM RF_PA RF_PG

case "$GPRS" in
	0)
		L1_GPRS=0
		PMODE=1
		;;
	1)
		L1_GPRS=1
		PMODE=2
		;;
	*)
		echo "Error: GPRS=$GPRS setting not understood" 1>&2
		exit 1
esac
export L1_GPRS PMODE

if [ "$SRVC" != 0 ]
then
	IDS=1
else
	IDS=0
fi
export IDS

# do it!

set -e

rm -rf $BUILD_DIR/config
mkdir $BUILD_DIR/config
helpers/cfg-hdr-gen scripts/cfg-template $BUILD_DIR/config
scripts/make-rv-swe-hdr.sh > $BUILD_DIR/config/rv_swe.h
cp targets/$TARGET.h $BUILD_DIR/config/fc-target.h