async.h File Reference

Go to the source code of this file.

## Macros

#define | modem_rx_status_func_t modem_status_func_t
#define | modem_tx_status_func_t modem_status_func_t

## Typedefs

typedef void(* | put_msg_func_t) (void *user_data, const uint8_t *msg, int len)
typedef int(* | get_msg_func_t) (void *user_data, uint8_t *msg, int max_len)
typedef void(* | put_byte_func_t) (void *user_data, int byte)
typedef int(* | get_byte_func_t) (void *user_data)
typedef void(* | put_bit_func_t) (void *user_data, int bit)
typedef int(* | get_bit_func_t) (void *user_data)
typedef void(* | modem_status_func_t) (void *user_data, int status)
typedef struct async_tx_state_s | async_tx_state_t
typedef struct async_rx_state_s | async_rx_state_t

## Enumerations

enum

{
SIG_STATUS_CARRIER_DOWN = -1 , SIG_STATUS_CARRIER_UP = -2 , SIG_STATUS_TRAINING_IN_PROGRESS = -3 , SIG_STATUS_TRAINING_SUCCEEDED = -4 ,
SIG_STATUS_TRAINING_FAILED = -5 , SIG_STATUS_FRAMING_OK = -6 , SIG_STATUS_END_OF_DATA = -7 , SIG_STATUS_ABORT = -8 ,
SIG_STATUS_BREAK = -9 , SIG_STATUS_SHUTDOWN_COMPLETE = -10 , SIG_STATUS_OCTET_REPORT = -11 , SIG_STATUS_POOR_SIGNAL_QUALITY = -12 ,
SIG_STATUS_MODEM_RETRAIN_OCCURRED = -13 , SIG_STATUS_LINK_CONNECTED = -14 , SIG_STATUS_LINK_DISCONNECTED = -15 , SIG_STATUS_LINK_ERROR = -16
}

enum | { ASYNC_PARITY_NONE = 0 , ASYNC_PARITY_EVEN , ASYNC_PARITY_ODD }

## Functions

const char * | signal_status_to_str (int status)
| Convert a signal status to a short text description.
async_tx_state_t * | async_tx_init (async_tx_state_t *s, int data_bits, int parity_bits, int stop_bits, int use_v14, get_byte_func_t get_byte, void *user_data)
| Initialise an asynchronous data transmit context.
int | async_tx_release (async_tx_state_t *s)
int | async_tx_free (async_tx_state_t *s)
| SPAN_DECLARE_NONSTD (int) async_tx_get_bit(void *user_data)
| Get the next bit of a transmitted serial bit stream.
async_rx_state_t * | async_rx_init (async_rx_state_t *s, int data_bits, int parity_bits, int stop_bits, int use_v14, put_byte_func_t put_byte, void *user_data)
| Initialise an asynchronous data receiver context.
int | async_rx_release (async_rx_state_t *s)
int | async_rx_free (async_rx_state_t *s)
| SPAN_DECLARE_NONSTD (void) async_rx_put_bit(void *user_data
| Accept a bit from a received serial bit stream.

## Variables

int | bit

## Typedef Documentation

## async_rx_state_t

typedef struct async_rx_state_s async_rx_state_t

Asynchronous data receive descriptor. This defines the state of a single working instance of an asynchronous serial to byte converter, for use in FSK modems.

## async_tx_state_t

typedef struct async_tx_state_s async_tx_state_t

Asynchronous data transmit descriptor. This defines the state of a single working instance of a byte to asynchronous serial converter, for use in FSK modems.

## get_bit_func_t

typedef int(* get_bit_func_t) (void *user_data)

Bit get function for data pumps

## get_byte_func_t

typedef int(* get_byte_func_t) (void *user_data)

Byte get function for data pumps

## get_msg_func_t

typedef int(* get_msg_func_t) (void *user_data, uint8_t *msg, int max_len)

Message get function for data pumps

## modem_status_func_t

typedef void(* modem_status_func_t) (void *user_data, int status)

Status change callback function for data pumps

## put_bit_func_t

typedef void(* put_bit_func_t) (void *user_data, int bit)

Bit put function for data pumps

## put_byte_func_t

typedef void(* put_byte_func_t) (void *user_data, int byte)

Byte put function for data pumps

## put_msg_func_t

typedef void(* put_msg_func_t) (void *user_data, const uint8_t *msg, int len)

Message put function for data pumps

## Enumeration Type Documentation

## anonymous enum

anonymous enum

Enumerator
ASYNC_PARITY_NONE | No parity bit should be used
ASYNC_PARITY_EVEN | An even parity bit will exist, after the data bits
ASYNC_PARITY_ODD | An odd parity bit will exist, after the data bits

## anonymous enum

anonymous enum

Special "bit" values for the bitstream put and get functions, and the signal status functions.

Enumerator
SIG_STATUS_CARRIER_DOWN | The carrier signal has dropped.
SIG_STATUS_CARRIER_UP | The carrier signal is up. This merely indicates that carrier energy has been seen. It is not an indication that the carrier is either valid, or of the expected type.
SIG_STATUS_TRAINING_IN_PROGRESS | The modem is training. This is an early indication that the signal seems to be of the right type. This may be needed in time critical applications, like T.38, to forward an early indication of what is happening on the wire.
SIG_STATUS_TRAINING_SUCCEEDED | The modem has trained, and is ready for data exchange.
SIG_STATUS_TRAINING_FAILED | The modem has failed to train.
SIG_STATUS_FRAMING_OK | Packet framing (e.g. HDLC framing) is OK.
SIG_STATUS_END_OF_DATA | The data stream has ended.
SIG_STATUS_ABORT | An abort signal (e.g. an HDLC abort) has been received.
SIG_STATUS_BREAK | A break signal (e.g. an async break) has been received.
SIG_STATUS_SHUTDOWN_COMPLETE | A modem has completed its task, and shut down.
SIG_STATUS_OCTET_REPORT | Regular octet report for things like HDLC to the MTP standards.
SIG_STATUS_POOR_SIGNAL_QUALITY | Notification that a modem has detected signal quality degradation.
SIG_STATUS_MODEM_RETRAIN_OCCURRED | Notification that a modem retrain has occurred.
SIG_STATUS_LINK_CONNECTED | The link protocol (e.g. V.42) has connected.
SIG_STATUS_LINK_DISCONNECTED | The link protocol (e.g. V.42) has disconnected.
SIG_STATUS_LINK_ERROR | An error has occurred in the link protocol (e.g. V.42).

## Function Documentation

## async_rx_init()

async_rx_state_t * async_rx_init | ( | async_rx_state_t * | s,
|  | int | data_bits,
|  | int | parity_bits,
|  | int | stop_bits,
|  | int | use_v14,
|  | put_byte_func_t | put_byte,
|  | void * | user_data )

Initialise an asynchronous data receiver context.

Initialise an asynchronous data receiver context.

Parameters

  s | The receiver context.
  data_bits | The number of data bits.
  parity_bits | The type of parity.
  stop_bits | The number of stop bits.
  use_v14 | TRUE if V.14 rate adaption processing should be used.
  put_byte | The callback routine used to put the received data.
  user_data | An opaque pointer.

Returns
  A pointer to the initialised context, or NULL if there was a problem.

References async_rx_state_s::bitpos, async_rx_state_s::byte_in_progress, async_rx_state_s::data_bits, async_rx_state_s::framing_errors, async_rx_state_s::parity, async_rx_state_s::parity_bit, async_rx_state_s::parity_errors, async_rx_state_s::put_byte, async_rx_state_s::stop_bits, async_rx_state_s::use_v14, and async_rx_state_s::user_data.

## async_tx_init()

async_tx_state_t * async_tx_init | ( | async_tx_state_t * | s,
|  | int | data_bits,
|  | int | parity_bits,
|  | int | stop_bits,
|  | int | use_v14,
|  | get_byte_func_t | get_byte,
|  | void * | user_data )

Initialise an asynchronous data transmit context.

Initialise an asynchronous data transmit context.

Parameters

  s | The transmitter context.
  data_bits | The number of data bit.
  parity_bits | The type of parity.
  stop_bits | The number of stop bits.
  use_v14 | TRUE if V.14 rate adaption processing should be used.
  get_byte | The callback routine used to get the data to be transmitted.
  user_data | An opaque pointer.

Returns
  A pointer to the initialised context, or NULL if there was a problem.

References ASYNC_PARITY_NONE, async_tx_state_s::bitpos, async_tx_state_s::byte_in_progress, async_tx_state_s::data_bits, async_tx_state_s::get_byte, async_tx_state_s::parity, async_tx_state_s::parity_bit, async_tx_state_s::stop_bits, and async_tx_state_s::user_data.

Referenced by v18_init().

## signal_status_to_str()

const char * signal_status_to_str | ( | int | status | ) |

Convert a signal status to a short text description.

Convert a signal status to a short text description.

Parameters

  status | The modem signal status.

Returns
  A pointer to the description.

References SIG_STATUS_ABORT, SIG_STATUS_BREAK, SIG_STATUS_CARRIER_DOWN, SIG_STATUS_CARRIER_UP, SIG_STATUS_END_OF_DATA, SIG_STATUS_FRAMING_OK, SIG_STATUS_LINK_CONNECTED, SIG_STATUS_LINK_DISCONNECTED, SIG_STATUS_LINK_ERROR, SIG_STATUS_MODEM_RETRAIN_OCCURRED, SIG_STATUS_OCTET_REPORT, SIG_STATUS_POOR_SIGNAL_QUALITY, SIG_STATUS_SHUTDOWN_COMPLETE, SIG_STATUS_TRAINING_FAILED, SIG_STATUS_TRAINING_IN_PROGRESS, and SIG_STATUS_TRAINING_SUCCEEDED.

## SPAN_DECLARE_NONSTD() [1/2]

SPAN_DECLARE_NONSTD | ( | int |  | ) |

Get the next bit of a transmitted serial bit stream.

Process a block of received V.8 audio samples.

Fake processing of a missing block of received V.29 modem audio samples.

Fake processing of a missing block of received V.27ter modem audio samples.

Generate a block of V.22bis modem audio samples.

Fake processing of a missing block of received V.22bis modem audio samples.

Process a block of received V.18 audio samples.

Fake processing of a missing block of received V.17 modem audio samples.

Generate a block of FAX audio samples.

Apply fake received audio processing.

Process a received T.38 IFP packet from a reliable stream (e.g. TCP).

Generate a block of T.31 modem audio samples.

Fake processing of a missing block of received T.31 modem audio samples.

Dummy receive fillin callback.

Dummy receive callback.

Process a block of samples through an instance of the modem connect tones detector.

Get the next sequence of bytes for transmission.

Get the next byte for transmission.

Fake processing of a missing block of received FSK modem audio samples.

Process a block of received FSK modem audio samples.

Apply T.30 transmit processing to generate a block of audio samples.

Apply fake T.30 receive processing.

Get the next bit of a transmitted serial bit stream.

Parameters

  user_data | An opaque point which must point to a transmitter context.

Returns
  the next bit, or PUTBIT_END_OF_DATA to indicate the data stream has ended.

Apply fake T.30 receive processing when a block of audio samples is missing (e.g due to packet loss).

Parameters

  s | The FAX context.
  len | The number of samples to fake.

Returns
  The number of samples unprocessed. This should only be non-zero if the software has reached the end of the FAX call.

Apply T.30 transmit processing to generate a block of audio samples.

Parameters

  s | The FAX context.
  amp | The audio sample buffer.
  max_len | The number of samples to be generated.

Returns
  The number of samples actually generated. This will be zero when there is nothing to send.

Process a block of received FSK modem audio samples.

Parameters

  s | The modem context.
  amp | The audio sample buffer.
  len | The number of samples in the buffer.

Returns
  The number of samples unprocessed.

Fake processing of a missing block of received FSK modem audio samples (e.g due to packet loss).

Parameters

  s | The modem context.
  len | The number of samples to fake.

Returns
  The number of samples unprocessed.

Parameters

  s | A pointer to an HDLC transmitter context.

Returns
  The next byte for transmission.

Parameters

  s | A pointer to an HDLC transmitter context.
  buf | The buffer for the data.
  max_len | The number of bytes to get.

Returns
  The number of bytes actually got.

Parameters

  s | The context.
  amp | An array of signal samples.
  len | The number of samples in the array.

Returns
  The number of unprocessed samples.

A dummy routine to use as a receive callback, when we aren't really trying to process what is received. It just absorbs and ignores the data.

Parameters

  user_data | The context.
  amp | The signal.buffer
  len | The length of the signal buffer

Returns
  0.

A dummy routine to use as a receive fillin callback, when we aren't really trying to process what is received. It just absorbs and ignores the request.

Parameters

  user_data | The context.
  len | The length of the signal buffer

Returns
  0.

Fake processing of a missing block of received T.31 modem audio samples (e.g due to packet loss).

Parameters

  s | The T.31 modem context.
  len | The number of samples to fake.

Returns
  The number of samples unprocessed.

Generate a block of T.31 modem audio samples.

Parameters

  s | The T.31 modem context.
  amp | The audio sample buffer.
  max_len | The number of samples to be generated.

Returns
  The number of samples actually generated.

Parameters

  s | The T.38 context.
  buf | The packet contents.
  len | The length of the packet contents.
  seq_no | The packet sequence number, used for logging purposes.

Returns
  The length of the packet processed, or -1 if there is an error in the packet, or too few bytes of data to complete it.

Apply fake processing when a block of audio samples is missing (e.g due to packet loss).

Parameters

  s | The T.38 context.
  len | The number of samples to fake.

Returns
  The number of samples unprocessed. This should only be non-zero if the software has reached the end of the FAX call.

Generate a block of FAX audio samples.

Parameters

  s | The T.38 context.
  amp | The audio sample buffer.
  max_len | The number of samples to be generated.

Returns
  The number of samples actually generated.

Fake processing of a missing block of received V.17 modem audio samples. (e.g due to packet loss).

Parameters

  s | The modem context.
  len | The number of samples to fake.

Returns
  The number of samples unprocessed.

Process a block of received V.18 audio samples.

Parameters

  s | The V.18 context.
  amp | The audio sample buffer.
  len | The number of samples in the buffer.

Fake processing of a missing block of received V.22bis modem audio samples. (e.g due to packet loss).

Parameters

  s | The modem context.
  len | The number of samples to fake.

Returns
  The number of samples unprocessed.

Generate a block of V.22bis modem audio samples.

Parameters

  s | The modem context.
  amp | The audio sample buffer.
  len | The number of samples to be generated.

Returns
  The number of samples actually generated.

Fake processing of a missing block of received V.27ter modem audio samples. (e.g due to packet loss).

Parameters

  s | The modem context.
  len | The number of samples to fake.

Returns
  The number of samples unprocessed.

Fake processing of a missing block of received V.29 modem audio samples. (e.g due to packet loss).

Parameters

  s | The modem context.
  len | The number of samples to fake.

Returns
  The number of samples unprocessed.

Process a block of received V.8 audio samples.

Parameters

  s | The V.8 context.
  amp | The audio sample buffer.
  len | The number of samples in the buffer.

Get the next bit of a transmitted serial bit stream.

Apply T.30 transmit processing to generate a block of audio samples.

Apply fake T.30 receive processing.

Apply T.30 receive processing to a block of audio samples.

Parameters

  s | The FAX context.
  amp | The audio sample buffer.
  len | The number of samples in the buffer.

Returns
  The number of samples unprocessed. This should only be non-zero if the software has reached the end of the FAX call.

Apply fake T.30 receive processing when a block of audio samples is missing (e.g due to packet loss).

Parameters

  s | The FAX context.
  len | The number of samples to fake.

Returns
  The number of samples unprocessed. This should only be non-zero if the software has reached the end of the FAX call.

Apply T.30 transmit processing to generate a block of audio samples.

Parameters

  s | The FAX context.
  amp | The audio sample buffer.
  max_len | The number of samples to be generated.

Returns
  The number of samples actually generated. This will be zero when there is nothing to send.

Get the next bit of a transmitted serial bit stream.

Fake processing of a missing block of received FSK modem audio samples.

Process a block of received FSK modem audio samples.

Generate a block of FSK modem audio samples.

Parameters

  s | The modem context.
  amp | The audio sample buffer.
  len | The number of samples to be generated.

Returns
  The number of samples actually generated.

Process a block of received FSK modem audio samples.

Parameters

  s | The modem context.
  amp | The audio sample buffer.
  len | The number of samples in the buffer.

Returns
  The number of samples unprocessed.

Fake processing of a missing block of received FSK modem audio samples (e.g due to packet loss).

Parameters

  s | The modem context.
  len | The number of samples to fake.

Returns
  The number of samples unprocessed.

Get the next bit of a transmitted serial bit stream.

Get the next sequence of bytes for transmission.

Get the next byte for transmission.

Parameters

  s | A pointer to an HDLC transmitter context.

Returns
  The next bit for transmission.

Parameters

  s | A pointer to an HDLC transmitter context.

Returns
  The next byte for transmission.

Parameters

  s | A pointer to an HDLC transmitter context.
  buf | The buffer for the data.
  max_len | The number of bytes to get.

Returns
  The number of bytes actually got.

Get the next bit of a transmitted serial bit stream.

Process a block of samples through an instance of the modem connect tones detector.

Parameters

  s | The context.
  amp | An array of signal samples.
  len | The number of samples to generate.

Returns
  The number of samples generated.

Parameters

  s | The context.
  amp | An array of signal samples.
  len | The number of samples in the array.

Returns
  The number of unprocessed samples.

Get the next bit of a transmitted serial bit stream.

Dummy receive fillin callback.

Dummy receive callback.

Generate a block of silent audio samples.

Parameters

  s | The silence generator context.
  amp | The audio sample buffer.
  max_len | The number of samples to be generated.

Returns
  The number of samples actually generated. This will be zero when there is nothing to send.

A dummy routine to use as a receive callback, when we aren't really trying to process what is received. It just absorbs and ignores the data.

Parameters

  user_data | The context.
  amp | The signal.buffer
  len | The length of the signal buffer

Returns
  0.

A dummy routine to use as a receive fillin callback, when we aren't really trying to process what is received. It just absorbs and ignores the request.

Parameters

  user_data | The context.
  len | The length of the signal buffer

Returns
  0.

Get the next bit of a transmitted serial bit stream.

Generate a block of T.31 modem audio samples.

Fake processing of a missing block of received T.31 modem audio samples.

Process a block of received T.31 modem audio samples.

Parameters

  s | The T.31 modem context.
  amp | The audio sample buffer.
  len | The number of samples in the buffer.

Returns
  The number of samples unprocessed.

Fake processing of a missing block of received T.31 modem audio samples (e.g due to packet loss).

Parameters

  s | The T.31 modem context.
  len | The number of samples to fake.

Returns
  The number of samples unprocessed.

Generate a block of T.31 modem audio samples.

Parameters

  s | The T.31 modem context.
  amp | The audio sample buffer.
  max_len | The number of samples to be generated.

Returns
  The number of samples actually generated.

Get the next bit of a transmitted serial bit stream.

Process a received T.38 IFP packet from a reliable stream (e.g. TCP).

Parameters

  s | The T.38 context.
  buf | The packet contents.
  len | The length of the packet contents.
  seq_no | The packet sequence number.

Returns
  0 for OK, else -1.

Parameters

  s | The T.38 context.
  buf | The packet contents.
  len | The length of the packet contents.
  seq_no | The packet sequence number, used for logging purposes.

Returns
  The length of the packet processed, or -1 if there is an error in the packet, or too few bytes of data to complete it.

Get the next bit of a transmitted serial bit stream.

Generate a block of FAX audio samples.

Apply fake received audio processing.

Process a block of received FAX audio samples.

Parameters

  s | The T.38 context.
  amp | The audio sample buffer.
  len | The number of samples in the buffer.

Returns
  The number of samples unprocessed.

Apply fake processing when a block of audio samples is missing (e.g due to packet loss).

Parameters

  s | The T.38 context.
  len | The number of samples to fake.

Returns
  The number of samples unprocessed. This should only be non-zero if the software has reached the end of the FAX call.

Generate a block of FAX audio samples.

Parameters

  s | The T.38 context.
  amp | The audio sample buffer.
  max_len | The number of samples to be generated.

Returns
  The number of samples actually generated.

Get the next bit of a transmitted serial bit stream.

Fake processing of a missing block of received V.17 modem audio samples.

Process a block of received V.17 modem audio samples.

Parameters

  s | The modem context.
  amp | The audio sample buffer.
  len | The number of samples in the buffer.

Returns
  The number of samples unprocessed.

Fake processing of a missing block of received V.17 modem audio samples. (e.g due to packet loss).

Parameters

  s | The modem context.
  len | The number of samples to fake.

Returns
  The number of samples unprocessed.

Get the next bit of a transmitted serial bit stream.

Generate a block of V.17 modem audio samples.

Parameters

  s | The modem context.
  amp | The audio sample buffer.
  len | The number of samples to be generated.

Returns
  The number of samples actually generated.

Get the next bit of a transmitted serial bit stream.

Process a block of received V.18 audio samples.

Generate a block of V.18 audio samples.

Parameters

  s | The V.18 context.
  amp | The audio sample buffer.
  max_len | The number of samples to be generated.

Returns
  The number of samples actually generated.

Process a block of received V.18 audio samples.

Parameters

  s | The V.18 context.
  amp | The audio sample buffer.
  len | The number of samples in the buffer.

Get the next bit of a transmitted serial bit stream.

Generate a block of V.22bis modem audio samples.

Fake processing of a missing block of received V.22bis modem audio samples.

Process a block of received V.22bis modem audio samples.

Parameters

  s | The modem context.
  amp | The audio sample buffer.
  len | The number of samples in the buffer.

Returns
  The number of samples unprocessed.

Fake processing of a missing block of received V.22bis modem audio samples. (e.g due to packet loss).

Parameters

  s | The modem context.
  len | The number of samples to fake.

Returns
  The number of samples unprocessed.

Generate a block of V.22bis modem audio samples.

Parameters

  s | The modem context.
  amp | The audio sample buffer.
  len | The number of samples to be generated.

Returns
  The number of samples actually generated.

Get the next bit of a transmitted serial bit stream.

Fake processing of a missing block of received V.27ter modem audio samples.

Process a block of received V.27ter modem audio samples.

Parameters

  s | The modem context.
  amp | The audio sample buffer.
  len | The number of samples in the buffer.

Returns
  The number of samples unprocessed.

Fake processing of a missing block of received V.27ter modem audio samples. (e.g due to packet loss).

Parameters

  s | The modem context.
  len | The number of samples to fake.

Returns
  The number of samples unprocessed.

Get the next bit of a transmitted serial bit stream.

Generate a block of V.27ter modem audio samples.

Parameters

  s | The modem context.
  amp | The audio sample buffer.
  len | The number of samples to be generated.

Returns
  The number of samples actually generated.

Get the next bit of a transmitted serial bit stream.

Fake processing of a missing block of received V.29 modem audio samples.

Process a block of received V.29 modem audio samples.

Parameters

  s | The modem context.
  amp | The audio sample buffer.
  len | The number of samples in the buffer.

Returns
  The number of samples unprocessed.

Fake processing of a missing block of received V.29 modem audio samples. (e.g due to packet loss).

Parameters

  s | The modem context.
  len | The number of samples to fake.

Returns
  The number of samples unprocessed.

Get the next bit of a transmitted serial bit stream.

Generate a block of V.29 modem audio samples.

Parameters

  s | The modem context.
  amp | The audio sample buffer.
  len | The number of samples to be generated.

Returns
  The number of samples actually generated.

Get the next bit of a transmitted serial bit stream.

Process a block of received V.8 audio samples.

Generate a block of V.8 audio samples.

Parameters

  s | The V.8 context.
  amp | The audio sample buffer.
  max_len | The number of samples to be generated.

Returns
  The number of samples actually generated.

Process a block of received V.8 audio samples.

Parameters

  s | The V.8 context.
  amp | The audio sample buffer.
  len | The number of samples in the buffer.

## SPAN_DECLARE_NONSTD() [2/2]

SPAN_DECLARE_NONSTD | ( | void |  | ) |

Accept a bit from a received serial bit stream.

Process a received HDLC frame.

Put a series of bytes of data to an HDLC receiver.

Put a byte of data to an HDLC receiver.

Accept a bit from a received serial bit stream

Parameters

  user_data | An opaque point which must point to a receiver context.

  bit

  The new bit. Some special values are supported for this field.
  - SIG_STATUS_CARRIER_UP
  - SIG_STATUS_CARRIER_DOWN
  - SIG_STATUS_TRAINING_SUCCEEDED
  - SIG_STATUS_TRAINING_FAILED
  - SIG_STATUS_END_OF_DATA

  s | A pointer to an HDLC receiver context.
  new_byte | The byte of data.
  s | A pointer to an HDLC receiver context.
  buf | The buffer of data.
  len | The length of the data in the buffer.

Process a received HDLC frame.

Parameters

  user_data | The T.30 context.
  msg | The HDLC message.
  len | The length of the message, in octets.
  ok | TRUE if the frame was received without error.