1010import logging
1111from logging import NullHandler
1212from Hologram .Event import Event
13- from Hologram .Network import NetworkManager
13+ from Hologram .Network import Network
14+ from Hologram .Exceptions import NetworkError
1415from 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 ()
0 commit comments