#include <stdio.h>
#include <stdlib.h>
#include <inttypes.h>
#include <string.h>
#include <errno.h>
#include "spandsp/telephony.h"
#include "spandsp/logging.h"
#include "spandsp/async.h"
#include "spandsp/hdlc.h"
#include "spandsp/schedule.h"
#include "spandsp/queue.h"
#include "spandsp/v42.h"
#include "spandsp/private/logging.h"
#include "spandsp/private/schedule.h"
#include "spandsp/private/hdlc.h"
#include "spandsp/private/v42.h"
Defines | |
#define | LAPM_FRAMETYPE_MASK 0x03 |
#define | LAPM_FRAMETYPE_I 0x00 |
#define | LAPM_FRAMETYPE_I_ALT 0x02 |
#define | LAPM_FRAMETYPE_S 0x01 |
#define | LAPM_FRAMETYPE_U 0x03 |
#define | T_WAIT_MIN 2000 |
#define | T_WAIT_MAX 10000 |
#define | T_400 750000 |
#define | T_401 1000000 |
#define | T_402 1000000 |
#define | T_403 10000000 |
#define | N_400 3 |
#define | N_401 128 |
#define | LAPM_DLCI_DTE_TO_DTE 0 |
#define | LAPM_DLCI_LAYER2_MANAGEMENT 63 |
Functions | |
void | lapm_reset (lapm_state_t *s) |
void | lapm_restart (lapm_state_t *s) |
const char * | lapm_status_to_str (int status) |
int | lapm_tx (lapm_state_t *s, const void *buf, int len) |
int | lapm_release (lapm_state_t *s) |
int | lapm_loopback (lapm_state_t *s, int enable) |
int | lapm_break (lapm_state_t *s, int enable) |
int | lapm_tx_iframe (lapm_state_t *s, const void *buf, int len, int cr) |
void | lapm_dump (lapm_state_t *s, const uint8_t *frame, int len, int showraw, int txrx) |
void | lapm_receive (void *user_data, const uint8_t *frame, int len, int ok) |
void | v42_rx_bit (void *user_data, int bit) |
int | v42_tx_bit (void *user_data) |
void | v42_set_status_callback (v42_state_t *s, v42_status_func_t callback, void *user_data) |
void | v42_restart (v42_state_t *s) |
v42_state_t * | v42_init (v42_state_t *s, int caller, int detect, v42_frame_handler_t frame_handler, void *user_data) |
int | v42_release (v42_state_t *s) |
int | v42_free (v42_state_t *s) |
int lapm_break | ( | lapm_state_t * | s, | |
int | enable | |||
) |
Send a break over a LAP.M connection
void lapm_dump | ( | lapm_state_t * | s, | |
const uint8_t * | frame, | |||
int | len, | |||
int | showraw, | |||
int | txrx | |||
) |
Dump LAP.M frames in a raw and/or decoded forms
frame | The frame itself | |
len | The length of the frame, in octets | |
showraw | TRUE if the raw octets should be dumped | |
txrx | TRUE if tx, FALSE if rx. Used to highlight the packet's direction. |
Referenced by lapm_receive().
int lapm_loopback | ( | lapm_state_t * | s, | |
int | enable | |||
) |
Enable or disable loopback of a LAP.M connection
void lapm_receive | ( | void * | user_data, | |
const uint8_t * | buf, | |||
int | len, | |||
int | ok | |||
) |
Accept an HDLC packet
References lapm_state_s::busy, lapm_dump(), lapm_state_s::last_frame_peer_acknowledged, lapm_state_s::last_frame_we_acknowledged, lapm_state_s::logging, lapm_state_s::next_expected_frame, lapm_state_s::next_tx_frame, lapm_state_s::peer_is_originator, lapm_state_s::solicit_f_bit, lapm_state_s::t401_timer, lapm_state_s::t403_timer, lapm_state_s::we_are_originator, and lapm_state_s::window_size_k.
int lapm_release | ( | lapm_state_t * | s | ) |
Initiate an orderly release of a LAP.M connection
int lapm_tx | ( | lapm_state_t * | s, | |
const void * | buf, | |||
int | len | |||
) |
Transmit a LAP.M frame
int lapm_tx_iframe | ( | lapm_state_t * | s, | |
const void * | buf, | |||
int | len, | |||
int | cr | |||
) |
Transmit a LAP.M information frame
int v42_free | ( | v42_state_t * | s | ) |
Free a V.42 context.
s | The V.42 context. |
v42_state_t* v42_init | ( | v42_state_t * | s, | |
int | caller, | |||
int | detect, | |||
v42_frame_handler_t | frame_handler, | |||
void * | user_data | |||
) |
Initialise a V.42 context.
s | The V.42 context. | |
caller | TRUE if caller mode, else answerer mode. | |
frame_handler | A callback function to handle received frames of data. | |
user_data | An opaque pointer passed to the frame handler routine. |
References v42_restart().
int v42_release | ( | v42_state_t * | s | ) |
Release a V.42 context.
s | The V.42 context. |
void v42_restart | ( | v42_state_t * | s | ) |
void v42_rx_bit | ( | void * | user_data, | |
int | bit | |||
) |
Process a newly received bit for a V.42 context.
References v42_state_s::lapm.
void v42_set_status_callback | ( | v42_state_t * | s, | |
v42_status_func_t | callback, | |||
void * | user_data | |||
) |
Assign or remove a callback routine used to deal with V.42 status changes.
int v42_tx_bit | ( | void * | user_data | ) |
Get the next transmit bit for a V.42 context.
References v42_state_s::lapm.