diff --git a/.cproject b/.cproject
index bbb069c..ee5b854 100644
--- a/.cproject
+++ b/.cproject
@@ -141,7 +141,8 @@
 						</toolChain>
 					</folderInfo>
 					<sourceEntries>
-						<entry excluding="RTL00_SDKV35a/project|project/realtek_ameba1_va0_example/disasm_to_c_boot|component/soc/realtek/8195a/misc/gcc_utility|component/os/freertos/freertos_v9.0.0/Source/portable/MemMang/heap_1.c|component/os/freertos/freertos_v8.1.2/Source/portable/GCC/ARM_CM4F|doc|project/realtek_ameba1_va0_example/example_sources|build|project/realtek_ameba1_va0_example/GCC-RELEASE|component/common/network/lwip/lwip_v1.5.0.beta|component/os/freertos/freertos_v8.1.2/Source/portable/MemMang/heap_4.c|component1|component/common/network/lwip/lwip_v1.3.2|flasher|component/os/freertos/freertos_v8.1.2/Source/portable/IAR|component/os/freertos/freertos_v8.1.2/Source/portable/GCC/ARM_CM3_MPU|component/common/network/lwip/lwip_v1.4.1/port/stm32f2x7|component/os/freertos/freertos_v8.1.2/Demo|component/os/freertos/freertos_v8.1.2/Source/portable/RVDS|component/soc/realtek/8195a/misc/iar_utility|component/os/freertos/freertos_v8.1.2/Source/portable/MemMang/heap_3.c|tools|component/common/network/ssl/polarssl-1.3.8/ssl_self_test.c|component/os/freertos/freertos_v8.1.2/Source/portable/MemMang/heap_2.c" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name=""/>
+						<entry excluding="project/src/adc|adc|component/soc/realtek/8195a/misc/gcc_utility|doc|component/os/freertos/freertos_v8.1.2/Source/portable/GCC/ARM_CM4F|project/realtek_ameba1_va0_example/example_sources|build|project/realtek_ameba1_va0_example/GCC-RELEASE|component/common/network/lwip/lwip_v1.5.0.beta|component/os/freertos/freertos_v8.1.2/Source/portable/MemMang/heap_4.c|component1|component/common/network/lwip/lwip_v1.3.2|flasher|component/os/freertos/freertos_v8.1.2/Source/portable/IAR|component/os/freertos/freertos_v9.0.0/Source/portable/MemMang/heap_1.c|component/os/freertos/freertos_v8.1.2/Source/portable/GCC/ARM_CM3_MPU|component/common/network/lwip/lwip_v1.4.1/port/stm32f2x7|component/os/freertos/freertos_v8.1.2/Demo|component/os/freertos/freertos_v8.1.2/Source/portable/RVDS|component/soc/realtek/8195a/misc/iar_utility|component/os/freertos/freertos_v8.1.2/Source/portable/MemMang/heap_3.c|RTL00_SDKV35a/project|tools|component/common/network/ssl/polarssl-1.3.8/ssl_self_test.c|component/os/freertos/freertos_v8.1.2/Source/portable/MemMang/heap_2.c|project/realtek_ameba1_va0_example/disasm_to_c_boot" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name=""/>
+						<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="project/src/adc"/>
 					</sourceEntries>
 				</configuration>
 			</storageModule>
@@ -256,7 +257,7 @@
 									<listOptionValue builtIn="false" value="M3"/>
 									<listOptionValue builtIn="false" value="F_CPU=166666666L"/>
 								</option>
-								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.include.paths.1191413676" name="Include paths (-I)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.include.paths" useByScannerDiscovery="false" valueType="includePath"/>
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.include.paths.1191413676" name="Include paths (-I)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.include.paths" useByScannerDiscovery="false"/>
 								<inputType id="ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler.input.1929075018" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler.input"/>
 							</tool>
 							<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.compiler.1154716753" name="Cross ARM C++ Compiler" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.compiler">
@@ -267,7 +268,7 @@
 									<listOptionValue builtIn="false" value="M3"/>
 									<listOptionValue builtIn="false" value="F_CPU=166666666L"/>
 								</option>
-								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.compiler.include.paths.1414265452" name="Include paths (-I)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.compiler.include.paths" useByScannerDiscovery="false" valueType="includePath"/>
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.compiler.include.paths.1414265452" name="Include paths (-I)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.compiler.include.paths" useByScannerDiscovery="false"/>
 								<inputType id="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.compiler.input.188668818" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.compiler.input"/>
 							</tool>
 							<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.c.linker.1097868112" name="Cross ARM C Linker" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.c.linker">
@@ -387,8 +388,9 @@
 						</toolChain>
 					</folderInfo>
 					<sourceEntries>
-						<entry excluding="RTL00_SDKV35a|${ProjSDK}|project/realtek_ameba1_va0_example/disasm_to_c_boot|component/soc/realtek/8195a/misc/gcc_utility|component/os/freertos/freertos_v9.0.0/Source/portable/MemMang/heap_1.c|component/os/freertos/freertos_v8.1.2/Source/portable/GCC/ARM_CM4F|doc|project/realtek_ameba1_va0_example/example_sources|build|project/realtek_ameba1_va0_example/GCC-RELEASE|component/common/network/lwip/lwip_v1.5.0.beta|component/os/freertos/freertos_v8.1.2/Source/portable/MemMang/heap_4.c|component1|component/common/network/lwip/lwip_v1.3.2|flasher|component/os/freertos/freertos_v8.1.2/Source/portable/IAR|component/os/freertos/freertos_v8.1.2/Source/portable/GCC/ARM_CM3_MPU|component/common/network/lwip/lwip_v1.4.1/port/stm32f2x7|component/os/freertos/freertos_v8.1.2/Demo|component/os/freertos/freertos_v8.1.2/Source/portable/RVDS|component/soc/realtek/8195a/misc/iar_utility|component/os/freertos/freertos_v8.1.2/Source/portable/MemMang/heap_3.c|tools|component/common/network/ssl/polarssl-1.3.8/ssl_self_test.c|component/os/freertos/freertos_v8.1.2/Source/portable/MemMang/heap_2.c" flags="VALUE_WORKSPACE_PATH" kind="sourcePath" name=""/>
-						<entry excluding=".git/|.settings/|AutoMake/|build/|flasher/|LibAutoMake/|project/" flags="VALUE_WORKSPACE_PATH" kind="sourcePath" name="RTL00_SDKV35a"/>
+						<entry excluding="project/src/adc|${ProjSDK}|adc|component/soc/realtek/8195a/misc/gcc_utility|doc|component/os/freertos/freertos_v8.1.2/Source/portable/GCC/ARM_CM4F|project/realtek_ameba1_va0_example/example_sources|build|project/realtek_ameba1_va0_example/GCC-RELEASE|component/common/network/lwip/lwip_v1.5.0.beta|component/os/freertos/freertos_v8.1.2/Source/portable/MemMang/heap_4.c|component1|component/common/network/lwip/lwip_v1.3.2|flasher|component/os/freertos/freertos_v8.1.2/Source/portable/IAR|component/os/freertos/freertos_v9.0.0/Source/portable/MemMang/heap_1.c|component/os/freertos/freertos_v8.1.2/Source/portable/GCC/ARM_CM3_MPU|component/common/network/lwip/lwip_v1.4.1/port/stm32f2x7|component/os/freertos/freertos_v8.1.2/Demo|component/os/freertos/freertos_v8.1.2/Source/portable/RVDS|component/soc/realtek/8195a/misc/iar_utility|component/os/freertos/freertos_v8.1.2/Source/portable/MemMang/heap_3.c|tools|component/common/network/ssl/polarssl-1.3.8/ssl_self_test.c|component/os/freertos/freertos_v8.1.2/Source/portable/MemMang/heap_2.c|project/realtek_ameba1_va0_example/disasm_to_c_boot|RTL00_SDKV35a" flags="VALUE_WORKSPACE_PATH" kind="sourcePath" name=""/>
+						<entry excluding="AutoMake/|LibAutoMake/|project/|.git/|.settings/|build/|flasher/" flags="VALUE_WORKSPACE_PATH" kind="sourcePath" name="RTL00_SDKV35a"/>
+						<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="project/src/adc"/>
 					</sourceEntries>
 				</configuration>
 			</storageModule>
@@ -494,7 +496,7 @@
 								<inputType id="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler.input.1712176846" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler.input"/>
 							</tool>
 							<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler.119146776" name="Cross ARM C Compiler" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler">
-								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.include.paths.2057322667" name="Include paths (-I)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.include.paths" useByScannerDiscovery="false" valueType="includePath"/>
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.include.paths.2057322667" name="Include paths (-I)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.include.paths" useByScannerDiscovery="false"/>
 								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.defs.871229625" name="Defined symbols (-D)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.defs" useByScannerDiscovery="false" valueType="definedSymbols">
 									<listOptionValue builtIn="false" value="CONFIG_PLATFORM_8195A"/>
 									<listOptionValue builtIn="false" value="GCC_ARMCM3"/>
@@ -508,7 +510,7 @@
 								<inputType id="ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler.input.1036286501" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler.input"/>
 							</tool>
 							<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.compiler.1725581254" name="Cross ARM C++ Compiler" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.compiler">
-								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.compiler.include.paths.622689061" name="Include paths (-I)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.compiler.include.paths" useByScannerDiscovery="false" valueType="includePath"/>
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.compiler.include.paths.622689061" name="Include paths (-I)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.compiler.include.paths" useByScannerDiscovery="false"/>
 								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.compiler.defs.1034580488" name="Defined symbols (-D)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.compiler.defs" useByScannerDiscovery="false" valueType="definedSymbols">
 									<listOptionValue builtIn="false" value="CONFIG_PLATFORM_8195A"/>
 									<listOptionValue builtIn="false" value="GCC_ARMCM3"/>
@@ -568,7 +570,8 @@
 						</toolChain>
 					</folderInfo>
 					<sourceEntries>
-						<entry excluding="RTL00_SDKV35a/project|project/realtek_ameba1_va0_example/disasm_to_c_boot|component/soc/realtek/8195a/misc/gcc_utility|component/os/freertos/freertos_v9.0.0/Source/portable/MemMang/heap_1.c|component/os/freertos/freertos_v8.1.2/Source/portable/GCC/ARM_CM4F|doc|project/realtek_ameba1_va0_example/example_sources|build|project/realtek_ameba1_va0_example/GCC-RELEASE|component/common/network/lwip/lwip_v1.5.0.beta|component/os/freertos/freertos_v8.1.2/Source/portable/MemMang/heap_4.c|component1|component/common/network/lwip/lwip_v1.3.2|flasher|component/os/freertos/freertos_v8.1.2/Source/portable/IAR|component/os/freertos/freertos_v8.1.2/Source/portable/GCC/ARM_CM3_MPU|component/common/network/lwip/lwip_v1.4.1/port/stm32f2x7|component/os/freertos/freertos_v8.1.2/Demo|component/os/freertos/freertos_v8.1.2/Source/portable/RVDS|component/soc/realtek/8195a/misc/iar_utility|component/os/freertos/freertos_v8.1.2/Source/portable/MemMang/heap_3.c|tools|component/common/network/ssl/polarssl-1.3.8/ssl_self_test.c|component/os/freertos/freertos_v8.1.2/Source/portable/MemMang/heap_2.c" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name=""/>
+						<entry excluding="project/src/adc|adc|component/soc/realtek/8195a/misc/gcc_utility|doc|component/os/freertos/freertos_v8.1.2/Source/portable/GCC/ARM_CM4F|project/realtek_ameba1_va0_example/example_sources|build|project/realtek_ameba1_va0_example/GCC-RELEASE|component/common/network/lwip/lwip_v1.5.0.beta|component/os/freertos/freertos_v8.1.2/Source/portable/MemMang/heap_4.c|component1|component/common/network/lwip/lwip_v1.3.2|flasher|component/os/freertos/freertos_v8.1.2/Source/portable/IAR|component/os/freertos/freertos_v9.0.0/Source/portable/MemMang/heap_1.c|component/os/freertos/freertos_v8.1.2/Source/portable/GCC/ARM_CM3_MPU|component/common/network/lwip/lwip_v1.4.1/port/stm32f2x7|component/os/freertos/freertos_v8.1.2/Demo|component/os/freertos/freertos_v8.1.2/Source/portable/RVDS|component/soc/realtek/8195a/misc/iar_utility|component/os/freertos/freertos_v8.1.2/Source/portable/MemMang/heap_3.c|RTL00_SDKV35a/project|tools|component/common/network/ssl/polarssl-1.3.8/ssl_self_test.c|component/os/freertos/freertos_v8.1.2/Source/portable/MemMang/heap_2.c|project/realtek_ameba1_va0_example/disasm_to_c_boot" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name=""/>
+						<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="project/src/adc"/>
 					</sourceEntries>
 				</configuration>
 			</storageModule>
diff --git a/flasher/gdb_wrfile.jlink b/flasher/gdb_wrfile.jlink
new file mode 100644
index 0000000..0ecee30
--- /dev/null
+++ b/flasher/gdb_wrfile.jlink
@@ -0,0 +1,162 @@
+###############
+# FlasherInit #
+###############
+define FlasherInit
+set $rtl8710_flasher_capacity = 0
+set $rtl8710_flasher_auto_erase = 1
+set $rtl8710_flasher_auto_verify = 1
+set $rtl8710_flasher_firmware_ptr = 0x10001000
+set $rtl8710_flasher_buffer = 0x10008000
+set $rtl8710_flasher_buffer_size = 421888
+set $rtl8710_flasher_sector_size = 4096
+set $rtl8710_flasher_auto_erase_sector = 0xFFFFFFFF
+end
+###############
+# FlasherWait #
+###############
+define FlasherWait
+set $fresult = {int}($rtl8710_flasher_buffer)
+while ($fresult != 0)
+set $fresult = {int}($rtl8710_flasher_buffer)
+end
+end
+###############
+# FlasherLoad #
+###############
+define FlasherLoad
+if $rtl8710_flasher_capacity == 0
+ printf "initializing RTL8710 flasher\n"
+ restore $arg0 binary $rtl8710_flasher_firmware_ptr 0 968
+ monitor reset
+ set $pc = $rtl8710_flasher_firmware_ptr
+ set $sp = 0x1ffffffc
+ set {int}($rtl8710_flasher_buffer + 0x08) = 0
+ set {int}($rtl8710_flasher_buffer + 0x00) = 1
+ #continue
+ monitor go
+ FlasherWait
+ set $id = {int}($rtl8710_flasher_buffer + 0x0C)
+ set $rtl8710_flasher_capacity = 1 << (($id >> 16) & 0x0ff)
+ if ($id == 0x1420c2) 
+  printf "Flash ID = 0x%08x : MX25L8006E (%d kbytes)\n", $id, $rtl8710_flasher_capacity>>10
+ else 
+  printf "Flash ID = 0x%08x : (%d kbytes)\n", $id, $rtl8710_flasher_capacity>>10
+ end
+ printf "RTL8710 flasher initialized\n"
+else
+printf "reinitializing RTL8710 flasher\n"
+end
+end
+##################
+# FlasherWrBlock #
+##################
+define FlasherWrBlock
+#printf "FlashWrBlock 0x%08x, 0x%08x\n", $arg0, $arg1 
+set {int}($rtl8710_flasher_buffer + 0x04) = 4
+set {int}($rtl8710_flasher_buffer + 0x08) = 0
+set {int}($rtl8710_flasher_buffer + 0x10) = $arg0
+set {int}($rtl8710_flasher_buffer + 0x14) = $arg1
+set {int}($rtl8710_flasher_buffer + 0x00) = 1
+FlasherWait
+set $status = {int}($rtl8710_flasher_buffer + 0x08)
+if $status > 0
+ error "write error, offset 0x%08x", $arg0
+end
+end
+##################
+# FlasherVrBlock #
+##################
+define FlasherVrBlock
+#printf "FlashVrBlock 0x%08x, 0x%08x\n", $arg0, $arg1 
+set {int}($rtl8710_flasher_buffer + 0x04) = 5
+set {int}($rtl8710_flasher_buffer + 0x08) = 0
+set {int}($rtl8710_flasher_buffer + 0x10) = $arg0
+set {int}($rtl8710_flasher_buffer + 0x14) = $arg1
+set {int}($rtl8710_flasher_buffer + 0x00) = 1
+FlasherWait
+set $status = {int}($rtl8710_flasher_buffer + 0x08)
+if $status > 0
+ set $status = {int}($rtl8710_flasher_buffer + 0x0C)
+ set $status = {int}($status + $arg0)
+ error "verify error, offset 0x%08x", $status
+end
+end
+#################
+# FlashSecErase #
+#################
+define FlashSecErase
+#printf "FlashSecErase 0x%08x, 0x%08x\n", $rtl8710_flasher_buffer, $arg0
+set {int}($rtl8710_flasher_buffer + 0x04) = 2
+set {int}($rtl8710_flasher_buffer + 0x08) = 0
+set {int}($rtl8710_flasher_buffer + 0x10) = $arg0
+set {int}($rtl8710_flasher_buffer + 0x00) = 1
+FlasherWait
+end
+################
+# FlasherWrite #
+################
+define FlasherWrite
+set $sector = 0
+set $offset = 0
+set $size = $arg2
+while $offset < $size
+ set $len = $size - $offset
+ if $len > $rtl8710_flasher_buffer_size
+  set $len = $rtl8710_flasher_buffer_size
+ end
+ set $flash_offset = $arg1 + $offset
+ printf "write offset 0x%08x\n", $flash_offset
+ set $parms1 = $rtl8710_flasher_buffer + 0x20 - $offset
+ set $parms2 = $offset
+ set $parms3 = $offset + $len
+ restore $arg0 binary $parms1 $parms2 $parms3
+ if $rtl8710_flasher_auto_erase != 0
+  set $count_i = $flash_offset
+  while $count_i < ($flash_offset + $len)
+   set $sector = $count_i/$rtl8710_flasher_sector_size
+   if $rtl8710_flasher_auto_erase_sector != $sector
+	set $parms1 = $sector * $rtl8710_flasher_sector_size
+    printf "erase sector %d at 0x%08x\n", $sector, $parms1 
+    FlashSecErase $parms1
+    set $rtl8710_flasher_auto_erase_sector = $sector
+   end
+   set $count_i = $count_i + 1
+  end
+ end
+ FlasherWrBlock $flash_offset $len
+ printf "wrote %d bytes at 0x%08x\n", $len, $flash_offset
+ if $rtl8710_flasher_auto_verify != 0
+  printf "verify offset 0x%08x len %d\n", $flash_offset, $len
+  FlasherVrBlock $flash_offset $len
+ end
+ set $offset = $offset + $rtl8710_flasher_buffer_size
+end
+end
+#########################################
+source -v flasher/gdb_flasher.jlink
+
+source -v flasher/file_info.jlink
+
+InitJlink
+SystemInit
+SetClk166MHz
+SPI_Init
+FlasherInit
+FlasherLoad flasher/rtl8710_flasher.bin
+call1
+if $ImageSize != 0
+set $ImageEnd = $ImageSize + $ImageAddr + 0x4000
+if $rtl8710_flasher_capacity >= $ImageEnd
+ printf "Write Image size %d to Flash addr 0x%08x:\n", $ImageSize, $ImageAddr
+ call2
+else
+ printf "Error: Image size is too big!\n"
+end
+else
+ printf "Error: Image size is zero!\n"
+end
+FlashImagesInfo
+monitor reset
+SetBootFlash
+monitor go
+quit
diff --git a/project/src/web/web_int_vars.c b/project/src/web/web_int_vars.c
index 4c38cf7..2d0489c 100644
--- a/project/src/web/web_int_vars.c
+++ b/project/src/web/web_int_vars.c
@@ -197,6 +197,8 @@ void ICACHE_FLASH_ATTR web_int_vars(TCP_SERV_CONN *ts_conn, uint8 *pcmd, uint8 *
       else ifcmp("txpow") 	wifi_cfg.tx_pwr = val;
       else ifcmp("adpt")  	wifi_cfg.adaptivity = val;
       else ifcmp("country") wifi_cfg.country_code = val;
+      // .. mac wifi_set_mac_address()
+
 //      else ifcmp("scan") {
 //    	  web_conn->web_disc_par = val;
 //    	  web_conn->web_disc_cb = (web_func_disc_cb)wifi_start_scan;