11import base64
22import os
3+ import sys
34import tempfile
45import logging
56
@@ -26,8 +27,13 @@ def __init__(self, version, queue):
2627
2728 self .version = version
2829 self .queue = queue
30+ self .appdir = os .path .dirname (sys .argv [0 ])
31+ self .logger .debug ("Application started from: %s" , self .appdir )
32+
2933 queue .put ((10 , 'INFO' , 'Server started' ))
3034
35+ propellerLoad = PropellerLoad ()
36+
3137 @cherrypy .expose ()
3238 @cherrypy .tools .json_out ()
3339 @cherrypy .tools .allow (methods = ['GET' ])
@@ -57,13 +63,13 @@ def ports(self):
5763 for port in ports :
5864 self .logger .debug ('Port %s discovered.' , port )
5965 if ' bt ' not in port .lower () and 'bluetooth' not in port .lower ():
60- self .logger .debug ('Port %2 appended to list.' , port )
6166 filtered_ports .append (port )
67+ self .logger .debug ("Port %2 appended to list." , port )
6268 return filtered_ports
6369 else :
6470 # No useable ports detected. Need to determine how the browser
6571 # handles an empty list of available ports.
66- self .logger .debug (' No ports detected. Replying with /dev/null' )
72+ self .logger .debug (" No ports detected. Replying with /dev/null" )
6773 return '/dev/null'
6874
6975
@@ -72,20 +78,27 @@ def ports(self):
7278 @cherrypy .tools .allow (methods = ['POST' ])
7379 def load (self , action , binary , extension , comport = None ):
7480 if action is None :
75- logger = logging .getLogger ('blockly.server' )
76- logger .error ('Load action is undefined.' )
81+ self .logger .error ('Load action is undefined.' )
82+ return {
83+ 'message' : 'Load action is undefined' ,
84+ 'success' : False
85+ }
7786
7887 cherrypy .response .headers ['Access-Control-Allow-Origin' ] = '*'
7988
8089 self .logger .debug ('Writing program payload to temp file.' )
90+
8191 binary_file = tempfile .NamedTemporaryFile (suffix = extension , delete = False )
8292 binary_file .write (base64 .b64decode (binary ))
8393 binary_file .close ()
94+
8495 self .logger .debug ('%s saved.' , binary_file .name )
8596
8697 self .logger .debug ('Loading program to device.' )
98+
8799 (success , out , err ) = self .propellerLoad .load (action , binary_file , comport )
88100 self .queue .put ((10 , 'INFO' , 'Application loaded (%s)' % action ))
101+
89102 self .logger .info ('Application load complete.' )
90103
91104 os .remove (binary_file .name )
@@ -102,8 +115,6 @@ def serial_socket(self):
102115 self .queue .put ((10 , 'INFO' , 'Serial socket set up' ))
103116 handler = cherrypy .request .ws_handler
104117
105- propellerLoad = PropellerLoad ()
106-
107118
108119def main (port , version , queue ):
109120 module_logger .info ("Server starting" )
0 commit comments