13
13
from coderbot import CoderBot
14
14
from program import ProgramEngine , Program
15
15
from config import Config
16
+ from coderbotTestUnit import run_test as runCoderbotTestUnit
17
+ import pigpio
18
+
19
+ BUTTON_PIN = 16
16
20
17
21
bot_config = Config .get ()
18
22
bot = CoderBot .get_instance (
19
- servo = (bot_config .get ("move_motor_mode" ) == "servo" ),
20
23
motor_trim_factor = float (bot_config .get ("move_motor_trim" , 1.0 )),
24
+ encoder = bool (bot_config .get ("encoder" ))
21
25
)
22
26
27
+ query = Query ()
28
+
23
29
def get_serial ():
24
30
"""
25
31
Extract serial from cpuinfo file
@@ -80,13 +86,23 @@ def get_info():
80
86
update_status = subprocess .check_output (["cat" , "/etc/coderbot/update_status" ]).decode ('utf-8' ).replace ('\n ' , '' )
81
87
except Exception :
82
88
update_status = 'undefined'
89
+ try :
90
+ encoder = bool (Config .read ().get ('encoder' ))
91
+ if (encoder ):
92
+ motors = 'DC encoder motors'
93
+ else :
94
+ motors = 'DC motors'
95
+ except Exception :
96
+ motors = 'undefined'
83
97
84
98
serial = get_serial ()
99
+
85
100
return {'backend_commit' : backend_commit ,
86
101
'coderbot_version' : coderbot_version ,
87
102
'update_status' : update_status ,
88
103
'kernel' : kernel ,
89
- 'serial' : serial }
104
+ 'serial' : serial ,
105
+ 'motors' : motors }
90
106
91
107
prog = None
92
108
prog_engine = ProgramEngine .get_instance ()
@@ -101,11 +117,11 @@ def stop():
101
117
return 200
102
118
103
119
def move (data ):
104
- bot .move (speed = data ["speed" ], elapse = data ["elapse" ])
120
+ bot .move (speed = data ["speed" ], elapse = data ["elapse" ], distance = data [ "distance" ] )
105
121
return 200
106
122
107
123
def turn (data ):
108
- bot .turn (speed = data ["speed" ], elapse = data ["elapse" ])
124
+ bot .turn (speed = data ["speed" ], time_elapse = data ["elapse" ])
109
125
return 200
110
126
111
127
def exec (data ):
@@ -116,12 +132,20 @@ def exec(data):
116
132
117
133
def status ():
118
134
sts = get_status ()
135
+ # getting reset log file
136
+ try :
137
+ with open ('/home/pi/coderbot/logs/reset_trigger_service.log' , 'r' ) as log_file :
138
+ data = [x for x in log_file .read ().split ('\n ' ) if x ]
139
+ except Exception :
140
+ data = [] # if file doesn't exist, no restore as ever been performed. return empty data
141
+
119
142
120
143
return {
121
144
"status" : "ok" ,
122
145
"internetConnectivity" : sts ["internet_status" ],
123
146
"temp" : sts ["temp" ],
124
147
"uptime" : sts ["uptime" ],
148
+ "log" : data
125
149
}
126
150
127
151
def info ():
@@ -132,7 +156,8 @@ def info():
132
156
"backend commit build" : inf ["backend_commit" ],
133
157
"kernel" : inf ["kernel" ],
134
158
"update status" : inf ["update_status" ],
135
- "serial" : inf ["serial" ]
159
+ "serial" : inf ["serial" ],
160
+ "motors" : inf ["motors" ]
136
161
}
137
162
138
163
def restoreSettings ():
@@ -204,3 +229,21 @@ def resetDefaultPrograms():
204
229
with open ("data/defaults/programs/" + filename ) as p :
205
230
q = p .read ()
206
231
programs .insert (json .loads (q ))
232
+
233
+ ## Reset
234
+ def reset ():
235
+ pi = pigpio .pi ('localhost' )
236
+ #simulating FALLING EDGE
237
+ # it triggers the reset by using the service altready running on the system that detects a button press (3 sec).
238
+ pi .write (BUTTON_PIN , 1 )
239
+ pi .write (BUTTON_PIN , 0 )
240
+
241
+ return {
242
+ "status" : "ok"
243
+ }
244
+
245
+ ## Test
246
+ def testCoderbot (data ):
247
+ # taking first JSON key value (varargin)
248
+ tests_state = runCoderbotTestUnit (data [list (data .keys ())[0 ]])
249
+ return tests_state
0 commit comments