view src/gpf2/inc/dio.h @ 25:53232836b105
comlib.lib done
author |
Mychaela Falconia <falcon@freecalypso.org> |
date |
Wed, 28 Sep 2016 04:03:47 +0000 (2016-09-28) |
parents |
864b8cc0cf63 |
children |
|
line source
/*
+-----------------------------------------------------------------------------
| Copyright 2004 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 : General definitions of DIO driver interface
+-----------------------------------------------------------------------------
*/
#ifndef __DIO_H__
#define __DIO_H__
/*==== INCLUDES =============================================================*/
#include "gdi.h"
/*==== DEFINITIONS ==========================================================*/
/*
* Device Type
*/
#define DIO_DATA_SER 0x00800000 /* device can transfer serial data */
#define DIO_DATA_PKT 0x00400000 /* device can transfer packet data */
#define DIO_DATA_MUX 0x00200000 /* device can start a multiplexer */
#define DIO_TYPE_ID 0x0000FF00 /* id to separate different capabilities */
#define DIO_TYPE_SER (DIO_DATA_SER | 0x00000100) /* serial device */
#define DIO_TYPE_SER_MUX (DIO_DATA_SER | DIO_DATA_MUX | 0x00000100) /* mux device */
#define DIO_TYPE_PKT (DIO_DATA_PKT | 0x00000100) /* packet device */
/*
* Device Flags
*/
#define DIO_FLAG_SLEEP 0x80000000 /* sleep state allowed */
/*
* Baud rates
*/
#define DIO_BAUD_921600 0x00800000
#define DIO_BAUD_812500 0x00400000
#define DIO_BAUD_460800 0x00200000
#define DIO_BAUD_406250 0x00100000
#define DIO_BAUD_230400 0x00080000
#define DIO_BAUD_203125 0x00040000
#define DIO_BAUD_115200 0x00020000
#define DIO_BAUD_57600 0x00010000
#define DIO_BAUD_38400 0x00008000
#define DIO_BAUD_33900 0x00004000
#define DIO_BAUD_28800 0x00002000
#define DIO_BAUD_19200 0x00001000
#define DIO_BAUD_14400 0x00000800
#define DIO_BAUD_9600 0x00000400
#define DIO_BAUD_7200 0x00000200
#define DIO_BAUD_4800 0x00000100
#define DIO_BAUD_2400 0x00000080
#define DIO_BAUD_1200 0x00000040
#define DIO_BAUD_600 0x00000020
#define DIO_BAUD_300 0x00000010
#define DIO_BAUD_150 0x00000008
#define DIO_BAUD_110 0x00000004
#define DIO_BAUD_75 0x00000002
#define DIO_BAUD_AUTO 0x00000001 /* automatic baud rate detection */
/*
* Character framing
*/
#define DIO_CF_7N1 0x00000800
#define DIO_CF_7S1 0x00000400
#define DIO_CF_7M1 0x00000200
#define DIO_CF_7E1 0x00000100
#define DIO_CF_7O1 0x00000080
#define DIO_CF_7N2 0x00000040
#define DIO_CF_8N1 0x00000020
#define DIO_CF_8S1 0x00000010
#define DIO_CF_8M1 0x00000008
#define DIO_CF_8E1 0x00000004
#define DIO_CF_8O1 0x00000002
#define DIO_CF_8N2 0x00000001
/*
* Types of flow control
*/
#define DIO_FLOW_XTR_CTS 0x00000800 /* TX= transp. XON/XOFF RX=CTS */
#define DIO_FLOW_XTR_XOFF 0x00000400 /* TX= transp. XON/XOFF RX=XON/XOFF */
#define DIO_FLOW_XTR_NO 0x00000200 /* TX= transp. XON/XOFF RX=OFF */
#define DIO_FLOW_RTS_CTS 0x00000100 /* TX=RTS RX=CTS */
#define DIO_FLOW_RTS_XOFF 0x00000080 /* TX=RTS RX=XON/XOFF */
#define DIO_FLOW_RTS_NO 0x00000040 /* TX=RTS RX=OFF */
#define DIO_FLOW_XON_CTS 0x00000020 /* TX=XON/XOFF RX=CTS */
#define DIO_FLOW_XON_XOFF 0x00000010 /* TX=XON/XOFF RX=XON/XOFF */
#define DIO_FLOW_XON_NO 0x00000008 /* TX=XON/XOFF RX=OFF */
#define DIO_FLOW_NO_CTS 0x00000004 /* TX=OFF RX=CTS */
#define DIO_FLOW_NO_XOFF 0x00000002 /* TX=OFF RX=XON/XOFF */
#define DIO_FLOW_NONE 0x00000001 /* TX=OFF RX=OFF */
/*
* Serial device flags
*/
#define DIO_FLAG_SER_ESC 0x80000000 /* device supports esc seq detection */
/*
* MUX mode
*/
#define DIO_MUX_I 0x00000008 /* advanced option with I frames */
#define DIO_MUX_UI 0x00000004 /* advanced option with UI frames */
#define DIO_MUX_UIH 0x00000002 /* advanced option with UIH frames */
#define DIO_MUX_BASIC 0x00000001 /* basic option */
/*
* Sleep Mode
*/
#define DIO_SLEEP_ENABLE 0x01 /* enter sleep mode if possible */
#define DIO_SLEEP_DISABLE 0x02 /* do not enter sleep mode */
/*
* Special Guard Period
*/
#define DIO_ESC_OFF 0x0000 /* turn escape sequence detection off */
/*
* Device Mode
*/
#define DIO_MODE_MUX 0x00000002 /* acts as 27.010 multiplexer device */
#define DIO_MODE_SER 0x00000001 /* acts as serial device */
/*
* Control Type
*/
#define DIO_CTRL_LINES 0x0001 /* associated structure is T_DIO_CTRL_LINES */
#define DIO_CTRL_MUX 0x0002 /* associated structure is T_DIO_CTRL_MUX */
/*
* Line State definition & control structure.
*/
#define DIO_SA 0x80000000 /* state: read=DTR write-DSR */
#define DIO_SB 0x40000000 /* state: read=RTS write=DCD */
#define DIO_X 0x20000000 /* state: read=RTS write=CTS */
#define DIO_RING 0x10000000 /* state: ring indicator */
#define DIO_ESC 0x08000000 /* state: escape sequence detested. */
#define DIO_MUX_STOPPED 0x04000000 /* multiplexer stopped */
#define DIO_BRK 0x02000000 /* state: break received/to be sent */
#define DIO_BRKLEN 0x000000FF /* state: break signal # of characters */
/*==== TYPES ================================================================*/
/*
* Device Capabilities
*/
typedef struct
{
U32 device_type;
U32 device_flags;
U16 mtu_control;
U16 mtu_data;
char const *driver_name;
} T_DIO_CAP;
typedef struct
{
U32 device_type;
U32 device_flags;
U16 mtu_control;
U16 mtu_data;
char const *driver_name;
U32 baudrate_auto;
U32 baudrate_fixed;
U32 char_frame;
U32 flow_control;
U32 ser_flags;
} T_DIO_CAP_SER;
typedef struct
{
U32 device_type;
U32 device_flags;
U16 mtu_control;
U16 mtu_data;
char const *driver_name;
U32 baudrate_auto;
U32 baudrate_fixed;
U32 char_frame;
U32 flow_control;
U32 ser_flags;
U32 mux_mode;
} T_DIO_CAP_SER_MUX;
typedef struct
{
U32 device_type;
U32 device_flags;
U16 mtu_control;
U16 mtu_data;
char const *driver_name;
} T_DIO_CAP_PKT;
/*
* Device Control Block
*/
typedef struct
{
U32 device_type; /*< 0: 4> device identifier with general capability information */
U8 sleep_mode; /*< 4: 1> enter sleep mode is possible or not */
U8 _align0; /*< 5: 1> alignment */
U8 _align1; /*< 6: 1> alignment */
U8 _align2; /*< 7: 1> alignment */
} T_DIO_DCB;
typedef struct
{
U32 device_type; /*< 0: 4> device identifier with general capability information */
U8 sleep_mode; /*< 4: 1> enter sleep mode is possible or not */
U8 _align0; /*< 5: 1> alignment */
U8 _align1; /*< 6: 1> alignment */
U8 _align2; /*< 7: 1> alignment */
U32 baudrate; /*< 8: 4> user set baudrate */
U32 char_frame; /*< 12: 4> supported character framing */
U32 flow_control; /*< 16: 4> supported modes of flow control */
U8 xon; /*< 20: 1> set/reset XON for flow control */
U8 xoff; /*< 21: 1> set/reset XOFF for flow control */
U8 esc_char; /*< 22: 1> ASCII character which is used in an escape sequence */
U8 _align3; /*< 23: 1> alignment */
U16 guard_period; /*< 24: 2> duration value for escape sequence */
U8 _align4; /*< 26: 1> alignment */
U8 _align5; /*< 27: 1> alignment */
} T_DIO_DCB_SER;
typedef struct
{
U32 device_type; /*< 0: 4> device identifier with general capability information */
U8 sleep_mode; /*< 4: 1> enter sleep mode is possible or not */
U8 _align0; /*< 5: 1> alignment */
U8 _align1; /*< 6: 1> alignment */
U8 _align2; /*< 7: 1> alignment */
U32 baudrate; /*< 8: 4> user set baudrate */
U32 char_frame; /*< 12: 4> supported character framing */
U32 flow_control; /*< 16: 4> supported modes of flow control */
U8 xon; /*< 20: 1> set/reset XON for flow control */
U8 xoff; /*< 21: 1> set/reset XOFF for flow control */
U8 esc_char; /*< 22: 1> ASCII character which is used in an escape sequence */
U8 _align3; /*< 23: 1> alignment */
U16 guard_period; /*< 24: 2> duration value for escape sequence */
U8 _align4; /*< 26: 1> alignment */
U8 _align5; /*< 27: 1> alignment */
U32 device_mode; /*< 28: 4> work mode of device */
U32 mux_mode; /*< 32: 4> supported multiplexer modes */
U16 n1; /*< 36: 2> max frame size of mux frame */
U8 n2; /*< 38: 1> max number of retransmissions */
U8 t1; /*< 39: 1> acknowledgement timer */
U8 t2; /*< 40: 1> response timer */
U8 t3; /*< 41: 1> wake up response timer */
U8 k; /*< 42: 1> windows size */
U8 _align6; /*< 43: 1> alignment */
} T_DIO_DCB_SER_MUX;
typedef struct
{
U32 device_type; /*< 0: 4> device identifier with general capability information */
U8 sleep_mode; /*< 4: 1> enter sleep mode is possible or not */
U8 _align0; /*< 5: 1> alignment */
U8 _align1; /*< 6: 1> alignment */
U8 _align2; /*< 7: 1> alignment */
} T_DIO_DCB_PKT;
/*
* Data Control
*/
typedef struct
{
U16 control_type ;
U16 length ;
}T_DIO_CTRL ;
typedef struct
{
U16 control_type;
U16 length;
U32 state;
} T_DIO_CTRL_LINES;
typedef struct
{
U16 control_type ;
U16 length ;
U32 state;
}T_DIO_CTRL_MUX ;
/*
* DIO 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_dio_segment;
typedef struct
{
U16 length; /*< 0: 2> len of dio_ctrl */
U8 _align0; /*< 2: 1> alignment */
U8 c_dio_segment; /*< 3: 1> counter */
T_dio_segment *ptr_dio_segment; /*< 4: 4> pointer to Structured Element */
} T_dio_buffer;
/*==== PROTOTYPES ===========================================================*/
/*
+------------------------------------------------------------------------------
| Function : dio_init
+------------------------------------------------------------------------------
| Description : The function initializes the interface and the drivers.
|
| Parameters : none
|
| Return : DRV_OK - Initialization successful
| DRV_INITIALIZED - Interface already initialized
| DRV_INITFAILURE - Initialization failed
|
+------------------------------------------------------------------------------
*/
extern U16 dio_init(void);
/*
+------------------------------------------------------------------------------
| Function : dio_user_init
+------------------------------------------------------------------------------
| Description : The function sets the signal callback of a DIO user.
|
| Parameters : user_name - DIO user name
| drv_handle - unique handle for this user
| signal_callback - callback function for this user
|
| Return : DRV_OK - Callback successfully set
| DRV_INVALID_PARAMS - The specified user does not exist
| DRV_INTERNAL_ERROR - Internal error
| DRV_NOTCONFIGURED - DIO interface is not yet initialized.
|
+------------------------------------------------------------------------------
*/
extern U16 dio_user_init(char const * user_name,
U16 drv_handle,
T_DRV_CB_FUNC signal_callback);
/*
+------------------------------------------------------------------------------
| Function : dio_user_exit
+------------------------------------------------------------------------------
| Description : Termination of User Operation.
|
| Parameters : user_name - DIO user name
|
| Return : DRV_OK - User operation successfully terminated.
| DRV_INVALID_PARAMS - User operation can not be terminated yet.
| DRV_INTERNAL_ERROR - Internal error
|
+------------------------------------------------------------------------------
*/
extern U16 dio_user_exit(char const * user_name);
/*
+------------------------------------------------------------------------------
| Function : dio_exit
+------------------------------------------------------------------------------
| Description : Termination of the Interface.
|
| Parameters : none
|
| Return : none
|
+------------------------------------------------------------------------------
*/
extern void dio_exit(void);
/*
+------------------------------------------------------------------------------
| Function : dio_set_rx_buffer
+------------------------------------------------------------------------------
| Description : This function provides a receive buffer to the driver.
|
| Parameters : device - device number
| buffer - buffer to copy received data in it
|
| Return : DRV_OK - Function successful
| DRV_BUFFER_FULL - Buffer queue full.
| DRV_INVALID_PARAMS - The specified device does not exist or
| the data buffer is not big enough.
| DRV_INTERNAL_ERROR - Internal driver error
| DRV_NOTCONFIGURED - The device is not yet configured
|
+------------------------------------------------------------------------------
*/
extern U16 dio_set_rx_buffer(U32 device,
T_dio_buffer * buffer);
/*
+------------------------------------------------------------------------------
| Function : dio_read
+------------------------------------------------------------------------------
| Description : This function returns a receive buffer and control information.
|
| Parameters : device - device number
| control_info - control information from the driver
| buffer - buffer with received data in it
|
| Return : DRV_OK - Function successful
| DRV_INVALID_PARAMS - The specified device does not exist
| DRV_INTERNAL_ERROR - Internal driver error
| DRV_NOTCONFIGURED - The device is not yet configured
|
+------------------------------------------------------------------------------
*/
extern U16 dio_read(U32 device,
T_DIO_CTRL * control_info,
T_dio_buffer ** buffer);
/*
+------------------------------------------------------------------------------
| Function : dio_write
+------------------------------------------------------------------------------
| Description : This function provides a send buffer to the driver which
| contains data to send.
|
| Parameters : device - device number
| control_info - control information for the driver
| buffer - buffer with data to send
|
| Return : DRV_OK - Function successful
| DRV_BUFFER_FULL - Buffer queue full.
| DRV_INVALID_PARAMS - The specified device does not exist or
| the data buffer to big.
| DRV_INTERNAL_ERROR - Internal driver error
| DRV_NOTCONFIGURED - The device is not yet configured
|
+------------------------------------------------------------------------------
*/
extern U16 dio_write(U32 device,
T_DIO_CTRL * control_info,
T_dio_buffer * buffer);
/*
+------------------------------------------------------------------------------
| Function : dio_get_tx_buffer
+------------------------------------------------------------------------------
| Description : This function returns a send buffer provided via dio_write().
|
| Parameters : device - device number
| buffer - return sent data buffer
|
| Return : DRV_OK - Function successful
| DRV_INVALID_PARAMS - The specified device does not exist
| DRV_INTERNAL_ERROR - Internal driver error
| DRV_NOTCONFIGURED - The device is not yet configured
|
+------------------------------------------------------------------------------
*/
extern U16 dio_get_tx_buffer(U32 device,
T_dio_buffer ** buffer);
/*
+------------------------------------------------------------------------------
| Function : dio_clear
+------------------------------------------------------------------------------
| Description : This function is used to clear the hardware send buffer.
|
| Parameters : device - device number
|
| Return : DRV_OK - Function successful
| DRV_INVALID_PARAMS - The specified device does not exist
| DRV_INTERNAL_ERROR - Internal driver error
| DRV_NOTCONFIGURED - The device is not yet configured
| DRV_INPROCESS - The driver is busy clearing the buffer
|
+------------------------------------------------------------------------------
*/
extern U16 dio_clear(U32 device);
/*
+------------------------------------------------------------------------------
| Function : dio_flush
+------------------------------------------------------------------------------
| Description : With this function the driver is requested to inform the
| user, when data of the hardware send buffer have been written
| successfully.
|
| Parameters : device - device number
|
| Return : DRV_OK - Function successful
| DRV_INVALID_PARAMS - The specified device does not exist
| DRV_INTERNAL_ERROR - Internal driver error
| DRV_NOTCONFIGURED - The device is not yet configured
| DRV_INPROCESS - The driver is busy flushing the buffer
|
+------------------------------------------------------------------------------
*/
extern U16 dio_flush(U32 device);
/*
+------------------------------------------------------------------------------
| Function : dio_get_capabilities
+------------------------------------------------------------------------------
| Description : This function is used to retrieve the capabilities of a device.
|
| Parameters : device - device number
| capabilities - Return: Pointer to the device capabilities
|
| Return : DRV_OK - Function successful
| DRV_INVALID_PARAMS - The specified device does not exist
| DRV_INTERNAL_ERROR - Internal driver error
|
+------------------------------------------------------------------------------
*/
extern U16 dio_get_capabilities(U32 device,
T_DIO_CAP ** capabilities);
/*
+------------------------------------------------------------------------------
| Function : dio_set_config
+------------------------------------------------------------------------------
| Description : This function is used to configure a device.
|
| Parameters : device - device number
| dcb - pointer to a device control block
|
| Return : DRV_OK - Function successful
| DRV_INVALID_PARAMS - parameter invalid or out of range
| DRV_INTERNAL_ERROR - Internal driver error
|
+------------------------------------------------------------------------------
*/
extern U16 dio_set_config(U32 device,
T_DIO_DCB * dcb);
/*
+------------------------------------------------------------------------------
| Function : dio_get_config
+------------------------------------------------------------------------------
| Description : This function reads the device configuration.
|
| Parameters : device - device number
| dcb - pointer to a device control block
|
| Return : DRV_OK - Function successful
| DRV_INVALID_PARAMS - The specified device does not exist or
| wrong Device Control Block provided.
| DRV_INTERNAL_ERROR - Internal driver error
| DRV_NOTCONFIGURED - The device is not yet configured
|
+------------------------------------------------------------------------------
*/
extern U16 dio_get_config(U32 device,
T_DIO_DCB * dcb);
/*
+------------------------------------------------------------------------------
| Function : dio_close_device
+------------------------------------------------------------------------------
| Description : This function is used to close a device.
|
| Parameters : device - device number
|
| Return : DRV_OK - Function successful
| DRV_INVALID_PARAMS - The specified device can not be closed yet
| DRV_INTERNAL_ERROR - Internal driver error
|
+------------------------------------------------------------------------------
*/
extern U16 dio_close_device(U32 device);
#endif /* __DIO_H__ */