1
1
"""
2
+ API methods implementation
3
+ This file contains every method called by the API defined in v2.yml
2
4
"""
3
5
4
6
from flask import jsonify
22
24
)
23
25
24
26
def get_serial ():
25
- # Extract serial from cpuinfo file
27
+ """
28
+ Extract serial from cpuinfo file
29
+ """
26
30
cpuserial = "0000000000000000"
27
31
try :
28
32
f = open ('/proc/cpuinfo' ,'r' )
@@ -37,6 +41,11 @@ def get_serial():
37
41
38
42
@cached (cache = TTLCache (maxsize = 1 , ttl = 10 ))
39
43
def get_status ():
44
+ """
45
+ Expose CoderBot status:
46
+ temperature, uptime, and internet connectivity status.
47
+ (Cached method)
48
+ """
40
49
try :
41
50
temp = os .popen ("vcgencmd measure_temp" ).readline ().replace ("temp=" ,"" )
42
51
except :
@@ -50,8 +59,12 @@ def get_status():
50
59
51
60
@cached (cache = TTLCache (maxsize = 1 , ttl = 60 ))
52
61
def get_info ():
53
- # [:-2] strips out '\n' (cat)
62
+ """
63
+ Expose informations about the CoderBot system.
64
+ (Cached method)
65
+ """
54
66
try :
67
+ # manifest.json is generated while building/copying the backend
55
68
with open ('manifest.json' , 'r' ) as f :
56
69
metadata = json .load (f )
57
70
backend_commit = metadata ["backendCommit" ][0 :7 ]
@@ -81,27 +94,34 @@ def get_info():
81
94
prog = None
82
95
prog_engine = ProgramEngine .get_instance ()
83
96
97
+ # Programs and Activities databases
84
98
programs = TinyDB ("data/programs.json" )
85
99
activities = TinyDB ("data/activities.json" )
86
100
87
101
query = Query ()
88
102
103
+ ## Robot control
104
+
89
105
def stop ():
90
106
bot .stop ()
91
107
return 200
92
108
93
-
94
109
def move (data ):
95
110
print (data )
96
111
bot .move (speed = data ["speed" ], elapse = data ["elapse" ])
97
112
return 200
98
113
99
-
100
114
def turn (data ):
101
115
print (data )
102
116
bot .turn (speed = data ["speed" ], elapse = data ["elapse" ])
103
117
return 200
104
118
119
+ def exec (data ):
120
+ prog = prog_engine .create (data ["name" ], data ["code" ])
121
+ return json .dumps (prog .execute ())
122
+
123
+ ## System
124
+
105
125
def status ():
106
126
status = get_status ()
107
127
@@ -123,21 +143,22 @@ def info():
123
143
"serial" : info ["serial" ]
124
144
}
125
145
126
-
127
- def exec (data ):
128
- prog = prog_engine .create (data ["name" ], data ["code" ])
129
- return json .dumps (prog .execute ())
130
-
131
-
132
146
def restoreSettings ():
133
147
with open ("data/defaults/config.json" ) as f :
134
148
Config .write (json .loads (f .read ()))
135
149
bot_config = Config .get ()
136
150
return "ok"
137
151
152
+ def updateFromPackage ():
153
+ os .system ('sudo bash /home/pi/clean-update.sh' )
154
+ file_to_upload = connexion .request .files ['file_to_upload' ]
155
+ file_to_upload .save (os .path .join ('/home/pi/' , 'update.tar' ))
156
+ os .system ('sudo coderbot_update /home/pi/update.tar && sudo reboot' )
157
+ return 200
158
+
138
159
139
- ## Programs
140
160
161
+ ## Programs
141
162
142
163
def saveProgram (data , overwrite ):
143
164
print (overwrite )
@@ -156,11 +177,9 @@ def saveProgram(data, overwrite):
156
177
else :
157
178
return "askOverwrite"
158
179
159
-
160
180
def loadProgram (name ):
161
181
return programs .search (query .name == name )[0 ], 200
162
182
163
-
164
183
def deleteProgram (data ):
165
184
programs .remove (query .name == data ["name" ])
166
185
@@ -180,30 +199,23 @@ def saveActivity(data):
180
199
activities .update (data , query .name == data ["name" ])
181
200
return 200
182
201
183
-
184
202
def loadActivity (name ):
185
203
return activities .search (query .name == name )[0 ], 200
186
204
187
-
188
205
def deleteActivity (data ):
189
206
activities .remove (query .name == data ["name" ])
190
207
191
208
192
209
def listActivities ():
193
210
return activities .all ()
194
211
195
- # Delete everything but the defaults programs
196
212
def resetDefaultPrograms ():
213
+ """
214
+ Delete everything but the default programs
215
+ """
197
216
programs .purge ()
198
217
for filename in os .listdir ("data/defaults/programs/" ):
199
218
if filename .endswith (".json" ):
200
219
with open ("data/defaults/programs/" + filename ) as p :
201
220
q = p .read ()
202
- programs .insert (json .loads (q ))
203
-
204
- def updateFromPackage ():
205
- os .system ('sudo bash /home/pi/clean-update.sh' )
206
- file_to_upload = connexion .request .files ['file_to_upload' ]
207
- file_to_upload .save (os .path .join ('/home/pi/' , 'update.tar' ))
208
- os .system ('sudo coderbot_update /home/pi/update.tar && sudo reboot' )
209
- return 200
221
+ programs .insert (json .loads (q ))
0 commit comments