FreeCalypso > hg > fc-tourmaline
view src/g23m-aci/gdd_dio/gdd.h @ 221:5bf097aeaad7
LLS: when turning off all LEDs on boot, skip LED-C
Having LLS turn off LED-A and LED-B on boot is normally unnecessary
(they should already be off in Iota), but it is harmless, hence this
logic is kept for robustness. However, having LLS read-modify-write
the BCICTL2 register (to turn off LED-C) creates a potential race
condition with FCHG writes to this register, especially in the case
when baseband switch-on is caused by VCHG and charging is expected
to start right away. Furthermore, control of the charging LED itself
(on those hw targets that have it) is the responsibility of the FCHG
SWE, hence LLS should leave it alone.
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Mon, 26 Apr 2021 21:55:13 +0000 |
parents | fa8dc04885d8 |
children |
line wrap: on
line source
/* +----------------------------------------------------------------------------- | Project : GSM-F&D (8411) | Modul : BAT library +----------------------------------------------------------------------------- | 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 : API of the Generic Data aDapter (GDD) which connects the | application domain with the protocol stack. +----------------------------------------------------------------------------- */ #ifndef GDD_H #define GDD_H /*==== INCLUDES =============================================================*/ /*==== DEFINITIONS ==========================================================*/ /** Return and error values of GDD functions */ enum GDD_RESULT_CODES { GDD_OK = 0, /* OK, no error occured */ GDD_BUSY = 1, /* Currently busy */ GDD_DIO_NOT_READY = 2, /* Dio not initialized or ready */ GDD_NO_CONNECTION_SLOT = 3, /* Max number of connections already open */ GDD_NO_BUF_AVAILABLE = 4, /* No buffer available (for sending) */ GDD_INVALID_PARAMS = 5, /* Invalid input parameter */ GDD_REQ_BUF_TOO_LARGE = 6, /* Requested buffer too large */ GDD_INVALID_BUFFER = 7, /* Invalid buffer */ GDD_ALREADY_INITIALIZED = 97, /* Instance already initialized */ GDD_NO_MEMORY = 98, /* Memory allocation during initialization failed */ GDD_INTERNAL_ERROR = 99 /* General error code for all other errors */ }; /*==== CONSTS ===============================================================*/ /** This size that's required for maintenance of one single connection. Only needed if the application must allocated memory to be passed into gdd_init(). */ #define GDD_DIO_SIZEOF_CONDATA 64 /** Size of first buffer segment (used for internal purposes) */ #define GDD_DIO_PID_SEG_SIZE 2 /*==== TYPES =================================================================*/ /** Connection handle */ typedef U32 T_GDD_CON_HANDLE; /** Identifier for the adapter instances - each instance corresponds to a DIO driver type */ typedef enum { GDD_INST_NONE = -1, GDD_INST_BAT = 0, /* The BAT library */ GDD_INST_APP, /* Application */ GDD_INST_TCP, /* TCPIP entity */ GDD_INST_SOCK, /* Socket library */ GDD_INST_SOCKCFG, /* Socket library configuration */ /* Add new instances here and increase GDD_NUM_INSTS accordingly */ GDD_NUM_INSTS, /* Maximum number of instances is defined by GDD_MAX_INST_ID */ GDD_MAX_INST_ID = 255 } T_GDD_INST_ID; /* * GDD data format - identicial to DIOv4 data format. */ typedef struct { U8 _align0; /*< 0: 1> alignment */ U8 _align1; /*< 1: 1> alignment */ U16 c_data; /*< 2: 2> counter */ U8 *ptr_data; /*< 4: 4> pointer to pointer to the first byte of the data buffer segment */ } T_GDD_SEGMENT; typedef struct { U16 length; /*< 0: 2> len of dio_ctrl */ U8 _align0; /*< 2: 1> alignment */ U8 c_segment; /*< 3: 1> counter of segments */ T_GDD_SEGMENT *ptr_gdd_segment; /*< 4: 4> pointer to Structured Element */ } T_GDD_BUF; /** Capabilities of DIO BAT adapter, to be set by the client */ typedef struct { U32 mtu_size; } T_GDD_DIO_CAP; /** Capabilities of the BAT adapter, to be set by the client */ typedef union { T_GDD_DIO_CAP dio_cap; /* Capabilities for future adapter implementations to be added here */ } T_GDD_CAP; /** GDD result type */ typedef U16 GDD_RESULT; /** Signal types */ typedef enum { GDD_SIGTYPE_CONNECTION_OPENED = 1, /* Connection is established and usable */ GDD_SIGTYPE_CONNECTION_FAILED = 2, /* Connection failed or closed down unexpectedly */ GDD_SIGTYPE_SEND_BUF_AVAILABLE = 3, /* A new send buffer becomes available after an unsuccessfull call to gdd_get_send_buffer */ GDD_SIGTYPE_BUF_SENT = 4 /* Indicates that the last sent buffer has been successfully sent */ } T_GDD_SIGTYPE; /** Data associated with a GDD signal */ typedef struct { T_GDD_SIGTYPE sig; } T_GDD_SIGNAL; /*************************************************************************** * Call-back function definitions (to be implemented by the client) ***************************************************************************/ /* +------------------------------------------------------------------------------ | Function : gdd_signal_cb +------------------------------------------------------------------------------ | Description : The adapter calls this call-back function to send received data | to the client. The client must copy the data contained in the | buffer, since the buffer will be invalidated upon returning | from this function. | Alternatively, the client can indicate that he is currently | busy. In this case, he has to call gdd_signal_ready_rcv() at a | later time to invoke this call-back function again. | | Parameters : sig - Signal +------------------------------------------------------------------------------ */ typedef void (* T_GDD_SIGNAL_CB) ( T_GDD_CON_HANDLE con, T_GDD_SIGNAL sig ); /* +------------------------------------------------------------------------------ | Function : gdd_received_data_cb +------------------------------------------------------------------------------ | Description : The adapter calls this callback function to signal events to | the client. | | Parameters : sig - Signal | | Return : GDD_OK - Data was copied by client | GDD_BUSY - Client was busy and could not receive data. +------------------------------------------------------------------------------ */ typedef GDD_RESULT (* T_GDD_RECEIVE_DATA_CB) ( T_GDD_CON_HANDLE con, T_GDD_BUF * buf ); /*************************************************************************** * Function definitions ***************************************************************************/ /* +------------------------------------------------------------------------------ | Function : gdd_init +------------------------------------------------------------------------------ | Description : This optional function can be used to provide the house-keeping | memory required for the given adapter instance. On platforms | where memory allocation is available, the function might be | called with the parameter mem set to 0. In this case, it is | just use to limit the number of connections via the parameter | num_con. | | Parameters : inst - Instance identifier of the adapter | mem - Memory allocated by client for maintenance | of the connections (Input parameter). | If set to 0, the adapter will allocate | the memory itself. | num_con - Maximum number of connections | | Return : GDD_OK - Initialization successful | >GDD_OK - Error (see manual for error codes) +------------------------------------------------------------------------------ */ typedef GDD_RESULT (* T_GDD_INIT) ( T_GDD_INST_ID inst, void * mem, U16 num_con); /* +------------------------------------------------------------------------------ | Function : gdd_deinit +------------------------------------------------------------------------------ | Description : This function de-initializes an adapter instance. | Any memory that the adapter has allocated internally is freed. | | Parameters : inst - Instance identifier of the adapter | | Return : GDD_OK - Initialization successful | >GDD_OK - Error (see manual for error codes) +------------------------------------------------------------------------------ */ typedef GDD_RESULT (* T_GDD_DEINIT) ( T_GDD_INST_ID inst); /* +------------------------------------------------------------------------------ | Function : gdd_connect +------------------------------------------------------------------------------ | Description : This function prepares a new connection for data transmission. | If the function succeeds, it will return a connection handle | in the parameter 'con_handle' to the caller. Each connection is | uniquely identified by its connection handle. | | Note : The connection cannot be used straight away. Instead, the | client receives a signal GDD_SIGTYPE_CONNECTION_OPENED when the | connection setup has been finished. | | Each open connection should be closed using the function | gdd_close() when it is not used any longer. | | Parameters : inst - Instance identifier of the adapter | con_handle - New handle to the adapter passed back to the | caller (output parameter). | cap - capabilities of the adapter | rcv_cb - Call-back for receiving data (provided by client) | sig_cb - Call-back for signals (provided by client) | | Return : GDD_OK - Connecting is setup and being created. The client | has to wait for signal GDD_SIGTYPE_CONNECTION_OPENED | before the connection is usable. | >GDD_OK - Error (see manual for error codes) +------------------------------------------------------------------------------ */ typedef GDD_RESULT (* T_GDD_CONNECT) ( T_GDD_INST_ID inst, T_GDD_CON_HANDLE * con_handle, const T_GDD_CAP * cap, T_GDD_RECEIVE_DATA_CB rcv_cb, T_GDD_SIGNAL_CB sig_cb ); /* +------------------------------------------------------------------------------ | Function : gdd_disconnect +------------------------------------------------------------------------------ | Description : This function closes and deletes a connection. | The connection handle will not be valid any longer. | | Parameters : con_handle - Handle to the connection to be closed | | Return : GDD_OK - Initialization successful | >GDD_OK - Error (see manual for error codes) +------------------------------------------------------------------------------ */ typedef GDD_RESULT (* T_GDD_DISCONNECT) ( T_GDD_CON_HANDLE con_handle ); /* +------------------------------------------------------------------------------ | Function : gdd_get_send_buffer +------------------------------------------------------------------------------ | Description : This function request a send buffer of a minimum size data_size | for sending on the connection specified with con. The buffer is | passed back in the parameter 'buf'. | After a successful call to this function, it is the | responsibility of the caller to subsequently fill the buffer | and call gdd_send_data(), before another call to | gdd_get_send_buffer() is done. In other words, the client must | make sure that calls to these two functions are synchronized. | | Parameters : con_handle - Connection handle | buf - Pointer to pointer to send buffer (out parameter) | data_size - Minimum size of requested buffer | | Return : GDD_OK - Initialization successful | >GDD_OK - Error (see manual for error codes) | GDD_NO_BUF_AVAILABLE - No buffer available. The client | will be notified with a signal | GDD_SIGTYPE_SEND_BUF_AVAILABLE when a | buffer is ready and can be requested. +------------------------------------------------------------------------------ */ typedef GDD_RESULT (* T_GDD_GET_SEND_BUFFER) ( T_GDD_CON_HANDLE con_handle, T_GDD_BUF ** buf, U16 data_size ); /* +------------------------------------------------------------------------------ | Function : gdd_send_data +------------------------------------------------------------------------------ | Description : This functions sends a buffer over the specified connection. | Please see also description of gdd_get_send_buffer(). | | | Parameters : con_handle - Connection handle | buf - Buffer to be sent | | Return : GDD_OK - Initialization successful | >GDD_OK - Error (see manual for error codes) | GDD_INVALID_BUFFER - The buffer pointed to is incorrect, i.e. | not the one that was previously requested +------------------------------------------------------------------------------ */ typedef GDD_RESULT (* T_GDD_SEND_DATA) ( T_GDD_CON_HANDLE con, T_GDD_BUF * buf); /* +------------------------------------------------------------------------------ | Function : gdd_signal_ready_rcv +------------------------------------------------------------------------------ | Description : This function is called from the client to indicate that he | is ready to receive. Typically, it is called from the client | when he becomes ready after a preceding result callback | (result_cb) was returned with GDD_BUSY. | | Parameters : con_handle - Connection handle +------------------------------------------------------------------------------ */ typedef void (* T_GDD_SIGNAL_READY_RCV) ( T_GDD_CON_HANDLE con ); /** GDD Function pointer table */ typedef struct { T_GDD_INIT gdd_init; T_GDD_DEINIT gdd_deinit; T_GDD_CONNECT gdd_connect; T_GDD_DISCONNECT gdd_disconnect; T_GDD_GET_SEND_BUFFER gdd_get_send_buffer; T_GDD_SEND_DATA gdd_send_data; T_GDD_SIGNAL_READY_RCV gdd_signal_ready_rcv; } T_GDD_FUNC; /** Needed for initialization of client of BAT adapter (BAT library) */ extern T_GDD_FUNC gdd_func_dio; /*************************************************************************** * Helper function definitions ***************************************************************************/ /* +------------------------------------------------------------------------------ | Function : gdd_write_buf +------------------------------------------------------------------------------ | Description : Write data from a client buffer into into a GDD buffer | The datagram protocol ID for the following link layer (PPP) is | set internally to 0x21 (IPv4). If you need to set the protocol | ID to something else, please use the function | gdd_write_buf_with_pid().. | | Parameters : src_buf - Source buffer (client owned) | src_size - Size of source buffer | dest_buf - Destination buffer | | Return : 0 if all bytes have been written to the destination buffer. | If not all bytes could be written, the return value is larger | than 0 and denotes the number of remaining (unwritten) bytes. | A negative return value indicates an error. +------------------------------------------------------------------------------ */ S32 gdd_write_buf(const U8 * src_buf, U16 src_size, T_GDD_BUF * dest_buf); /* +------------------------------------------------------------------------------ | Description : Write user data and a datagram protocol ID used by the link | layer (PPP) into a GDD buffer. | | Parameters : src_buf - Source buffer (client owned) | src_size - Size of source buffer | dest_buf - Destination buffer | protocol_id - datagram protocol identifier | | Return : 0 if all bytes have been written to the destination buffer. | If not all bytes could be written, the return value is larger | than 0 and denotes the number of remaining (unwritten) bytes. | A negative return value indicates an error. +------------------------------------------------------------------------------ */ S32 gdd_write_buf_with_pid(const U8 * src_buf, U16 src_size, T_GDD_BUF * dest_buf,U8 protocol_id); /* +------------------------------------------------------------------------------ | Function : gdd_read_buf +------------------------------------------------------------------------------ | Description : Read data from a GDD buffer into a client buffer. | | Parameters : src_buf - Source buffer received from GDD | dest_buf - Destination buffer (client owned) | dest_size - Size of destination buffer | | Return : 0 if all bytes have been copied into the destination buffer. | If not all bytes could be copied into the destination buffer, | the return value is larger than 0 and denotes the number of | remaining (unread) bytes. A negative return value indicase an | error. +------------------------------------------------------------------------------ */ S32 gdd_read_buf(const T_GDD_BUF * src_buf, U8 * dest_buf, U16 dest_size); #endif /* GDD_H */