EM7565 band numbers are off by one in "Get LTE Cphy CA Info"

Just got an EM7565. So now I can reproduce this using the GobiNet driver (version S2.30N2.48) and the QMI SDK (version SLQS04.00.11). And as expected, the result is stil the same: The firmware is off-by-one in the band values returned by SLQSNASGetLTECPHYCaInfo().

For simplest possible testing, I just added this function to the Connection_Manager sample app:

static void CAtest()
{
	nasGetLTECphyCa ca;
	PhyCaAggPcellInfo *p;
	ULONG   res;

	res = SLQSNASGetLTECPHYCaInfo(&ca);
	p = &ca.sPhyCaAggPcellInfo;

	if( eQCWWAN_ERR_NONE == res )
	{
		fprintf(stderr, "pci=%d, freq=%d, dl_bw_value=%d, iLTEbandValue=%d, TlvPresent=%d\n",
			p->pci, p->freq, p->dl_bw_value, p->iLTEbandValue, p->TlvPresent);
	}
}

Example outout from the EM7565 is:

pci=261, freq=3050, dl_bw_value=5, iLTEbandValue=127, TlvPresent=1

and according to the SDK docs, the band values are coded as:

..
126 - LTE E-UTRA Operating Band 7
127 - LTE E-UTRA Operating Band 8
128 - LTE E-UTRA Operating Band 9
..

so the result from the firmware is obviously bogus. Channel 3050 is corect, but this channel is in band 7.

Tor some reason, the AT commands still report correct values:

at!gstatus?
!GSTATUS: 
Current Time:  6542             Temperature: 28
Reset Counter: 1                Mode:        ONLINE         
System mode:   LTE              PS state:    Attached     
LTE band:      B7               LTE bw:      20 MHz  
LTE Rx chan:   3050             LTE Tx chan: 21050
LTE SSC1 state:INACTIVE         LTE SSC1 band: B3     
LTE SSC1 bw  : Unknown          LTE SSC1 chan: 1450
LTE SSC2 state:NOT ASSIGNED
LTE SSC3 state:NOT ASSIGNED
LTE SSC4 state:NOT ASSIGNED
EMM state:     Registered       Normal Service 
RRC state:     RRC Connected  
IMS reg state: No Srv  

PCC RxM RSSI:  -63              PCC RxM RSRP:  -90
PCC RxD RSSI:  -64              PCC RxD RSRP:  -90
SCC1 RxM RSSI: -86              SCC1 RxM RSRP: -122
SCC1 RxD RSSI: -80              SCC1 RxD RSRP: -115
Tx Power:      --               TAC:         78bf (30911)
RSRQ (dB):     -6.5             Cell ID:     01058802 (17139714)
SINR (dB):     23.2


OK
at!lteinfo?
!LTEINFO: 
Serving:   EARFCN MCC MNC   TAC      CID Bd D U SNR PCI  RSRQ   RSRP   RSSI RXLV
             3050 242  01 30911 01058802  7 5 5  16 261  -6.6  -91.1  -64.4 --

IntraFreq:                                          PCI  RSRQ   RSRP   RSSI RXLV
                                                    261  -6.6  -91.1  -64.4 --

InterFreq: EARFCN ThresholdLow ThresholdHi Priority PCI  RSRQ   RSRP   RSSI RXLV
             1450            0           0        0   0   0.0    0.0    0.0   0
             1450            0           0        0   0   0.0    0.0    0.0   0
             1450            0           0        0   0   0.0    0.0    0.0   0
             1450            0           0        0   0   0.0    0.0    0.0   0
             1450            0           0        0   0   0.0    0.0    0.0   0
             1450            0           0        0   0   0.0    0.0    0.0   0
             1450            0           0        0   0   0.0    0.0    0.0   0

GSM:       ThreshL ThreshH Prio NCC ARFCN 1900 valid BSIC RSSI RXLV

WCDMA:     UARFCN ThreshL ThreshH Prio PSC   RSCP  ECN0 RXLV

CDMA 1x:   Chan BC Offset Phase Str

CDMA HRPD: Chan BC Offset Phase Str


OK
ati
Manufacturer: Sierra Wireless, Incorporated
Model: EM7565
Revision: SWI9X50C_01.00.02.00 6ff48a jenkins 2017/09/29 05:54:26
MEID: 359260080xxxxx
IMEI: 359260080xxxxx5
IMEI SV:  2
FSN: UF7424865xxxxx
+GCAP: +CGSM


OK

BTW, there is an error in the docs of the PhyCaAggPcellInfo struct in the SDK: It doesn’t document the iLTEbandValue field, but instead docuemnts a ‘scell_state’ field which does not exist in this struct. Obvious copy-and-paste error when coyping the PhyCaAggScellInfo struct docs…