FreeCalypso > hg > fc-magnetite
view src/cs/layer1/tm_include/l1tm_msgty.h @ 636:57e67ca2e1cb
pcmdata.c: default +CGMI to "FreeCalypso" and +CGMM to model
The present change has no effect whatsoever on Falconia-made and Openmoko-made
devices on which /pcm/CGMI and /pcm/CGMM files have been programmed in FFS
with sensible ID strings by the respective factories, but what should AT+CGMI
and AT+CGMM queries return when the device is a Huawei GTM900 or Tango modem
that has been converted to FreeCalypso with a firmware change? Before the
present change they would return compiled-in defaults of "<manufacturer>" and
"<model>", respectively; with the present change the firmware will self-identify
as "FreeCalypso GTM900-FC" or "FreeCalypso Tango" on the two respective targets.
This firmware identification will become important if someone incorporates an
FC-converted GTM900 or Tango modem into a ZeroPhone-style smartphone where some
high-level software like ofono will be talking to the modem and will need to
properly identify this modem as FreeCalypso, as opposed to some other AT command
modem flavor with different quirks.
In technical terms, the compiled-in default for the AT+CGMI query (which will
always be overridden by the /pcm/CGMI file in FFS if one is present) is now
"FreeCalypso" in all configs on all targets; the compiled-in default for the
AT+CGMM query (likewise always overridden by /pcm/CGMM if present) is
"GTM900-FC" if CONFIG_TARGET_GTM900 or "Tango" if CONFIG_TARGET_TANGO or the
original default of "<model>" otherwise.
| author | Mychaela Falconia <falcon@freecalypso.org> |
|---|---|
| date | Sun, 19 Jan 2020 20:14:58 +0000 |
| parents | 945cf7f506b2 |
| children |
line wrap: on
line source
/************* Revision Controle System Header ************* * GSM Layer 1 software * L1TM_MSGTY.H * * Filename l1tm_msgty.h * Copyright 2003 (C) Texas Instruments * ************* Revision Controle System Header *************/ /***********************************************************************/ /* TESTMODE 3.X */ /***********************************************************************/ typedef struct { UWORD8 cid; UWORD8 str_len_in_bytes; // all primitive types should be a unique struct within // the union u. union { struct { WORD16 index; UWORD16 value; } tm_params; struct { WORD8 index; UWORD8 table[TM_PAYLOAD_UPLINK_SIZE_MAX]; } tm_table; struct { UWORD32 address; UWORD8 table[TM_PAYLOAD_UPLINK_SIZE_MAX]; } mem_write; struct { UWORD32 src; UWORD32 length; } mem_read; struct { UWORD8 packet[128]; } ffs; } u; } T_TESTMODE_PRIM; typedef struct { UWORD32 arfcn; UWORD32 number_of_measurements; UWORD8 place_of_measurement; UWORD32 num_loop; UWORD32 agc; } T_TMODE_PM_REQ; typedef struct { UWORD16 power_array_size; T_POWER_ARRAY power_array[1]; } T_TMODE_RXLEV_REQ; typedef struct { UWORD32 dummy; } T_TMODE_FB0_REQ; typedef struct { UWORD32 dummy; } T_TMODE_FB1_REQ; typedef struct { UWORD32 dummy; } T_TMODE_SB_REQ; typedef struct { UWORD32 dummy; } T_TMODE_FB_SB_REQ; typedef struct { BOOL fb_flag; //TRUE if FB found, otherwise FALSE WORD8 ntdma; //tdma between window start and beginning of FB (0..23) UWORD8 neigh_id; UWORD32 pm_fullres; UWORD32 toa; WORD16 angle; UWORD32 snr; } T_TMODE_FB_CON; typedef struct { UWORD16 radio_freq; BOOL sb_flag; UWORD32 fn_offset; UWORD32 time_alignmt; UWORD8 bsic; UWORD8 neigh_id; UWORD8 attempt; UWORD32 pm_fullres; UWORD32 toa; WORD16 angle; UWORD32 snr; } T_TMODE_NCELL_SYNC_IND; typedef struct { UWORD32 fn_offset; UWORD32 time_alignmt; UWORD8 bsic; } T_TMODE_NEW_SCELL_REQ; typedef struct { UWORD16 radio_freq; UWORD8 l2_channel; BOOL error_flag; T_RADIO_FRAME l2_frame; UWORD8 tc; UWORD32 fn; UWORD8 neigh_id; } T_TMODE_BCCHS_CON; typedef struct { UWORD32 dummy; } T_TMODE_STOP_SCELL_BCCH_REQ; typedef struct { UWORD32 dummy; } T_TMODE_SCELL_NBCCH_REQ; typedef struct { UWORD32 fn; UWORD8 channel_request; } T_TMODE_RA_DONE; typedef struct { UWORD32 dummy; } T_TMODE_RA_START; typedef struct { #if (CODE_VERSION == SIMULATION) UWORD8 ul_dl; #else UWORD32 dummy; #endif } T_TMODE_IMMED_ASSIGN_REQ; typedef struct { UWORD8 A[22+1]; } T_TMODE_RADIO_FRAME; typedef struct { UWORD16 radio_freq; UWORD8 l2_channel; UWORD8 error_cause; T_TMODE_RADIO_FRAME l2_frame; UWORD8 bsic; UWORD8 tc; } T_TMODE_SACCH_INFO; typedef struct { UWORD32 pm_fullres; UWORD32 snr; UWORD32 toa; WORD16 angle; UWORD32 qual_nbr_meas_full; // Fullset: nbr meas. of rxqual. UWORD32 qual_full; // Fullset: rxqual meas. } T_TMODE_TCH_INFO; typedef struct { UWORD32 none; } T_TMODE_STOP_RX_TX; #if L1_GPRS typedef struct { #if (CODE_VERSION == SIMULATION) UWORD8 multislot_class; UWORD8 dl_ts_alloc; UWORD8 ul_ts_alloc; UWORD8 ul_alloc_length; BOOL mon_enable; BOOL pm_enable; #else UWORD32 dummy; #endif } T_TMODE_PDTCH_ASSIGN_REQ; typedef struct { UWORD32 pm_fullres; UWORD32 snr; UWORD32 toa; WORD16 angle; BOOL crc_error_tbl[8]; } T_TMODE_PDTCH_INFO; #endif /**************** ENUMs ***********************/ // TestMode Error Codes enum { E_OK = 0, // Function completed successfully. E_FINISHED = 1, // Previously started operation has finished. E_TESTMODE = 2, // Function not legal in this GGT test mode. E_BADINDEX = 3, // The index is undefined. E_INVAL = 4, // Invalid Argument (out of range or other). E_BADSIZE = 7, // Some table or list parameter was wrong in size E_AGAIN = 8, // Not ready, try again later. E_NOSYS = 9, // Function not implemented. E_NOSUBSYS = 10, // Sub-Function not implemented. E_BADCID = 14, // Invalid CID. E_CHECKSUM = 15, // Checksum Error. E_PACKET = 16, // Packet format is bad (wrong number of arguments). E_FORWARD = 31 // Command parsed successfully, but further processing necessary }; // CID's enum { TM_INIT = 0x20, TM_MODE_SET = 0x21, VERSION_GET = 0x22, RF_ENABLE = 0x23, STATS_READ = 0x24, STATS_CONFIG_WRITE = 0x25, STATS_CONFIG_READ = 0x26, RF_PARAM_WRITE = 0x30, RF_PARAM_READ = 0x31, RF_TABLE_WRITE = 0x32, RF_TABLE_READ = 0x33, RX_PARAM_WRITE = 0x34, RX_PARAM_READ = 0x35, TX_PARAM_WRITE = 0x36, TX_PARAM_READ = 0x37, TX_TEMPLATE_WRITE = 0x38, TX_TEMPLATE_READ = 0x39, MEM_WRITE = 0x40, MEM_READ = 0x41, CODEC_WRITE = 0x42, CODEC_READ = 0x43, MISC_PARAM_WRITE = 0x44, MISC_PARAM_READ = 0x45, MISC_TABLE_WRITE = 0x46, MISC_TABLE_READ = 0x47, MISC_ENABLE = 0x48, SPECIAL_PARAM_WRITE = 0x50, SPECIAL_PARAM_READ = 0x51, SPECIAL_TABLE_WRITE = 0x52, SPECIAL_TABLE_READ = 0x53, SPECIAL_ENABLE = 0x54, #if (CODE_VERSION != SIMULATION) TPU_TABLE_WRITE = 0x55, TPU_TABLE_READ = 0x56, #endif TM_FFS = 0x70 }; // TestMode function enum's enum RF_PARAM { BCCH_ARFCN = 1, TCH_ARFCN = 2, MON_ARFCN = 3, #if L1_GPRS PDTCH_ARFCN = 4, #endif STD_BAND_FLAG = 7, AFC_ENA_FLAG = 8, AFC_DAC_VALUE = 9, INITIAL_AFC_DAC = 10 #if L1_GPRS ,MULTISLOT_CLASS = 20 #endif }; enum RF_TABLE { RX_AGC_TABLE = 8, AFC_PARAMS = 9, RX_AGC_GLOBAL_PARAMS = 12, RX_IL_2_AGC_MAX = 13, RX_IL_2_AGC_PWR = 14, RX_IL_2_AGC_AV = 15, TX_LEVELS = 16, // 16=GSM900, 32=DCS1800, 48=PCS1900 TX_CAL_CHAN = 17, // 17=GSM900, 33=DCS1800, 49=PCS1900 #if (ORDER2_TX_TEMP_CAL==1) TX_CAL_TEMP = 20, // 20=GSM900, 36=DCS1800, 52=PCS1900 #else TX_CAL_TEMP = 18, // 18=GSM900, 34=DCS1800, 50=PCS1900 #endif TX_CAL_EXTREME = 19, // 19=GSM900, 35=DCS1800, 51=PCS1900 RX_CAL_CHAN = 25, // 25=GSM900, 41=DCS1800, 57=PCS1900 RX_CAL_TEMP = 26, // 26=GSM900, 42=DCS1800, 58=PCS1900 RX_CAL_LEVEL = 27, // 27=GSM900, 43=DCS1800, 59=PCS1900 RX_AGC_PARAMS = 31, // 31=GSM900, 47=DCS1800, 63=PCS1900 RX_AGC_PARAMS_PCS = 63, #if (RF_FAM == 35) RX_PLL_TUNING_TABLE = 65, #endif TX_DATA_BUFFER = 80 #if L1_GPRS ,RLC_TX_BUFFER_CS1 = 81, RLC_TX_BUFFER_CS2 = 82, RLC_TX_BUFFER_CS3 = 83, RLC_TX_BUFFER_CS4 = 84 #endif }; enum RX_PARAM { RX_AGC_GAIN = 1, RX_TIMESLOT = 2, RX_AGC_ENA_FLAG = 8, RX_PM_ENABLE = 9, RX_FRONT_DELAY = 10, RX_FLAGS_CAL = 14, RX_FLAGS_PLATFORM = 15, RX_FLAGS_IQ_SWAP = 17, RX_FLAGS_ALL = 18 #if L1_GPRS ,RX_GPRS_SLOTS = 28, RX_GPRS_CODING = 29 #endif }; enum TX_PARAM { TX_PWR_LEVEL = 1, TX_APC_DAC = 4, TX_RAMP_TEMPLATE = 5, TX_CHAN_CAL_TABLE = 6, TX_RESERVED = 7, TX_BURST_TYPE = 8, TX_BURST_DATA = 9, TX_TIMING_ADVANCE = 10, TX_TRAINING_SEQ = 11, TX_PWR_SKIP = 13, TX_FLAGS_CAL = 14, TX_FLAGS_PLATFORM = 15, TX_FLAGS_IQ_SWAP = 17, TX_FLAGS_ALL = 18 #if L1_GPRS ,TX_GPRS_POWER0 = 20, TX_GPRS_POWER1 = 21, TX_GPRS_POWER2 = 22, TX_GPRS_POWER3 = 23, TX_GPRS_POWER4 = 24, TX_GPRS_POWER5 = 25, TX_GPRS_POWER6 = 26, TX_GPRS_POWER7 = 27, TX_GPRS_SLOTS = 28, TX_GPRS_CODING = 29 #endif }; enum MISC_PARAM { GPIOSTATE0 = 8, GPIODIR0 = 9, GPIOSTATE1 = 10, GPIODIR1 = 11, GPIOSTATE0P = 12, GPIODIR0P = 13, GPIOSTATE1P = 14, GPIODIR1P = 15, ADC_INTERVAL = 18, ADC_ENA_FLAG = 19, CONVERTED_ADC0 = 20, CONVERTED_ADC1 = 21, CONVERTED_ADC2 = 22, CONVERTED_ADC3 = 23, CONVERTED_ADC4 = 24, CONVERTED_ADC5 = 25, CONVERTED_ADC6 = 26, CONVERTED_ADC7 = 27, CONVERTED_ADC8 = 28, RAW_ADC0 = 30, RAW_ADC1 = 31, RAW_ADC2 = 32, RAW_ADC3 = 33, RAW_ADC4 = 34, RAW_ADC5 = 35, RAW_ADC6 = 36, RAW_ADC7 = 37, RAW_ADC8 = 38, ADC0_COEFF_A = 50, ADC1_COEFF_A = 51, ADC2_COEFF_A = 52, ADC3_COEFF_A = 53, ADC4_COEFF_A = 54, ADC5_COEFF_A = 55, ADC6_COEFF_A = 56, ADC7_COEFF_A = 57, ADC8_COEFF_A = 58, ADC0_COEFF_B = 60, ADC1_COEFF_B = 61, ADC2_COEFF_B = 62, ADC3_COEFF_B = 63, ADC4_COEFF_B = 64, ADC5_COEFF_B = 65, ADC6_COEFF_B = 66, ADC7_COEFF_B = 67, ADC8_COEFF_B = 68, SLEEP_MODE = 80, CURRENT_TM_MODE = 127 }; enum STATS_CONFIG { LOOPS = 16, AUTO_RESULT_LOOPS = 17, AUTO_RESET_LOOPS = 18, #if L1_GPRS STAT_GPRS_SLOTS = 20, #endif STAT_TYPE = 24, STAT_BITMASK = 25 }; enum STATS_READ { ACCUMULATED_RX_STATS = 1, MOST_RECENT_RX_STATS = 2 }; enum BITMASK { RSSI = 0x0001, DSP_PM = 0x0002, ANGLE_MEAN = 0x0004, ANGLE_VAR = 0x0008, SNR_MEAN = 0x0010, SNR_VAR = 0x0020, TOA_MEAN = 0x0040, TOA_VAR = 0x0080, RESERVED1 = 0x0100, RESERVED2 = 0x0200, ANGLE_MIN = 0x0400, ANGLE_MAX = 0x0800, FRAME_NUMBER = 0x1000, RUNS = 0x2000, SUCCESSES = 0x4000, BSIC = 0x8000 }; enum RF_ENABLE_E { STOP_ALL = 0, RX_TCH = 1, TX_TCH = 2, RX_TX_TCH = 3, #if L1_GPRS RX_TX_PDTCH = 4, #endif RX_TCH_CONT = 8, TX_TCH_CONT = 9, BCCH_LOOP = 10, SB_LOOP = 11, FB1_LOOP = 12, FB0_LOOP = 13, SINGLE_PM = 15, #if L1_GPRS RX_TX_PDTCH_MON = 16, #endif #if (RF_FAM == 35) RX_PLL_TUNING = 17, #endif RX_TX_MON_TCH = 19, RX_TX_MON = 27 }; enum VERSION_GET_E { BBCHIP_MODULE_REV = 0x10, CHIPID_MODULE_REV = 0x14, CHIPVER_MODULE_REV = 0x15, DSPSW_MODULE_REV = 0x22, ANALOGCHIP_MODULE_REV = 0x30, GSM_MODULE_REV = 0x80, LAYER1_MODULE_REV = 0x84, RFDRIVER_MODULE_REV = 0x88, TM_API_MODULE_REV = 0xE0, L1_TM_CORE_MODULE_REV = 0xE1, STD_MODULE_REV = 0xE2, DSP_MODULE_REV = 0xE3, BOARD_MODULE_REV = 0xE4, RF_MODULE_REV = 0xE5 };
