• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /******************************************************************************
2  *
3  *  Copyright (C) 2010-2012 Broadcom Corporation
4  *
5  *  Licensed under the Apache License, Version 2.0 (the "License");
6  *  you may not use this file except in compliance with the License.
7  *  You may obtain a copy of the License at:
8  *
9  *  http://www.apache.org/licenses/LICENSE-2.0
10  *
11  *  Unless required by applicable law or agreed to in writing, software
12  *  distributed under the License is distributed on an "AS IS" BASIS,
13  *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  *  See the License for the specific language governing permissions and
15  *  limitations under the License.
16  *
17  ******************************************************************************/
18 
19 /******************************************************************************
20  *
21  *  This is the main implementation file for the NFA Connection Handover.
22  *
23  ******************************************************************************/
24 #include <string.h>
25 #include "nfc_api.h"
26 #include "nfa_sys.h"
27 #include "nfa_cho_api.h"
28 #include "nfa_cho_int.h"
29 #include "trace_api.h"
30 
31 /*****************************************************************************
32 **  Global Variables
33 *****************************************************************************/
34 
35 /* system manager control block definition */
36 #if NFA_DYNAMIC_MEMORY == FALSE
37 tNFA_CHO_CB nfa_cho_cb;
38 #endif
39 
40 /*****************************************************************************
41 **  Static Functions
42 *****************************************************************************/
43 
44 /* event handler function type */
45 static BOOLEAN nfa_cho_evt_hdlr (BT_HDR *p_msg);
46 
47 /* disable function type */
48 static void nfa_cho_sys_disable (void);
49 
50 /*****************************************************************************
51 **  Constants
52 *****************************************************************************/
53 static const tNFA_SYS_REG nfa_cho_sys_reg =
54 {
55     NULL,
56     nfa_cho_evt_hdlr,
57     nfa_cho_sys_disable,
58     NULL
59 };
60 
61 /*******************************************************************************
62 **
63 ** Function         nfa_cho_timer_cback
64 **
65 ** Description      Process timeout event when timer expires
66 **
67 **
68 ** Returns          None
69 **
70 *******************************************************************************/
nfa_cho_timer_cback(void * p_tle)71 static void nfa_cho_timer_cback (void *p_tle)
72 {
73     nfa_cho_sm_execute (NFA_CHO_TIMEOUT_EVT, NULL);
74 }
75 
76 /*******************************************************************************
77 **
78 ** Function         nfa_cho_init
79 **
80 ** Description      Initialize NFA Connection Handover
81 **
82 **
83 ** Returns          None
84 **
85 *******************************************************************************/
nfa_cho_init(void)86 void nfa_cho_init (void)
87 {
88     CHO_TRACE_DEBUG0 ("nfa_cho_init ()");
89 
90     /* initialize control block */
91     memset (&nfa_cho_cb, 0, sizeof (tNFA_CHO_CB));
92 
93     nfa_cho_cb.server_sap = LLCP_INVALID_SAP;
94     nfa_cho_cb.client_sap = LLCP_INVALID_SAP;
95     nfa_cho_cb.remote_sap = LLCP_INVALID_SAP;
96 
97     nfa_cho_cb.hs_ndef_type_handle   = NFA_HANDLE_INVALID;
98     nfa_cho_cb.bt_ndef_type_handle   = NFA_HANDLE_INVALID;
99     nfa_cho_cb.wifi_ndef_type_handle = NFA_HANDLE_INVALID;
100 
101     nfa_cho_cb.trace_level    = APPL_INITIAL_TRACE_LEVEL;
102 
103     /* register message handler on NFA SYS */
104     nfa_sys_register ( NFA_ID_CHO,  &nfa_cho_sys_reg);
105 
106     /* initialize timer callback */
107     nfa_cho_cb.timer.p_cback = nfa_cho_timer_cback;
108 }
109 
110 /*******************************************************************************
111 **
112 ** Function         nfa_cho_sys_disable
113 **
114 ** Description      Deregister NFA Connection Handover from NFA SYS/DM
115 **
116 **
117 ** Returns          None
118 **
119 *******************************************************************************/
nfa_cho_sys_disable(void)120 static void nfa_cho_sys_disable (void)
121 {
122     CHO_TRACE_DEBUG0 ("nfa_cho_sys_disable ()");
123 
124     /* clean up if application is still registered */
125     if (nfa_cho_cb.p_cback)
126     {
127         nfa_cho_proc_api_dereg ();
128     }
129 
130     /* deregister message handler on NFA SYS */
131     nfa_sys_deregister (NFA_ID_CHO);
132 }
133 
134 /*******************************************************************************
135 **
136 ** Function         nfa_cho_evt_hdlr
137 **
138 ** Description      Processing event for NFA Connection Handover
139 **
140 **
141 ** Returns          TRUE if p_msg needs to be deallocated
142 **
143 *******************************************************************************/
nfa_cho_evt_hdlr(BT_HDR * p_msg)144 static BOOLEAN nfa_cho_evt_hdlr (BT_HDR *p_msg)
145 {
146     tNFA_CHO_INT_EVENT_DATA *p_data = (tNFA_CHO_INT_EVENT_DATA *) p_msg;
147 
148     nfa_cho_sm_execute (p_data->hdr.event, p_data);
149 
150     return TRUE;
151 }
152 
153 
154