void ICACHE_FLASH_ATTR wifi_scan_get_result(char *response) { if (wifi_scan_in_progress) { webserver_set_status(0); return; } if (wifi_scan_ap_count == 0 || wifi_scan_result == NULL) { if (wifi_scan_start()) { webserver_set_status(0); return; } webserver_set_status(200); json_error(response, ESP8266, "Can not start scan", NULL); return; } webserver_set_status(200); char result[WEBSERVER_MAX_VALUE*wifi_scan_ap_count]; os_memset(result, '\0', sizeof(result)); uint8 i=0; for (i=0; i<wifi_scan_ap_count; i++) { os_sprintf( result + os_strlen(result), "%s{\"SSID\" : \"%s\", \"Strength\" : %d, \"Mode\" : \"%s\"}", i > 0 ? ", " : "", wifi_scan_result[i]->ssid, wifi_scan_result[i]->rssi, wifi_auth_mode_str(wifi_scan_result[i]->authmode) ); } char data_str[WEBSERVER_MAX_VALUE*wifi_scan_ap_count]; json_data( response, ESP8266, OK_STR, json_sprintf( data_str, "\"WiFi\" : [%s]", result ), NULL ); }
void ICACHE_FLASH_ATTR button_handler( struct espconn *pConnection, request_method method, char *url, char *data, uint16 data_len, uint32 content_len, char *response, uint16 response_len ) { webserver_set_status(0); }
void ICACHE_FLASH_ATTR finger_handler( struct espconn *pConnection, request_method method, char *url, char *data, uint16 data_len, uint32 content_len, char *response, uint16 response_len ) { if (device_get_uart() != UART_FINGER) { json_error(response, MOD_FINGER, DEVICE_NOT_FOUND, NULL); return; } struct jsonparse_state parser; int type, delete_len; uint16 delete_id; if (method == POST && data != NULL && data_len != 0) { jsonparse_setup(&parser, data, data_len); while ((type = jsonparse_next(&parser)) != 0) { if (type == JSON_TYPE_PAIR_NAME) { if (jsonparse_strcmp_value(&parser, "Address") == 0) { jsonparse_next(&parser); jsonparse_next(&parser); char *convert_err = NULL; char address_str[20]; jsonparse_copy_value(&parser, address_str, 20); uint32 address = strtoul(address_str, &convert_err, 16); if (*convert_err == '\0' && address != finger_address()) { finger_set_address(address, finger_default); } } else if (jsonparse_strcmp_value(&parser, "SecurityLevel") == 0) { jsonparse_next(&parser); jsonparse_next(&parser); uint8 security_level = jsonparse_get_value_as_int(&parser); if (security_level != finger_security_level()) { finger_set_security_lefel(security_level, finger_default); } } else if (jsonparse_strcmp_value(&parser, "Mode") == 0) { jsonparse_next(&parser); jsonparse_next(&parser); if (jsonparse_strcmp_value(&parser, "Read") == 0) { finger_current_mode = FINGER_READ; } else if (jsonparse_strcmp_value(&parser, "New") == 0) { finger_current_mode = FINGER_NEW; } else if (jsonparse_strcmp_value(&parser, "Delete") == 0) { finger_current_mode = FINGER_DELETE; } else if (jsonparse_strcmp_value(&parser, "Empty DB") == 0) { finger_current_mode = FINGER_EMPTY_DB; } } else if (jsonparse_strcmp_value(&parser, "DeleteID") == 0) { jsonparse_next(&parser); jsonparse_next(&parser); delete_id = jsonparse_get_value_as_int(&parser); delete_len = jsonparse_get_len(&parser); } } } if (finger_current_mode == FINGER_DELETE && delete_len > 0) { finger_current_mode = FINGER_READ; finger_remove(delete_id, NULL); #if FINGER_DEBUG debug("FINGER: Delete ID: %d\n", delete_id); #endif } if (finger_current_mode == FINGER_EMPTY_DB) { finger_current_mode = FINGER_READ; finger_empty_db(NULL); #if FINGER_DEBUG debug("FINGER: Empty DB\n"); #endif } } webserver_set_status(0); finger_frech_params(); finger_start_read(); }