Files
banban/ql-kernel/threadx/common/include/ppp_platform.h

273 lines
7.1 KiB
C

/*
* ppp_platform.h -- platform specific header file
*
* (C) Copyright [2006-2008] Marvell International Ltd.
* All Rights Reserved
*
*/
#ifndef __PPP_PLATFORM_H__
#define __PPP_PLATFORM_H__
#if defined __cplusplus /* __cplusplus */
extern "C" {
#endif
#include <stdio.h>
#include <stdint.h>
#include <signal.h>
#include <time.h>
#include <osa.h>
#include "uart.h"
//#include "common_print.h"
//#include "ppp_types.h"
#include "dialer_task.h"
#define PPP_SUCCESS 1
#define PPP_FAIL 0
#define PPP_SUSPEND OSA_SUSPEND
#define PPP_NO_SUSPEND 0
#define INVALID_CID 0xFF
#ifdef TRUE
#undef TRUE
#endif /* TRUE */
#define TRUE 1
#ifdef FALSE
#undef FALSE
#endif /* FALSE */
#define FALSE 0
#define errExit(msg) do{}while (0)
#ifndef UNUSED
#define UNUSED(a) (void)(a)
#endif
#ifndef PPP_DEBUG
#define PPP_DEBUG
#endif
#define PPP_LOG_DEBUG 3
#define PPP_LOG_CRITIC 2
#define PPP_LOG_ERROR 1
#if (defined(LTEONLY_THIN) || defined(CRANEL_FP_8MRAM) || defined(LTEGSM_THIN))
#define PPP_LOG_LEVEL 1
#else
#define PPP_LOG_LEVEL 2
#endif
/*debug*/
#ifndef PPP_DEBUG
#undef INFOMSG
#define INFOMSG(fmt, args ...) do {}while (0)
#undef DBGMSG
#define DBGMSG(fmt, args ...) do {}while (0)
#undef ERRMSG
#define ERRMSG do {}while (0)
#else
#undef INFOMSG
#define INFOMSG(fmt,args...) \
{if(PPP_LOG_LEVEL >= PPP_LOG_DEBUG) CPUartLogPrintf("[ppp]"fmt, ##args);}
#undef DBGMSG
#define DBGMSG(fmt,args...) \
{if(PPP_LOG_LEVEL >= PPP_LOG_CRITIC) CPUartLogPrintf("[ppp]"fmt, ##args);}
#undef ERRMSG
#define ERRMSG(fmt,args...) \
{if(PPP_LOG_LEVEL >= PPP_LOG_ERROR) CPUartLogPrintf("[ppp]"fmt, ##args);}
#endif
/* task */
#define PPP_CREATE_TASK(a, b, c) ppp_create_task(a, b, c)
/*Timer*/
#define PPP_CREATE_TIMER(a) ppp_create_timer(a)
#define PPP_ENABLE_TIMER(a, b, c) ppp_enable_timer(a, b, c)
#define PPP_DISABLE_TIMER(a) ppp_disable_timer(a)
#define PPP_DELETE_TIMER(a) ppp_delete_timer(a)
/* Memory */
#define PPP_MALLOC malloc
#define PPP_FREE(ptr) free(ptr)
#define PPP_MEMSET(ptr, val, sz) memset(ptr, val, sz)
#define PPP_MEMCPY(dptr, sptr, sz) memcpy(dptr, sptr, sz)
/* Semaphore */
#define PPP_INIT_SEM(a, b, c) ppp_init_semaphore(a, b, c)
#define PPP_ACQUIRE_SEM(a, b) ppp_acquire_semaphore(a, b)
#define PPP_RELEASE_SEM(a) ppp_release_semaphore(a)
/* Message Queue */
#define PPP_CREATE_Q_MSG(q_sz, m_sz) ppp_create_msg_queue(q_sz, m_sz)
#define PPP_DELETE_Q_MSG(qRef) ppp_delete_msg_queue(qRef)
#define PPP_SEND_Q_MSG(qRef, ptr, sz) ppp_send_msg(qRef, ptr, sz)
#define PPP_RECV_Q_MSG(qRef, ptr, sz) ppp_recv_msg(qRef, ptr, sz, PPP_SUSPEND)
#define QUEUE_MESSAGE_PTR(b, n, sz) ((U_CHAR *)b + n * sz)
/* TERMINAL */
#define PPP_TX_MODEM(ptr, sz, isIP) ppp_tx_modem(ptr, sz, isIP)
/* COMM */
#define PPP_TX_COMM(ptr, sz) ppp_tx_comm(ptr, sz)
/* ATCMDSRV intercourse */
#define PPP_TERMINATE(x, y) modem_ppp_terminate(x, y)
#define PPP_CONNECT(x, y) modem_ppp_connect(x, y)
#define PPP_AUTHENTICATE(a, b) modem_ppp_authenticate(a, b)
#define PPP_GETIP(x) modem_ppp_get_ip(x)
#define PPP_CGDFLT() modem_ppp_cgdflt()
/* random */
#define PPP_RAND() ppp_rand()
#define PPP_TRACE_BUF(string, p, l) ppp_trace_buf(string, p, l)
#ifdef PPP_BYPASS_LWIP
#define PPP_RELAY_RX_COMM
#endif
/* Types */
typedef unsigned char U_CHAR;
typedef unsigned short U_SHORT;
typedef unsigned int U_INT;
typedef unsigned long long U_LLONG;
typedef long long LLONG;
//typedef int INT32;
typedef unsigned char BOOL;
/* task */
typedef OSTaskRef PPP_TASK_t;
/* Semaphore */
typedef OSASemaRef SEM_t;
/* Mutex */
typedef OSAMutexRef MUTEX_t;
/* timer */
typedef OSATimerRef TIMER_t;
typedef void (*TIMER_HANDLER)(UINT32);
/* Message Queue */
#if 0
typedef struct {
SEM_t queue_sema;
MUTEX_t queue_lock;
U_INT head;
U_INT tail;
U_INT queue_size;
U_INT msg_size;
U_INT msg_count;
U_CHAR *space;
} PPP_MsgQ_t;
#endif
typedef OSAMsgQRef PPP_MsgQ_t;
typedef struct _ppp_msg {
int len;
char *data;
} ppp_msg_t;
/* callback functions */
#if 0
typedef struct {
char Username[256];
char Password[256];
} PapAuthenticationParamsS;
typedef struct {
ChapChallengeS *challenge;
ChapResponseS *response;
}ChapAuthenticationParamsS;
typedef struct {
U_SHORT auth_type;
union {
PapAuthenticationParamsS *PapAuthenticationParams;
ChapAuthenticationParamsS *ChapAuthenticationParams;
};
} PppAuthenticationParamsS;
#endif
typedef struct _IpConnectionParams {
unsigned int IpAddress;
unsigned int PrimaryDns;
unsigned int SecondaryDns;
unsigned char Ipv6InterfaceId[8];
} ipConnectionParams;
/* PppInitStack prototype */
typedef void (*init_ppp_stack_cb) (void);
/* PppDeinitStack prototype */
typedef void (*deinit_ppp_stack_cb) (void);
/* PppSendTerminateReq prototype */
typedef void (*terminate_session_cb) (void);
/* PppResetStack prototype */
typedef void (*reset_ppp_stack_cb) (void);
/* PppSetPdpStat prototype */
typedef void (*set_pdp_down_cb) (void);
/* PppSetCid prototype */
typedef void (*set_ppp_cid_cb) (unsigned char);
/* PppMessageReq prototype */
typedef void (*rx_message_modem_cb) (const unsigned char *, unsigned int);
/* PppRelayMessageFromComm prototype */
#ifdef PPP_RELAY_RX_COMM
typedef void (*rx_message_comm_cb) (void *, unsigned int);
#else
typedef void (*rx_message_comm_cb) (void *, void *);
#endif
/* PppUpdateIpParams prototype */
typedef void (*update_ip_params_cb) (ipConnectionParams *);
typedef struct _ppp_cb_funcs {
init_ppp_stack_cb init;
deinit_ppp_stack_cb deinit;
terminate_session_cb terminate;
reset_ppp_stack_cb reset;
set_ppp_cid_cb set_cid;
set_pdp_down_cb set_pdp_down;
rx_message_modem_cb rx_modem;
rx_message_comm_cb rx_comm;
update_ip_params_cb update_ip;
} ppp_cb_funcs;
typedef enum _atcmdResultE {
ATCMD_RESULT_ERROR,
ATCMD_RESULT_OK,
} atcmdResultE;
/***************************** Declarations ************************************/
/* Task */
extern void ppp_create_task(PPP_TASK_t *task_ref, void (*start_routine) (void *), void *arg);
/* Semaphore */
extern void ppp_init_semaphore(SEM_t *sem, int pshared, unsigned int value);
extern int ppp_acquire_semaphore(SEM_t sem, long timeout);
extern void ppp_release_semaphore(SEM_t sem);
/* timer */
extern void ppp_create_timer(TIMER_t *timerid);
extern void ppp_enable_timer(TIMER_t timerid, long ms, TIMER_HANDLER timeout_handler);
extern void ppp_disable_timer(TIMER_t timerid);
extern void ppp_delete_timer(TIMER_t timerid);
/* Message Queue Functions */
extern PPP_MsgQ_t ppp_create_msg_queue(U_INT queue_size, U_INT msg_size);
extern void ppp_delete_msg_queue(PPP_MsgQ_t qRef);
extern int ppp_send_msg(PPP_MsgQ_t qRef, U_CHAR *ptr, U_INT size);
extern int ppp_recv_msg(PPP_MsgQ_t qRef, U_CHAR *ptr, U_INT size, U_INT timeout);
/* Debug PPP Functions */
extern void ppp_trace_buf(char const *string, char *buf, U_INT length);
/* Random Number Generator */
extern U_INT ppp_rand(void);
#if defined __cplusplus
}
#endif /* __cplusplus */
#endif