256 lines
12 KiB
C
256 lines
12 KiB
C
/*
|
|
*********************************************************************************************************
|
|
* uC/TCP-IP
|
|
* The Embedded TCP/IP Suite
|
|
*
|
|
* Copyright 2004-2020 Silicon Laboratories Inc. www.silabs.com
|
|
*
|
|
* SPDX-License-Identifier: APACHE-2.0
|
|
*
|
|
* This software is subject to an open source license and is distributed by
|
|
* Silicon Laboratories Inc. pursuant to the terms of the Apache License,
|
|
* Version 2.0 available at www.apache.org/licenses/LICENSE-2.0.
|
|
*
|
|
*********************************************************************************************************
|
|
*/
|
|
|
|
/*
|
|
*********************************************************************************************************
|
|
*
|
|
* NETWORK APPLICATION PROGRAMMING INTERFACE (API) LAYER
|
|
*
|
|
* Filename : net_app.h
|
|
* Version : V3.06.00
|
|
*********************************************************************************************************
|
|
*/
|
|
|
|
/*
|
|
*********************************************************************************************************
|
|
*********************************************************************************************************
|
|
* MODULE
|
|
*
|
|
* Note(s) : (1) Network Application Programming Interface (API) Layer module is required for :
|
|
*
|
|
* (a) Applications that require network application programming interface (API) :
|
|
* (1) Network socket API with error handling
|
|
* (2) Network time delays
|
|
*
|
|
* See also 'net_cfg.h NETWORK APPLICATION PROGRAMMING INTERFACE (API) LAYER CONFIGURATION'.
|
|
*********************************************************************************************************
|
|
*********************************************************************************************************
|
|
*/
|
|
|
|
#ifndef NET_APP_MODULE_PRESENT
|
|
#define NET_APP_MODULE_PRESENT
|
|
|
|
/*
|
|
*********************************************************************************************************
|
|
*********************************************************************************************************
|
|
* INCLUDE FILES
|
|
*********************************************************************************************************
|
|
*********************************************************************************************************
|
|
*/
|
|
|
|
#include "net_cfg_net.h"
|
|
#include "net_sock.h"
|
|
#include "net_type.h"
|
|
#include "net_ip.h"
|
|
#include "net_err.h"
|
|
|
|
|
|
/*
|
|
*********************************************************************************************************
|
|
*********************************************************************************************************
|
|
* NETWORK APPLICATION TIME DELAY DEFINES
|
|
*********************************************************************************************************
|
|
*********************************************************************************************************
|
|
*/
|
|
|
|
#define NET_APP_TIME_DLY_MIN_SEC DEF_INT_32U_MIN_VAL
|
|
#define NET_APP_TIME_DLY_MAX_SEC DEF_INT_32U_MAX_VAL
|
|
|
|
#define NET_APP_TIME_DLY_MIN_mS DEF_INT_32U_MIN_VAL
|
|
#define NET_APP_TIME_DLY_MAX_mS (DEF_TIME_NBR_mS_PER_SEC - 1u)
|
|
|
|
|
|
typedef struct net_app_sock_secure_mutual_cfg {
|
|
NET_SOCK_SECURE_CERT_KEY_FMT Fmt;
|
|
CPU_CHAR *CertPtr;
|
|
CPU_INT32U CertSize;
|
|
CPU_BOOLEAN CertChained;
|
|
CPU_CHAR *KeyPtr;
|
|
CPU_INT32U KeySize;
|
|
/*增加参数设置*/
|
|
CPU_CHAR *CliPtr;
|
|
CPU_INT32U CliSize;
|
|
} NET_APP_SOCK_SECURE_MUTUAL_CFG;
|
|
|
|
|
|
typedef struct net_app_sock_secure_cfg {
|
|
CPU_CHAR *CommonName;
|
|
NET_SOCK_SECURE_TRUST_FNCT TrustCallback;
|
|
NET_APP_SOCK_SECURE_MUTUAL_CFG *MutualAuthPtr;
|
|
void *UserDataPtr; //增加
|
|
} NET_APP_SOCK_SECURE_CFG;
|
|
|
|
|
|
/*
|
|
*********************************************************************************************************
|
|
*********************************************************************************************************
|
|
* FUNCTION PROTOTYPES
|
|
*********************************************************************************************************
|
|
*********************************************************************************************************
|
|
*/
|
|
|
|
/*
|
|
*********************************************************************************************************
|
|
* EXTERNAL C LANGUAGE LINKAGE
|
|
*
|
|
* Note(s) : (1) C++ compilers MUST 'extern'ally declare ALL C function prototypes & variable/object
|
|
* declarations for correct C language linkage.
|
|
*********************************************************************************************************
|
|
*/
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
/*
|
|
*********************************************************************************************************
|
|
* PUBLIC API
|
|
*********************************************************************************************************
|
|
*/
|
|
|
|
/* -------------------- SOCK FNCTS -------------------- */
|
|
NET_SOCK_ID NetApp_SockOpen(NET_SOCK_PROTOCOL_FAMILY protocol_family,
|
|
NET_SOCK_TYPE sock_type,
|
|
NET_SOCK_PROTOCOL protocol,
|
|
CPU_INT16U retry_max,
|
|
CPU_INT32U time_dly_ms,
|
|
NET_ERR *p_err);
|
|
|
|
CPU_BOOLEAN NetApp_SockClose(NET_SOCK_ID sock_id,
|
|
CPU_INT32U timeout_ms,
|
|
NET_ERR *p_err);
|
|
|
|
|
|
CPU_BOOLEAN NetApp_SockBind(NET_SOCK_ID sock_id,
|
|
NET_SOCK_ADDR *p_addr_local,
|
|
NET_SOCK_ADDR_LEN addr_len,
|
|
CPU_INT16U retry_max,
|
|
CPU_INT32U time_dly_ms,
|
|
NET_ERR *p_err);
|
|
|
|
CPU_BOOLEAN NetApp_SockConn(NET_SOCK_ID sock_id,
|
|
NET_SOCK_ADDR *p_addr_remote,
|
|
NET_SOCK_ADDR_LEN addr_len,
|
|
CPU_INT16U retry_max,
|
|
CPU_INT32U timeout_ms,
|
|
CPU_INT32U time_dly_ms,
|
|
NET_ERR *p_err);
|
|
|
|
|
|
CPU_BOOLEAN NetApp_SockListen(NET_SOCK_ID sock_id,
|
|
NET_SOCK_Q_SIZE sock_q_size,
|
|
NET_ERR *p_err);
|
|
|
|
NET_SOCK_ID NetApp_SockAccept(NET_SOCK_ID sock_id,
|
|
NET_SOCK_ADDR *p_addr_remote,
|
|
NET_SOCK_ADDR_LEN *p_addr_len,
|
|
CPU_INT16U retry_max,
|
|
CPU_INT32U timeout_ms,
|
|
CPU_INT32U time_dly_ms,
|
|
NET_ERR *p_err);
|
|
|
|
|
|
CPU_INT16U NetApp_SockRx(NET_SOCK_ID sock_id,
|
|
void *p_data_buf,
|
|
CPU_INT16U data_buf_len,
|
|
CPU_INT16U data_rx_th,
|
|
NET_SOCK_API_FLAGS flags,
|
|
NET_SOCK_ADDR *p_addr_remote,
|
|
NET_SOCK_ADDR_LEN *p_addr_len,
|
|
CPU_INT16U retry_max,
|
|
CPU_INT32U timeout_ms,
|
|
CPU_INT32U time_dly_ms,
|
|
NET_ERR *p_err);
|
|
|
|
CPU_INT16U NetApp_SockTx(NET_SOCK_ID sock_id,
|
|
void *p_data,
|
|
CPU_INT16U data_len,
|
|
NET_SOCK_API_FLAGS flags,
|
|
NET_SOCK_ADDR *p_addr_remote,
|
|
NET_SOCK_ADDR_LEN addr_len,
|
|
CPU_INT16U retry_max,
|
|
CPU_INT32U timeout_ms,
|
|
CPU_INT32U time_dly_ms,
|
|
NET_ERR *p_err);
|
|
|
|
|
|
void NetApp_SetSockAddr(NET_SOCK_ADDR *p_sock_addr,
|
|
NET_SOCK_ADDR_FAMILY addr_family,
|
|
NET_PORT_NBR port_nbr,
|
|
CPU_INT08U *p_addr,
|
|
NET_IP_ADDR_LEN addr_len,
|
|
NET_ERR *p_err);
|
|
|
|
/* ---------- ADVANCED STREAM OPEN FUNCTION ----------- */
|
|
NET_IP_ADDR_FAMILY NetApp_ClientStreamOpenByHostname(NET_SOCK_ID *p_sock_id,
|
|
CPU_CHAR *p_host_server,
|
|
NET_PORT_NBR port_nbr,
|
|
NET_SOCK_ADDR *p_sock_addr,
|
|
NET_APP_SOCK_SECURE_CFG *p_secure_cfg,
|
|
CPU_INT32U req_timeout_ms,
|
|
NET_ERR *p_err);
|
|
|
|
NET_IP_ADDR_FAMILY NetApp_ClientDatagramOpenByHostname(NET_SOCK_ID *p_sock_id,
|
|
CPU_CHAR *p_remote_host_name,
|
|
NET_PORT_NBR remote_port_nbr,
|
|
NET_IP_ADDR_FAMILY ip_family,
|
|
NET_SOCK_ADDR *p_sock_addr,
|
|
CPU_BOOLEAN *p_is_hostname,
|
|
NET_ERR *p_err);
|
|
|
|
NET_SOCK_ID NetApp_ClientStreamOpen(CPU_INT08U *p_addr,
|
|
NET_IP_ADDR_FAMILY addr_family,
|
|
NET_PORT_NBR remote_port_nbr,
|
|
NET_SOCK_ADDR *p_sock_addr,
|
|
NET_APP_SOCK_SECURE_CFG *p_secure_cfg,
|
|
CPU_INT32U req_timeout_ms,
|
|
NET_ERR *p_err);
|
|
|
|
|
|
NET_SOCK_ID NetApp_ClientDatagramOpen(CPU_INT08U *p_addr,
|
|
NET_IP_ADDR_FAMILY addr_family,
|
|
NET_PORT_NBR remote_port_nbr,
|
|
NET_SOCK_ADDR *p_sock_addr,
|
|
NET_ERR *p_err);
|
|
|
|
|
|
/* ------------------ TIME DLY FNCTS ------------------ */
|
|
void NetApp_TimeDly_ms(CPU_INT32U time_dly_ms,
|
|
NET_ERR *p_err);
|
|
|
|
|
|
|
|
/*
|
|
*********************************************************************************************************
|
|
* EXTERNAL C LANGUAGE LINKAGE END
|
|
*********************************************************************************************************
|
|
*/
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
/*
|
|
*********************************************************************************************************
|
|
*********************************************************************************************************
|
|
* MODULE END
|
|
*********************************************************************************************************
|
|
*********************************************************************************************************
|
|
*/
|
|
|
|
#endif /* NET_APP_MODULE_PRESENT */
|
|
|