⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ppp_buff_mgr.h

📁 最新MTK手机软件源码
💻 H
字号:
/*****************************************************************************
*  Copyright Statement:
*  --------------------
*  This software is protected by Copyright and the information contained
*  herein is confidential. The software may not be copied and the information
*  contained herein may not be used or disclosed except with the written
*  permission of MediaTek Inc. (C) 2005
*
*  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
*  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
*  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
*  AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
*  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
*  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
*  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
*  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
*  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
*  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
*  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
*  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
*
*  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
*  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
*  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
*  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
*  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. 
*
*  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
*  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
*  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
*  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
*  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
*
*****************************************************************************/

/*****************************************************************************
 *
 * Filename:
 * ---------
 * PPP_BUFF_MGR.H
 *
 * Project:
 * --------
 *   MAUI
 *
 * Description:
 * ------------
 *   This file describes some buffer management procedures in PPP.
 *
 * Author:
 * -------
 * -------
 * -------
 *
 *============================================================================
 *             HISTORY
 * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
 *------------------------------------------------------------------------------
 * removed!
 *
 *------------------------------------------------------------------------------
 * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
 *============================================================================
 ****************************************************************************/
#ifndef _PPP_BUFF_MGR_H
#define _PPP_BUFF_MGR_H
/* Define the buffer used by PPP */
#define UART_TEMP_READ_BUFF_SIZE     1500 /*512*/
#define UART_TEMP_WRITE_BUFF_SIZE   3010
#define MAX_CTRL_PKT_SIZE                    256
#define MAX_IP_PKT_SIZE                        1510
/* MAX_OUT_PKT_CSD_SIZE = 3010 is good! */
#define MAX_OUT_PKT_CSD_SIZE             3010 

/* Allocate FLC buffer to pass data */
#define GET_GPRS_UL_FLC_PEER_BUFF(is_pool_presence,size) ((peer_buff_struct *)gprs_flc_get_peer_buff(NPDU_DATA,0, GPRS_FLC_UL, 0, (size), SND_UL_CTRL_HEADER_LENGTH, 0,&(is_pool_presence)))
#ifdef __TCPIP__
#define GET_CSD_DL_FLC_PEER_BUFF(is_pool_presence,size) ((peer_buff_struct *)gprs_flc_get_peer_buff(SPDU_DATA,0,GPRS_FLC_DL, 0,(size),MBUF_LENGTH, 0, &(is_pool_presence)))
#define GET_CSD_UL_FLC_PEER_BUFF(is_pool_presence,size) ((peer_buff_struct *)gprs_flc_get_peer_buff(APPDU_DATA,0, GPRS_FLC_UL, 0, (size),0, 0, &(is_pool_presence)))
#else /* if not define __TCPIP__ */
#define GET_CSD_DL_FLC_PEER_BUFF(is_pool_presence,size)    NULL
#define GET_CSD_UL_FLC_PEER_BUFF(is_pool_presence,size)    NULL
#endif /* ~__TCPIP__ */
/* Deallocate FLC buffer we allocate before */
#define FREE_GPRS_UL_FLC_PEER_BUFF(ptr,data_type,ctx_id)   (gprs_flc_free_peer_buff(NPDU_DATA, 0, GPRS_FLC_UL, 0, (ptr)))
#ifdef __TCPIP__
#define FREE_CSD_DL_FLC_PEER_BUFF(ptr,data_type,ctx_id)     (gprs_flc_free_peer_buff(SPDU_DATA, 0, GPRS_FLC_DL, 0, (ptr)))
#define FREE_CSD_UL_FLC_PEER_BUFF(ptr,data_type,ctx_id)     (gprs_flc_free_peer_buff(APPDU_DATA,0,GPRS_FLC_UL,0,(ptr)))
#else /* if not define __TCPIP__ */
#define FREE_CSD_DL_FLC_PEER_BUFF(ptr,data_type,ctx_id)    ASSERT(0)
#define FREE_CSD_UL_FLC_PEER_BUFF(ptr,data_type,ctx_id)    ASSERT(0)
#endif /* ~__TCPIP__ */
/* Check FLC buffer pool */
#define CHECK_FLC_CONTEXT_ACTIVATED(data_type,dir,ctx_id)  gprs_flc_is_flc_context_activated((data_type),0,(dir),(ctx_id))
/* Deallocate FLC buffer send by others (in our queue) */
#define FREEQ_GPRS_DL_FLC_PEER_BUFF(ptr,data_type,ctx_id)   gprs_flc_free_peer_buff(NPDU_DATA,0,GPRS_FLC_DL,0,(ptr))
#ifdef __TCPIP__
#define FREEQ_CSD_DL_FLC_PEER_BUFF(ptr,data_type,ctx_id)  gprs_flc_free_peer_buff(APPDU_DATA,0,GPRS_FLC_DL,0,(ptr))
#define FREEQ_CSD_UL_FLC_PEER_BUFF(ptr,data_type,ctx_id)  gprs_flc_free_peer_buff((data_type),0,GPRS_FLC_UL,(ctx_id),(ptr))
#else /* if not define __TCPIP__ */
#define FREEQ_CSD_DL_FLC_PEER_BUFF(ptr,data_type,ctx_id)    ASSERT(0)
#define FREEQ_CSD_UL_FLC_PEER_BUFF(ptr,data_type,ctx_id)    ASSERT(0)
#endif /* ~__TCPIP__ */

typedef enum {
    NULL_BUF,
    CTRL_BUF,
    FLC_BUF
} ppp_buff_type_enum;


typedef struct {
    ppp_buff_type_enum pkt_type;
    kal_uint16 protocol;
    kal_uint16 size;
    kal_uint16 used;
    kal_uint8 *data_ptr;
    kal_uint8 *cur_ptr;
    kal_uint8 *end_ptr;
} ppp_buff_head_struct;

typedef struct {
   kal_uint32 raccm;
   kal_uint32 xaccm;
   kal_uint16 rfcs;
   kal_uint16 xfcs;
   kal_uint16 mru;
   kal_uint16 mtu;
   kal_bool is_acfc_tx;
   kal_bool is_pfc_tx;
   kal_bool is_acfc_rx;
   kal_bool is_pfc_rx;
   kal_uint8 rflags;
   kal_uint8 xflags;
} ahdlc_state_struct;

typedef struct {
    ahdlc_state_struct state;
    kal_bool is_read_suspend;
    kal_bool is_write_suspend;
    ppp_buff_head_struct decode;
    ppp_buff_head_struct encode;
} ppp_framer_struct;

typedef struct ppp_flc_buffq_struct {
    gprs_flc_data_type_enum flc_type;
    kal_uint8 socket_id;
    peer_buff_struct * peer_buff_ptr;
    struct ppp_flc_buffq_struct * next;
} ppp_flc_buffq_struct;


#define PPPGET8(to,from_ptr,len) { \
    (to) = *(from_ptr)++; \
    (len)--; \
}
#define PPPPUT8(from, to_ptr,len) { \
    *(to_ptr)++ = (from); \
    (len)++; \
}
#define PPPGET16(to,from_ptr,len) { \
    (to) = *(from_ptr)++ << 8; \
    (to) |= *(from_ptr)++; \
    (len) -= 2; \
}
#define PPPPUT16(from,to_ptr,len) { \
    *(to_ptr)++ = (kal_uint8) ((from) >> 8); \
    *(to_ptr)++ = (kal_uint8) (from); \
    len += 2; \
}
#define PPPGET32(to,from_ptr,len) { \
    (to) = *(from_ptr)++ << 24; \
    (to) |= *(from_ptr)++ << 16; \
    (to) |= *(from_ptr)++ << 8; \
    (to) |= *(from_ptr)++; \
    (len) -= 4; \
}
#define PPPPUT32(from,to_ptr,len) { \
    *(to_ptr)++ = (kal_uint8) ((from) >> 24); \
    *(to_ptr)++ = (kal_uint8) ((from) >> 16); \
    *(to_ptr)++ = (kal_uint8) ((from) >> 8); \
    *(to_ptr)++ = (kal_uint8) (from); \
    (len) += 4; \
}
#define PPPPTRINC(num,ptr) ((ptr) += (num))
#define PPPPTRDEC(num,ptr) ((ptr) -= (num))
#define PPPPUTHEADER(ptr,protocol) { \
    PPPPUT8(AHDLC_ALLSTATIONS,ptr); \
    PPPPUT8(AHDLC_UI,ptr); \
    PPPPUT16(protocol,ptr); \
}

void ppp_enqueue(ppp_flc_buffq_struct ** ,peer_buff_struct *,gprs_flc_data_type_enum,kal_uint8);
void ppp_insqueue(ppp_flc_buffq_struct ** ,peer_buff_struct *,gprs_flc_data_type_enum,kal_uint8);
peer_buff_struct * ppp_dequeue(ppp_flc_buffq_struct **,gprs_flc_data_type_enum *,kal_uint8 *);
#endif /* ~_PPP_BUFF_MGR_H */


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -