adsi.c File Reference
`#include <inttypes.h>`
`#include <stdlib.h>`
`#include <stdio.h>`
`#include <string.h>`
`#include "spandsp/stdbool.h"`
`#include "floating_fudge.h"`
`#include <assert.h>`
`#include "spandsp/telephony.h"`
`#include "spandsp/fast_convert.h"`
`#include "spandsp/logging.h"`
`#include "spandsp/queue.h"`
`#include "spandsp/complex.h"`
`#include "spandsp/dds.h"`
`#include "spandsp/power_meter.h"`
`#include "spandsp/async.h"`
`#include "spandsp/crc.h"`
`#include "spandsp/fsk.h"`
`#include "spandsp/tone_detect.h"`
`#include "spandsp/tone_generate.h"`
`#include "spandsp/super_tone_rx.h"`
`#include "spandsp/dtmf.h"`
`#include "spandsp/adsi.h"`
`#include "spandsp/private/logging.h"`
`#include "spandsp/private/queue.h"`
`#include "spandsp/private/tone_generate.h"`
`#include "spandsp/private/async.h"`
`#include "spandsp/private/fsk.h"`
`#include "spandsp/private/dtmf.h"`
`#include "spandsp/private/adsi.h"`

## Macros

#define | BAUDOT_FIGURE_SHIFT 0x1B
#define | BAUDOT_LETTER_SHIFT 0x1F

## Enumerations

enum | { SOH = 0x01 , STX = 0x02 , ETX = 0x03 , DLE = 0x10 , SUB = 0x1A }

## Functions

int | adsi_rx (adsi_rx_state_t *s, const int16_t amp[], int len)
| Receive a chunk of ADSI audio.
logging_state_t * | adsi_rx_get_logging_state (adsi_rx_state_t *s)
| Get the logging context associated with an ADSI receive context.
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.
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_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.
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_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.
logging_state_t * | adsi_tx_get_logging_state (adsi_tx_state_t *s)
adsi_tx_state_t * | adsi_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.
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

## BAUDOT_FIGURE_SHIFT

#define BAUDOT_FIGURE_SHIFT 0x1B

The baudot code to shift from alpha to digits and symbols

## BAUDOT_LETTER_SHIFT

#define BAUDOT_LETTER_SHIFT 0x1F

The baudot code to shift from digits and symbols to alpha

## 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

  s | The ADSI transmit context.
  msg | The message buffer.
  len | The current length of the message.
  field_type | The type code for the new field.
  field_body | Pointer to the body of the new field.
  field_len | The 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

  s | The ADSI receive context.
  msg | The message buffer.
  msg_len | The length of the message.
  pos | Current position within the message. Set to -1 when starting a message.
  field_type | The type code for the field.
  field_body | Pointer to the body of the field.
  field_len | The 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

  s | The ADSI receive context.
  amp | The audio sample buffer.
  len | The 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

  s | The 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

  s | The 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

  s | The ADSI receive context.
  standard | The code for the ADSI standard to be used.
  put_msg | A callback routine called to deliver the received messages to the application.
  user_data | An 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

  s | The 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

  standard | The 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

  s | The ADSI transmit context.
  amp | The audio sample buffer.
  max_len | The 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

  s | The 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

  s | The ADSI transmit context.
  standard | The 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

  s | The ADSI transmit context.
  msg | The message.
  len | The 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

  s | The 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

  s | The 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

  s | The ADSI transmit context.
  preamble_len | The number of bits of preamble.
  preamble_ones_len | The number of bits of continuous one before a message.
  postamble_ones_len | The number of bits of continuous one after a message.
  stop_bits | The number of stop bits per character.

Referenced by adsi_tx_init().