1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115
|
int get_wifi_scan_results(wifiInfoList_s results[], int maxNum) { uint8_t i, j; char *ssid = NULL; char *rssi = NULL; uint8_t count = 0; uint8_t tryCnt = 0; int resultSize = 0; char readBuff[256] = {0}; wifiInfoList_s temp = {0}; bt_binding_params_s *ptx = get_bt_binidng_params_ctx();
while (1) { if (access(AP_SCAN_RESULT_PATH, F_OK) == 0) { break; }
if (ptx->wifiScan_status == false) { ptx->wifiScan_status = true; threadpool_add_job(scan_wifi_in_environment, NULL, "scan_wifi_in_environment"); }
if (tryCnt++ > 5) { return 0; }
HL_APP_LOG_ERR(BLE_MODULE, "file:[%s] does not exist!", AP_SCAN_RESULT_PATH); sleep(1); }
FILE *fp = fopen(AP_SCAN_RESULT_PATH, "r"); if (fp == NULL) { HL_APP_LOG_ERR(BLE_MODULE, "can't open file:[%s]", AP_SCAN_RESULT_PATH); return -1; }
while (fgets(readBuff, sizeof(readBuff), fp) != NULL) { ssid = strtok(readBuff, "\t"); strtok(NULL, "\t"); rssi = strtok(NULL, "\t"); strtok(NULL, "\t"); if (rssi != NULL) { ssid = strtok(NULL, "\t"); ssid[strcspn(ssid, "\r\n")] = '\0';
if ((strlen(ssid) == 0) || strlen(ssid) > SSID_LEN || (strchr(ssid, '\\') != NULL)) continue;
int isDuplicate = 0; for (i = 0; i < resultSize; i++) { if (strcmp(results[i].ssid, ssid) == 0) { isDuplicate = 1; break; } }
if (!isDuplicate) { results[resultSize].rssi = atoi(rssi); strncpy(results[resultSize].ssid, ssid, sizeof(results[resultSize].ssid));
if (resultSize++ >= (maxNum - 1)) { break; } } } }
for (i = 0; i < (resultSize - 1); i++) { count = 0;
for (j = 0; j < (resultSize - 1 - i); j++) { if (results[j].rssi < results[j + 1].rssi) { temp = results[j]; results[j] = results[j + 1]; results[j + 1] = temp; count = 1; } }
if (count == 0) break; }
fclose(fp); return resultSize; }
|