diff --git a/src/include/datastorage.h b/src/include/datastorage.h index d86f745..3e3b3ad 100644 --- a/src/include/datastorage.h +++ b/src/include/datastorage.h @@ -92,6 +92,7 @@ pthread_mutex_t ap_array_mutex; ap insert_to_ap_array(ap entry); void print_ap_array(); void *remove_ap_array_thread(void *arg); +ap ap_array_get_ap(uint8_t bssid_addr[]); // Array #define ARRAY_CLIENT_LEN 1000 diff --git a/src/storage/datastorage.c b/src/storage/datastorage.c index 0e76f13..e655b44 100644 --- a/src/storage/datastorage.c +++ b/src/storage/datastorage.c @@ -39,16 +39,21 @@ int ap_entry_last = -1; int eval_probe_metric(struct probe_entry_s probe_entry) { int score = 0; -/* - client ap_entry = client_array_get_ap(probe_entry.bssid_addr); + + ap ap_entry = ap_array_get_ap(probe_entry.bssid_addr); // check if ap entry is available if(mac_is_equal(ap_entry.bssid_addr, probe_entry.bssid_addr)) { - ap_entry. + score += probe_entry.ht_support ? dawn_metric.vht_support : 0; + score += !probe_entry.ht_support && ap_entry.ht ? dawn_metric.n_ht_support : 0; + score += !probe_entry.vht_support && ap_entry.vht ? dawn_metric.n_vht_support : 0; + } else { - score += probe_entry.ht_support ? dawn_metric.vht_support : dawn_metric.n_vht_support; - score += probe_entry.vht_support ? dawn_metric.ht_support : dawn_metric.n_ht_support; - }*/ + // maybe don't score vht and ht if no ap is available + + //score += probe_entry.ht_support ? dawn_metric.vht_support : dawn_metric.n_vht_support; + //score += probe_entry.vht_support ? dawn_metric.ht_support : dawn_metric.n_ht_support; + } score += (probe_entry.freq > 5000) ? dawn_metric.freq : 0; score += (probe_entry.signal > -60) ? dawn_metric.rssi : 0; @@ -359,6 +364,27 @@ ap insert_to_ap_array(ap entry) { return entry; } +ap ap_array_get_ap(uint8_t bssid_addr[]) { + ap ret; + + if (ap_entry_last == -1) { + return ret; + } + + pthread_mutex_lock(&ap_array_mutex); + int i; + + for (i = 0; i <= ap_entry_last; i++) { + if (mac_is_equal(bssid_addr, ap_array[i].bssid_addr) || mac_is_greater(bssid_addr, ap_array[i].bssid_addr)) { + break; + } + } + ret = ap_array[i]; + pthread_mutex_unlock(&ap_array_mutex); + + return ret; +} + void ap_array_insert(ap entry) { if (ap_entry_last == -1) { ap_array[0] = entry;