FreeCalypso > hg > fc-magnetite
view src/condat3/com/include/dti.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 | c8bd5a927942 |
children |
line wrap: on
line source
/* +----------------------------------------------------------------------------- | Project : DTILIB | Modul : DTI +----------------------------------------------------------------------------- | Copyright 2002 Texas Instruments Berlin, AG | All rights reserved. | | This file is confidential and a trade secret of Texas | Instruments Berlin, AG | The receipt of or possession of this file does not convey | any rights to reproduce or disclose its contents or to | manufacture, use, or sell anything it may describe, in | whole, or in part, without the specific written consent of | Texas Instruments Berlin, AG. +----------------------------------------------------------------------------- | Purpose : Definitions for the Data Transmission Interface, DTI. | Includefile for every entity using DTILIB. +----------------------------------------------------------------------------- */ /* * Version 1.6 */ /**********************************************************************************/ /* NOTE: * there is a MACRO definition for "interface" in objbase.h * which says * #define interface struct * and thus would collide with the name "interface" * as a quick fix, all "interface" have been changed to "interfac" * in the dtilib project. This should not affect any external files */ /**********************************************************************************/ #ifndef DTI_H #define DTI_H /**********************************************************************************/ #if defined (DTI2) /* * Use SAP DTI2.DOC */ #include "P_DTI2.h" #else /* * Make this code compatible to SAP dti.doc. */ #include "P_DTI.h" #define T_DTI2_DATA_IND T_DTI_DATA_IND #define T_DTI2_DATA_REQ T_DTI_DATA_REQ #define T_DTI2_READY_IND T_DTI_READY_IND #define T_DTI2_GETDATA_REQ T_DTI_GETDATA_REQ #define T_DTI2_DATA_TEST_REQ T_DTI_DATA_TEST_REQ #define T_DTI2_DATA_TEST_IND T_DTI_DATA_TEST_IND /* * By use the SAP DTI.DOC and the DTI2.DOC there could be double * defines. So an undef is used. */ #ifdef DTI2_DATA_IND #undef DTI2_DATA_IND #endif #ifdef DTI2_DATA_REQ #undef DTI2_DATA_REQ #endif #ifdef DTI2_READY_IND #undef DTI2_READY_IND #endif #ifdef DTI2_GETDATA_REQ #undef DTI2_GETDATA_REQ #endif #ifdef DTI2_DATA_TEST_REQ #undef DTI2_DATA_TEST_REQ #endif #ifdef DTI2_DATA_TEST_IND #undef DTI2_DATA_TEST_IND #endif /* * For calling the primitives over the macros. */ #define DTI2_DATA_IND DTI_DATA_IND #define DTI2_DATA_REQ DTI_DATA_REQ #define DTI2_READY_IND DTI_READY_IND #define DTI2_GETDATA_REQ DTI_GETDATA_REQ #define DTI2_DATA_TEST_REQ DTI_DATA_TEST_REQ #define DTI2_DATA_TEST_IND DTI_DATA_TEST_IND /* * Version related to DTI SAP 1. */ #define T_desc2 T_desc #define T_desc_list2 T_desc_list #define desc_list2 desc_list #endif /********************************************************************************** * Externally visible dtilib defines **********************************************************************************/ /* * Reason parameter for the callback function */ #define DTI_NO_SIGNAL 0 /* No signal shall be sended */ #define DTI_REASON_CONNECTION_OPENED 1 /* DTI connection opened or reseted */ #define DTI_REASON_CONNECTION_CLOSED 2 /* DTI connection closed */ #define DTI_REASON_DATA_RECEIVED 3 /* UL Data primitive received */ #define DTI_REASON_TX_BUFFER_FULL 4 /* DTI send-queue full */ #define DTI_REASON_TX_BUFFER_READY 5 /* DTI DTI send-queue no longer full */ /* * Connection states */ #define DTI_CLOSED 0 /* DTI connection is not established */ #define DTI_SETUP 1 /* Waiting for connection_opened signal from DTILIB */ #define DTI_IDLE 2 /* DTI connection is opened */ /* * dti_open - direction parameter * * to lower layer: send request primitives (_REQ / _CNF) * to higher layer: send indications (_IND / _RES) * null link: do not send anything */ #define DTI_CHANNEL_TO_HIGHER_LAYER 0x00 #define DTI_CHANNEL_TO_LOWER_LAYER 0x01 #define DTI_NULL_LINK 0x02 /* null link (null device) */ /* * dti_open - link_options parameter * * the 0 is legacy from previous versions - upon reception of this value * the queue-length parameter has to be used to find out about desired * behaviour for the send queue * #define FLOW_CNTRL_ENABLED 0 -- Flow control enabled */ #define DTI_FLOW_CNTRL_DISABLED 1 /* Flow control entirely disabled */ /* * Modes for handling of the send queue * * Queue is not used */ #define DTI_QUEUE_UNUSED 2 /* * Queue without size limitation */ #define DTI_QUEUE_UNBOUNDED 3 /* * Notify entity when queue is full, * afterwards discard oldest piece of data upon arrival of new data packets */ #define DTI_QUEUE_RM_FIFO 4 /* * Notify entity when queue is full, * afterwards discard newly arriving data packets */ #define DTI_QUEUE_RM_LIFO 5 /* * Notify entity when queue is full but keep all buffered data */ #define DTI_QUEUE_WATERMARK 6 /* * dti_init - entity_options (flags!) */ #define DTI_DEFAULT_OPTIONS 0x0 #define DTI_NO_TRACE (1<<0) /* * Some parameter which are used for initialization. */ #define D_NO_DATA_BASE NULL #define D_NO_INSTANCE 0xFF #define D_NO_INTERFACE 0xFF #define D_NO_CHANNEL_NR 0xFF /********************************************************************************** * Obsolete dtilib defines * * NOTE: use of these defines is STRONGLY DISCOURAGED since their functionality * is no longer needed and they will be removed some time in the future * **********************************************************************************/ /* * NOTE: this is _obsolete_ and maintained only for compatibility reasons!! * (see link_options parameter) */ #define DTI_QUEUE_DISABLED 0 /* Queue not used */ #define DTI_QUEUE_UNLIMITED 255 /* Queue without limitations in size */ /* * Home and neighbor entity. * NOTE: this is _obsolete_ and maintained only for compatibility reasons!! * instead use the defines * DTI_CHANNEL_TO_HIGHER_LAYER and * DTI_CHANNEL_TO_LOWER_LAYER */ #define HOME TRUE /* Indicate the entity or instance which send dti_connect_req */ #define NEIGHBOR FALSE /* Indicate the entity or instance which send dti_connect_ind */ /* * Type of the link */ #define ENTITY_LINK 0x01 /* normal link with an entity */ #define NULL_LINK 0x02 /* null link (null device) */ #define RIVIERA_BT_LINK 0x03 /* link to BT riviera entity */ #define RIVIERA_ATP_LINK 0x04 /* link to RNET riviera entity */ /* * Communication type * NOTE: this is _obsolete_ and maintained only for compatibility reasons!! * (see link_options parameter) */ #define FLOW_CNTRL_ENABLED 0 /* Flow control enabled */ #define FLOW_CNTRL_DISABLED 1 /* Flow control disabled */ /* * Connection states * NOTE: this is _obsolete_ and maintained only for compatibility reasons!! * these states should be defined in the entities or the prefixec versiones * above should be used */ #define CLOSED 0 /* DTI connection is not established */ #define SETUP 1 /* Waiting for connection_opened signal from DTILIB */ #define IDLE 2 /* DTI connection is opened */ /* * Entity states for sending * NOTE: this is _obsolete_ and maintained only for compatibility reasons!! * these states should be defined in the entity itself * to ensure proper prefixing */ #define TX_IDLE 3 /* The entity must not send data primitives (initial state) */ #define TX_READY 4 /* The entity can send data primitives */ /* * Entity states for receiving * NOTE: this is _obsolete_ and maintained only for compatibility reasons!! * these states should be defined in the entity itself * to ensure proper prefixing */ #define RX_IDLE 5 /* Data reception stopped (initial state) */ #define RX_READY 6 /* Ready to receive data */ #define ENTITY_NAME_LEN 0x6 #define MAX_ATP_LINKS 0x4 /* max. number of links towards the RIV/ATP environment, set by AAA*/ /* * Value constants for capability */ #define DTI_CPBLTY_NO 0x0 /* used as initial value = no capabilities */ #define DTI_CPBLTY_CMD 0x1 /* AT cmd capability */ #define DTI_CPBLTY_PKT 0x2 /* packet capability */ #define DTI_CPBLTY_SER 0x4 /* serial capability */ /********************************************************************************** * typedefs **********************************************************************************/ /* * Data Base for each entity. */ typedef struct { T_HANDLE handle; /* GPF task handle */ U8 max_links; /* Number of links in the link list - started from the pointer first_link */ U32 entity_options; /* user specified entity_options */ void ((*sig_callback) /* Callback function */ (U8 instance, /* Instance of the entity */ U8 interfac, /* Interface of the entity */ U8 channel, /* Channel */ U8 reason, /* Reason for the callback */ T_DTI2_DATA_IND *dti_data_ind)); /* Data primitive ul */ #ifdef FF_TCP_IP char* own_name; /* name of the own entity, held by AAA */ U16 entity_id_p; /* entity id within ATP, the same for all entities and AAA */ #endif U32 first_link; /* Pointer to link table */ } DTI_DATA_BASE; typedef DTI_DATA_BASE * DTI_HANDLE; /* For calling the data base */ /* * Link Table, parameter for each DTI connection. * For detail information - please see the MSC DTILIB.DOC */ typedef struct { U32 link_id; /* Identity for the link communication */ U8 direction; /* Direction for the link communication */ U32 version; /* DTI Version */ U8 instance; /* Instance of the entity */ U8 interfac; /* Selected interface */ U8 channel; /* Channel number */ U32 link_options; /* type of flow control, queueing, .. */ T_HANDLE link_handle; /* Handle for the communication channel */ U8 queue_size; /* DTI queue size */ U8 queue_len; /* length of the queue */ T_DTI2_DATA_IND *dti_data_ind; /* DTI data primitive */ U8 connect_state; /* State for connect */ U8 rx_state; /* State for receive */ U8 tx_state; /* State for send */ U32 next_link; /* Pointer to next DTI_LINK struct, last */ /* linkpointer = NULL */ U8 link_type; /* indicate Riviera, NULL or GPF link */ #ifdef FF_TCP_IP U16 ul_next_atp_data; /* data to be got from ATP */ U8 atp_tx_state; /* flow state of ATP */ U8 dti_id; /* ACI identity for the link */ DTI_DATA_BASE* entity_db; /* pointer back to home database */ UINT16 port_nb; /* port number, if linked towards RIV */ #endif } DTI_LINK; /********************************************************************************** * Prototypes for DTILIB **********************************************************************************/ EXTERN DTI_HANDLE dti_init( U8 maximum_links, T_HANDLE handle, U32 entity_options, void (sig_callback( U8 instance, U8 interfac, U8 channel, U8 reason, T_DTI2_DATA_IND *dti_data_ind ) ) ); EXTERN void dti_deinit( DTI_HANDLE hDTI); EXTERN BOOL dti_open( DTI_HANDLE hDTI, U8 instance, U8 interfac, U8 channel, U8 queue_size, U8 direction, U32 link_options, U32 version, U8 *neighbor_entity, U32 link_id ); EXTERN BOOL dti_resolve_link_id( DTI_HANDLE hDTI, U8 instance, U8 interfac, U8 channel, U32 *link_id ); EXTERN void dti_close( DTI_HANDLE hDTI, U8 instance, U8 interfac, U8 channel, BOOL flush ); EXTERN void dti_start( DTI_HANDLE hDTI, U8 instance, U8 interfac, U8 channel); EXTERN void dti_stop( DTI_HANDLE hDTI, U8 instance, U8 interfac, U8 channel); EXTERN void dti_send_data( DTI_HANDLE hDTI, U8 instance, U8 interfac, U8 channel, T_DTI2_DATA_IND *dti_data_ind ); EXTERN void mfree_desc(DTI_HANDLE hDTI, T_desc_list2 * desc_list2); EXTERN BOOL dti_tx_buffer_status( DTI_HANDLE hDTI, U8 instance, U8 interfac, U8 channel, U8 *queue_len ); /********************************************************************************** * Functions in ip_kerp.c **********************************************************************************/ #if defined (DTI2) EXTERN GLOBAL void dti_dti_connect_req (DTI_HANDLE hDTI, T_DTI2_CONNECT_REQ *dti_connect_req); EXTERN GLOBAL void dti_dti_disconnect_req (DTI_HANDLE hDTI, T_DTI2_DISCONNECT_REQ *dti_disconnect_req); EXTERN GLOBAL void dti_dti_disconnect_ind (DTI_HANDLE hDTI, T_DTI2_DISCONNECT_IND *dti_disconnect_ind); EXTERN GLOBAL void dti_dti_connect_cnf (DTI_HANDLE hDTI, T_DTI2_CONNECT_CNF *dti_connect_cnf); EXTERN GLOBAL void dti_dti_connect_res (DTI_HANDLE hDTI, T_DTI2_CONNECT_RES *dti_connect_res); EXTERN GLOBAL void dti_dti_connect_ind (DTI_HANDLE hDTI, T_DTI2_CONNECT_IND *dti_connect_ind); #endif EXTERN GLOBAL void dti_dti_ready_ind (DTI_HANDLE hDTI, T_DTI2_READY_IND *dti_ready_ind); EXTERN GLOBAL void dti_dti_data_req (DTI_HANDLE hDTI, T_DTI2_DATA_REQ *dti_data_req); EXTERN GLOBAL void dti_dti_getdata_req (DTI_HANDLE hDTI, T_DTI2_GETDATA_REQ *dti_getdata_req); EXTERN GLOBAL void dti_dti_data_ind (DTI_HANDLE hDTI, T_DTI2_DATA_IND *dti_data_ind); /********************************************************************************** * Test functions used in the windows operating system. **********************************************************************************/ #if defined (_SIMULATION_) EXTERN void dti_dti_data_test_ind (DTI_HANDLE hDTI, T_DTI2_DATA_TEST_IND *dti_data_test_ind); EXTERN void dti_dti_data_test_req (DTI_HANDLE hDTI, T_DTI2_DATA_TEST_REQ *dti_data_test_req); EXTERN BOOL dti_make_new_desc (DTI_HANDLE hDTI, T_desc2 **p_desc_new, U16 malloc_len, BOOL buff_init_0); #endif /* _SIMULATION_ */ #endif /* DTI_H */