1193323Sed/* 2193323Sed * WPA Supplicant - auto scan periodic module 3193323Sed * Copyright (c) 2012, Intel Corporation. All rights reserved. 4193323Sed * 5193323Sed * This software may be distributed under the terms of the BSD license. 6193323Sed * See README for more details. 7193323Sed */ 8193323Sed 9193323Sed#include "includes.h" 10193323Sed 11193323Sed#include "common.h" 12193323Sed#include "wpa_supplicant_i.h" 13193323Sed#include "autoscan.h" 14198090Srdivacky 15198090Srdivacky 16193323Sedstruct autoscan_periodic_data { 17193323Sed int periodic_interval; 18223017Sdim}; 19206274Srdivacky 20193323Sed 21193323Sedstatic int autoscan_periodic_get_params(struct autoscan_periodic_data *data, 22193323Sed const char *params) 23206274Srdivacky{ 24193323Sed int interval; 25193323Sed 26206274Srdivacky if (params == NULL) 27206274Srdivacky return -1; 28198090Srdivacky 29199481Srdivacky interval = atoi(params); 30206274Srdivacky 31206274Srdivacky if (interval < 0) 32263508Sdim return -1; 33206274Srdivacky 34193323Sed data->periodic_interval = interval; 35193323Sed 36193323Sed return 0; 37193323Sed} 38206274Srdivacky 39218893Sdim 40206274Srdivackystatic void * autoscan_periodic_init(struct wpa_supplicant *wpa_s, 41206274Srdivacky const char *params) 42206274Srdivacky{ 43206274Srdivacky struct autoscan_periodic_data *data; 44206274Srdivacky 45206274Srdivacky data = os_zalloc(sizeof(struct autoscan_periodic_data)); 46193323Sed if (data == NULL) 47193323Sed return NULL; 48193323Sed 49193323Sed if (autoscan_periodic_get_params(data, params) < 0) { 50193323Sed os_free(data); 51193323Sed return NULL; 52193323Sed } 53193323Sed 54193323Sed wpa_printf(MSG_DEBUG, "autoscan periodic: interval is %d", 55193323Sed data->periodic_interval); 56193323Sed 57193323Sed return data; 58193323Sed} 59193323Sed 60193323Sed 61205218Srdivackystatic void autoscan_periodic_deinit(void *priv) 62193323Sed{ 63198090Srdivacky struct autoscan_periodic_data *data = priv; 64198090Srdivacky 65198090Srdivacky os_free(data); 66198090Srdivacky} 67203954Srdivacky 68198090Srdivacky 69198090Srdivackystatic int autoscan_periodic_notify_scan(void *priv, 70193323Sed struct wpa_scan_results *scan_res) 71193323Sed{ 72193323Sed struct autoscan_periodic_data *data = priv; 73205218Srdivacky 74205218Srdivacky wpa_printf(MSG_DEBUG, "autoscan periodic: scan result notification"); 75198090Srdivacky 76193323Sed return data->periodic_interval; 77205218Srdivacky} 78193323Sed 79193323Sed 80193323Sedconst struct autoscan_ops autoscan_periodic_ops = { 81198090Srdivacky .name = "periodic", 82198090Srdivacky .init = autoscan_periodic_init, 83198090Srdivacky .deinit = autoscan_periodic_deinit, 84198090Srdivacky .notify_scan = autoscan_periodic_notify_scan, 85198090Srdivacky}; 86198090Srdivacky