更新硬件SDK

This commit is contained in:
kerwincui
2023-03-04 03:44:56 +08:00
parent dcdf6e1b7c
commit e39d3d2f03
1900 changed files with 663153 additions and 0 deletions

View File

@@ -0,0 +1,372 @@
/******************************************************************************
******************************************************************************
Copyright: - 2018- Copyrights of AirM2M Ltd.
File name: - appmgr.h
Description: - tcpip app manage function header
History: - 08/01/2021, Originated by xwang
******************************************************************************
******************************************************************************/
#ifndef TCPIP_APP_MGR_HDR_H
#define TCPIP_APP_MGR_HDR_H
#include "commontypedef.h"
#include "lwip/opt.h"
#include "lwip/ip_addr.h"
#include "cmips.h"
/******************************************************************************
*****************************************************************************
* MARCO
*****************************************************************************
******************************************************************************/
/*
* default setting for ping
*/
#define NM_PING_DEFAULT_COUNT 15
#define NM_PING_KEEP_COUNT 255
#define NM_PING_DEFAULT_PAYLOAD_SIZE 32
#define NM_PING_DEFAULT_TIMEOUT 20 //20s
/******************************************************************************
*****************************************************************************
* STRUCT/ENUM
*****************************************************************************
******************************************************************************/
/*
* the action result
*/
typedef enum
{
APP_MGR_SUCCESS = 0,
APP_MGR_FAIL = 1,
}AppMgrResult;
/******************************************************************************
* ECIPERF related
******************************************************************************/
/*
* iperf mode type
*/
typedef enum NmIperfAction_Enum
{
NM_IPERF_STOP_ALL = 0,
NM_IPERF_START_CLIENT = 1,
NM_IPERF_STOP_CLIENT = 2,
NM_IPERF_START_SERVER = 3,
NM_IPERF_START_UDP_NAT_SERVER = 4, //special mode
NM_IPERF_STOP_SERVER = 5
}NmIperfAction;
/*
* iperf network domain type
*/
typedef enum NmIperfProtocol_Enum
{
NM_IPERF_PROTOCOL_UDP = 0,
NM_IPERF_PROTOCOL_TCP = 1,
}NmIperfProtocol;
typedef struct NmIperfReq_Tag
{
UINT8 reqAct; //NmIperfAction
UINT8 protocol; //NmIperfProtocol
UINT16 port; //client/server UDP/TCP port
BOOL destAddrPresent;
BOOL tptPresent;
BOOL payloadSizePresent;
BOOL pkgNumPresent;
ip_addr_t destAddr; //client, or UDP NAT server DEST address, 20 bytes
UINT32 tpt; //client through put setting, in bps, such as: 20000, just means 20000 bps
UINT16 payloadSize;//client parameter
UINT16 pkgNum; //client parameter
BOOL durationPresent;
BOOL rptIntervalPresent;
UINT16 rsvd0;
UINT16 durationS; //client/server parameter, in seconds
UINT8 rptIntervalS; //report internal in seconds
UINT8 rsvd1;
UINT16 reqHandle;
UINT16 rsvd2;
}NmIperfReq; //46 bytes
/******************************************************************************
* NM_ATI_PRIM_GT_DNS_REQ
* DNS query to get URL IP ADDR
******************************************************************************/
#define NM_MAX_URL_STR_LEN 256
typedef struct NmAtiGetDnsReq_Tag
{
BOOL bDisableCache;
UINT8 rsdv1;
UINT8 rsdv2;
CHAR url[NM_MAX_URL_STR_LEN];
}NmAtiGetDnsReq;
typedef struct NmAtiGetDnsCnf_Tag
{
u32_t ttl;
ip_addr_t addrInfo[LWIP_DNS_RESULT_NUM_MAX]; //now support multiple dns result
}NmAtiGetDnsCnf;
/******************************************************************************
* NM_ATI_PRIM_PING_RESULT_IND
******************************************************************************/
typedef enum NmPingResultEnum_Tag
{
NM_PING_RET_DONE, //ping succ, and ping done
NM_PING_RET_ONE_SUCC, //One ping is succ, and maybe ping is still ongoing
NM_PING_RET_ONE_FAIL, //One ping is fail, and maybe ping is still ongoing
NM_PING_RET_ONE_SEND_FAIL, //One ping send fail
NM_PING_PARAM_ERROR, //input parameters error
NM_PING_DNS_ERROR, //DNS failed
NM_PING_SOCKET_ERROR, //socket error
NM_PING_PDP_CONTEXT_STATUS_INVALID,
NM_PING_ALL_FAIL,
NM_PING_ERROR
}NmPingResultEnum;
#define NM_ATI_PING_DEST_IP_STR_LEN 40
typedef struct NmAtiPingResultIndTag
{
UINT8 result; //NmPingResultEnum
UINT8 ttl; //the TTL value from ping reply packet
UINT16 packetLossRate; //valid when "NM_PING_RET_DONE", RATE*100, example: 23 just means: 23%
UINT16 requestNum; //if "NM_PING_RET_ONE_SUCC/NM_PING_RET_ONE_FAIL", set to 1
UINT16 responseNum; //if "NM_PING_RET_ONE_SUCC" set 1, if "NM_PING_RET_ONE_FAIL", set to 0
/*
* ms,
* if "NM_PING_RET_ONE_SUCC", set RTT at this time,
* if "NM_PING_RET_ONE_FAIL", set max wait time
*/
UINT32 minRtt;
UINT32 maxRtt; //ms
UINT32 avgRtt; //ms
/*ping pkg payload len*/
UINT16 payloadLen;
UINT16 rsvd;
/*
* Dest IP address, in string format;
* For Ipv4, example: "10.10.10.10"
* For Ipv6, example: "1234:1234:1234:1234:1234:1234:1234:1234"
*/
CHAR pingDst[NM_ATI_PING_DEST_IP_STR_LEN];
}NmAtiPingResultInd; //60 bytes
typedef enum NmSntpResultEnum_Tag{
SNTP_RESULT_OK = 0,
SNTP_RESULT_CREATE_CLIENT_SOCK_FAIL,
SNTP_RESULT_PARAMTER_INVALID,
SNTP_RESULT_URL_RESOLVE_FAIL,
SNTP_RESULT_NETWORK_NOT_READY,
SNTP_RESULT_RETRY_REACH_MAX_TIMES,
SNTP_RESULT_PDP_CONTEXT_STATUS_INVALID,
SNTP_RESULT_FAIL,
}NmSntpResultEnum;
typedef struct NmAtiSntpResultInd_Tag{
UINT16 result;
UINT16 autoSync;
UINT32 time;
UINT32 us;
}NmAtiSntpResultInt;
/******************************************************************************
* NM_ATI_IPERF_RET_IND
******************************************************************************/
typedef enum NmIperfModeEnum_Tag
{
NM_IPERF_MODE_CLIENT, //ECIPERF tmp report for every rtpInterval, iperf task is on goging
NM_IPERF_MODE_SERVER, //ECIPERF the last report, iperf task end
}NmIperfModeEnum;
typedef enum NmIperfResultEnum_Tag
{
NM_IPERF_END_REPORT_SUCCESS, //ECIPERF the last report, iperf task end
NM_IPERF_ONE_REPORT_SUCCESS, //ECIPERF tmp report for every rtpInterval, iperf task is on goging
NM_IPERF_PARAM_ERROR, //iperf parameter error, iperf task end
NM_IPERF_SOCKET_ERROR, //iperf socket error, iperf task end
NM_IPERF_MALLOC_ERROR, //iperf task malloc fail, iperf task end
}NmIperfResultEnum;
typedef struct NmAtiIperfResultIndTag
{
UINT8 result; //NmIperfResultEnum
UINT8 mode; //NmIperfModeEnum
UINT16 reserved;
/*
* "dataNum"/"bandwidth" only valid when
* 1> "result" == NM_IPERF_END_REPORT_SUCCESS, total pkg bytes and average bandwith (send/recv) during the whole duration;
* 2> "result" == NM_IPERF_ONE_REPORT_SUCCESS, total pkg bytes and bandwith (send/recv) during report interval
*/
UINT32 dataNum; //client mode, total send packet bytes; for server mode, total receive packet bytes
UINT32 bandwidth; //bps
}NmAtiIperfResultInd;
/******************************************************************************
*****************************************************************************
* Functions
*****************************************************************************
******************************************************************************/
/******************************************************************************
* AppMgrPingRequest
* Description: appmgr ip ping request function
* input: NmIpAddr *pDest //ping DEST IP address info
* UINT8 tFlag //ping count, if set "255", just means keep ping, default value 15
* UINT16 payloadLen //ping payload byte len, default: 32; ping pkg size: 28(ping ICMP header)+32 = 60
* UINT32 timeout //set wait time for one ping pkg
* BOOL raiFlag //whether enable rai info flag
* UINT8 cid // pdp context id
* output: AppMgrResult
* Comment:
******************************************************************************/
AppMgrResult AppMgrPingRequest(ip_addr_t *pDest, UINT8 count, UINT16 payloadLen, UINT32 timeout, BOOL raiFlag, UINT16 reqHandle, UINT8 cid);
/******************************************************************************
* AppMgrPingUrlRequest
* Description: appmgr url ping request function
* input: const CHAR* pingTarget,
* UINT8 count,
* UINT16 payloadLen,
* UINT32 timeout
* BOOL raiFlag //whether enable rai info flag
* UINT8 cid // pdp context id
* output:
* Comment:
******************************************************************************/
AppMgrResult AppMgrPingUrlRequest(const CHAR* pingTarget, UINT8 count, UINT16 payloadLen, UINT32 timeout, BOOL raiFlag, UINT16 reqHandle, UINT8 cid);
/******************************************************************************
* AppMgrPingTerminate
* Description: appmgr ping request terminate function
* input:
* output:
* Comment:
******************************************************************************/
void AppMgrPingTerminate(void);
/******************************************************************************
* AppMgrPingRunStatus
* Description: appmgr get ping run status function
* input:
* output:
* Comment:
******************************************************************************/
BOOL AppMgrPingRunStatus(void);
/*
*the reference AT command format: AT^ECIPERF:<action>,[protocol],["ipaddr"],[port],[tpt],[pkg_payload_size],[pkg_num],[duration],[rpt_interval]
*1 action:NmIperfAction
*1.1 client mode: must param <action>,<"ipaddr">,<tpt>
*1.2 server mode: must param <action>
*1.3 nat server mode: must param <action>,<"ipaddr">
*2 protocol: default udp
*3 "ipaddr": ipv4 or ipv6
*3.1 dst addr for client mode [must]
*3.2 remote client address for nat server mode [must]
*4 port: default 5001
*4.1 server rcv port for server mode
*4.2 dst port for client mode
*5 tpt: throughput
*6 pkg_payload_size: max -> MTU-28
*7 pkg_num
*8 duration
*9 rtp_interval: default 10 seconds
*/
/******************************************************************************
* NetMgrIperfRequest
* Description: appmgr iperf request function
* input: NmIperfReq *pIperfReq
* output: AppMgrResult
* Comment:
******************************************************************************/
AppMgrResult AppMgrIperfRequest(NmIperfReq *pIperfReq);
/******************************************************************************
* AppMgrSntpStart
* Description: appmgr sntp start function
* input: sntp server address and server port
* output: AppMgrResult
* Comment:
******************************************************************************/
AppMgrResult AppMgrSntpStart(CHAR *server, UINT16 port, UINT16 reqHandler, BOOL autoSync, UINT8 cid);
/******************************************************************************
* AppMgrSntpStop
* Description: appmgr stop sntp function
* input:
* output:
* Comment:
******************************************************************************/
void AppMgrSntpStop(void);
/******************************************************************************
* AppMgrSntpRunStatus
* Description: appmgr get sntp run status function
* input:
* output:
* Comment:
******************************************************************************/
BOOL AppMgrSntpRunStatus(CHAR *serverAddr, UINT16 *serverPort, UINT8 *cid);
/*
* Send URL DNS result
*/
void AppMgrSendGetDnsCnf(INT32 result, ip_addr_t *pIpInfo, UINT16 srcHdr);
/*
* Send PING result
*/
void AppMgrSendPingResultInd(NmAtiPingResultInd *pPingRet, UINT16 reqHandle);
/*
* Send ECIPERF result
*/
void AppMgrSendIperfResultInd(NmAtiIperfResultInd *pIperfRet, UINT16 reqHandle);
/*
* Send SNTP result
*/
void AppMgrSendSntpResultInd(NmAtiSntpResultInt *pSntpRet, UINT16 reqHandle);
/*
* Send SNTP result
*/
AppMgrResult AppDnsResolve(CHAR *url, UINT8 cid, UINT16 srcHandler, UINT8 bCache);
#endif

View File

@@ -0,0 +1,180 @@
/******************************************************************************
******************************************************************************
Copyright: - 2018- Copyrights of AirM2M Ltd.
File name: - tcpipmgrutil.h
Description: - tcpip manager utility API header file
History: - 01/02/2018, Originated by xwang
******************************************************************************
******************************************************************************/
#ifndef TCPIP_MGR_UTIL_HDR_H
#define TCPIP_MGR_UTIL_HDR_H
#include "commontypedef.h"
#include "lwip/opt.h"
#include "lwip/err.h"
#include "lwip/priv/tcpip_priv.h"
/******************************************************************************
*****************************************************************************
* MARCO
*****************************************************************************
******************************************************************************/
#define TCPIP_MGR_MAGIC_WORD 0xA5B7
#define TCPIP_MGR_MAGIC_WORDS 0xA3B5C7D9
/******************************************************************************
*****************************************************************************
* STRUCT/ENUM
*****************************************************************************
******************************************************************************/
typedef enum
{
TCPIP_MGR_SUCCESS = 0,
TCPIP_MGR_FAIL = 1,
}TcpipMgrResult;
/******************************************************************************
* A blocked callback designation, which called in LWIP task
******************************************************************************/
typedef err_t (*TcpipMgrBlockCallback)(void *pInput, UINT16 inputSize, void *pOutput, UINT16 outputSize);
#if 0
typedef struct TcpipMgrBlockCallbackHdr_Tag
{
UINT8 blcokMsgId;
UINT8 rsvd0;
UINT16 inputParaLen;
UINT16 outputParaLen;
UINT16 magicWord; //2 bytes magic
TcpipMgrBlockCallback callback;
}TcpipMgrBlockCallbackHdr; //12 bytes
#endif
typedef struct TcpipMgrBlockCallbackInfo_Tag
{
struct tcpip_api_call_data tcpApiData;
UINT16 inputParaLen;
UINT16 outputParaLen;
void *pInput;
void *pOutput;
UINT32 magicWords; // 4 bytes magic words
TcpipMgrBlockCallback callback;
}TcpipMgrBlockCallbackInfo; //28 bytes
/******************************************************************************
*****************************************************************************
* FUNCTION
*****************************************************************************
******************************************************************************/
/******************************************************************************
* TcpipMgrLwipCallbackNonBlock
* Description: Let LWIP task process the callback API, this API will return
* without any block
* input: tcpip_callback_fn api; //Callback API
* void *pCtx; //input parameters
* UINT32 ctxSize //context size
* output:
* Comment:
* 1> A dynamic memory will create in this API, if "ctxSize" is not zero
******************************************************************************/
void TcpipMgrLwipCallbackNonBlock(tcpip_callback_fn api, void *pCtx, UINT32 ctxSize);
/******************************************************************************
* TcpipMgrLwipCallbackNonBlockWithoutPsStatusCheck
* Description: Let LWIP task process the callback API, this API will return(without PS status check)
* without any block
* input: tcpip_callback_fn api; //Callback API
* void *pCtx; //input parameters
* UINT32 ctxSize //context size
* output:
* Comment:
* 1> A dynamic memory will create in this API, if "ctxSize" is not zero
******************************************************************************/
void TcpipMgrLwipCallbackNonBlockWithoutPsStatusCheck(tcpip_callback_fn api, void *pCtx, UINT32 ctxSize);
/******************************************************************************
* TcpipMgrLwipCallbackBlock
* Description: Let LWIP task process the callback API, and wait for the response
* from LWIP task
* input: UINT8 blockMsgId; //block callback msg ID
* void *pInCtx //input parameters
* UINT32 inSize //input context size
* void *pOutCtx //output parameters
* UINT32 outSize //output context
* output:
* Comment:
* 1> This is a blocked API;
******************************************************************************/
err_t TcpipMgrLwipCallbackBlock(TcpipMgrBlockCallback callback, void *pInCtx, UINT32 inSize, void *pOutCtx, UINT32 outSize);
/******************************************************************************
* TcpipMgrLwipCallbackBlockWithoutPsStatusCheck
* Description: Let LWIP task process the callback API, and wait for the response(without Ps status check)
* from LWIP task
* input: UINT8 blockMsgId; //block callback msg ID
* void *pInCtx //input parameters
* UINT32 inSize //input context size
* void *pOutCtx //output parameters
* UINT32 outSize //output context
* output:
* Comment:
* 1> This is a blocked API;
******************************************************************************/
err_t TcpipMgrLwipCallbackBlockWithoutPsStatusCheck(TcpipMgrBlockCallback callback, void *pInCtx, UINT32 inSize, void *pOutCtx, UINT32 outSize);
/******************************************************************************
* TcpipMgrSendAtiAsyncCnfSig
* Description: net manager send the "SIG_NM_ATI_CNF" to AT CMD SRV for async request
* input: TcpipMgrResult result;
* UINT16 srcHdr;
* UINT8 cnfPrimId;
* void *cnfBody;
* UINT16 bodySize
* output:
* Comment:
******************************************************************************/
void TcpipMgrSendAtiAsyncCnfSig(TcpipMgrResult result, UINT16 srcHdr, UINT8 cnfPrimId, void *pCnfBody, UINT16 bodySize);
/******************************************************************************
* TcpipMgrSendAtiIndSig
* Description: net manager async indication function
* input: UINT8 indPrimId,
* void *pIndBody,
* UINT16 bodySize
* output:
* Comment:
******************************************************************************/
void TcpipMgrSendAtiIndSig(UINT8 indPrimId, void *pIndBody, UINT16 bodySize, UINT16 reqHandle);
/******************************************************************************
* TcpipMgrAtiSyncReq
* Description: tcpip mgr sync request API.
* input: UINT16 reqId, void *reqBody, void *result
* output:
* Comment:
******************************************************************************/
TcpipMgrResult TcpipMgrAtiSyncReq(UINT16 reqId, TcpipMgrBlockCallback callback, UINT16 reqLen, void *reqBody, UINT16 retLen, void *pRet);
#endif