Example #1
0
 def start(self) -> None:
     """
     Starts listening for serial data and updating observers
     """
     with self.conn as serial:
         line = serial.readline()
         # Inform the observers that connection is open
         self.__notify(Action('OPEN', None))
         while True:
             if not self.conn.isOpen():
                 return
             line = serial.readline().decode('utf-8')
             try:
                 action = Action.parse(line)
             except:
                 continue
             if action.directive == 'CLOSE':
                 self.__notify(action)
                 break
             self.__notify(action)
Example #2
0
 def test_foot_w_vals(self):
     line = '123 43 -123 -34 -250 -12'
     should_be = {
         'left': {
             'pitch': 123,
             'yaw': 43,
             'roll': -123
         },
         'right': {
             'pitch': -34,
             'yaw': -250,
             'roll': -12
         }
     }
     a = Action.parse(line)
     self.assertDictEqual(a.value, should_be, 'Parsed correct values')
Example #3
0
 def test_close_w_msg(self):
     line = 'CLOSE|Hey there is a message in here'
     a = Action.parse(line)
     self.assertEqual(a.directive, 'CLOSE', 'Sets directive correctly')
     self.assertEqual(a.value, None, 'Discards message correctly')
Example #4
0
 def test_debug_w_msg(self):
     line = 'DEBUG|This is a message'
     a = Action.parse(line)
     self.assertEqual(a.directive, 'DEBUG', 'Directive was set')
     self.assertEqual(a.value,
                      line.split('|')[1], 'Debug message is correct')
Example #5
0
 def test_foot_w_nonints(self):
     line = '12 12 12 12 not12 12'
     with self.assertRaises(RuntimeError):
         a = Action.parse(line)
Example #6
0
 def test_foot_w_lessvals(self):
     line = '12 12 12 12 12'
     with self.assertRaises(RuntimeError):
         a = Action.parse(line)
Example #7
0
 def test_w_nodir(self):
     line = '|This is a message'
     with self.assertRaises(KeyError):
         a = Action.parse(line)
Example #8
0
 def test_debug_wo_msg(self):
     line = 'DEBUG|'
     a = Action.parse(line)
     self.assertEqual(a.directive, 'DEBUG', 'Directive was set')
     self.assertEqual(a.value, '', 'Debug message is correct')