def check_device_listener(force=False): global device_path current_path = nm.get_device_path(modemgr.get_state_device(comstate)) if force or (current_path and current_path != device_path): device_path = current_path set_device_listener(device_path)
def connected_timeout(): log.debug("states: Calling nm.get_active_ssid()") if connection != nm.get_active_ssid(modemgr.get_state_device('CONNECTED')): log.warning("Connection lost on timeout") set_state('HOTSPOT') if modemgr.get_mode() == modemgr.MULTI_MODE: wpa.check_wpa(modemgr.get_ap_device().Interface)
def connecting_start(): global conn_list mdns.clear_entries() if conn_list: nm.disconnect(modemgr.get_state_device('CONNECTING')) conn = conn_list.pop(0) log.info('Attempting connection to %s' % conn) activate_connection(conn, 'CONNECTING') else: # Give NetworkManager a chance to update the access point list try: # todo - clean this up nm.deactivate_connection(modemgr.get_state_device('CONNECTING')) except DBusException: pass time.sleep(5) set_state('HOTSPOT')
def hotspot_pass(): log.debug("Activating mdns") # IP tolerance for PI 2 for _ in range(5): ip = nm.get_active_ip(modemgr.get_state_device('HOTSPOT')) if ip: mdns.clear_entries() mdns.add_hosts(dns_names) break time.sleep(1)
def set_state(state, connections=None, timeout=180): global com_state, conn_list, state_id, points log.info('Setting state to %s' % state) if com_state != 'HOTSPOT': log.debug("states: Calling nm.get_points_ext()") points = nm.get_points_ext(modemgr.get_state_device(com_state)) state_info = state_matrix(state) nmmon.enable(modemgr.get_state_device(state), state_info.pass_fn, state_info.fail_fn) if connections: conn_list = connections state_id += 1 com_state = state timeout_add(timeout * 1000, state_info.timeout_fn, state_id) state_info.start_fn()
def activate_connection(name, state): global connection connection = name log.debug('Connecting to %s' % connection) try: path = [x['nmpath'] for x in points if x['ssid'] == name][0] except IndexError: path = '/' nm.activate_connection_by_ssid(connection, modemgr.get_state_device(state), path=path)
def connected_start(): global conn_list # IP tolerance for PI 2 for _ in range(5): ip = nm.get_active_ip(modemgr.get_state_device('CONNECTED')) if ip: mdns.clear_entries() mdns.add_hosts(dns_names) break time.sleep(1) conn_list = []
def hotspot_timeout(): if iwscan.ap_conn_count() == 0 or modemgr.get_mode() != 'single': log.debug('Periodic connection attempt') dev = modemgr.get_state_device('CONNECTED') conn_list = candidate_connections(dev) if conn_list: # bug - try the first connection twice set_state('CONNECTING', [conn_list[0], conn_list[0]] + conn_list) else: set_state('CONNECTING') else: log.info('AP active - skipping CONNECTING scan')
def connecting_start(): global conn_list mdns.clear_entries() if conn_list: log.debug("states: Calling nm.disconnect()") nm.disconnect(modemgr.get_state_device('CONNECTING')) conn = conn_list.pop(0) log.info('Attempting connection to %s' % conn) activate_connection(conn, 'CONNECTING') else: set_state('HOTSPOT')
def hotspot_timeout(): if iwscan.ap_conn_count() == 0 or modemgr.get_mode() != 'single': log.debug('Periodic connection attempt') dev = modemgr.get_state_device('CONNECTED') conn_list = candidate_connections(dev) if conn_list: set_state('CONNECTING', conn_list) else: log.info('No candidates - skipping CONNECTING scan') else: log.info('AP active - skipping CONNECTING scan') wpa.check_wpa(modemgr.get_ap_device().Interface)
def hotspot_start(): global conn_list log.info("Activating hotspot") hs_ssid = dns_to_conn(dns_names[0]) log.debug("states: Calling nm.get_active_ssid()") if hs_ssid != nm.get_active_ssid(modemgr.get_state_device('HOTSPOT')): mdns.clear_entries() conn_list = [] activate_connection(hs_ssid, 'HOTSPOT') else: log.debug("Didn't need to reactivate - already running") # the connect callback won't happen - let's 'pass' manually timeout_add(100, fake_hs_pass)
def hotspot_start(): global conn_list log.info("Activating hotspot") hs_ssid = dns_to_conn(dns_names[0]) # if we are in two-wifi device mode, skip the reconnect if possible, # to avoid kicking some clients off if hs_ssid != nm.get_active_ssid(modemgr.get_state_device('HOTSPOT')): mdns.clear_entries() conn_list = [] # tolerate Raspberry Pi 2 try: activate_connection(hs_ssid, 'HOTSPOT') except DBusException: log.warn("Error connecting hotspot") else: log.debug("Didn't need to reactivate - already running") # the connect callback won't happen - let's 'pass' manually timeout_add(100, fake_hs_pass)
def connected_timeout(): if connection != nm.get_active_ssid(modemgr.get_state_device('CONNECTED')): log.warn("Connection lost on timeout") set_state('HOTSPOT')