nfa_sys_cback.c revision 45faad0ff5deeb0c676356345d99398cc4ab695a
1/*****************************************************************************
2**
3**  Name:           nfa_sys_cback.c
4**
5**  Description:    Registration/deregistration functions for inter-module callbacks
6**
7**  Copyright (c) 2010-2011, Broadcom Corp., All Rights Reserved.
8**  Widcomm Bluetooth Core. Proprietary and confidential.
9**
10*****************************************************************************/
11#include "nfa_sys.h"
12#include "nfa_sys_int.h"
13
14
15
16
17/*******************************************************************************
18**
19** Function         nfa_sys_cback_reg_enable_complete
20**
21** Description      Called to register an initialization complete callback function
22**
23** Returns          void
24**
25*******************************************************************************/
26void nfa_sys_cback_reg_enable_complete (tNFA_SYS_ENABLE_CBACK *p_cback)
27{
28    nfa_sys_cb.p_enable_cback = p_cback;
29    nfa_sys_cb.enable_cplt_flags = 0;
30}
31
32/*******************************************************************************
33**
34** Function         nfa_sys_cback_notify_enable_complete
35**
36** Description      Called by other NFA subsystems to notify initialization is
37**                  complete
38**
39** Returns          void
40**
41*******************************************************************************/
42void nfa_sys_cback_notify_enable_complete (UINT8 id)
43{
44    nfa_sys_cb.enable_cplt_flags |= (0x0001 << id);
45
46    NFA_TRACE_DEBUG2 ("nfa_sys_cback_notify_enable_complete () enable_cplt_flags=0x%x, enable_cplt_mask=0x%x",
47                       nfa_sys_cb.enable_cplt_flags, nfa_sys_cb.enable_cplt_mask);
48
49    if (  (nfa_sys_cb.enable_cplt_flags == nfa_sys_cb.enable_cplt_mask) /* except SYS, DM and DTA */
50        &&(nfa_sys_cb.p_enable_cback)  )
51    {
52        nfa_sys_cb.p_enable_cback ();
53        nfa_sys_cb.p_enable_cback = NULL;
54    }
55}
56
57/*******************************************************************************
58**
59** Function         nfa_sys_cback_reg_nfcc_power_mode_proc_complete
60**
61** Description      Called to register a callback function for complete of processing
62**                  NFCC power mode change from NFA sub-systems
63**
64** Returns          void
65**
66*******************************************************************************/
67void nfa_sys_cback_reg_nfcc_power_mode_proc_complete (tNFA_SYS_PROC_NFCC_PWR_MODE_CMPL *p_cback)
68{
69    nfa_sys_cb.p_proc_nfcc_pwr_mode_cmpl_cback = p_cback;
70    nfa_sys_cb.proc_nfcc_pwr_mode_cplt_flags   = 0;
71}
72
73/*******************************************************************************
74**
75** Function         nfa_sys_cback_notify_nfcc_power_mode_proc_complete
76**
77** Description      Called by other NFA subsystems to notify processing NFCC power
78**                  mode is complete
79**
80** Returns          void
81**
82*******************************************************************************/
83void nfa_sys_cback_notify_nfcc_power_mode_proc_complete (UINT8 id)
84{
85    nfa_sys_cb.proc_nfcc_pwr_mode_cplt_flags |= (0x0001 << id);
86
87    NFA_TRACE_DEBUG2 ("nfa_sys_cback_notify_nfcc_power_mode_proc_complete () flags=0x%x, mask=0x%x",
88                       nfa_sys_cb.proc_nfcc_pwr_mode_cplt_flags,
89                       nfa_sys_cb.proc_nfcc_pwr_mode_cplt_mask);
90
91    if (  (nfa_sys_cb.proc_nfcc_pwr_mode_cplt_flags == nfa_sys_cb.proc_nfcc_pwr_mode_cplt_mask) /* except SYS */
92        &&(nfa_sys_cb.p_proc_nfcc_pwr_mode_cmpl_cback)  )
93    {
94        nfa_sys_cb.p_proc_nfcc_pwr_mode_cmpl_cback ();
95        nfa_sys_cb.p_proc_nfcc_pwr_mode_cmpl_cback = NULL;
96    }
97}
98