Simplifying System IntegrationTM 73M1866B/73M1966B Infineon TAPI High-Level Driver User Guide July, 2010 Rev. 2.
73M1866B/73M1966B TAPI High-Level Driver User Guide UG_1x66B_021 © 2010 Teridian Semiconductor Corporation. All rights reserved. Teridian Semiconductor Corporation is a registered trademark of Teridian Semiconductor Corporation. Simplifying System Integration is a trademark of Teridian Semiconductor Corporation. Linux is a registered trademark of Linus Torvalds. Asterisk is a registered trademark of Digium, Inc. All other trademarks are the property of their respective owners.
UG_1x66B_021 73M1866B/73M1966B TAPI High-Level Driver User Guide Table of Contents 1 2 3 4 Introduction ................................................................................................................................... 5 1.1 Purpose and Scope ................................................................................................................. 5 1.2 Conventions Used in this Guide ...............................................................................................
73M1866B/73M1966B TAPI High-Level Driver User Guide UG_1x66B_021 Figures Figure 1: Driver Architecture .................................................................................................................... 5 Tables Table 1: Summary of IFX TAPI IOCTLs ................................................................................................... 8 Table 2: Summary of Types and Structure Definitions ............................................................................ 26 4 Rev.
UG_1x66B_021 73M1866B/73M1966B TAPI High-Level Driver User Guide 1 Introduction This document describes the functionalities of the 73M1866B/73M1966B TAPI Driver. This driver software is provided as part of the Infineon BSP package for Danube, Vinax and AR9 platforms. Its design and implementation is tightly integrated with Infineon TAPI architecture, therefore, its sole purpose is to be used in Infineon TAPI environment.
73M1866B/73M1966B TAPI High-Level Driver User Guide 1.2 UG_1x66B_021 Conventions Used in this Guide This document uses the following conventions: • • 1.3 Software code, IOCTL names and data types are presented in Courier font. A table with a blue header is a summary table. A table with a gray header is a detail table.
UG_1x66B_021 73M1866B/73M1966B TAPI High-Level Driver User Guide 2 Driver Service Interface The Driver Service provides the link between the FXO device and the user application. First, the driver must be loaded and bonded into the operating system environment before this service can be provided. Access to the driver is done via two file descriptors – the device and channel file descriptors.
73M1866B/73M1966B TAPI High-Level Driver User Guide UG_1x66B_021 3 IFX TAPI IOCTL Commands Description Once the driver is successfully opened the application can control the operation of the device and the FXO channel. The application in user space communicates with the driver via standard Linux driver interface IOCTL calls. The following sections describe the detail of each IOCTL command.
UG_1x66B_021 3.1 73M1866B/73M1966B TAPI High-Level Driver User Guide IFX_TAPI_CH_INIT Description Perform all 73M1x66 channel initialization. This includes initialize all default registers and country specific threshold parameters. #define IFX_TAPI_CH_INIT _IO(IFX_TAPI_IOC_MAGIC, 0x0F) Prototype int ioctl ( int chan_fd, int IFX_TAPI_CH_INIT, unsigned long param ); Parameters Data Type int Name chan_fd Description int IFX_TAPI_CH_INIT I/O control identifier for this operation.
73M1866B/73M1966B TAPI High-Level Driver User Guide 3.2 UG_1x66B_021 IFX_TAPI_PCM_IF_CFG_SET Description This ioctl configures the PCM interface. #define IFX_TAPI_PCM_IF_CFG_SET _IO(IFX_TAPI_IOC_MAGIC, 0x11) Prototype int ioctl ( int dev_fd, int IFX_TAPI_PCM_IF_CFG_SET, unsigned long param ); Parameters Data Type Name Description int dev_fd Device descriptor. int IFX_TAPI_PCM_IF_CFG_SET I/O control identifier for this operation.
UG_1x66B_021 3.3 73M1866B/73M1966B TAPI High-Level Driver User Guide IFX_TAPI_PCM_CFG_SET Description This ioctl configure the time slot for the PCM channel. #define IFX_TAPI_PCM_CFG_SET _IO(IFX_TAPI_IOC_MAGIC, 0x04) Prototype int ioctl ( int chan_fd, int IFX_TAPI_PCM_CFG_SET, unsigned long param ); Parameters Data Type Name Description int chan_fd Channel descriptor. int IFX_TAPI_PCM_CFG_SET I/O control identifier for this operation.
73M1866B/73M1966B TAPI High-Level Driver User Guide 3.5 UG_1x66B_021 IFX_TAPI_PCM_ACTIVATION_SET Description This service activates / deactivates the PCM time slots configured for this channel. #define IFX_TAPI_PCM_ACTIVATION_SET _IO(IFX_TAPI_IOC_MAGIC, 0x06) Prototype int ioctl ( int chan_fd, int IFX_TAPI_PCM_ACTIVATION_SET, unsigned long param ); Parameters Data Type int Name chan_fd Description int IFX_TAPI_PCM_ACTIVATION_SET I/O control identifier for this operation.
UG_1x66B_021 3.6 73M1866B/73M1966B TAPI High-Level Driver User Guide IFX_TAPI_PCM_ACTIVATION_GET Description This service gets the activation status of the PCM time slots configured for this channel. #define IFX_TAPI_PCM_ACTIVATION_GET _IO(IFX_TAPI_IOC_MAGIC, 0x07) Prototype int ioctl ( int chan_fd, int IFX_TAPI_PCM_ACTIVATION_GET, unsigned long param ); Parameters Data Type Name Description int chan_fd Channel descriptor.
73M1866B/73M1966B TAPI High-Level Driver User Guide 3.7 UG_1x66B_021 IFX_TAPI_EVENT_ENABLE Description Enable detection of FXO events. #define IFX_TAPI_EVENT_ENABLE _IO(IFX_TAPI_IOC_MAGIC, 0xC1) Prototype int ioctl ( int chan_fd, int IFX_TAPI_EVENT_ENABLE, unsigned long param ); Parameters Data Type Name Description int chan_fd Channel descriptor. int IFX_TAPI_EVENT_ENABLE I/O control identifier for this operation. unsigned long param N/A.
UG_1x66B_021 3.9 73M1866B/73M1966B TAPI High-Level Driver User Guide IFX_TAPI_EVENT_GET Description Read FXO event from the driver. #define IFX_TAPI_EVENT_GET _IO(IFX_TAPI_IOC_MAGIC, 0xC0) Prototype int ioctl ( int dev_fd, int IFX_TAPI_EVENT_GET, unsigned long param ); Parameters Data Type int Name dev_fd Description int IFX_TAPI_EVENT_GET I/O control identifier for this operation. unsigned long param Pointer to an IFX_TAPI_EVENT_t structure. Device descriptor.
73M1866B/73M1966B TAPI High-Level Driver User Guide UG_1x66B_021 3.11 IFX_TAPI_DEBUG_REPORT_SET Description Set the driver trace mask to enable or disable run-time trace messages. Multiple trace masks can #define IFX_TAPI_DEBUG_REPORT_SET _IO(IFX_TAPI_IOC_MAGIC, 0x12) Prototype int ioctl ( int dev_fd, int IFX_TAPI_DEBUG_REPORT_SET, unsigned long param ); Parameters Data Type Name Description int dev_fd Device descriptor.
UG_1x66B_021 73M1866B/73M1966B TAPI High-Level Driver User Guide 3.12 IFX_TAPI_LINE_TYPE_SET Description This service configures the line type. Please note that this command only accept FXO line type (IFX_TAPI_LINE_TYPE_FXO). #define IFX_TAPI_LINE_TYPE_SET _IOW(IFX_TAPI_IOC_MAGIC, 0x47, int) Prototype int ioctl ( int chan_fd, int IFX_TAPI_LINE_TYPE_SET, unsigned long param ); Parameters Data Type Name Description int chan_fd Channel descriptor.
73M1866B/73M1966B TAPI High-Level Driver User Guide UG_1x66B_021 3.13 IFX_TAPI_PHONE_VOLUME_SET Description Sets the speaker phone and microphone volume settings. #define IFX_TAPI_PHONE_VOLUME_SET _IOW(IFX_TAPI_IOC_MAGIC, 0x42, int) Prototype int ioctl ( int chan_fd, int IFX_TAPI_PHONE_VOLUME_SET, unsigned long param ); Parameters Data Type int Name chan_fd Description int IFX_TAPI_PHONE_VOLUME_SET I/O control identifier for this operation.
UG_1x66B_021 73M1866B/73M1966B TAPI High-Level Driver User Guide 3.15 IFX_TAPI_FXO_FLASH_SET Description Issues flash-hook in the FXO interface. #define IFX_TAPI_FXO_FLASH_SET _IOW(IFX_TAPI_IOC_MAGIC, 0xDC, int) Prototype int ioctl ( int chan_fd, int IFX_TAPI_FXO_FLASH_SET, unsigned long param ); Parameters Data Type int Name chan_fd Description int IFX_TAPI_FXO_FLASH_SET I/O control identifier for this operation. unsigned long param Parameter is not required. Channel descriptor.
73M1866B/73M1966B TAPI High-Level Driver User Guide UG_1x66B_021 3.17 IFX_TAPI_FXO_BAT_ GET Description Receives battery status from the FXO interface. #define IFX_TAPI_FXO_BAT_GET _IOW(IFX_TAPI_IOC_MAGIC, 0xDD, int) Prototype int ioctl ( int chan_fd, int IFX_TAPI_FXO_BAT_GET, unsigned long param ); Parameters Data Type int Name chan_fd Description int IFX_TAPI_FXO_BAT_GET I/O control identifier for this operation.
UG_1x66B_021 73M1866B/73M1966B TAPI High-Level Driver User Guide 3.18 IFX_TAPI_FXO_APOH_ GET Description Retrieves APOH (another phone off-hook) status of the fxo interface. #define IFX_TAPI_FXO_APOH_GET _IOW(IFX_TAPI_IOC_MAGIC, 0xDF, int) Prototype int ioctl ( int chan_fd, int IFX_TAPI_FXO_APOH_GET, unsigned long param ); Parameters Data Type Name Description int chan_fd Channel descriptor. int IFX_TAPI_FXO_APOH_GET I/O control identifier for this operation.
73M1866B/73M1966B TAPI High-Level Driver User Guide UG_1x66B_021 3.19 IFX_TAPI_FXO_RING_ GET Description Receives ring status from the FXO interface. #define IFX_TAPI_FXO_RING_GET _IOW(IFX_TAPI_IOC_MAGIC, 0xE0, int) Prototype int ioctl ( int chan_fd, int IFX_TAPI_FXO_RING_GET, unsigned long param ); Parameters Data Type int Name chan_fd Description int IFX_TAPI_FXO_RING_GET I/O control identifier for this operation.
UG_1x66B_021 73M1866B/73M1966B TAPI High-Level Driver User Guide 3.20 IFX_TAPI_FXO_POLARITY_ GET Description Receives line polarity status from the FXO interface. #define IFX_TAPI_FXO_POLARITY_GET _IOW(IFX_TAPI_IOC_MAGIC, 0xE1, int) Prototype int ioctl ( int chan_fd, int IFX_TAPI_FXO_POLARITY_GET, unsigned long param ); Parameters Data Type Name Description int chan_fd Channel descriptor. int IFX_TAPI_FXO_POLARITY_GET I/O control identifier for this operation.
73M1866B/73M1966B TAPI High-Level Driver User Guide UG_1x66B_021 3.21 IFX_TAPI_LASTERR Description This service returns the last error code occurred in the TAPI driver or the low level driver. #define IFX_TAPI_LASTERR _IOW(IFX_TAPI_IOC_MAGIC, 0x48, int) Prototype int ioctl ( int dev_fd, int IFX_TAPI_LASTERR, unsigned long param ); Parameters Data Type int Name dev_fd Description int IFX_TAPI_LASTERR I/O control identifier for this operation.
UG_1x66B_021 73M1866B/73M1966B TAPI High-Level Driver User Guide 3.22 IFX_TAPI_FXO_LINE_MODE_SET Description This service is used to manage (enable/disable) the FXO channel. When disabled, the FXO channel is inoperative and it does not monitor the physical line for channel events, nor will it detect any incoming ring signal. However, it can be put back in operation using this ioctl with the “enable” parameter.
73M1866B/73M1966B TAPI High-Level Driver User Guide UG_1x66B_021 4 Type and Structure Definitions This section describes the type definitions, data types and structures used in the 73M1x66B TAPI driver. Table 2: Summary of Types and Structure Definitions Structure/Type Name IFX_TAPI_CH_INIT_t Description IFX_TAPI_PCM_IF_CFG_t PCM interface configuration structure used by IFX_TAPI_PCM_IF_CFG_SET. IFX_TAPI_PCM_ CFG_t Structure for PCM channel configuration.
UG_1x66B_021 4.2 73M1866B/73M1966B TAPI High-Level Driver User Guide IFX_TAPI_PCM_IF_CFG_t Description Structure for PCM interface configuration used by IFX_TAPI_PCM_IF_CFG_SET.
73M1866B/73M1966B TAPI High-Level Driver User Guide 4.3 UG_1x66B_021 IFX_TAPI_PCM_ CFG_t Description Structure for PCM channel configuration. Prototype typedef struct { unsigned long nTimeslotRX; unsigned long nTimeslotTX; unsigned long nHighway; unsigned long nResolution; } IFX_TAPI_PCM_CFG_t; Parameters Data Type Name Description unsigned long nTimeslotRX PCM timeslot for the receive direction. unsigned long nTimeslotTX PCM timeslot for the transmit direction.
UG_1x66B_021 4.5 73M1866B/73M1966B TAPI High-Level Driver User Guide IFX_TAPI_LINE_TYPE_CFG_t Description Line type configuration used by ioctl IFX_TAPI_LINE_TYPE_SET. Prototype typedef struct { IFX_TAPI_LINE_TYPE_t lineType; IFX_uint8_t nDaaCh; } IFX_TAPI_LINE_TYPE_CFG_t; Data Type Name Description IFX_TAPI_LINE_TYPE_t lineType Must be IFX_TAPI_LINE_TYPE_FXO. IFX_uint8_t nDaaCh N/A 4.
73M1866B/73M1966B TAPI High-Level Driver User Guide 4.7 UG_1x66B_021 IFX_TAPI_LINE_VOLUME_t Description Structure used to configure phone volume settings. Prototype typedef struct { int nGainRx; int nGainTx; } IFX_TAPI_LINE_VOLUME_t; Data Type Name Description int nGainRx Volume setting for the receiving path. int nGainTx Volume setting for the transmitting path. 4.8 IFX_TAPI_FXO_HOOK_t Description Defines the possible hook status for fxo, used in IFX_TAPI_FXO_HOOK_SET.
UG_1x66B_021 73M1866B/73M1966B TAPI High-Level Driver User Guide 4.10 IFX_TAPI_EVENT_ID_t Description List of event IDs. These are the #define macros of the FXO event identification.
73M1866B/73M1966B TAPI High-Level Driver User Guide UG_1x66B_021 4.12 M1966_CNTRY_CODE_XX Description Country code macros used by ioctl IFX_TAPI_CH_INIT.
UG_1x66B_021 #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define Rev. 2.
73M1866B/73M1966B TAPI High-Level Driver User Guide UG_1x66B_021 5 Related Documentation The following 73M1x66B documents are available from Teridian Semiconductor Corporation: 73M1866B/73M1966B Reference Driver User Manual 73M1866B/73M1966B Data Sheet 73M1866B/73M1966B Demo Board User Manual 73M1866B/73M1966B GUI User Guide 73M1866B/73M1966B Layout Guidelines 73M1x66 Worldwide Design Guide TAPI V3 User’s Manual (available from Infineon) 6 Contact Information For more information about Teridian Semicondu
UG_1x66B_021 73M1866B/73M1966B TAPI High-Level Driver User Guide Revision History Revision Date 1.0 10/28/2008 First publication. 2.0 3/20/2009 Provided detail IOCTL interface. Removed redundant implementation description (those should be referred to the 73M1866B/73M1966B Reference Driver User Guide). Restructured document to conform to Teridian standard format. 2.2 7/16/2010 Added FXO line enable/disable IOCTLs. Rev. 2.