annotate src/condat/com/include/cl_user_spver.h @ 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 4bb5772a05a3
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
301
4bb5772a05a3 AT%SPVER: new command for setting custom speech version lists
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1 /*
4bb5772a05a3 AT%SPVER: new command for setting custom speech version lists
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
2 * This header file is a FreeCalypso addition; it is part of the mechanism
4bb5772a05a3 AT%SPVER: new command for setting custom speech version lists
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
3 * for setting a user-defined list of accepted speech versions in the Bearer
4bb5772a05a3 AT%SPVER: new command for setting custom speech version lists
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
4 * Capability IE for speech calls, with a user-defined order of preference,
4bb5772a05a3 AT%SPVER: new command for setting custom speech version lists
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
5 * overriding the standard SV list based on hw+fw platform capabilities
4bb5772a05a3 AT%SPVER: new command for setting custom speech version lists
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
6 * and the standard order of preference.
4bb5772a05a3 AT%SPVER: new command for setting custom speech version lists
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
7 */
4bb5772a05a3 AT%SPVER: new command for setting custom speech version lists
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
8
4bb5772a05a3 AT%SPVER: new command for setting custom speech version lists
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
9 #ifndef CL_USER_SPVER_H
4bb5772a05a3 AT%SPVER: new command for setting custom speech version lists
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
10 #define CL_USER_SPVER_H
4bb5772a05a3 AT%SPVER: new command for setting custom speech version lists
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
11
4bb5772a05a3 AT%SPVER: new command for setting custom speech version lists
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
12 /*
4bb5772a05a3 AT%SPVER: new command for setting custom speech version lists
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
13 * This function sets (establishes for use) a user-defined SV list.
4bb5772a05a3 AT%SPVER: new command for setting custom speech version lists
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
14 * The input is an array of 5 bytes, giving the list of speech versions
4bb5772a05a3 AT%SPVER: new command for setting custom speech version lists
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
15 * in the user-preferred order; if fewer than all 5 possible SVs are listed,
4bb5772a05a3 AT%SPVER: new command for setting custom speech version lists
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
16 * the remaining array elements shall be filled with 0xFF. At least FRv1
4bb5772a05a3 AT%SPVER: new command for setting custom speech version lists
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
17 * (GSM full rate speech version 1) must always be included in the list;
4bb5772a05a3 AT%SPVER: new command for setting custom speech version lists
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
18 * a corollary of this requirement is that an empty list is not a valid input.
4bb5772a05a3 AT%SPVER: new command for setting custom speech version lists
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
19 */
4bb5772a05a3 AT%SPVER: new command for setting custom speech version lists
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
20 extern UBYTE cl_user_spver_set(const UBYTE *spver_list);
4bb5772a05a3 AT%SPVER: new command for setting custom speech version lists
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
21
4bb5772a05a3 AT%SPVER: new command for setting custom speech version lists
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
22 /* cl_user_spver_set() return codes */
4bb5772a05a3 AT%SPVER: new command for setting custom speech version lists
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
23 #define CL_USER_SPVER_SET_OK 0
4bb5772a05a3 AT%SPVER: new command for setting custom speech version lists
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
24 #define CL_USER_SPVER_SET_ERROR 1
4bb5772a05a3 AT%SPVER: new command for setting custom speech version lists
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
25
4bb5772a05a3 AT%SPVER: new command for setting custom speech version lists
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
26 /*
4bb5772a05a3 AT%SPVER: new command for setting custom speech version lists
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
27 * This function resets (clears) the user-defined SV list, returning to
4bb5772a05a3 AT%SPVER: new command for setting custom speech version lists
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
28 * standard operation of accepting all speech versions supported by the
4bb5772a05a3 AT%SPVER: new command for setting custom speech version lists
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
29 * platform with the standard order of preference.
4bb5772a05a3 AT%SPVER: new command for setting custom speech version lists
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
30 */
4bb5772a05a3 AT%SPVER: new command for setting custom speech version lists
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
31 extern void cl_user_spver_reset(void);
4bb5772a05a3 AT%SPVER: new command for setting custom speech version lists
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
32
4bb5772a05a3 AT%SPVER: new command for setting custom speech version lists
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
33 /*
4bb5772a05a3 AT%SPVER: new command for setting custom speech version lists
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
34 * This function checks to see if a user-defined speech version list is set.
4bb5772a05a3 AT%SPVER: new command for setting custom speech version lists
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
35 * If no such list is set, the function returns CL_USER_SPVER_IS_NOT_SET
4bb5772a05a3 AT%SPVER: new command for setting custom speech version lists
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
36 * and leaves *spver_list and *rad_chan_req untouched. If a user-defined
4bb5772a05a3 AT%SPVER: new command for setting custom speech version lists
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
37 * SV list is set, the function returns CL_USER_SPVER_IS_SET, writes the list
4bb5772a05a3 AT%SPVER: new command for setting custom speech version lists
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
38 * into the *spver_list output array (all 5 bytes are always written,
4bb5772a05a3 AT%SPVER: new command for setting custom speech version lists
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
39 * with 0xFF padding as needed), and writes the corresponding radio channel
4bb5772a05a3 AT%SPVER: new command for setting custom speech version lists
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
40 * requirement code into *rad_chan_req.
4bb5772a05a3 AT%SPVER: new command for setting custom speech version lists
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
41 */
4bb5772a05a3 AT%SPVER: new command for setting custom speech version lists
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
42 extern UBYTE cl_user_spver_get(UBYTE *spver_list, UBYTE *rad_chan_req);
4bb5772a05a3 AT%SPVER: new command for setting custom speech version lists
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
43
4bb5772a05a3 AT%SPVER: new command for setting custom speech version lists
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
44 /* cl_user_spver_get() return codes */
4bb5772a05a3 AT%SPVER: new command for setting custom speech version lists
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
45 #define CL_USER_SPVER_IS_NOT_SET 0
4bb5772a05a3 AT%SPVER: new command for setting custom speech version lists
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
46 #define CL_USER_SPVER_IS_SET 1
4bb5772a05a3 AT%SPVER: new command for setting custom speech version lists
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
47
4bb5772a05a3 AT%SPVER: new command for setting custom speech version lists
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
48 #endif /* include guard */