import network
import time

# connect to local wifi network
sta_if = network.WLAN(network.STA_IF)
ap_if = network.WLAN(network.AP_IF)
sta_if.active(True)
networks = sta_if.scan()
print("networks found: {}".format(networks))
ap_found = False

# TODO: edit these lines
network_name = '<SSID>'	# existing wifi network to connect to (leave empty if unused)
password = '<PW>'	# password for the network
desired_ip = '192.168.1.101'	# the robot will be reachable by this IP in the network
subnet = '255.255.255.0'
gateway = '192.168.1.1'
dns = '192.168.1.1'
# TODO end edit

for n in networks:
    if network_name == n[0].decode():
        print("existing network found: {}".format(n[0]))
        print("connecting to the network ...")
        # set static ip
        sta_if.ifconfig((desired_ip, subnet, gateway, dns))
        sta_if.connect(network_name, password)
        my_ip = sta_if.ifconfig()
        print("my_ip[0] = {}".format(my_ip[0]))
        if my_ip[0] == desired_ip:
            ap_found = True
            ap_if.active(False)
            print("disabling access point interface")
    elif 'MicroPython' in n[0].decode(): # alternatively, connect to MicroPython network
	print("existing network found: {}".format(n[0]))
        print("connecting to the network ...")
        # set static ip
        sta_if.ifconfig((desired_ip, subnet, gateway, dns))
        sta_if.connect(n[0].decode(), 'micropythoN')
        my_ip = sta_if.ifconfig()
        print("my_ip[0] = {}".format(my_ip[0]))
        if my_ip[0] == desired_ip:
            ap_found = True
            ap_if.active(False)
            print("disabling access point interface")
if not ap_found:
    print("could not connect to network, becoming an access point instead")
    sta_if.active(False)
    ap_if.active(True)
    ap_if.ifconfig((desired_ip, subnet, gateway, dns))
    my_ip = ap_if.ifconfig()
    print("disabling station interface")
print("my_ip = {}".format(my_ip))

# start terminal over wifi
time.sleep(5)  # wait for wifi to connect
import webrepl
webrepl.start()
