/****************************************************************************** * * Copyright (C) 2010-2014 Broadcom Corporation * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at: * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * ******************************************************************************/ /****************************************************************************** * * This is the private interface file for the NFA SNEP. * ******************************************************************************/ #ifndef NFA_SNEP_INT_H #define NFA_SNEP_INT_H #if (NFA_SNEP_INCLUDED == TRUE) #include "llcp_api.h" #include "nfa_snep_api.h" /***************************************************************************** ** Constants and data types *****************************************************************************/ /* SNEP Acceptable Length size */ /* NFA SNEP events */ enum { NFA_SNEP_API_START_DEFAULT_SERVER_EVT = NFA_SYS_EVT_START(NFA_ID_SNEP), NFA_SNEP_API_STOP_DEFAULT_SERVER_EVT, NFA_SNEP_API_REG_SERVER_EVT, NFA_SNEP_API_REG_CLIENT_EVT, NFA_SNEP_API_DEREG_EVT, NFA_SNEP_API_CONNECT_EVT, NFA_SNEP_API_GET_REQ_EVT, NFA_SNEP_API_PUT_REQ_EVT, NFA_SNEP_API_GET_RESP_EVT, NFA_SNEP_API_PUT_RESP_EVT, NFA_SNEP_API_DISCONNECT_EVT }; /* data type for NFA_SNEP_API_START_DEFAULT_SERVER_EVT */ typedef struct { NFC_HDR hdr; tNFA_SNEP_CBACK* p_cback; } tNFA_SNEP_API_START_DEFAULT_SERVER; /* data type for NFA_SNEP_API_STOP_DEFAULT_SERVER_EVT */ typedef struct { NFC_HDR hdr; tNFA_SNEP_CBACK* p_cback; } tNFA_SNEP_API_STOP_DEFAULT_SERVER; /* data type for NFA_SNEP_API_REG_SERVER_EVT */ typedef struct { NFC_HDR hdr; uint8_t server_sap; char service_name[LLCP_MAX_SN_LEN + 1]; tNFA_SNEP_CBACK* p_cback; } tNFA_SNEP_API_REG_SERVER; /* data type for NFA_SNEP_API_REG_CLIENT_EVT */ typedef struct { NFC_HDR hdr; tNFA_SNEP_CBACK* p_cback; } tNFA_SNEP_API_REG_CLIENT; /* data type for NFA_SNEP_API_DEREG_EVT */ typedef struct { NFC_HDR hdr; tNFA_HANDLE reg_handle; /* handle for registered server/client */ } tNFA_SNEP_API_DEREG; /* data type for NFA_SNEP_API_CONNECT_EVT */ typedef struct { NFC_HDR hdr; tNFA_HANDLE client_handle; /* handle for client */ char service_name[LLCP_MAX_SN_LEN + 1]; } tNFA_SNEP_API_CONNECT; /* data type for NFA_SNEP_API_GET_REQ_EVT */ typedef struct { NFC_HDR hdr; tNFA_HANDLE conn_handle; /* handle for data link connection */ uint32_t buff_length; /* length of buffer; acceptable length */ uint32_t ndef_length; /* length of current NDEF message */ uint8_t* p_ndef_buff; /* buffer for NDEF message */ } tNFA_SNEP_API_GET_REQ; /* data type for NFA_SNEP_API_PUT_REQ_EVT */ typedef struct { NFC_HDR hdr; tNFA_HANDLE conn_handle; /* handle for data link connection */ uint32_t ndef_length; /* length of NDEF message */ uint8_t* p_ndef_buff; /* buffer for NDEF message */ } tNFA_SNEP_API_PUT_REQ; /* data type for NFA_SNEP_API_GET_RESP_EVT */ typedef struct { NFC_HDR hdr; tNFA_HANDLE conn_handle; /* handle for data link connection */ tNFA_SNEP_RESP_CODE resp_code; /* response code */ uint32_t ndef_length; /* length of NDEF message */ uint8_t* p_ndef_buff; /* buffer for NDEF message */ } tNFA_SNEP_API_GET_RESP; /* data type for NFA_SNEP_API_PUT_RESP_EVT */ typedef struct { NFC_HDR hdr; tNFA_HANDLE conn_handle; /* handle for data link connection */ tNFA_SNEP_RESP_CODE resp_code; /* response code */ } tNFA_SNEP_API_PUT_RESP; /* data type for NFA_SNEP_API_DISCONNECT_EVT */ typedef struct { NFC_HDR hdr; tNFA_HANDLE conn_handle; /* response code */ bool flush; /* TRUE if discard pending data */ } tNFA_SNEP_API_DISCONNECT; /* union of all event data types */ typedef union { NFC_HDR hdr; tNFA_SNEP_API_START_DEFAULT_SERVER api_start_default_server; /* NFA_SNEP_API_START_DEFAULT_SERVER_EVT */ tNFA_SNEP_API_STOP_DEFAULT_SERVER api_stop_default_server; /* NFA_SNEP_API_STOP_DEFAULT_SERVER_EVT */ tNFA_SNEP_API_REG_SERVER api_reg_server; /* NFA_SNEP_API_REG_SERVER_EVT */ tNFA_SNEP_API_REG_CLIENT api_reg_client; /* NFA_SNEP_API_REG_CLIENT_EVT */ tNFA_SNEP_API_DEREG api_dereg; /* NFA_SNEP_API_DEREG_EVT */ tNFA_SNEP_API_CONNECT api_connect; /* NFA_SNEP_API_CONNECT_EVT */ tNFA_SNEP_API_GET_REQ api_get_req; /* NFA_SNEP_API_GET_REQ_EVT */ tNFA_SNEP_API_PUT_REQ api_put_req; /* NFA_SNEP_API_PUT_REQ_EVT */ tNFA_SNEP_API_GET_RESP api_get_resp; /* NFA_SNEP_API_GET_RESP_EVT */ tNFA_SNEP_API_PUT_RESP api_put_resp; /* NFA_SNEP_API_PUT_RESP_EVT */ tNFA_SNEP_API_DISCONNECT api_disc; /* NFA_SNEP_API_DISCONNECT_EVT */ } tNFA_SNEP_MSG; /***************************************************************************** ** control block *****************************************************************************/ /* NFA SNEP service control block */ /* ignore flags while searching */ /* waiting for connection confirm */ /* data link connected */ /* Waiting for continue response */ /* Waiting for continue request */ typedef struct { uint8_t local_sap; /* local SAP of service */ uint8_t remote_sap; /* local SAP of service */ uint8_t flags; /* internal flags */ tNFA_SNEP_CBACK* p_cback; /* callback for event */ TIMER_LIST_ENT timer; /* timer for client */ uint16_t tx_miu; /* adjusted MIU for throughput */ bool congest; /* TRUE if data link connection is congested */ bool rx_fragments; /* TRUE if waiting more fragments */ uint8_t tx_code; /* transmitted code in request/response */ uint8_t rx_code; /* received code in request/response */ uint32_t acceptable_length; uint32_t buff_length; /* size of buffer for NDEF message */ uint32_t ndef_length; /* length of NDEF message */ uint32_t cur_length; /* currently sent or received length */ uint8_t* p_ndef_buff; /* NDEF message buffer */ } tNFA_SNEP_CONN; /* ** NFA SNEP control block */ typedef struct { tNFA_SNEP_CONN conn[NFA_SNEP_MAX_CONN]; bool listen_enabled; bool is_dta_mode; } tNFA_SNEP_CB; /* ** NFA SNEP default server control block */ /* multiple data link connections for default server */ typedef struct { tNFA_HANDLE conn_handle; /* connection handle for default server */ uint8_t* p_rx_ndef; /* buffer to receive NDEF */ } tNFA_SNEP_DEFAULT_CONN; #define NFA_SNEP_DEFAULT_MAX_CONN 3 typedef struct { tNFA_HANDLE server_handle; /* registered handle for default server */ tNFA_SNEP_DEFAULT_CONN conn[NFA_SNEP_DEFAULT_MAX_CONN]; /* connections for default server */ } tNFA_SNEP_DEFAULT_CB; /***************************************************************************** ** External variables *****************************************************************************/ /* NFA SNEP control block */ extern tNFA_SNEP_CB nfa_snep_cb; /* NFA SNEP default server control block */ extern tNFA_SNEP_DEFAULT_CB nfa_snep_default_cb; /***************************************************************************** ** External functions *****************************************************************************/ /* ** nfa_snep_main.c */ void nfa_snep_init(bool is_dta_mode); #endif /* (NFA_SNEP_INCLUDED == TRUE) */ #endif /* NFA_SNEP_INT_H */