/****************************************************************************** * * 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 public interface file for NFA SNEP, Broadcom's NFC * application layer for mobile phones. * ******************************************************************************/ #ifndef NFA_SNEP_API_H #define NFA_SNEP_API_H #include "nfa_api.h" /***************************************************************************** ** Constants and data types *****************************************************************************/ /* return an NDEF message */ #define NFA_SNEP_REQ_CODE_GET 0x01 /* accept an NDEF message */ #define NFA_SNEP_REQ_CODE_PUT 0x02 /* do not send remaining fragments */ #define tNFA_SNEP_REQ_CODE uint8_t #define tNFA_SNEP_RESP_CODE uint8_t /* NFA SNEP callback events */ /* Server/client Registeration Status */ #define NFA_SNEP_REG_EVT 0x00 /* LLCP link has been activated, client only */ #define NFA_SNEP_ACTIVATED_EVT 0x01 /* LLCP link has been deactivated, client only */ #define NFA_SNEP_DEACTIVATED_EVT 0x02 /* Data link has been created */ #define NFA_SNEP_CONNECTED_EVT 0x03 /* GET request from client */ #define NFA_SNEP_GET_REQ_EVT 0x04 /* PUT request from client */ #define NFA_SNEP_PUT_REQ_EVT 0x05 /* GET response from server */ #define NFA_SNEP_GET_RESP_EVT 0x06 /* PUT response from server */ #define NFA_SNEP_PUT_RESP_EVT 0x07 /* Failed to connect or disconnected */ #define NFA_SNEP_DISC_EVT 0x08 #define NFA_SNEP_ALLOC_BUFF_EVT \ 0x09 /* Request to allocate a buffer for \ NDEF*/ #define NFA_SNEP_FREE_BUFF_EVT 0x0A /* Request to deallocate buffer for NDEF*/ /* GET response sent to client */ #define NFA_SNEP_GET_RESP_CMPL_EVT 0x0B typedef uint8_t tNFA_SNEP_EVT; /* Data for NFA_SNEP_REG_EVT */ typedef struct { tNFA_STATUS status; tNFA_HANDLE reg_handle; /* handle for registered server/client */ char service_name[LLCP_MAX_SN_LEN + 1]; /* only for server */ } tNFA_SNEP_REG; /* Data for NFA_SNEP_ACTIVATED_EVT */ typedef struct { tNFA_HANDLE client_handle; /* handle for registered client */ } tNFA_SNEP_ACTIVATED; /* Data for NFA_SNEP_DEACTIVATED_EVT */ typedef tNFA_SNEP_ACTIVATED tNFA_SNEP_DEACTIVATED; /* Data for NFA_SNEP_CONNECTED_EVT */ /* ** for server, new handle will be assigned for conn_handle ** for client, handle used in NFA_SnepConnect () is returned in conn_handle */ typedef struct { tNFA_HANDLE reg_handle; /* server/client handle */ tNFA_HANDLE conn_handle; /* handle for data link connection */ } tNFA_SNEP_CONNECT; /* Data for NFA_SNEP_GET_REQ_EVT */ typedef struct { tNFA_HANDLE conn_handle; /* handle for data link connection */ uint32_t acceptable_length; /* acceptable length from client */ uint32_t ndef_length; /* NDEF message length */ uint8_t* p_ndef; /* NDEF message */ } tNFA_SNEP_GET_REQ; /* Data for NFA_SNEP_PUT_REQ_EVT */ typedef struct { tNFA_HANDLE conn_handle; /* handle for data link connection */ uint32_t ndef_length; /* NDEF message length */ uint8_t* p_ndef; /* NDEF message */ } tNFA_SNEP_PUT_REQ; /* Data for NFA_SNEP_GET_RESP_EVT */ typedef struct { tNFA_HANDLE conn_handle; /* handle for data link connection */ tNFA_SNEP_RESP_CODE resp_code; /* response code from server */ uint32_t ndef_length; /* NDEF message length */ uint8_t* p_ndef; /* NDEF message */ } tNFA_SNEP_GET_RESP; /* Data for NFA_SNEP_PUT_RESP_EVT */ typedef struct { tNFA_HANDLE conn_handle; /* handle for data link connection */ tNFA_SNEP_RESP_CODE resp_code; /* response code from server */ } tNFA_SNEP_PUT_RESP; /* Data for NFA_SNEP_DISC_EVT */ typedef struct { tNFA_HANDLE conn_handle; /* handle for data link connection */ /* client_handle if connection failed */ } tNFA_SNEP_DISC; /* Data for NFA_SNEP_ALLOC_BUFF_EVT */ typedef struct { tNFA_HANDLE conn_handle; /* handle for data link connection */ tNFA_SNEP_REQ_CODE req_code; /* NFA_SNEP_REQ_CODE_GET or NFA_SNEP_REQ_CODE_PUT */ tNFA_SNEP_RESP_CODE resp_code; /* Response code if cannot allocate buffer */ uint32_t ndef_length; /* NDEF message length */ uint8_t* p_buff; /* buffer for NDEF message */ } tNFA_SNEP_ALLOC; /* Data for NFA_SNEP_FREE_BUFF_EVT */ typedef struct { tNFA_HANDLE conn_handle; /* handle for data link connection */ uint8_t* p_buff; /* buffer to free */ } tNFA_SNEP_FREE; /* Data for NFA_SNEP_GET_RESP_CMPL_EVT */ typedef struct { tNFA_HANDLE conn_handle; /* handle for data link connection */ uint8_t* p_buff; /* buffer for NDEF message */ } tNFA_SNEP_GET_RESP_CMPL; /* Union of all SNEP callback structures */ typedef union { tNFA_SNEP_REG reg; /* NFA_SNEP_REG_EVT */ tNFA_SNEP_ACTIVATED activated; /* NFA_SNEP_ACTIVATED_EVT */ tNFA_SNEP_DEACTIVATED deactivated; /* NFA_SNEP_DEACTIVATED_EVT */ tNFA_SNEP_CONNECT connect; /* NFA_SNEP_CONNECTED_EVT */ tNFA_SNEP_GET_REQ get_req; /* NFA_SNEP_GET_REQ_EVT */ tNFA_SNEP_PUT_REQ put_req; /* NFA_SNEP_PUT_REQ_EVT */ tNFA_SNEP_GET_RESP get_resp; /* NFA_SNEP_GET_RESP_EVT */ tNFA_SNEP_PUT_RESP put_resp; /* NFA_SNEP_PUT_RESP_EVT */ tNFA_SNEP_DISC disc; /* NFA_SNEP_DISC_EVT */ tNFA_SNEP_ALLOC alloc; /* NFA_SNEP_ALLOC_BUFF_EVT */ tNFA_SNEP_FREE free; /* NFA_SNEP_FREE_BUFF_EVT */ tNFA_SNEP_GET_RESP_CMPL get_resp_cmpl; /* NFA_SNEP_GET_RESP_CMPL_EVT */ } tNFA_SNEP_EVT_DATA; /* NFA SNEP callback */ typedef void(tNFA_SNEP_CBACK)(tNFA_SNEP_EVT event, tNFA_SNEP_EVT_DATA* p_data); #endif /* NFA_P2P_API_H */