1214501Srpaulo/*
2214501Srpaulo * WPA Supplicant - background scan and roaming interface
3214501Srpaulo * Copyright (c) 2009-2010, Jouni Malinen <j@w1.fi>
4214501Srpaulo *
5252726Srpaulo * This software may be distributed under the terms of the BSD license.
6252726Srpaulo * See README for more details.
7214501Srpaulo */
8214501Srpaulo
9214501Srpaulo#ifndef BGSCAN_H
10214501Srpaulo#define BGSCAN_H
11214501Srpaulo
12214501Srpaulostruct wpa_supplicant;
13214501Srpaulostruct wpa_ssid;
14214501Srpaulo
15214501Srpaulostruct bgscan_ops {
16214501Srpaulo	const char *name;
17214501Srpaulo
18214501Srpaulo	void * (*init)(struct wpa_supplicant *wpa_s, const char *params,
19214501Srpaulo		       const struct wpa_ssid *ssid);
20214501Srpaulo	void (*deinit)(void *priv);
21214501Srpaulo
22252726Srpaulo	int (*notify_scan)(void *priv, struct wpa_scan_results *scan_res);
23214501Srpaulo	void (*notify_beacon_loss)(void *priv);
24252726Srpaulo	void (*notify_signal_change)(void *priv, int above,
25252726Srpaulo				     int current_signal,
26252726Srpaulo				     int current_noise,
27252726Srpaulo				     int current_txrate);
28214501Srpaulo};
29214501Srpaulo
30214501Srpaulo#ifdef CONFIG_BGSCAN
31214501Srpaulo
32281806Srpauloint bgscan_init(struct wpa_supplicant *wpa_s, struct wpa_ssid *ssid,
33281806Srpaulo		const char *name);
34214501Srpaulovoid bgscan_deinit(struct wpa_supplicant *wpa_s);
35252726Srpauloint bgscan_notify_scan(struct wpa_supplicant *wpa_s,
36252726Srpaulo		       struct wpa_scan_results *scan_res);
37214501Srpaulovoid bgscan_notify_beacon_loss(struct wpa_supplicant *wpa_s);
38252726Srpaulovoid bgscan_notify_signal_change(struct wpa_supplicant *wpa_s, int above,
39252726Srpaulo				 int current_signal, int current_noise,
40252726Srpaulo				 int current_txrate);
41214501Srpaulo
42337817Scy/* Available bgscan modules */
43337817Scy
44337817Scy#ifdef CONFIG_BGSCAN_SIMPLE
45337817Scyextern const struct bgscan_ops bgscan_simple_ops;
46337817Scy#endif /* CONFIG_BGSCAN_SIMPLE */
47337817Scy#ifdef CONFIG_BGSCAN_LEARN
48337817Scyextern const struct bgscan_ops bgscan_learn_ops;
49337817Scy#endif /* CONFIG_BGSCAN_LEARN */
50337817Scy
51214501Srpaulo#else /* CONFIG_BGSCAN */
52214501Srpaulo
53214501Srpaulostatic inline int bgscan_init(struct wpa_supplicant *wpa_s,
54281806Srpaulo			      struct wpa_ssid *ssid, const char name)
55214501Srpaulo{
56214501Srpaulo	return 0;
57214501Srpaulo}
58214501Srpaulo
59214501Srpaulostatic inline void bgscan_deinit(struct wpa_supplicant *wpa_s)
60214501Srpaulo{
61214501Srpaulo}
62214501Srpaulo
63252726Srpaulostatic inline int bgscan_notify_scan(struct wpa_supplicant *wpa_s,
64252726Srpaulo				     struct wpa_scan_results *scan_res)
65214501Srpaulo{
66214501Srpaulo	return 0;
67214501Srpaulo}
68214501Srpaulo
69214501Srpaulostatic inline void bgscan_notify_beacon_loss(struct wpa_supplicant *wpa_s)
70214501Srpaulo{
71214501Srpaulo}
72214501Srpaulo
73214501Srpaulostatic inline void bgscan_notify_signal_change(struct wpa_supplicant *wpa_s,
74252726Srpaulo					       int above, int current_signal,
75252726Srpaulo					       int current_noise,
76252726Srpaulo					       int current_txrate)
77214501Srpaulo{
78214501Srpaulo}
79214501Srpaulo
80214501Srpaulo#endif /* CONFIG_BGSCAN */
81214501Srpaulo
82214501Srpaulo#endif /* BGSCAN_H */
83