nfa_snep_main.c revision 45faad0ff5deeb0c676356345d99398cc4ab695a
1/***************************************************************************** 2** 3** Name: nfa_snep_main.c 4** 5** Description: This is the main implementation file for the NFA SNEP. 6** 7** Copyright (c) 2010, Broadcom Corp., All Rights Reserved. 8** Broadcom Bluetooth Core. Proprietary and confidential. 9** 10*****************************************************************************/ 11#include <string.h> 12#include "nfa_sys.h" 13#include "nfa_sys_int.h" 14#include "nfa_snep_int.h" 15 16/***************************************************************************** 17** Global Variables 18*****************************************************************************/ 19 20/* system manager control block definition */ 21#if NFA_DYNAMIC_MEMORY == FALSE 22tNFA_SNEP_CB nfa_snep_cb; 23#endif 24 25/***************************************************************************** 26** Static Functions 27*****************************************************************************/ 28 29/* event handler function type */ 30static BOOLEAN nfa_snep_evt_hdlr (BT_HDR *p_msg); 31 32/* disable function type */ 33static void nfa_snep_sys_disable (void); 34 35/* debug functions type */ 36#if (BT_TRACE_VERBOSE == TRUE) 37static char *nfa_snep_evt_code (UINT16 evt_code); 38#endif 39 40/***************************************************************************** 41** Constants 42*****************************************************************************/ 43static const tNFA_SYS_REG nfa_snep_sys_reg = 44{ 45 NULL, 46 nfa_snep_evt_hdlr, 47 nfa_snep_sys_disable, 48 NULL 49}; 50 51#define NFA_SNEP_NUM_ACTIONS (NFA_SNEP_LAST_EVT & 0x00ff) 52 53/* type for action functions */ 54typedef BOOLEAN (*tNFA_SNEP_ACTION) (tNFA_SNEP_MSG *p_data); 55 56/* action function list */ 57const tNFA_SNEP_ACTION nfa_snep_action[] = 58{ 59 nfa_snep_start_default_server, /* NFA_SNEP_API_START_DEFAULT_SERVER_EVT */ 60 nfa_snep_stop_default_server, /* NFA_SNEP_API_STOP_DEFAULT_SERVER_EVT */ 61 nfa_snep_reg_server, /* NFA_SNEP_API_REG_SERVER_EVT */ 62 nfa_snep_reg_client, /* NFA_SNEP_API_REG_CLIENT_EVT */ 63 nfa_snep_dereg, /* NFA_SNEP_API_DEREG_EVT */ 64 nfa_snep_connect, /* NFA_SNEP_API_CONNECT_EVT */ 65 nfa_snep_get_req, /* NFA_SNEP_API_GET_REQ_EVT */ 66 nfa_snep_put_req, /* NFA_SNEP_API_PUT_REQ_EVT */ 67 nfa_snep_get_resp, /* NFA_SNEP_API_GET_RESP_EVT */ 68 nfa_snep_put_resp, /* NFA_SNEP_API_PUT_RESP_EVT */ 69 nfa_snep_disconnect /* NFA_SNEP_API_DISCONNECT_EVT */ 70}; 71 72/******************************************************************************* 73** 74** Function nfa_snep_init 75** 76** Description Initialize NFA SNEP 77** 78** 79** Returns None 80** 81*******************************************************************************/ 82void nfa_snep_init (BOOLEAN is_dta_mode) 83{ 84 /* initialize control block */ 85 memset (&nfa_snep_cb, 0, sizeof (tNFA_SNEP_CB)); 86 nfa_snep_cb.trace_level = APPL_INITIAL_TRACE_LEVEL; 87 nfa_snep_cb.is_dta_mode = is_dta_mode; 88 89 SNEP_TRACE_DEBUG1 ("nfa_snep_init (): is_dta_mode=%d", is_dta_mode); 90 91 nfa_snep_default_init (); 92 93 /* register message handler on NFA SYS */ 94 nfa_sys_register (NFA_ID_SNEP, &nfa_snep_sys_reg); 95} 96 97/******************************************************************************* 98** 99** Function nfa_snep_sys_disable 100** 101** Description Clean up and deregister NFA SNEP from NFA SYS/DM 102** 103** 104** Returns None 105** 106*******************************************************************************/ 107static void nfa_snep_sys_disable (void) 108{ 109 UINT8 xx; 110 111 SNEP_TRACE_DEBUG0 ("nfa_snep_sys_disable ()"); 112 113 /* deallocate any buffer and deregister from LLCP */ 114 for (xx = 0; xx < NFA_SNEP_MAX_CONN; xx++) 115 { 116 if (nfa_snep_cb.conn[xx].p_cback != NULL) 117 { 118 LLCP_Deregister (nfa_snep_cb.conn[xx].local_sap); 119 nfa_snep_deallocate_cb (xx); 120 } 121 } 122 123 /* deregister message handler on NFA SYS */ 124 nfa_sys_deregister (NFA_ID_SNEP); 125} 126 127/******************************************************************************* 128** 129** Function nfa_snep_evt_hdlr 130** 131** Description Processing event for NFA SNEP 132** 133** 134** Returns TRUE if p_msg needs to be deallocated 135** 136*******************************************************************************/ 137static BOOLEAN nfa_snep_evt_hdlr (BT_HDR *p_hdr) 138{ 139 BOOLEAN delete_msg = TRUE; 140 UINT16 event; 141 142 tNFA_SNEP_MSG *p_msg = (tNFA_SNEP_MSG *) p_hdr; 143 144#if (BT_TRACE_VERBOSE == TRUE) 145 SNEP_TRACE_DEBUG1 ("nfa_snep_evt_hdlr (): Event [%s]", nfa_snep_evt_code (p_msg->hdr.event)); 146#else 147 SNEP_TRACE_DEBUG1 ("nfa_snep_evt_hdlr(): Event 0x%02x", p_msg->hdr.event); 148#endif 149 150 event = p_msg->hdr.event & 0x00ff; 151 152 /* execute action functions */ 153 if (event < NFA_SNEP_NUM_ACTIONS) 154 { 155 delete_msg = (*nfa_snep_action[event]) (p_msg); 156 } 157 else 158 { 159 SNEP_TRACE_ERROR0 ("Unhandled event"); 160 } 161 162 return delete_msg; 163} 164 165 166#if (BT_TRACE_VERBOSE == TRUE) 167/******************************************************************************* 168** 169** Function nfa_snep_evt_code 170** 171** Description 172** 173** Returns string of event 174** 175*******************************************************************************/ 176static char *nfa_snep_evt_code (UINT16 evt_code) 177{ 178 switch (evt_code) 179 { 180 case NFA_SNEP_API_START_DEFAULT_SERVER_EVT: 181 return "API_START_DEFAULT_SERVER"; 182 case NFA_SNEP_API_STOP_DEFAULT_SERVER_EVT: 183 return "API_STOP_DEFAULT_SERVER"; 184 case NFA_SNEP_API_REG_SERVER_EVT: 185 return "API_REG_SERVER"; 186 case NFA_SNEP_API_REG_CLIENT_EVT: 187 return "API_REG_CLIENT"; 188 case NFA_SNEP_API_DEREG_EVT: 189 return "API_DEREG"; 190 case NFA_SNEP_API_CONNECT_EVT: 191 return "API_CONNECT"; 192 case NFA_SNEP_API_GET_REQ_EVT: 193 return "API_GET_REQ"; 194 case NFA_SNEP_API_PUT_REQ_EVT: 195 return "API_PUT_REQ"; 196 case NFA_SNEP_API_GET_RESP_EVT: 197 return "API_GET_RESP"; 198 case NFA_SNEP_API_PUT_RESP_EVT: 199 return "API_PUT_RESP"; 200 case NFA_SNEP_API_DISCONNECT_EVT: 201 return "API_DISCONNECT"; 202 default: 203 return "Unknown event"; 204 } 205} 206#endif /* Debug Functions */ 207