Skip to content

Commit c0da7f6

Browse files
committed
redo network handling
1 parent b4ab213 commit c0da7f6

File tree

4 files changed

+32
-62
lines changed

4 files changed

+32
-62
lines changed

Hologram/Cloud.py

Lines changed: 28 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,8 @@
1010
import logging
1111
from logging import NullHandler
1212
from Hologram.Event import Event
13-
from Hologram.Network import NetworkManager
13+
from Hologram.Network import Network
14+
from Hologram.Exceptions import NetworkError
1415
from Hologram.Authentication import *
1516

1617
__version__ = '0.9.0'
@@ -21,7 +22,7 @@ def __repr__(self):
2122
return type(self).__name__
2223

2324
def __init__(self, credentials, send_host = '', send_port = 0,
24-
receive_host = '', receive_port = 0, network = ''):
25+
receive_host = '', receive_port = 0):
2526

2627
# Logging setup.
2728
self.logger = logging.getLogger(__name__)
@@ -33,25 +34,30 @@ def __init__(self, credentials, send_host = '', send_port = 0,
3334
self.__initialize_host_and_port(send_host, send_port,
3435
receive_host, receive_port)
3536

36-
self.initializeNetwork(network)
37+
self.initializeNetwork()
3738

3839
def __initialize_host_and_port(self, send_host, send_port, receive_host, receive_port):
3940
self.send_host = send_host
4041
self.send_port = send_port
4142
self.receive_host = receive_host
4243
self.receive_port = receive_port
4344

44-
def initializeNetwork(self, network):
45+
def initializeNetwork(self):
4546

4647
self.event = Event()
4748
self.__message_buffer = []
4849

49-
# Network Configuration
50-
self._networkManager = NetworkManager.NetworkManager(self.event, network)
50+
self._network = Network(self.event)
51+
52+
try:
53+
self._network.autodetect_modem()
54+
except NetworkError as e:
55+
self.logger.info("No modem found. Loading drivers and retrying")
56+
self._network.load_modem_drivers()
57+
self._network.autodetect_modem()
5158

5259
# This registers the message buffering feature based on network availability.
53-
self.event.subscribe('network.connected', self.__clear_payload_buffer)
54-
self.event.subscribe('network.disconnected', self._networkManager.networkDisconnected)
60+
self.event.subscribe('cellular.connected', self.__clear_payload_buffer)
5561

5662
# EFFECTS: Adds the given payload to the buffer
5763
def addPayloadToBuffer(self, payload):
@@ -60,7 +66,6 @@ def addPayloadToBuffer(self, payload):
6066
# EFFECTS: Tells the network manager that it is connected and clears all buffered
6167
# messages by sending them to the cloud.
6268
def __clear_payload_buffer(self):
63-
self._networkManager.networkConnected()
6469
for payload in self.__message_buffer:
6570

6671
recv = self.sendMessage(payload)
@@ -138,11 +143,19 @@ def event(self):
138143
def event(self, event):
139144
self._event = event
140145

141-
@property
142-
def network_type(self):
143-
return repr(self._networkManager)
144-
145-
# Returns the network instance itself.
146146
@property
147147
def network(self):
148-
return self._networkManager.network
148+
return self._network
149+
150+
@network.setter
151+
def network(self, network, modem=None):
152+
self.network = network
153+
154+
if modem is not None:
155+
self._network.modem = modem
156+
try:
157+
self._network.autodetect_modem()
158+
except NetworkError as e:
159+
self.logger.info("No modem found. Loading drivers and retrying")
160+
self._network.load_modem_drivers()
161+
self._network.autodetect_modem()

Hologram/CustomCloud.py

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,15 +22,13 @@
2222
class CustomCloud(Cloud):
2323

2424
def __init__(self, credentials, send_host='', send_port=0,
25-
receive_host='', receive_port=0, enable_inbound=False,
26-
network=''):
25+
receive_host='', receive_port=0, enable_inbound=False):
2726

2827
super().__init__(credentials,
2928
send_host=send_host,
3029
send_port=send_port,
3130
receive_host=receive_host,
32-
receive_port=receive_port,
33-
network=network)
31+
receive_port=receive_port)
3432

3533
# Enforce that the send and receive configs are set before using the class.
3634
if enable_inbound and (receive_host == '' or receive_port == 0):

Hologram/HologramCloud.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -59,15 +59,14 @@ class HologramCloud(CustomCloud):
5959
ERR_UNKNOWN: 'Unknown error'
6060
}
6161

62-
def __init__(self, credentials, enable_inbound=False, network='',
62+
def __init__(self, credentials, enable_inbound=False,
6363
authentication_type='totp'):
6464
super().__init__(credentials,
6565
send_host=HOLOGRAM_HOST_SEND,
6666
send_port=HOLOGRAM_PORT_SEND,
6767
receive_host=HOLOGRAM_HOST_RECEIVE,
6868
receive_port=HOLOGRAM_PORT_RECEIVE,
69-
enable_inbound=enable_inbound,
70-
network=network)
69+
enable_inbound=enable_inbound)
7170

7271
self.setAuthenticationType(credentials, authentication_type=authentication_type)
7372

tests/Network/test_NetworkManager.py

Lines changed: 0 additions & 40 deletions
This file was deleted.

0 commit comments

Comments
 (0)