2474 lines
160 KiB
C
2474 lines
160 KiB
C
#ifndef _CMUX_H_
|
|
#define _CMUX_H_
|
|
/*====*====*====*====*====*====*====*====*====*====*====*====*====*====*====*
|
|
|
|
cmux.h
|
|
|
|
|
|
GENERAL DESCRIPTION
|
|
|
|
This file is for cmux.
|
|
|
|
EXTERNALIZED FUNCTIONS
|
|
|
|
INITIALIZATION AND SEQUENCING REQUIREMENTS
|
|
|
|
Copyright (c) 2018 by ASR, Incorporated. All Rights Reserved.
|
|
*====*====*====*====*====*====*====*====*====*====*====*====*====*====*====*
|
|
|
|
*===========================================================================
|
|
|
|
EDIT HISTORY FOR MODULE
|
|
|
|
This section contains comments describing changes made to the module.
|
|
Notice that changes are listed in reverse chronological order.
|
|
|
|
|
|
when who what, where, why
|
|
-------- ------ ----------------------------------------------------------
|
|
08/31/2018 zhoujin Created module
|
|
===========================================================================*/
|
|
|
|
|
|
/*===========================================================================
|
|
|
|
INCLUDE FILES FOR MODULE
|
|
|
|
===========================================================================*/
|
|
|
|
#include "UART.h"
|
|
#include "cmux_def.h"
|
|
|
|
/*===========================================================================
|
|
|
|
Struct definition.
|
|
|
|
===========================================================================*/
|
|
|
|
//ICAT EXPORTED ENUM
|
|
typedef enum DLC_SVC_TYPE{
|
|
DLC_SVC_TYPE1 = 0, //APSE
|
|
DLC_SVC_TYPE2 //INTEL
|
|
} DLC_SVC_TYPE;
|
|
|
|
//ICAT EXPORTED ENUM
|
|
typedef enum cmux_hal_type{
|
|
MUX_USB = 0,
|
|
MUX_UART,
|
|
MUX_SPI,
|
|
MUX_SDIO,
|
|
MUX_HSI,
|
|
MUX_ASI
|
|
}cmux_hal_type;
|
|
|
|
typedef enum cmux_mode_type{
|
|
CMUX_DISABLE = 0,
|
|
CMUX_USB_ENABLE,
|
|
CMUX_UART_ENABLE,
|
|
CMUX_MUX_TYPE
|
|
}cmux_mode_type;
|
|
|
|
typedef enum ts0710_events {
|
|
CONNECT_IND,
|
|
CONNECT_CFM,
|
|
DISCONN_CFM
|
|
}ts0710_events;
|
|
|
|
typedef enum{
|
|
DlcOpened=1,
|
|
DlcClosed,
|
|
DlcFlowBlockedPeer,
|
|
DlcFlowUnblockedPeer,
|
|
DlcFlowBlockedBufOver,
|
|
DlcFlowUnblockedBufover
|
|
}DlcLinkStatus;
|
|
|
|
typedef struct CmuxRcvChanInfo
|
|
{
|
|
UINT16 Apt_index;
|
|
UINT8 cid;
|
|
UINT8 datastop;
|
|
UINT32 status;
|
|
UINT32 AtStatus; //0 at channel idle 1 at channel busy
|
|
}CmuxRcvChanInfo;
|
|
|
|
typedef struct flow_control_info{
|
|
unsigned int send_stop_req_count;
|
|
unsigned int send_start_req_count;
|
|
unsigned int rec_stop_req_count;
|
|
unsigned int rec_start_req_count;
|
|
}flow_control_info;
|
|
|
|
typedef struct cmux_data_node
|
|
{
|
|
UINT16 length;
|
|
UINT8 frametype;
|
|
UINT8 frame_cr;
|
|
void *data;
|
|
void *start_data;
|
|
struct cmux_data_node *next, *prev;
|
|
}cmux_data_node;
|
|
|
|
/* CMUX device information. */
|
|
typedef struct cmux_dev_info
|
|
{
|
|
char string[7];
|
|
cmux_hal_type type;
|
|
} cmux_dev_info;
|
|
|
|
typedef void (*tx_done_t)(unsigned int dlc,void* buffer, unsigned int length);
|
|
typedef int (*rx_ind_t)(unsigned int dlci);
|
|
|
|
typedef void (*DlcLinkStatusIndCB)(unsigned int dlci, DlcLinkStatus status);
|
|
|
|
typedef int (*mux_device_write_cb)(char *buf, int length);
|
|
typedef int (*mux_frame_write_cb)(cmux_data_node *frame_header, int length);
|
|
|
|
struct cmux_dlc
|
|
{
|
|
UINT8 usingflag; /* open flag*/
|
|
UINT8 id; /* channel idenfier*/
|
|
UINT8 priority; /* priority of this DLC[0 - 63]*/
|
|
UINT8 flow_control; /* fc bit on opposite DLC */
|
|
UINT8 state; /* channel state */
|
|
UINT8 dlc_recv_state; /* receiving, idle*/
|
|
|
|
UINT16 n2; /* maximum number of re-transmissions*/
|
|
UINT16 n1; /*maximum frame size(MTU)*/
|
|
UINT16 window_size; /* size of receipt window */
|
|
UINT16 safe_window_size; /* less than this value unblocked dlc channel*/
|
|
|
|
UINT16 rx_queue_count;
|
|
UINT16 tx_queue_count;
|
|
UINT16 max_tx_queue_count;
|
|
UINT16 dlc_work_mode; /*0:at mode;1:data mode*/
|
|
UINT8 v24_signal;
|
|
struct cmux_dlc *next; /* next element in priority array */
|
|
struct cmux_dlc *prev; /* previous element in priority array */
|
|
struct cmux_data_node *rx_queue_header, *rx_queue_tailer;
|
|
struct cmux_data_node *tx_queue_header, *tx_queue_tailer;
|
|
|
|
rx_ind_t rx_ind;
|
|
tx_done_t tx_done;
|
|
DlcLinkStatusIndCB link_status_ind;
|
|
};
|
|
|
|
/* Cmux Rx request message */
|
|
typedef struct CmuxTxReqMsg
|
|
{
|
|
UINT32 id;
|
|
} CmuxTxReqMsg;
|
|
|
|
/* Cmux Rx request message */
|
|
typedef struct CmuxRxReqMsg
|
|
{
|
|
UINT32 dlci;
|
|
} CmuxRxReqMsg;
|
|
|
|
typedef struct cmux_info
|
|
{
|
|
UINT8 initiator; /* initiator:1 responder:0 */
|
|
UINT8 openflag; /* Open flag */
|
|
OSATimerRef timer; /* for DLC0 */
|
|
struct cmux_dlc dlc[NUM_DLCI];
|
|
}cmux_info;
|
|
|
|
typedef struct prio_array{
|
|
struct cmux_dlc *head;
|
|
struct cmux_dlc *tail;
|
|
}prio_array;
|
|
|
|
typedef struct{
|
|
unsigned short service_id;
|
|
unsigned short priority;
|
|
unsigned short MTU;
|
|
unsigned short feature;
|
|
}dlc_cfg_parameter;
|
|
|
|
//ICAT EXPORTED STRUCT
|
|
typedef struct {
|
|
DLC_SVC_TYPE DlcSvcType;
|
|
cmux_hal_type MuxHalType;
|
|
} MUX27010Cfg_t;
|
|
|
|
typedef struct{
|
|
unsigned char type; /* custom type */
|
|
DLC_SVC_TYPE MuxDlcSvcType; /* custom name */
|
|
cmux_hal_type MuxHalType;
|
|
}CUSTOM_MUX_MAP_ITEM;
|
|
|
|
typedef struct {
|
|
UINT8 ea:1;
|
|
UINT8 cr:1;
|
|
UINT8 server_chn:6;
|
|
} address_field;
|
|
|
|
typedef struct {
|
|
UINT8 ea:1;
|
|
UINT8 len:7;
|
|
}short_length;
|
|
|
|
typedef struct {
|
|
UINT8 ea:1;
|
|
UINT8 l_len:7;
|
|
UINT8 h_len;
|
|
}long_length;
|
|
|
|
typedef struct {
|
|
address_field addr;
|
|
UINT8 control;
|
|
short_length length;
|
|
}short_frame_head;
|
|
|
|
typedef struct {
|
|
short_frame_head h;
|
|
UINT8 data[0];
|
|
}short_frame;
|
|
|
|
typedef struct {
|
|
address_field addr;
|
|
UINT8 control;
|
|
long_length length;
|
|
UINT8 data[0];
|
|
} long_frame_head;
|
|
|
|
typedef struct {
|
|
long_frame_head h;
|
|
UINT8 data[0];
|
|
}long_frame;
|
|
|
|
/* Typedefinitions for structures used for the multiplexer commands */
|
|
typedef struct {
|
|
UINT8 ea:1;
|
|
UINT8 cr:1;
|
|
UINT8 type:6;
|
|
} mcc_type;
|
|
|
|
typedef struct {
|
|
mcc_type type;
|
|
short_length length;
|
|
UINT8 value[0];
|
|
} mcc_short_frame_head;
|
|
|
|
typedef struct {
|
|
mcc_short_frame_head h;
|
|
UINT8 value[0];
|
|
} mcc_short_frame;
|
|
|
|
/* MSC-command */
|
|
typedef struct {
|
|
UINT8 ea:1;
|
|
UINT8 fc:1;
|
|
UINT8 rtc:1;
|
|
UINT8 rtr:1;
|
|
UINT8 reserved:2;
|
|
UINT8 ic:1;
|
|
UINT8 dv:1;
|
|
}v24_sigs;
|
|
|
|
typedef struct {
|
|
UINT8 ea:1;
|
|
UINT8 b1:1;
|
|
UINT8 b2:1;
|
|
UINT8 b3:1;
|
|
UINT8 len:4;
|
|
}brk_sigs;
|
|
|
|
typedef struct {
|
|
address_field dlci;
|
|
UINT8 v24_sigs;
|
|
}msc_t;
|
|
|
|
/* PN-command */
|
|
typedef struct {
|
|
short_frame_head s_head;
|
|
mcc_short_frame_head mcc_s_head;
|
|
UINT8 dlci:6;
|
|
UINT8 res1:2;
|
|
UINT8 frame_type:4;
|
|
UINT8 credit_flow:4;
|
|
UINT8 prior:6;
|
|
UINT8 res2:2;
|
|
UINT8 ack_timer;
|
|
UINT8 frame_sizel;
|
|
UINT8 frame_sizeh;
|
|
UINT8 max_nbrof_retrans;
|
|
UINT8 credits;
|
|
UINT8 fcs;
|
|
} pn_msg;
|
|
|
|
/* PN-command */
|
|
typedef struct {
|
|
UINT8 dlci:6;
|
|
UINT8 res1:2;
|
|
UINT8 frame_type:4;
|
|
UINT8 convergence_layer:4;
|
|
UINT8 prior:6;
|
|
UINT8 res2:2;
|
|
UINT8 ack_timer;
|
|
UINT8 frame_sizel;
|
|
UINT8 frame_sizeh;
|
|
UINT8 max_nbrof_retrans;
|
|
UINT8 k;
|
|
// UINT8 fcs;
|
|
} pn_t;
|
|
|
|
/* NSC-command */
|
|
typedef struct {
|
|
short_frame_head s_head;
|
|
mcc_short_frame_head mcc_s_head;
|
|
mcc_type command_type;
|
|
UINT8 fcs;
|
|
} nsc_msg;
|
|
|
|
typedef struct CmuxCallBackFuncS
|
|
{
|
|
rx_ind_t RxIndCB; // Data indication (Pointer to the data & its length).
|
|
DlcLinkStatusIndCB LinkStatusIndCB; // Link status (TRUE=Up, FALSE=Down).
|
|
tx_done_t TxDoneCnfCB; // Tx complete (Pointer to buffer) - can free the buffer.
|
|
} CmuxCallBackFuncS ;
|
|
|
|
typedef struct muxparameter
|
|
{
|
|
unsigned short int mode;
|
|
unsigned short int subset;
|
|
unsigned int port_speed;
|
|
unsigned short int max_frame_size;
|
|
unsigned short int ack_time;
|
|
unsigned char max_retx_num;
|
|
unsigned char response_time;
|
|
unsigned char wakeup_response_time;
|
|
unsigned char window_size;
|
|
}muxparameter;
|
|
|
|
/*===========================================================================
|
|
|
|
EXTERN DECLARATIONS FOR MODULE
|
|
|
|
===========================================================================*/
|
|
|
|
/*===========================================================================
|
|
|
|
EXTERN FUNCTION DECLARATIONS
|
|
|
|
===========================================================================*/
|
|
/*************************************************************************/
|
|
/* */
|
|
/* FUNCTION */
|
|
/* */
|
|
/* mvUsbModemSendData */
|
|
/* */
|
|
/* DESCRIPTION */
|
|
/* */
|
|
/* Send modem packet data to PC via USB. */
|
|
/* */
|
|
/* CALLED BY */
|
|
/* */
|
|
/* Application */
|
|
/* */
|
|
/* CALLS */
|
|
/* */
|
|
/* Application The application function */
|
|
/* */
|
|
/* INPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/* OUTPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/*************************************************************************/
|
|
void mvUsbModemSendData(UINT8 sATP,UINT8 *bufPtr, UINT32 length);
|
|
|
|
/*************************************************************************/
|
|
/* */
|
|
/* FUNCTION */
|
|
/* */
|
|
/* mux_get_trace_mode */
|
|
/* */
|
|
/* DESCRIPTION */
|
|
/* */
|
|
/* The function is used to get the mux trace mode. */
|
|
/* */
|
|
/* CALLED BY */
|
|
/* */
|
|
/* Application */
|
|
/* */
|
|
/* CALLS */
|
|
/* */
|
|
/* Application The application function */
|
|
/* */
|
|
/* INPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/* OUTPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/*************************************************************************/
|
|
void mux_get_trace_mode(void);
|
|
|
|
/*************************************************************************/
|
|
/* */
|
|
/* FUNCTION */
|
|
/* */
|
|
/* cmux_get_dlc_priority */
|
|
/* */
|
|
/* DESCRIPTION */
|
|
/* */
|
|
/* The function is used to get the priority of cmux channel. */
|
|
/* */
|
|
/* CALLED BY */
|
|
/* */
|
|
/* Application */
|
|
/* */
|
|
/* CALLS */
|
|
/* */
|
|
/* Application The application function */
|
|
/* */
|
|
/* INPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/* OUTPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/*************************************************************************/
|
|
UINT8 cmux_get_dlc_priority(unsigned char ch);
|
|
|
|
/*************************************************************************/
|
|
/* */
|
|
/* FUNCTION */
|
|
/* */
|
|
/* cmux_get_dlc_MTU */
|
|
/* */
|
|
/* DESCRIPTION */
|
|
/* */
|
|
/* The function is used to get the MTU of cmux channel. */
|
|
/* */
|
|
/* CALLED BY */
|
|
/* */
|
|
/* Application */
|
|
/* */
|
|
/* CALLS */
|
|
/* */
|
|
/* Application The application function */
|
|
/* */
|
|
/* INPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/* OUTPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/*************************************************************************/
|
|
UINT32 cmux_get_dlc_MTU(unsigned char ch);
|
|
|
|
/*************************************************************************/
|
|
/* */
|
|
/* FUNCTION */
|
|
/* */
|
|
/* cmux_get_dlc_retx_num */
|
|
/* */
|
|
/* DESCRIPTION */
|
|
/* */
|
|
/* The function is used to get the max retransmit num of channel. */
|
|
/* */
|
|
/* CALLED BY */
|
|
/* */
|
|
/* Application */
|
|
/* */
|
|
/* CALLS */
|
|
/* */
|
|
/* Application The application function */
|
|
/* */
|
|
/* INPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/* OUTPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/*************************************************************************/
|
|
UINT32 cmux_get_dlc_retx_num(unsigned char ch);
|
|
|
|
/*************************************************************************/
|
|
/* */
|
|
/* FUNCTION */
|
|
/* */
|
|
/* cmux_init_tx */
|
|
/* */
|
|
/* DESCRIPTION */
|
|
/* */
|
|
/* The function intializes mux tx array */
|
|
/* */
|
|
/* CALLED BY */
|
|
/* */
|
|
/* Application */
|
|
/* */
|
|
/* CALLS */
|
|
/* */
|
|
/* Application The application function */
|
|
/* */
|
|
/* INPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/* OUTPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/*************************************************************************/
|
|
void cmux_init_tx(void);
|
|
|
|
/*************************************************************************/
|
|
/* */
|
|
/* FUNCTION */
|
|
/* */
|
|
/* cmux_match_index_service */
|
|
/* */
|
|
/* DESCRIPTION */
|
|
/* */
|
|
/* The function search the DLC cfg table to find the match item. */
|
|
/* */
|
|
/* CALLED BY */
|
|
/* */
|
|
/* Application */
|
|
/* */
|
|
/* CALLS */
|
|
/* */
|
|
/* Application The application function */
|
|
/* */
|
|
/* INPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/* OUTPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/*************************************************************************/
|
|
int cmux_match_index_service(int service_id);
|
|
|
|
/*************************************************************************/
|
|
/* */
|
|
/* FUNCTION */
|
|
/* */
|
|
/* cmux_hal_init */
|
|
/* */
|
|
/* DESCRIPTION */
|
|
/* */
|
|
/* The function intializes the Cmux Hal device. */
|
|
/* */
|
|
/* CALLED BY */
|
|
/* */
|
|
/* Application */
|
|
/* */
|
|
/* CALLS */
|
|
/* */
|
|
/* Application The application function */
|
|
/* */
|
|
/* INPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/* OUTPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/*************************************************************************/
|
|
void cmux_hal_init(cmux_hal_type PhyInterface);
|
|
|
|
/*************************************************************************/
|
|
/* */
|
|
/* FUNCTION */
|
|
/* */
|
|
/* cmux_get_next_msg_length */
|
|
/* */
|
|
/* DESCRIPTION */
|
|
/* */
|
|
/* The function get the next message length. */
|
|
/* */
|
|
/* CALLED BY */
|
|
/* */
|
|
/* Application */
|
|
/* */
|
|
/* CALLS */
|
|
/* */
|
|
/* Application The application function */
|
|
/* */
|
|
/* INPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/* OUTPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/*************************************************************************/
|
|
int cmux_get_next_msg_length(void);
|
|
|
|
/*************************************************************************/
|
|
/* */
|
|
/* FUNCTION */
|
|
/* */
|
|
/* cmux_serial_rcv_msg */
|
|
/* */
|
|
/* DESCRIPTION */
|
|
/* */
|
|
/* The function receive cmux hal message. */
|
|
/* */
|
|
/* CALLED BY */
|
|
/* */
|
|
/* Application */
|
|
/* */
|
|
/* CALLS */
|
|
/* */
|
|
/* Application The application function */
|
|
/* */
|
|
/* INPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/* OUTPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/*************************************************************************/
|
|
int cmux_serial_rcv_msg(char *buf, int length);
|
|
|
|
/*************************************************************************/
|
|
/* */
|
|
/* FUNCTION */
|
|
/* */
|
|
/* cmux_hal_rcv_frame */
|
|
/* */
|
|
/* DESCRIPTION */
|
|
/* */
|
|
/* The function receive cmux hal message. */
|
|
/* */
|
|
/* CALLED BY */
|
|
/* */
|
|
/* Application */
|
|
/* */
|
|
/* CALLS */
|
|
/* */
|
|
/* Application The application function */
|
|
/* */
|
|
/* INPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/* OUTPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/*************************************************************************/
|
|
int cmux_hal_rcv_frame(char *buf, int length);
|
|
|
|
/*************************************************************************/
|
|
/* */
|
|
/* FUNCTION */
|
|
/* */
|
|
/* cmux_dlc0_send_uih */
|
|
/* */
|
|
/* DESCRIPTION */
|
|
/* */
|
|
/* The function send UIH frame via dlc 0 channel. */
|
|
/* */
|
|
/* CALLED BY */
|
|
/* */
|
|
/* Application */
|
|
/* */
|
|
/* CALLS */
|
|
/* */
|
|
/* Application The application function */
|
|
/* */
|
|
/* INPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/* OUTPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/*************************************************************************/
|
|
int cmux_dlc0_send_uih(UINT8 cr, UINT8 type, UINT8 *data, int len);
|
|
|
|
/*************************************************************************/
|
|
/* */
|
|
/* FUNCTION */
|
|
/* */
|
|
/* cmux_msc_msg */
|
|
/* */
|
|
/* DESCRIPTION */
|
|
/* */
|
|
/* The function send CMUX MSC message. */
|
|
/* */
|
|
/* CALLED BY */
|
|
/* */
|
|
/* Application */
|
|
/* */
|
|
/* CALLS */
|
|
/* */
|
|
/* Application The application function */
|
|
/* */
|
|
/* INPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/* OUTPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/*************************************************************************/
|
|
int cmux_msc_msg( UINT8 value, UINT8 cr, UINT8 dlci);
|
|
|
|
/*************************************************************************/
|
|
/* */
|
|
/* FUNCTION */
|
|
/* */
|
|
/* cmux_fcoff_msg */
|
|
/* */
|
|
/* DESCRIPTION */
|
|
/* */
|
|
/* The function send flow control message. */
|
|
/* */
|
|
/* CALLED BY */
|
|
/* */
|
|
/* Application */
|
|
/* */
|
|
/* CALLS */
|
|
/* */
|
|
/* Application The application function */
|
|
/* */
|
|
/* INPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/* OUTPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/*************************************************************************/
|
|
void cmux_fcoff_msg(UINT8 cr);
|
|
|
|
/*************************************************************************/
|
|
/* */
|
|
/* FUNCTION */
|
|
/* */
|
|
/* cmux_fcon_msg */
|
|
/* */
|
|
/* DESCRIPTION */
|
|
/* */
|
|
/* The function send flow control on message. */
|
|
/* */
|
|
/* CALLED BY */
|
|
/* */
|
|
/* Application */
|
|
/* */
|
|
/* CALLS */
|
|
/* */
|
|
/* Application The application function */
|
|
/* */
|
|
/* INPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/* OUTPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/*************************************************************************/
|
|
void cmux_fcon_msg(UINT8 cr);
|
|
|
|
/*************************************************************************/
|
|
/* */
|
|
/* FUNCTION */
|
|
/* */
|
|
/* cmux_dlc_flow_control_off */
|
|
/* */
|
|
/* DESCRIPTION */
|
|
/* */
|
|
/* The function send flow control off message. */
|
|
/* */
|
|
/* CALLED BY */
|
|
/* */
|
|
/* Application */
|
|
/* */
|
|
/* CALLS */
|
|
/* */
|
|
/* Application The application function */
|
|
/* */
|
|
/* INPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/* OUTPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/*************************************************************************/
|
|
void cmux_dlc_flow_control_off(UINT8 dlci);
|
|
|
|
/*************************************************************************/
|
|
/* */
|
|
/* FUNCTION */
|
|
/* */
|
|
/* cmux_dlc_flow_control_on */
|
|
/* */
|
|
/* DESCRIPTION */
|
|
/* */
|
|
/* The function send flow control on message. */
|
|
/* */
|
|
/* CALLED BY */
|
|
/* */
|
|
/* Application */
|
|
/* */
|
|
/* CALLS */
|
|
/* */
|
|
/* Application The application function */
|
|
/* */
|
|
/* INPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/* OUTPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/*************************************************************************/
|
|
void cmux_dlc_flow_control_on(UINT8 dlci);
|
|
|
|
/*************************************************************************/
|
|
/* */
|
|
/* FUNCTION */
|
|
/* */
|
|
/* cmux_process_mcc */
|
|
/* */
|
|
/* DESCRIPTION */
|
|
/* */
|
|
/* The function process CMUX Multiplexer command cr. */
|
|
/* */
|
|
/* CALLED BY */
|
|
/* */
|
|
/* Application */
|
|
/* */
|
|
/* CALLS */
|
|
/* */
|
|
/* Application The application function */
|
|
/* */
|
|
/* INPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/* OUTPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/*************************************************************************/
|
|
void cmux_process_mcc(short_frame *data, UINT32 len, int longpkt);
|
|
|
|
/*************************************************************************/
|
|
/* */
|
|
/* FUNCTION */
|
|
/* */
|
|
/* dlc0_handler */
|
|
/* */
|
|
/* DESCRIPTION */
|
|
/* */
|
|
/* The function handler the DLC 0 frame. */
|
|
/* */
|
|
/* CALLED BY */
|
|
/* */
|
|
/* Application */
|
|
/* */
|
|
/* CALLS */
|
|
/* */
|
|
/* Application The application function */
|
|
/* */
|
|
/* INPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/* OUTPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/*************************************************************************/
|
|
void dlc0_handler(short_frame *frame, UINT16 size);
|
|
|
|
/*************************************************************************/
|
|
/* */
|
|
/* FUNCTION */
|
|
/* */
|
|
/* process_uih */
|
|
/* */
|
|
/* DESCRIPTION */
|
|
/* */
|
|
/* The function process the UIH frame. */
|
|
/* */
|
|
/* CALLED BY */
|
|
/* */
|
|
/* Application */
|
|
/* */
|
|
/* CALLS */
|
|
/* */
|
|
/* Application The application function */
|
|
/* */
|
|
/* INPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/* OUTPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/*************************************************************************/
|
|
int process_uih( short_frame *data, UINT32 len, UINT8 dlci);
|
|
|
|
/*************************************************************************/
|
|
/* */
|
|
/* FUNCTION */
|
|
/* */
|
|
/* send_ua */
|
|
/* */
|
|
/* DESCRIPTION */
|
|
/* */
|
|
/* The function send UA response. */
|
|
/* */
|
|
/* CALLED BY */
|
|
/* */
|
|
/* Application */
|
|
/* */
|
|
/* CALLS */
|
|
/* */
|
|
/* Application The application function */
|
|
/* */
|
|
/* INPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/* OUTPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/*************************************************************************/
|
|
void send_ua(UINT8 dlci);
|
|
|
|
/*************************************************************************/
|
|
/* */
|
|
/* FUNCTION */
|
|
/* */
|
|
/* send_dm */
|
|
/* */
|
|
/* DESCRIPTION */
|
|
/* */
|
|
/* The function send DM response. */
|
|
/* */
|
|
/* CALLED BY */
|
|
/* */
|
|
/* Application */
|
|
/* */
|
|
/* CALLS */
|
|
/* */
|
|
/* Application The application function */
|
|
/* */
|
|
/* INPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/* OUTPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/*************************************************************************/
|
|
void send_dm(UINT8 dlci);
|
|
|
|
/*************************************************************************/
|
|
/* */
|
|
/* FUNCTION */
|
|
/* */
|
|
/* send_sabm */
|
|
/* */
|
|
/* DESCRIPTION */
|
|
/* */
|
|
/* The function send sabm message. */
|
|
/* */
|
|
/* CALLED BY */
|
|
/* */
|
|
/* Application */
|
|
/* */
|
|
/* CALLS */
|
|
/* */
|
|
/* Application The application function */
|
|
/* */
|
|
/* INPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/* OUTPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/*************************************************************************/
|
|
void send_sabm(UINT8 dlci);
|
|
|
|
/*************************************************************************/
|
|
/* */
|
|
/* FUNCTION */
|
|
/* */
|
|
/* send_disc */
|
|
/* */
|
|
/* DESCRIPTION */
|
|
/* */
|
|
/* The function send Disconnect (DISC) command message. */
|
|
/* */
|
|
/* CALLED BY */
|
|
/* */
|
|
/* Application */
|
|
/* */
|
|
/* CALLS */
|
|
/* */
|
|
/* Application The application function */
|
|
/* */
|
|
/* INPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/* OUTPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/*************************************************************************/
|
|
void send_disc(UINT8 dlci);
|
|
|
|
/*************************************************************************/
|
|
/* */
|
|
/* FUNCTION */
|
|
/* */
|
|
/* send_pn_msg */
|
|
/* */
|
|
/* DESCRIPTION */
|
|
/* */
|
|
/* The function send Parameter Negotiation message. */
|
|
/* */
|
|
/* CALLED BY */
|
|
/* */
|
|
/* Application */
|
|
/* */
|
|
/* CALLS */
|
|
/* */
|
|
/* Application The application function */
|
|
/* */
|
|
/* INPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/* OUTPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/*************************************************************************/
|
|
void send_pn_msg( UINT8 prior, UINT32 frame_size, UINT8 convergence_layer, UINT8 dlci, UINT8 cr);
|
|
|
|
/*************************************************************************/
|
|
/* */
|
|
/* FUNCTION */
|
|
/* */
|
|
/* send_nsc_msg */
|
|
/* */
|
|
/* DESCRIPTION */
|
|
/* */
|
|
/* The function send Non Support Command message. */
|
|
/* */
|
|
/* CALLED BY */
|
|
/* */
|
|
/* Application */
|
|
/* */
|
|
/* CALLS */
|
|
/* */
|
|
/* Application The application function */
|
|
/* */
|
|
/* INPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/* OUTPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/*************************************************************************/
|
|
void send_nsc_msg(mcc_type cmd, UINT8 cr);
|
|
|
|
/*************************************************************************/
|
|
/* */
|
|
/* FUNCTION */
|
|
/* */
|
|
/* cmux_add_to_rx_queue */
|
|
/* */
|
|
/* DESCRIPTION */
|
|
/* */
|
|
/* The function add cmux message to RX queue. */
|
|
/* */
|
|
/* CALLED BY */
|
|
/* */
|
|
/* Application */
|
|
/* */
|
|
/* CALLS */
|
|
/* */
|
|
/* Application The application function */
|
|
/* */
|
|
/* INPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/* OUTPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/*************************************************************************/
|
|
int cmux_add_to_rx_queue(UINT8 *data, UINT16 size);
|
|
|
|
/*************************************************************************/
|
|
/* */
|
|
/* FUNCTION */
|
|
/* */
|
|
/* composite_timer_callback */
|
|
/* */
|
|
/* DESCRIPTION */
|
|
/* */
|
|
/* The function is composite timer callback. */
|
|
/* */
|
|
/* CALLED BY */
|
|
/* */
|
|
/* Application */
|
|
/* */
|
|
/* CALLS */
|
|
/* */
|
|
/* Application The application function */
|
|
/* */
|
|
/* INPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/* OUTPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/*************************************************************************/
|
|
void composite_timer_callback (UINT32 source_call);
|
|
|
|
/*************************************************************************/
|
|
/* */
|
|
/* FUNCTION */
|
|
/* */
|
|
/* cmux_process_frame */
|
|
/* */
|
|
/* DESCRIPTION */
|
|
/* */
|
|
/* The function process the RX CMUX frame. */
|
|
/* */
|
|
/* CALLED BY */
|
|
/* */
|
|
/* Application */
|
|
/* */
|
|
/* CALLS */
|
|
/* */
|
|
/* Application The application function */
|
|
/* */
|
|
/* INPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/* OUTPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/*************************************************************************/
|
|
void cmux_process_frame(UINT8 * data,UINT16 size);
|
|
|
|
/*************************************************************************/
|
|
/* */
|
|
/* FUNCTION */
|
|
/* */
|
|
/* cmux_tx_task */
|
|
/* */
|
|
/* DESCRIPTION */
|
|
/* */
|
|
/* The function is cmux TX task function. */
|
|
/* */
|
|
/* CALLED BY */
|
|
/* */
|
|
/* Application */
|
|
/* */
|
|
/* CALLS */
|
|
/* */
|
|
/* Application The application function */
|
|
/* */
|
|
/* INPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/* OUTPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/*************************************************************************/
|
|
void cmux_tx_task(void *argv);
|
|
|
|
/*************************************************************************/
|
|
/* */
|
|
/* FUNCTION */
|
|
/* */
|
|
/* cmux_rx_task */
|
|
/* */
|
|
/* DESCRIPTION */
|
|
/* */
|
|
/* The function is cmux RX task function. */
|
|
/* */
|
|
/* CALLED BY */
|
|
/* */
|
|
/* Application */
|
|
/* */
|
|
/* CALLS */
|
|
/* */
|
|
/* Application The application function */
|
|
/* */
|
|
/* INPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/* OUTPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/*************************************************************************/
|
|
void cmux_rx_task(void *argv);
|
|
|
|
/*************************************************************************/
|
|
/* */
|
|
/* FUNCTION */
|
|
/* */
|
|
/* cmux_process_cmux_cmd */
|
|
/* */
|
|
/* DESCRIPTION */
|
|
/* */
|
|
/* The function process cmux command. */
|
|
/* */
|
|
/* CALLED BY */
|
|
/* */
|
|
/* Application */
|
|
/* */
|
|
/* CALLS */
|
|
/* */
|
|
/* Application The application function */
|
|
/* */
|
|
/* INPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/* OUTPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/*************************************************************************/
|
|
void cmux_process_cmux_cmd(char *buf, int frame_length);
|
|
|
|
/*************************************************************************/
|
|
/* */
|
|
/* FUNCTION */
|
|
/* */
|
|
/* cmux_hal_process_rx */
|
|
/* */
|
|
/* DESCRIPTION */
|
|
/* */
|
|
/* The function process cmux hal RX message. */
|
|
/* */
|
|
/* CALLED BY */
|
|
/* */
|
|
/* Application */
|
|
/* */
|
|
/* CALLS */
|
|
/* */
|
|
/* Application The application function */
|
|
/* */
|
|
/* INPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/* OUTPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/*************************************************************************/
|
|
void cmux_hal_process_rx(int freelen);
|
|
|
|
/*************************************************************************/
|
|
/* */
|
|
/* FUNCTION */
|
|
/* */
|
|
/* cmux_wait_dlc_open */
|
|
/* */
|
|
/* DESCRIPTION */
|
|
/* */
|
|
/* The function wait cmux dlc open. */
|
|
/* */
|
|
/* CALLED BY */
|
|
/* */
|
|
/* Application */
|
|
/* */
|
|
/* CALLS */
|
|
/* */
|
|
/* Application The application function */
|
|
/* */
|
|
/* INPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/* OUTPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/*************************************************************************/
|
|
void cmux_wait_dlc_open(int dlci);
|
|
|
|
/*************************************************************************/
|
|
/* */
|
|
/* FUNCTION */
|
|
/* */
|
|
/* cmux_startup */
|
|
/* */
|
|
/* DESCRIPTION */
|
|
/* */
|
|
/* The function is used to start up cmux mode. */
|
|
/* */
|
|
/* CALLED BY */
|
|
/* */
|
|
/* Application */
|
|
/* */
|
|
/* CALLS */
|
|
/* */
|
|
/* Application The application function */
|
|
/* */
|
|
/* INPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/* OUTPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/*************************************************************************/
|
|
void cmux_startup(muxparameter * par);
|
|
|
|
/*************************************************************************/
|
|
/* */
|
|
/* FUNCTION */
|
|
/* */
|
|
/* cmux_startup */
|
|
/* */
|
|
/* DESCRIPTION */
|
|
/* */
|
|
/* The function is used to start up cmux mode. */
|
|
/* */
|
|
/* CALLED BY */
|
|
/* */
|
|
/* Application */
|
|
/* */
|
|
/* CALLS */
|
|
/* */
|
|
/* Application The application function */
|
|
/* */
|
|
/* INPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/* OUTPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/*************************************************************************/
|
|
void cmux_startup_internal(muxparameter * par);
|
|
|
|
/*************************************************************************/
|
|
/* */
|
|
/* FUNCTION */
|
|
/* */
|
|
/* cmux_dlc_open */
|
|
/* */
|
|
/* DESCRIPTION */
|
|
/* */
|
|
/* The function open CMUX dlc channel. */
|
|
/* */
|
|
/* CALLED BY */
|
|
/* */
|
|
/* Application */
|
|
/* */
|
|
/* CALLS */
|
|
/* */
|
|
/* Application The application function */
|
|
/* */
|
|
/* INPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/* OUTPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/*************************************************************************/
|
|
int cmux_dlc_open(int service_id, CmuxCallBackFuncS *Func);
|
|
|
|
/*************************************************************************/
|
|
/* */
|
|
/* FUNCTION */
|
|
/* */
|
|
/* cmux_transmit_cmd_data_to_app */
|
|
/* */
|
|
/* DESCRIPTION */
|
|
/* */
|
|
/* The function transmit CMUX comand or data to app. */
|
|
/* */
|
|
/* CALLED BY */
|
|
/* */
|
|
/* Application */
|
|
/* */
|
|
/* CALLS */
|
|
/* */
|
|
/* Application The application function */
|
|
/* */
|
|
/* INPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/* OUTPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/*************************************************************************/
|
|
void cmux_transmit_cmd_data_to_app(int channel);
|
|
|
|
/*************************************************************************/
|
|
/* */
|
|
/* FUNCTION */
|
|
/* */
|
|
/* cmux_default_tx_complete_callback */
|
|
/* */
|
|
/* DESCRIPTION */
|
|
/* */
|
|
/* The function is default CMUX TX complete callback function. */
|
|
/* */
|
|
/* CALLED BY */
|
|
/* */
|
|
/* Application */
|
|
/* */
|
|
/* CALLS */
|
|
/* */
|
|
/* Application The application function */
|
|
/* */
|
|
/* INPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/* OUTPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/*************************************************************************/
|
|
void cmux_default_tx_complete_callback(unsigned int dlc, void *buffer, unsigned int length);
|
|
|
|
/*************************************************************************/
|
|
/* */
|
|
/* FUNCTION */
|
|
/* */
|
|
/* cmux_init_internal */
|
|
/* */
|
|
/* DESCRIPTION */
|
|
/* */
|
|
/* The function intializes cmux related variables and task. */
|
|
/* */
|
|
/* CALLED BY */
|
|
/* */
|
|
/* Application */
|
|
/* */
|
|
/* CALLS */
|
|
/* */
|
|
/* Application The application function */
|
|
/* */
|
|
/* INPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/* OUTPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/*************************************************************************/
|
|
void cmux_init_internal(void);
|
|
|
|
/*************************************************************************/
|
|
/* */
|
|
/* FUNCTION */
|
|
/* */
|
|
/* cmux_write */
|
|
/* */
|
|
/* DESCRIPTION */
|
|
/* */
|
|
/* The function is cmux write function. */
|
|
/* */
|
|
/* CALLED BY */
|
|
/* */
|
|
/* Application */
|
|
/* */
|
|
/* CALLS */
|
|
/* */
|
|
/* Application The application function */
|
|
/* */
|
|
/* INPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/* OUTPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/*************************************************************************/
|
|
int cmux_write(int dlci, char *packet, int length);
|
|
|
|
/*************************************************************************/
|
|
/* */
|
|
/* FUNCTION */
|
|
/* */
|
|
/* cmux_add_tx_queue */
|
|
/* */
|
|
/* DESCRIPTION */
|
|
/* */
|
|
/* The function add send packet to TX queue. */
|
|
/* */
|
|
/* CALLED BY */
|
|
/* */
|
|
/* Application */
|
|
/* */
|
|
/* CALLS */
|
|
/* */
|
|
/* Application The application function */
|
|
/* */
|
|
/* INPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/* OUTPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/*************************************************************************/
|
|
int cmux_add_tx_queue(int dlci, char* packet, int length, int type);
|
|
|
|
/*************************************************************************/
|
|
/* */
|
|
/* FUNCTION */
|
|
/* */
|
|
/* cmux_hal_change_to_frame_mode */
|
|
/* */
|
|
/* DESCRIPTION */
|
|
/* */
|
|
/* The function change CMUX to be frame mode. */
|
|
/* */
|
|
/* CALLED BY */
|
|
/* */
|
|
/* Application */
|
|
/* */
|
|
/* CALLS */
|
|
/* */
|
|
/* Application The application function */
|
|
/* */
|
|
/* INPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/* OUTPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/*************************************************************************/
|
|
void cmux_hal_change_to_frame_mode(void);
|
|
|
|
/*************************************************************************/
|
|
/* */
|
|
/* FUNCTION */
|
|
/* */
|
|
/* cmux_get_next_frame_length */
|
|
/* */
|
|
/* DESCRIPTION */
|
|
/* */
|
|
/* The function get the next frame length. */
|
|
/* */
|
|
/* CALLED BY */
|
|
/* */
|
|
/* Application */
|
|
/* */
|
|
/* CALLS */
|
|
/* */
|
|
/* Application The application function */
|
|
/* */
|
|
/* INPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/* OUTPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/*************************************************************************/
|
|
int cmux_get_next_frame_length(void);
|
|
|
|
/*************************************************************************/
|
|
/* */
|
|
/* FUNCTION */
|
|
/* */
|
|
/* cmux_hal_rx_msg */
|
|
/* */
|
|
/* DESCRIPTION */
|
|
/* */
|
|
/* The function process cmux hal RX message. */
|
|
/* */
|
|
/* CALLED BY */
|
|
/* */
|
|
/* Application */
|
|
/* */
|
|
/* CALLS */
|
|
/* */
|
|
/* Application The application function */
|
|
/* */
|
|
/* INPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/* OUTPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/*************************************************************************/
|
|
void cmux_hal_rx_msg(unsigned char *mesg, unsigned int mesglength);
|
|
|
|
/*************************************************************************/
|
|
/* */
|
|
/* FUNCTION */
|
|
/* */
|
|
/* cmux_flow_control_on */
|
|
/* */
|
|
/* DESCRIPTION */
|
|
/* */
|
|
/* The function send flow control on message. */
|
|
/* */
|
|
/* CALLED BY */
|
|
/* */
|
|
/* Application */
|
|
/* */
|
|
/* CALLS */
|
|
/* */
|
|
/* Application The application function */
|
|
/* */
|
|
/* INPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/* OUTPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/*************************************************************************/
|
|
void cmux_flow_control_on(void);
|
|
|
|
/*************************************************************************/
|
|
/* */
|
|
/* FUNCTION */
|
|
/* */
|
|
/* cmux_flow_control_off */
|
|
/* */
|
|
/* DESCRIPTION */
|
|
/* */
|
|
/* The function send flow control off message. */
|
|
/* */
|
|
/* CALLED BY */
|
|
/* */
|
|
/* Application */
|
|
/* */
|
|
/* CALLS */
|
|
/* */
|
|
/* Application The application function */
|
|
/* */
|
|
/* INPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/* OUTPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/*************************************************************************/
|
|
void cmux_flow_control_off(void);
|
|
|
|
/*************************************************************************/
|
|
/* */
|
|
/* FUNCTION */
|
|
/* */
|
|
/* cmux_channel_block */
|
|
/* */
|
|
/* DESCRIPTION */
|
|
/* */
|
|
/* The function control cmux channel block. */
|
|
/* */
|
|
/* CALLED BY */
|
|
/* */
|
|
/* Application */
|
|
/* */
|
|
/* CALLS */
|
|
/* */
|
|
/* Application The application function */
|
|
/* */
|
|
/* INPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/* OUTPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/*************************************************************************/
|
|
void cmux_channel_block(int dlci);
|
|
|
|
/*************************************************************************/
|
|
/* */
|
|
/* FUNCTION */
|
|
/* */
|
|
/* cmux_channel_resume */
|
|
/* */
|
|
/* DESCRIPTION */
|
|
/* */
|
|
/* The function control cmux channel resume. */
|
|
/* */
|
|
/* CALLED BY */
|
|
/* */
|
|
/* Application */
|
|
/* */
|
|
/* CALLS */
|
|
/* */
|
|
/* Application The application function */
|
|
/* */
|
|
/* INPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/* OUTPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/*************************************************************************/
|
|
void cmux_channel_resume(int dlci);
|
|
|
|
/*************************************************************************/
|
|
/* */
|
|
/* FUNCTION */
|
|
/* */
|
|
/* cmux_channel_get_status */
|
|
/* */
|
|
/* DESCRIPTION */
|
|
/* */
|
|
/* The function get cmux channel status. */
|
|
/* */
|
|
/* CALLED BY */
|
|
/* */
|
|
/* Application */
|
|
/* */
|
|
/* CALLS */
|
|
/* */
|
|
/* Application The application function */
|
|
/* */
|
|
/* INPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/* OUTPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/*************************************************************************/
|
|
int cmux_channel_get_status(int dlci);
|
|
|
|
/*************************************************************************/
|
|
/* */
|
|
/* FUNCTION */
|
|
/* */
|
|
/* cmux_get_rx_count */
|
|
/* */
|
|
/* DESCRIPTION */
|
|
/* */
|
|
/* The function get cmux RX count. */
|
|
/* */
|
|
/* CALLED BY */
|
|
/* */
|
|
/* Application */
|
|
/* */
|
|
/* CALLS */
|
|
/* */
|
|
/* Application The application function */
|
|
/* */
|
|
/* INPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/* OUTPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/*************************************************************************/
|
|
int cmux_get_rx_count(int dlci);
|
|
|
|
/*************************************************************************/
|
|
/* */
|
|
/* FUNCTION */
|
|
/* */
|
|
/* cmux_get_dlc_status */
|
|
/* */
|
|
/* DESCRIPTION */
|
|
/* */
|
|
/* The function get cmux dlc status. */
|
|
/* */
|
|
/* CALLED BY */
|
|
/* */
|
|
/* Application */
|
|
/* */
|
|
/* CALLS */
|
|
/* */
|
|
/* Application The application function */
|
|
/* */
|
|
/* INPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/* OUTPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/*************************************************************************/
|
|
int cmux_get_dlc_status(int dlci);
|
|
|
|
/*************************************************************************/
|
|
/* */
|
|
/* FUNCTION */
|
|
/* */
|
|
/* CmuxDlcDataRxInd */
|
|
/* */
|
|
/* DESCRIPTION */
|
|
/* */
|
|
/* The function is Cmux Dlc data rx indication function. */
|
|
/* */
|
|
/* CALLED BY */
|
|
/* */
|
|
/* Application */
|
|
/* */
|
|
/* CALLS */
|
|
/* */
|
|
/* Application The application function */
|
|
/* */
|
|
/* INPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/* OUTPUTS */
|
|
/* */
|
|
/* int return status */
|
|
/* */
|
|
/*************************************************************************/
|
|
int CmuxDlcDataRxInd(unsigned int dlci);
|
|
|
|
/*************************************************************************/
|
|
/* */
|
|
/* FUNCTION */
|
|
/* */
|
|
/* CmuxLinkStatusIndCB */
|
|
/* */
|
|
/* DESCRIPTION */
|
|
/* */
|
|
/* The function is Cmux link state change indication function. */
|
|
/* */
|
|
/* CALLED BY */
|
|
/* */
|
|
/* Application */
|
|
/* */
|
|
/* CALLS */
|
|
/* */
|
|
/* Application The application function */
|
|
/* */
|
|
/* INPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/* OUTPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/*************************************************************************/
|
|
void CmuxLinkStatusIndCB(unsigned int dlci,DlcLinkStatus status);
|
|
|
|
/*************************************************************************/
|
|
/* */
|
|
/* FUNCTION */
|
|
/* */
|
|
/* CmuxDlcTxCompleteCallback */
|
|
/* */
|
|
/* DESCRIPTION */
|
|
/* */
|
|
/* The function is Cmux Dlc Tx Complete Callback function. */
|
|
/* */
|
|
/* CALLED BY */
|
|
/* */
|
|
/* Application */
|
|
/* */
|
|
/* CALLS */
|
|
/* */
|
|
/* Application The application function */
|
|
/* */
|
|
/* INPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/* OUTPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/*************************************************************************/
|
|
void CmuxDlcTxCompleteCallback(unsigned int dlci, void* buffer, unsigned int length);
|
|
|
|
/*************************************************************************/
|
|
/* */
|
|
/* FUNCTION */
|
|
/* */
|
|
/* cmux_insert_Qos_queue */
|
|
/* */
|
|
/* DESCRIPTION */
|
|
/* */
|
|
/* The function insert the node to Qos TX queue. */
|
|
/* */
|
|
/* CALLED BY */
|
|
/* */
|
|
/* Application */
|
|
/* */
|
|
/* CALLS */
|
|
/* */
|
|
/* Application The application function */
|
|
/* */
|
|
/* INPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/* OUTPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/*************************************************************************/
|
|
void cmux_insert_Qos_queue(int dlci, cmux_data_node* node);
|
|
|
|
/*************************************************************************/
|
|
/* */
|
|
/* FUNCTION */
|
|
/* */
|
|
/* cmux_frame_send_init */
|
|
/* */
|
|
/* DESCRIPTION */
|
|
/* */
|
|
/* The function intializes the cmux frame_header and frame_tail */
|
|
/* */
|
|
/* CALLED BY */
|
|
/* */
|
|
/* Application */
|
|
/* */
|
|
/* CALLS */
|
|
/* */
|
|
/* Application The application function */
|
|
/* */
|
|
/* INPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/* OUTPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/*************************************************************************/
|
|
void cmux_frame_send_init(void);
|
|
|
|
/*************************************************************************/
|
|
/* */
|
|
/* FUNCTION */
|
|
/* */
|
|
/* cmux_init_dev_type */
|
|
/* */
|
|
/* DESCRIPTION */
|
|
/* */
|
|
/* The function intializes the cmux device type. */
|
|
/* */
|
|
/* CALLED BY */
|
|
/* */
|
|
/* Application */
|
|
/* */
|
|
/* CALLS */
|
|
/* */
|
|
/* Application The application function */
|
|
/* */
|
|
/* INPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/* OUTPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/*************************************************************************/
|
|
void cmux_init_dev_type(void);
|
|
|
|
/*************************************************************************/
|
|
/* */
|
|
/* FUNCTION */
|
|
/* */
|
|
/* send_control_frame */
|
|
/* */
|
|
/* DESCRIPTION */
|
|
/* */
|
|
/* The function send the cmux control frame. */
|
|
/* */
|
|
/* CALLED BY */
|
|
/* */
|
|
/* Application */
|
|
/* */
|
|
/* CALLS */
|
|
/* */
|
|
/* Application The application function */
|
|
/* */
|
|
/* INPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/* OUTPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/*************************************************************************/
|
|
int send_control_frame(UINT8 dlci, UINT8 frame_cr, UINT8 frametype, char *data_node, int len);
|
|
|
|
/*************************************************************************/
|
|
/* */
|
|
/* FUNCTION */
|
|
/* */
|
|
/* cmux_send_frame */
|
|
/* */
|
|
/* DESCRIPTION */
|
|
/* */
|
|
/* The function send cmux frame. */
|
|
/* */
|
|
/* CALLED BY */
|
|
/* */
|
|
/* Application */
|
|
/* */
|
|
/* CALLS */
|
|
/* */
|
|
/* Application The application function */
|
|
/* */
|
|
/* INPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/* OUTPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/*************************************************************************/
|
|
int cmux_send_frame(UINT8 dlci, cmux_data_node * data_node);
|
|
|
|
/*************************************************************************/
|
|
/* */
|
|
/* FUNCTION */
|
|
/* */
|
|
/* cmux_select_dlc_by_prio */
|
|
/* */
|
|
/* DESCRIPTION */
|
|
/* */
|
|
/* The function select the cmux dlc_by priority. */
|
|
/* */
|
|
/* CALLED BY */
|
|
/* */
|
|
/* Application */
|
|
/* */
|
|
/* CALLS */
|
|
/* */
|
|
/* Application The application function */
|
|
/* */
|
|
/* INPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/* OUTPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/*************************************************************************/
|
|
int cmux_select_dlc_by_prio(void);
|
|
|
|
/*************************************************************************/
|
|
/* */
|
|
/* FUNCTION */
|
|
/* */
|
|
/* cmux_dequeue_Qos_queue */
|
|
/* */
|
|
/* DESCRIPTION */
|
|
/* */
|
|
/* The function dequeue node from tx queue. */
|
|
/* */
|
|
/* CALLED BY */
|
|
/* */
|
|
/* Application */
|
|
/* */
|
|
/* CALLS */
|
|
/* */
|
|
/* Application The application function */
|
|
/* */
|
|
/* INPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/* OUTPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/*************************************************************************/
|
|
cmux_data_node * cmux_dequeue_Qos_queue(int dlci);
|
|
|
|
/*************************************************************************/
|
|
/* */
|
|
/* FUNCTION */
|
|
/* */
|
|
/* cmux_tx_fcs_compute */
|
|
/* */
|
|
/* DESCRIPTION */
|
|
/* */
|
|
/* The function compute the TX FCS data. */
|
|
/* */
|
|
/* CALLED BY */
|
|
/* */
|
|
/* Application */
|
|
/* */
|
|
/* CALLS */
|
|
/* */
|
|
/* Application The application function */
|
|
/* */
|
|
/* INPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/* OUTPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/*************************************************************************/
|
|
UINT8 cmux_tx_fcs_compute(UINT8 * payload, int len);
|
|
|
|
/*************************************************************************/
|
|
/* */
|
|
/* FUNCTION */
|
|
/* */
|
|
/* cmux_rx_fcs_check */
|
|
/* */
|
|
/* DESCRIPTION */
|
|
/* */
|
|
/* The function check the RX FCS. */
|
|
/* */
|
|
/* CALLED BY */
|
|
/* */
|
|
/* Application */
|
|
/* */
|
|
/* CALLS */
|
|
/* */
|
|
/* Application The application function */
|
|
/* */
|
|
/* INPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/* OUTPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/*************************************************************************/
|
|
UINT8 cmux_rx_fcs_check(char *payload, int len);
|
|
|
|
/*************************************************************************/
|
|
/* */
|
|
/* FUNCTION */
|
|
/* */
|
|
/* cmux_dlc_tx_queue_unschedule */
|
|
/* */
|
|
/* DESCRIPTION */
|
|
/* */
|
|
/* The function remove dlc node from priority array to stop schedule.*/
|
|
/* */
|
|
/* CALLED BY */
|
|
/* */
|
|
/* Application */
|
|
/* */
|
|
/* CALLS */
|
|
/* */
|
|
/* Application The application function */
|
|
/* */
|
|
/* INPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/* OUTPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/*************************************************************************/
|
|
void cmux_dlc_tx_queue_unschedule(UINT8 dlci);
|
|
|
|
/*************************************************************************/
|
|
/* */
|
|
/* FUNCTION */
|
|
/* */
|
|
/* cmux_dlc_tx_queue_schedule */
|
|
/* */
|
|
/* DESCRIPTION */
|
|
/* */
|
|
/* The function add dlc node to priority array to start schedule. */
|
|
/* */
|
|
/* CALLED BY */
|
|
/* */
|
|
/* Application */
|
|
/* */
|
|
/* CALLS */
|
|
/* */
|
|
/* Application The application function */
|
|
/* */
|
|
/* INPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/* OUTPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/*************************************************************************/
|
|
void cmux_dlc_tx_queue_schedule(UINT8 dlci);
|
|
|
|
/*************************************************************************/
|
|
/* */
|
|
/* FUNCTION */
|
|
/* */
|
|
/* cmux_fcs_compute */
|
|
/* */
|
|
/* DESCRIPTION */
|
|
/* */
|
|
/* The function compute the FCS data. */
|
|
/* */
|
|
/* CALLED BY */
|
|
/* */
|
|
/* Application */
|
|
/* */
|
|
/* CALLS */
|
|
/* */
|
|
/* Application The application function */
|
|
/* */
|
|
/* INPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/* OUTPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/*************************************************************************/
|
|
UINT8 cmux_fcs_compute(const UINT8 payload[], int len);
|
|
|
|
/*************************************************************************/
|
|
/* */
|
|
/* FUNCTION */
|
|
/* */
|
|
/* cmux_usb_frame_send */
|
|
/* */
|
|
/* DESCRIPTION */
|
|
/* */
|
|
/* The function send Cmux frame by usb device. */
|
|
/* */
|
|
/* CALLED BY */
|
|
/* */
|
|
/* Application */
|
|
/* */
|
|
/* CALLS */
|
|
/* */
|
|
/* Application The application function */
|
|
/* */
|
|
/* INPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/* OUTPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/*************************************************************************/
|
|
int cmux_usb_frame_send(cmux_data_node *frame_header, int length);
|
|
|
|
/*************************************************************************/
|
|
/* */
|
|
/* FUNCTION */
|
|
/* */
|
|
/* cmux_uart_send */
|
|
/* */
|
|
/* DESCRIPTION */
|
|
/* */
|
|
/* The function send Cmux data by uart device. */
|
|
/* */
|
|
/* CALLED BY */
|
|
/* */
|
|
/* Application */
|
|
/* */
|
|
/* CALLS */
|
|
/* */
|
|
/* Application The application function */
|
|
/* */
|
|
/* INPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/* OUTPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/*************************************************************************/
|
|
int cmux_uart_send(char * buf, int length);
|
|
|
|
/*************************************************************************/
|
|
/* */
|
|
/* FUNCTION */
|
|
/* */
|
|
/* cmux_uart_frame_send */
|
|
/* */
|
|
/* DESCRIPTION */
|
|
/* */
|
|
/* The function send Cmux frame by uart device. */
|
|
/* */
|
|
/* CALLED BY */
|
|
/* */
|
|
/* Application */
|
|
/* */
|
|
/* CALLS */
|
|
/* */
|
|
/* Application The application function */
|
|
/* */
|
|
/* INPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/* OUTPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/*************************************************************************/
|
|
int cmux_uart_frame_send(cmux_data_node *frame_header, int length);
|
|
|
|
/*************************************************************************/
|
|
/* */
|
|
/* FUNCTION */
|
|
/* */
|
|
/* cmux_usb_send */
|
|
/* */
|
|
/* DESCRIPTION */
|
|
/* */
|
|
/* The function send Cmux data by usb device. */
|
|
/* */
|
|
/* CALLED BY */
|
|
/* */
|
|
/* Application */
|
|
/* */
|
|
/* CALLS */
|
|
/* */
|
|
/* Application The application function */
|
|
/* */
|
|
/* INPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/* OUTPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/*************************************************************************/
|
|
int cmux_usb_send(char * buf, int length);
|
|
|
|
/*************************************************************************/
|
|
/* */
|
|
/* FUNCTION */
|
|
/* */
|
|
/* get_cmux_mode */
|
|
/* */
|
|
/* DESCRIPTION */
|
|
/* */
|
|
/* The function is used to get cmux mode. */
|
|
/* */
|
|
/* CALLED BY */
|
|
/* */
|
|
/* Application */
|
|
/* */
|
|
/* CALLS */
|
|
/* */
|
|
/* Application The application function */
|
|
/* */
|
|
/* INPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/* OUTPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/*************************************************************************/
|
|
int get_cmux_mode(void);
|
|
|
|
/*************************************************************************/
|
|
/* */
|
|
/* FUNCTION */
|
|
/* */
|
|
/* cmux_quit */
|
|
/* */
|
|
/* DESCRIPTION */
|
|
/* */
|
|
/* The function is used to quit cmux mode. */
|
|
/* */
|
|
/* CALLED BY */
|
|
/* */
|
|
/* Application */
|
|
/* */
|
|
/* CALLS */
|
|
/* */
|
|
/* Application The application function */
|
|
/* */
|
|
/* INPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/* OUTPUTS */
|
|
/* */
|
|
/* None N/A */
|
|
/* */
|
|
/*************************************************************************/
|
|
void cmux_quit(void);
|
|
|
|
|
|
#endif
|