hdlc.h File Reference

Go to the source code of this file.

Classes

struct  hdlc_rx_state_t
struct  hdlc_rx_stats_t
struct  hdlc_tx_state_t

Defines

#define _SPANDSP_HDLC_H_
#define HDLC_MAXFRAME_LEN   400

Typedefs

typedef void(* hdlc_frame_handler_t )(void *user_data, const uint8_t *pkt, int len, int ok)
typedef void(* hdlc_underflow_handler_t )(void *user_data)

Functions

hdlc_rx_state_thdlc_rx_init (hdlc_rx_state_t *s, int crc32, int report_bad_frames, int framing_ok_threshold, hdlc_frame_handler_t handler, void *user_data)
 Initialise an HDLC receiver context.
void hdlc_rx_set_max_frame_len (hdlc_rx_state_t *s, size_t max_len)
 Set the maximum frame length for an HDLC receiver context.
void hdlc_rx_set_octet_counting_report_interval (hdlc_rx_state_t *s, int interval)
 Set the octet counting report interval.
int hdlc_rx_get_stats (hdlc_rx_state_t *s, hdlc_rx_stats_t *t)
 Get the current receive statistics.
void hdlc_rx_put_bit (hdlc_rx_state_t *s, int new_bit)
 Put a single bit of data to an HDLC receiver.
void hdlc_rx_put_byte (hdlc_rx_state_t *s, int new_byte)
 Put a byte of data to an HDLC receiver.
void hdlc_rx_put (hdlc_rx_state_t *s, const uint8_t buf[], int len)
 Put a series of bytes of data to an HDLC receiver.
hdlc_tx_state_thdlc_tx_init (hdlc_tx_state_t *s, int crc32, int inter_frame_flags, int progressive, hdlc_underflow_handler_t handler, void *user_data)
 Initialise an HDLC transmitter context.
void hdlc_tx_set_max_frame_len (hdlc_tx_state_t *s, size_t max_len)
 Set the maximum frame length for an HDLC transmitter context.
int hdlc_tx_frame (hdlc_tx_state_t *s, const uint8_t *frame, size_t len)
 Transmit a frame.
int hdlc_tx_corrupt_frame (hdlc_tx_state_t *s)
 Corrupt the frame currently being transmitted, by giving it the wrong CRC.
int hdlc_tx_flags (hdlc_tx_state_t *s, int len)
 Transmit a specified quantity of flag octets, typically as a preamble.
int hdlc_tx_abort (hdlc_tx_state_t *s)
 Send an abort.
int hdlc_tx_get_bit (hdlc_tx_state_t *s)
 Get the next bit for transmission.
int hdlc_tx_get_byte (hdlc_tx_state_t *s)
 Get the next byte for transmission.
int hdlc_tx_get (hdlc_tx_state_t *s, uint8_t buf[], size_t max_len)
 Get the next sequence of bytes for transmission.


Detailed Description


Define Documentation

#define HDLC_MAXFRAME_LEN   400

HDLC_MAXFRAME_LEN is the maximum length of a stuffed HDLC frame, excluding the CRC.

Referenced by hdlc_tx_corrupt_frame(), hdlc_tx_frame(), hdlc_tx_get_byte(), hdlc_tx_init(), and hdlc_tx_set_max_frame_len().


Function Documentation

int hdlc_rx_get_stats ( hdlc_rx_state_t s,
hdlc_rx_stats_t t 
)

Get the current receive statistics.

Parameters:
s A pointer to an HDLC receiver context.
t A pointer to the buffer for the statistics.
Returns:
0 for OK, else -1.

References hdlc_rx_stats_t::aborts, hdlc_rx_stats_t::bytes, hdlc_rx_stats_t::crc_errors, hdlc_rx_stats_t::good_frames, hdlc_rx_stats_t::length_errors, hdlc_rx_state_t::rx_aborts, hdlc_rx_state_t::rx_bytes, hdlc_rx_state_t::rx_crc_errors, hdlc_rx_state_t::rx_frames, and hdlc_rx_state_t::rx_length_errors.

hdlc_rx_state_t* hdlc_rx_init ( hdlc_rx_state_t s,
int  crc32,
int  report_bad_frames,
int  framing_ok_threshold,
hdlc_frame_handler_t  handler,
void *  user_data 
)

Initialise an HDLC receiver context.

Parameters:
s A pointer to an HDLC receiver context.
crc32 TRUE to use ITU CRC32. FALSE to use ITU CRC16.
report_bad_frames TRUE to request the reporting of bad frames.
framing_ok_threshold The number of back-to-back flags needed to start the framing OK condition. This may be used where a series of flag octets is used as a preamble, such as in the T.30 protocol.
handler The function to be called when a good HDLC frame is received.
user_data An opaque parameter for the callback routine.
Returns:
A pointer to the HDLC receiver context.

References hdlc_rx_state_t::buffer, hdlc_rx_state_t::crc_bytes, hdlc_rx_state_t::frame_handler, hdlc_rx_state_t::framing_ok_threshold, hdlc_rx_state_t::max_frame_len, hdlc_rx_state_t::report_bad_frames, and hdlc_rx_state_t::user_data.

void hdlc_rx_put ( hdlc_rx_state_t s,
const uint8_t  buf[],
int  len 
)

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

Parameters:
s A pointer to an HDLC receiver context.
buf The buffer of data.
len The length of the data in the buffer.

References hdlc_rx_put_byte().

void hdlc_rx_put_bit ( hdlc_rx_state_t s,
int  new_bit 
)

Put a single bit of data to an HDLC receiver.

Parameters:
s A pointer to an HDLC receiver context.
new_bit The bit.

References hdlc_rx_state_t::raw_bit_stream.

Referenced by v42_rx_bit().

void hdlc_rx_put_byte ( hdlc_rx_state_t s,
int  new_byte 
)

Put a byte of data to an HDLC receiver.

Parameters:
s A pointer to an HDLC receiver context.
new_byte The byte of data.

References hdlc_rx_state_t::raw_bit_stream.

Referenced by hdlc_rx_put().

void hdlc_rx_set_max_frame_len ( hdlc_rx_state_t s,
size_t  max_len 
)

Set the maximum frame length for an HDLC receiver context.

Parameters:
s A pointer to an HDLC receiver context.
max_len The maximum permitted length of a frame.

References hdlc_rx_state_t::buffer, hdlc_rx_state_t::crc_bytes, and hdlc_rx_state_t::max_frame_len.

void hdlc_rx_set_octet_counting_report_interval ( hdlc_rx_state_t s,
int  interval 
)

Set the octet counting report interval.

Parameters:
s A pointer to an HDLC receiver context.
interval The interval, in octets.

References hdlc_rx_state_t::octet_count_report_interval.

int hdlc_tx_abort ( hdlc_tx_state_t s  ) 

Send an abort.

Parameters:
s A pointer to an HDLC transmitter context.
Returns:
0 if the frame was aborted, else -1.

References hdlc_tx_state_t::abort_octets, and hdlc_tx_state_t::flag_octets.

int hdlc_tx_corrupt_frame ( hdlc_tx_state_t s  ) 

Corrupt the frame currently being transmitted, by giving it the wrong CRC.

Parameters:
s A pointer to an HDLC transmitter context.
Returns:
0 if the frame was corrupted, else -1.

References hdlc_tx_state_t::buffer, hdlc_tx_state_t::crc, HDLC_MAXFRAME_LEN, and hdlc_tx_state_t::len.

int hdlc_tx_flags ( hdlc_tx_state_t s,
int  len 
)

Transmit a specified quantity of flag octets, typically as a preamble.

Parameters:
s A pointer to an HDLC transmitter context.
len The length of the required period of flags, in flag octets. If len is zero this requests that HDLC transmission be terminated when the buffers have fully drained.
Returns:
0 if the flags were accepted for transmission, else -1.

References hdlc_tx_state_t::flag_octets, hdlc_tx_state_t::pos, hdlc_tx_state_t::report_flag_underflow, and hdlc_tx_state_t::tx_end.

int hdlc_tx_frame ( hdlc_tx_state_t s,
const uint8_t *  frame,
size_t  len 
)

Transmit a frame.

Parameters:
s A pointer to an HDLC transmitter context.
frame A pointer to the frame to be transmitted.
len The length of the frame to be transmitted.
Returns:
0 if the frame was accepted for transmission, else -1.

References hdlc_tx_state_t::buffer, hdlc_tx_state_t::crc, hdlc_tx_state_t::crc_bytes, crc_itu16_calc(), crc_itu32_calc(), HDLC_MAXFRAME_LEN, hdlc_tx_state_t::len, hdlc_tx_state_t::max_frame_len, hdlc_tx_state_t::pos, hdlc_tx_state_t::progressive, and hdlc_tx_state_t::tx_end.

int hdlc_tx_get ( hdlc_tx_state_t s,
uint8_t  buf[],
size_t  max_len 
)

Get the next sequence of bytes 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.

References hdlc_tx_get_byte(), and SIG_STATUS_END_OF_DATA.

int hdlc_tx_get_bit ( hdlc_tx_state_t s  ) 

Get the next bit for transmission.

Parameters:
s A pointer to an HDLC transmitter context.
Returns:
The next bit for transmission.

References hdlc_tx_state_t::bits, hdlc_tx_state_t::byte, and hdlc_tx_get_byte().

Referenced by v42_tx_bit().

int hdlc_tx_get_byte ( hdlc_tx_state_t s  ) 

hdlc_tx_state_t* hdlc_tx_init ( hdlc_tx_state_t s,
int  crc32,
int  inter_frame_flags,
int  progressive,
hdlc_underflow_handler_t  handler,
void *  user_data 
)

Initialise an HDLC transmitter context.

Parameters:
s A pointer to an HDLC transmitter context.
crc32 TRUE to use ITU CRC32. FALSE to use ITU CRC16.
inter_frame_flags The minimum flag octets to insert between frames (usually one).
progressive TRUE if frame creation works in progressive mode.
handler The callback function called when the HDLC transmitter underflows.
user_data An opaque parameter for the callback routine.
Returns:
A pointer to the HDLC transmitter context.

References hdlc_tx_state_t::crc, hdlc_tx_state_t::crc_bytes, HDLC_MAXFRAME_LEN, hdlc_tx_state_t::idle_octet, hdlc_tx_state_t::inter_frame_flags, hdlc_tx_state_t::max_frame_len, hdlc_tx_state_t::progressive, hdlc_tx_state_t::underflow_handler, and hdlc_tx_state_t::user_data.

void hdlc_tx_set_max_frame_len ( hdlc_tx_state_t s,
size_t  max_len 
)

Set the maximum frame length for an HDLC transmitter context.

Parameters:
s A pointer to an HDLC transmitter context.
max_len The maximum length.

References HDLC_MAXFRAME_LEN, and hdlc_tx_state_t::max_frame_len.


Generated on Tue Oct 7 20:25:51 2008 for spandsp by  doxygen 1.5.6