spandsp 0.0.6
adsi.h File Reference

Go to the source code of this file.

Macros

#define MCLASS_VISUAL_INDICATOR   0x0B
#define JCLIP_MDMF_CALLERID   0x40
#define CLIP_DTMF_HASH_TERMINATED   '#'
#define CLIP_DTMF_C_TERMINATED   'C'
#define CLIP_DTMF_HASH_CALLER_NUMBER   'A'
#define CLIP_DTMF_HASH_ABSENCE   'D'
#define CLIP_DTMF_HASH_UNSPECIFIED   0
#define CLIP_DTMF_C_CALLER_NUMBER   'A'
#define CLIP_DTMF_C_REDIRECT_NUMBER   'D'
#define CLIP_DTMF_C_ABSENCE   'B'

Typedefs

typedef struct adsi_tx_state_s adsi_tx_state_t
typedef struct adsi_rx_state_s adsi_rx_state_t

Enumerations

enum  {
  ADSI_STANDARD_NONE = 0 , ADSI_STANDARD_CLASS = 1 , ADSI_STANDARD_CLIP = 2 , ADSI_STANDARD_ACLIP = 3 ,
  ADSI_STANDARD_JCLIP = 4 , ADSI_STANDARD_CLIP_DTMF = 5 , ADSI_STANDARD_TDD = 6
}
enum  { CLASS_SDMF_CALLERID = 0x04 , CLASS_MDMF_CALLERID = 0x80 , CLASS_SDMF_MSG_WAITING = 0x06 , CLASS_MDMF_MSG_WAITING = 0x82 }
enum  {
  MCLASS_DATETIME = 0x01 , MCLASS_CALLER_NUMBER = 0x02 , MCLASS_DIALED_NUMBER = 0x03 , MCLASS_ABSENCE1 = 0x04 ,
  MCLASS_REDIRECT = 0x05 , MCLASS_QUALIFIER = 0x06 , MCLASS_CALLER_NAME = 0x07 , MCLASS_ABSENCE2 = 0x08 ,
  MCLASS_ALT_ROUTE = 0x09
}
enum  { CLIP_MDMF_CALLERID = 0x80 , CLIP_MDMF_MSG_WAITING = 0x82 , CLIP_MDMF_CHARGE_INFO = 0x86 , CLIP_MDMF_SMS = 0x89 }
enum  {
  CLIP_DATETIME = 0x01 , CLIP_CALLER_NUMBER = 0x02 , CLIP_DIALED_NUMBER = 0x03 , CLIP_ABSENCE1 = 0x04 ,
  CLIP_CALLER_NAME = 0x07 , CLIP_ABSENCE2 = 0x08 , CLIP_VISUAL_INDICATOR = 0x0B , CLIP_MESSAGE_ID = 0x0D ,
  CLIP_COMPLEMENTARY_CALLER_NUMBER = 0x10 , CLIP_CALLTYPE = 0x11 , CLIP_NUM_MSG = 0x13 , CLIP_TYPE_OF_FORWARDED_CALL = 0x15 ,
  CLIP_TYPE_OF_CALLING_USER = 0x16 , CLIP_REDIR_NUMBER = 0x1A , CLIP_CHARGE = 0x20 , CLIP_DURATION = 0x23 ,
  CLIP_ADD_CHARGE = 0x21 , CLIP_DISPLAY_INFO = 0x50 , CLIP_SERVICE_INFO = 0x55
}
enum  { ACLIP_SDMF_CALLERID = 0x04 , ACLIP_MDMF_CALLERID = 0x80 }
enum  {
  ACLIP_DATETIME = 0x01 , ACLIP_CALLER_NUMBER = 0x02 , ACLIP_DIALED_NUMBER = 0x03 , ACLIP_NUMBER_ABSENCE = 0x04 ,
  ACLIP_REDIRECT = 0x05 , ACLIP_QUALIFIER = 0x06 , ACLIP_CALLER_NAME = 0x07 , ACLIP_NAME_ABSENCE = 0x08
}
enum  {
  JCLIP_CALLER_NUMBER = 0x02 , JCLIP_CALLER_NUM_DES = 0x21 , JCLIP_DIALED_NUMBER = 0x09 , JCLIP_DIALED_NUM_DES = 0x22 ,
  JCLIP_ABSENCE = 0x04
}

Functions

logging_state_tadsi_rx_get_logging_state (adsi_rx_state_t *s)
 Get the logging context associated with an ADSI receive context.
adsi_rx_state_tadsi_rx_init (adsi_rx_state_t *s, int standard, put_msg_func_t put_msg, void *user_data)
 Initialise an ADSI receive context.
int adsi_rx_release (adsi_rx_state_t *s)
 Release an ADSI receive context.
int adsi_rx_free (adsi_rx_state_t *s)
 Free the resources of an ADSI receive context.
int adsi_rx (adsi_rx_state_t *s, const int16_t amp[], int len)
 Receive a chunk of ADSI audio.
adsi_tx_state_tadsi_tx_init (adsi_tx_state_t *s, int standard)
 Initialise an ADSI transmit context.
int adsi_tx_release (adsi_tx_state_t *s)
 Release an ADSI transmit context.
int adsi_tx_free (adsi_tx_state_t *s)
 Free the resources of an ADSI transmit context.
void adsi_tx_set_preamble (adsi_tx_state_t *s, int preamble_len, int preamble_ones_len, int postamble_ones_len, int stop_bits)
 Adjust the preamble associated with an ADSI transmit context.
int adsi_tx (adsi_tx_state_t *s, int16_t amp[], int max_len)
 Generate a block of ADSI audio samples.
void adsi_tx_send_alert_tone (adsi_tx_state_t *s)
 Request generation of an ADSI alert tone.
int adsi_tx_put_message (adsi_tx_state_t *s, const uint8_t *msg, int len)
 Put a message into the input buffer of an ADSI transmit context.
int adsi_next_field (adsi_rx_state_t *s, const uint8_t *msg, int msg_len, int pos, uint8_t *field_type, uint8_t const **field_body, int *field_len)
 Get a field from an ADSI message.
int adsi_add_field (adsi_tx_state_t *s, uint8_t *msg, int len, uint8_t field_type, uint8_t const *field_body, int field_len)
 Insert the header or a field into an ADSI message.
const char * adsi_standard_to_str (int standard)
 Return a short name for an ADSI standard.

Macro Definition Documentation

◆ CLIP_DTMF_C_ABSENCE

#define CLIP_DTMF_C_ABSENCE   'B'

Caller number absent: private/restricted (00) or not available (10)

◆ CLIP_DTMF_C_CALLER_NUMBER

#define CLIP_DTMF_C_CALLER_NUMBER   'A'

Caller number

◆ CLIP_DTMF_C_REDIRECT_NUMBER

#define CLIP_DTMF_C_REDIRECT_NUMBER   'D'

Diverting number

◆ CLIP_DTMF_C_TERMINATED

#define CLIP_DTMF_C_TERMINATED   'C'

Caller number is 'C' terminated DTMF.

◆ CLIP_DTMF_HASH_ABSENCE

#define CLIP_DTMF_HASH_ABSENCE   'D'

Caller number absent: private (1), overseas (2) or not available (3)

◆ CLIP_DTMF_HASH_CALLER_NUMBER

#define CLIP_DTMF_HASH_CALLER_NUMBER   'A'

Caller number

◆ CLIP_DTMF_HASH_TERMINATED

#define CLIP_DTMF_HASH_TERMINATED   '#'

Caller number is '#' terminated DTMF.

◆ CLIP_DTMF_HASH_UNSPECIFIED

#define CLIP_DTMF_HASH_UNSPECIFIED   0

Caller ID field with no explicit field type

Referenced by adsi_add_field(), and adsi_next_field().

◆ JCLIP_MDMF_CALLERID

#define JCLIP_MDMF_CALLERID   0x40

Definitions for J-CLIP (Japan Calling Line Identity Presentation)

Multiple data message caller ID frame

◆ MCLASS_VISUAL_INDICATOR

#define MCLASS_VISUAL_INDICATOR   0x0B

CLASS MDMF message waiting message IDs

Message waiting/not waiting

Typedef Documentation

◆ adsi_rx_state_t

ADSI receiver descriptor. This contains all the state information for an ADSI (caller ID, CLASS, CLIP, ACLIP, JCLIP) receive channel.

◆ adsi_tx_state_t

ADSI transmitter descriptor. This contains all the state information for an ADSI (caller ID, CLASS, CLIP, ACLIP) transmit channel.

Enumeration Type Documentation

◆ anonymous enum

anonymous enum

CLIP message IDs (from ETS 300 659-1)

Enumerator
CLIP_DATETIME 

Date and time (MMDDHHMM)

CLIP_CALLER_NUMBER 

Caller number (AKA calling line identity)

CLIP_DIALED_NUMBER 

Dialed number (AKA called line identity)

CLIP_ABSENCE1 

Caller number absent: 'O' or 'P' (AKA reason for absence of calling line identity)

CLIP_CALLER_NAME 

Caller's name (AKA calling party name)

CLIP_ABSENCE2 

Caller's name absent: 'O' or 'P' (AKA reason for absence of calling party name)

CLIP_VISUAL_INDICATOR 

Visual indicator

CLIP_MESSAGE_ID 

Message ID

CLIP_COMPLEMENTARY_CALLER_NUMBER 

Complementary calling line identity

CLIP_CALLTYPE 

Call type - voice call (1), ring-back-when-free call (2), calling name delivery (3) or msg waiting call(0x81)

CLIP_NUM_MSG 

Number of messages

CLIP_TYPE_OF_FORWARDED_CALL 

Type of forwarded call

CLIP_TYPE_OF_CALLING_USER 

Type of calling user

CLIP_REDIR_NUMBER 

Redirecting number

CLIP_CHARGE 

Charge

CLIP_DURATION 

Duration of the call

CLIP_ADD_CHARGE 

Additional charge

CLIP_DISPLAY_INFO 

Display information

CLIP_SERVICE_INFO 

Service information

◆ anonymous enum

anonymous enum

A-CLIP MDM message IDs

Enumerator
ACLIP_DATETIME 

Date and time (MMDDHHMM)

ACLIP_CALLER_NUMBER 

Caller number

ACLIP_DIALED_NUMBER 

Dialed number

ACLIP_NUMBER_ABSENCE 

Caller number absent: 'O' or 'P'

ACLIP_REDIRECT 

Call forward: universal, on busy, or on unanswered

ACLIP_QUALIFIER 

Long distance call: 'L'

ACLIP_CALLER_NAME 

Caller's name

ACLIP_NAME_ABSENCE 

Caller's name absent: 'O' or 'P'

◆ anonymous enum

anonymous enum

Definitions for CLIP (Calling Line Identity Presentation) (from ETS 300 659-1)

Enumerator
CLIP_MDMF_CALLERID 

Multiple data message caller ID

CLIP_MDMF_MSG_WAITING 

Multiple data message message waiting

CLIP_MDMF_CHARGE_INFO 

Multiple data message charge information

CLIP_MDMF_SMS 

Multiple data message SMS

◆ anonymous enum

anonymous enum

J-CLIP MDM message IDs

Enumerator
JCLIP_CALLER_NUMBER 

Caller number

JCLIP_CALLER_NUM_DES 

Caller number data extension signal

JCLIP_DIALED_NUMBER 

Dialed number

JCLIP_DIALED_NUM_DES 

Dialed number data extension signal

JCLIP_ABSENCE 

Caller number absent: 'C', 'O', 'P' or 'S'

◆ anonymous enum

anonymous enum

Definitions for CLASS (Custom Local Area Signaling Services)

Enumerator
CLASS_SDMF_CALLERID 

Single data message caller ID

CLASS_MDMF_CALLERID 

Multiple data message caller ID

CLASS_SDMF_MSG_WAITING 

Single data message message waiting

CLASS_MDMF_MSG_WAITING 

Multiple data message message waiting

◆ anonymous enum

anonymous enum

CLASS MDMF message IDs

Enumerator
MCLASS_DATETIME 

Date and time (MMDDHHMM)

MCLASS_CALLER_NUMBER 

Caller number

MCLASS_DIALED_NUMBER 

Dialed number

MCLASS_ABSENCE1 

Caller number absent: 'O' or 'P'

MCLASS_REDIRECT 

Call forward: universal ('0'), on busy ('1'), or on unanswered ('2')

MCLASS_QUALIFIER 

Long distance: 'L'

MCLASS_CALLER_NAME 

Caller's name

MCLASS_ABSENCE2 

Caller's name absent: 'O' or 'P'

MCLASS_ALT_ROUTE 

Alternate route

◆ anonymous enum

anonymous enum

Definitions for A-CLIP (Analog Calling Line Identity Presentation)

Enumerator
ACLIP_SDMF_CALLERID 

Single data message caller ID frame

ACLIP_MDMF_CALLERID 

Multiple data message caller ID frame

Function Documentation

◆ adsi_add_field()

int adsi_add_field ( adsi_tx_state_t * s,
uint8_t * msg,
int len,
uint8_t field_type,
uint8_t const * field_body,
int field_len )

Insert the header or a field into an ADSI message.

Parameters
sThe ADSI transmit context.
msgThe message buffer.
lenThe current length of the message.
field_typeThe type code for the new field.
field_bodyPointer to the body of the new field.
field_lenThe length of the new field.

References CLIP_DTMF_HASH_UNSPECIFIED.

◆ adsi_next_field()

int adsi_next_field ( adsi_rx_state_t * s,
const uint8_t * msg,
int msg_len,
int pos,
uint8_t * field_type,
uint8_t const ** field_body,
int * field_len )

Get a field from an ADSI message.

Parameters
sThe ADSI receive context.
msgThe message buffer.
msg_lenThe length of the message.
posCurrent position within the message. Set to -1 when starting a message.
field_typeThe type code for the field.
field_bodyPointer to the body of the field.
field_lenThe length of the field, or -1 for no more fields, or -2 for message structure corrupt.

References CLIP_DTMF_HASH_UNSPECIFIED.

◆ adsi_rx()

int adsi_rx ( adsi_rx_state_t * s,
const int16_t amp[],
int len )

Receive a chunk of ADSI audio.

Parameters
sThe ADSI receive context.
ampThe audio sample buffer.
lenThe number of samples in the buffer.
Returns
The number of samples unprocessed.

References dtmf_rx().

◆ adsi_rx_free()

int adsi_rx_free ( adsi_rx_state_t * s)

Free the resources of an ADSI receive context.

Parameters
sThe ADSI receive context.
Returns
0 for OK.

◆ adsi_rx_get_logging_state()

logging_state_t * adsi_rx_get_logging_state ( adsi_rx_state_t * s)

Get the logging context associated with an ADSI receive context.

Get the logging context associated with an ADSI receive context.

Parameters
sThe ADSI receive context.
Returns
A pointer to the logging context

◆ adsi_rx_init()

adsi_rx_state_t * adsi_rx_init ( adsi_rx_state_t * s,
int standard,
put_msg_func_t put_msg,
void * user_data )

Initialise an ADSI receive context.

Parameters
sThe ADSI receive context.
standardThe code for the ADSI standard to be used.
put_msgA callback routine called to deliver the received messages to the application.
user_dataAn opaque pointer for the callback routine.
Returns
A pointer to the initialised context, or NULL if there was a problem.

References dtmf_rx_init(), and fsk_rx_init().

◆ adsi_rx_release()

int adsi_rx_release ( adsi_rx_state_t * s)

Release an ADSI receive context.

Parameters
sThe ADSI receive context.
Returns
0 for OK.

◆ adsi_standard_to_str()

const char * adsi_standard_to_str ( int standard)

Return a short name for an ADSI standard.

Parameters
standardThe code for the standard.
Returns
A pointer to the name.

◆ adsi_tx()

int adsi_tx ( adsi_tx_state_t * s,
int16_t amp[],
int max_len )

Generate a block of ADSI audio samples.

Parameters
sThe ADSI transmit context.
ampThe audio sample buffer.
max_lenThe number of samples to be generated.
Returns
The number of samples actually generated.

References dtmf_tx().

◆ adsi_tx_free()

int adsi_tx_free ( adsi_tx_state_t * s)

Free the resources of an ADSI transmit context.

Parameters
sThe ADSI transmit context.
Returns
0 for OK.

◆ adsi_tx_init()

adsi_tx_state_t * adsi_tx_init ( adsi_tx_state_t * s,
int standard )

Initialise an ADSI transmit context.

Parameters
sThe ADSI transmit context.
standardThe code for the ADSI standard to be used.
Returns
A pointer to the initialised context, or NULL if there was a problem.

References adsi_tx_set_preamble(), and tone_gen_descriptor_init().

◆ adsi_tx_put_message()

int adsi_tx_put_message ( adsi_tx_state_t * s,
const uint8_t * msg,
int len )

Put a message into the input buffer of an ADSI transmit context.

Parameters
sThe ADSI transmit context.
msgThe message.
lenThe length of the message.
Returns
The length actually added. If a message is already in progress in the transmitter, this function will return zero, as it will not successfully add the message to the buffer. If the message is invalid (e.g. it is too long), this function will return -1.

References crc_itu16_calc(), and dtmf_tx_put().

◆ adsi_tx_release()

int adsi_tx_release ( adsi_tx_state_t * s)

Release an ADSI transmit context.

Parameters
sThe ADSI transmit context.
Returns
0 for OK.

◆ adsi_tx_send_alert_tone()

void adsi_tx_send_alert_tone ( adsi_tx_state_t * s)

Request generation of an ADSI alert tone.

Parameters
sThe ADSI transmit context.

◆ adsi_tx_set_preamble()

void adsi_tx_set_preamble ( adsi_tx_state_t * s,
int preamble_len,
int preamble_ones_len,
int postamble_ones_len,
int stop_bits )

Adjust the preamble associated with an ADSI transmit context.

Parameters
sThe ADSI transmit context.
preamble_lenThe number of bits of preamble.
preamble_ones_lenThe number of bits of continuous one before a message.
postamble_ones_lenThe number of bits of continuous one after a message.
stop_bitsThe number of stop bits per character.

Referenced by adsi_tx_init().