1/*
2 * ScanSrvSM.h
3 *
4 * Copyright(c) 1998 - 2009 Texas Instruments. All rights reserved.
5 * All rights reserved.
6 *
7 * Redistribution and use in source and binary forms, with or without
8 * modification, are permitted provided that the following conditions
9 * are met:
10 *
11 *  * Redistributions of source code must retain the above copyright
12 *    notice, this list of conditions and the following disclaimer.
13 *  * Redistributions in binary form must reproduce the above copyright
14 *    notice, this list of conditions and the following disclaimer in
15 *    the documentation and/or other materials provided with the
16 *    distribution.
17 *  * Neither the name Texas Instruments nor the names of its
18 *    contributors may be used to endorse or promote products derived
19 *    from this software without specific prior written permission.
20 *
21 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
22 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
23 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
24 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
25 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
26 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
27 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
28 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
29 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
30 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
31 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
32 */
33
34/** \file ScanSrvSM.h
35 *  \brief This file include definitions for the scan SRV SM module.
36 *  \author Ronen Kalish
37 *  \date 10-Jan-2005
38 */
39
40#ifndef __SCANSRVSM_H__
41#define __SCANSRVSM_H__
42
43#include "fsm.h"
44
45/*
46 ***********************************************************************
47 *	Constant definitions.
48 ***********************************************************************
49 */
50
51/*
52 ***********************************************************************
53 *	Enums.
54 ***********************************************************************
55 */
56
57/** \enum scan_SRVSMEvents_e
58 * \brief enumerates the different scan SRV SM events
59 */
60typedef enum
61{
62    SCAN_SRV_EVENT_REQUEST_PS = 0,
63    SCAN_SRV_EVENT_PS_FAIL,
64    SCAN_SRV_EVENT_PS_SUCCESS,
65    SCAN_SRV_EVENT_PS_PEND,
66    SCAN_SRV_EVENT_STOP_SCAN,
67    SCAN_SRV_EVENT_FW_RESET,
68    SCAN_SRV_EVENT_TIMER_EXPIRED,
69    SCAN_SRV_EVENT_SCAN_COMPLETE,
70    SCAN_SRV_NUM_OF_EVENTS
71} scan_SRVSMEvents_e;
72
73/** \enum scan_SRVSMStates_e
74 * \brief enumerates the different scan SRV SM states
75 */
76typedef enum
77{
78	SCAN_SRV_STATE_IDLE = 0,
79    SCAN_SRV_STATE_PS_WAIT,
80	SCAN_SRV_STATE_SCANNING,
81	SCAN_SRV_STATE_STOPPING,
82	SCAN_SRV_STATE_PS_EXIT,
83	SCAN_SRV_NUM_OF_STATES
84} scan_SRVSMStates_e;
85
86/*
87 ***********************************************************************
88 *	Typedefs.
89 ***********************************************************************
90 */
91
92/*
93 ***********************************************************************
94 *	Structure definitions.
95 ***********************************************************************
96 */
97
98/*
99 ***********************************************************************
100 *	External data definitions.
101 ***********************************************************************
102 */
103
104/*
105 ***********************************************************************
106 *	External functions definitions
107 ***********************************************************************
108 */
109
110/**
111 * \author Ronen Kalish\n
112 * \date 10-Jan-2005\n
113 * \brief Initialize the scan SRV SM.
114 *
115 * Function Scope \e Public.\n
116 * \param hScanSrv - handle to the scan SRV object.\n
117 * \return TI_OK if successful, TI_NOK otherwise.\n
118 */
119TI_STATUS scanSRVSM_init( TI_HANDLE hScanSrv );
120
121/**
122 * \author Ronen Kalish\n
123 * \date 10-Jan-2005\n
124 * \brief Processes an event.
125 *
126 * Function Scope \e Public.\n
127 * \param hScanSrv - handle to the scan SRV object.\n
128 * \param currentState - the current scan SRV SM state.\n
129 * \param event - the event to handle.\n
130 * \return TI_OK if successful, TI_NOK otherwise.\n
131 */
132TI_STATUS scanSRVSM_SMEvent( TI_HANDLE hScanSrv, scan_SRVSMStates_e* currentState,
133                             scan_SRVSMEvents_e event );
134
135/**
136 * \author Ronen Kalish\n
137 * \date 10-Jan-2005\n
138 * \brief Request to enter driver mode from the power manager module.\n
139 *
140 * Function Scope \e Private.\n
141 * \param hScanSrv - handle to the scan SRV object.\n
142 * \return TI_OK if successful, TI_NOK otherwise.\n
143 */
144TI_STATUS scanSRVSM_requestPS( TI_HANDLE hScanSrv );
145
146/**
147 * \author Yuval Adler\n
148 * \date 6-Oct-2005\n
149 * \brief Request to release PS mode from the PowerSRV , and wait for answer.\n
150 *
151 * Function Scope \e Private.\n
152 * \param hScanSrv - handle to the scan SRV object.\n
153 * \return TI_OK if successful, TI_NOK otherwise.\n
154 */
155TI_STATUS scanSRVSM_releasePS( TI_HANDLE hScanSrv );
156
157/**
158 * \author Ronen Kalish\n
159 * \date 10-Jan-2005\n
160 * \brief Send the scan command to the firmware.\n
161 *
162 * Function Scope \e Private.\n
163 * \param hScanSrv - handle to the scan SRV object.\n
164 * \return TI_OK if successful, TI_NOK otherwise.\n
165 */
166TI_STATUS scanSRVSM_startActualScan( TI_HANDLE hScanSrv );
167
168/**
169 * \author Ronen Kalish\n
170 * \date 10-Jan-2005\n
171 * \brief Send a stop scan command to the firmware.\n
172 *
173 * Function Scope \e Private.\n
174 * \param hScanSrv - handle to the scan SRV object.\n
175 * \return TI_OK if successful, TI_NOK otherwise.\n
176 */
177TI_STATUS scanSRVSM_stopActualScan( TI_HANDLE hScanSrv );
178
179/**
180 * \author Ronen Kalish\n
181 * \date 10-Jan-2005\n
182 * \brief Notifies scan complete to upper layer.\n
183 *
184 * Function Scope \e Private.\n
185 * \param hScanSrv - handle to the scan SRV object.\n
186 * \return TI_OK if successful, TI_NOK otherwise.\n
187 */
188TI_STATUS scanSRVSM_notifyScanComplete( TI_HANDLE hScanSrv );
189
190/**
191 * \author Ronen Kalish\n
192 * \date 10-Jan-2005\n
193 * \brief Handles a timer expiry event - starts a recovery process.
194 *
195 * Function Scope \e Private.\n
196 * \param hScanSrv - handle to the scan SRV object.\n
197 * \return TI_OK if successful, TI_NOK otherwise.\n
198 */
199TI_STATUS scanSRVSM_handleTimerExpiry( TI_HANDLE hScanSrv );
200
201/**
202 * \author Ronen Kalish\n
203 * \date 17-Jan-2005\n
204 * \brief Handles a FW reset event (one that was detected outside the scan SRV) by stopping the timer.
205 *
206 * Function Scope \e Private.\n
207 * \param hScanSrv - handle to the scan SRV object.\n
208 * \return TI_OK if successful, TI_NOK otherwise.\n
209 */
210TI_STATUS scanSRVSM_handleRecovery( TI_HANDLE hScanSrv );
211
212#endif /* __SCANSRVSM_H__ */
213