コード例 #1
0
 def run(self, target_node_id):
     """Run the code on the Thymio.
     """
     payload = Message.uint16array_to_bytes([
         target_node_id,
     ])
     msg = Message(Message.ID_RUN, self.host_node_id, payload)
     self.send(msg)
コード例 #2
0
 def reset(self, target_node_id):
     """Reset the Thymio.
     """
     payload = Message.uint16array_to_bytes([
         target_node_id,
     ])
     msg = Message(Message.ID_RESET, self.host_node_id, payload)
     self.send(msg)
コード例 #3
0
 def get_node_description(self, target_node_id):
     """Send a GET_NODE_DESCRIPTION message.
     """
     payload = Message.uint16array_to_bytes([
         target_node_id,
         Message.PROTOCOL_VERSION
     ])
     msg = Message(Message.ID_GET_NODE_DESCRIPTION, self.host_node_id, payload)
     self.send(msg)
コード例 #4
0
 def set_variables(self, target_node_id, chunk_offset, chunk):
     """Send a SET_VARIABLES message.
     """
     payload = Message.uint16array_to_bytes([
         target_node_id,
         chunk_offset
     ] + chunk)
     msg = Message(Message.ID_SET_VARIABLES, self.host_node_id, payload)
     self.send(msg)
コード例 #5
0
 def get_node_description_fragment(self, target_node_id, fragment):
     """Send a ID_GET_NODE_DESCRIPTION_FRAGMENT message.
     """
     payload = Message.uint16array_to_bytes([
         target_node_id,
         Message.PROTOCOL_VERSION,
         fragment
     ])
     msg = Message(Message.ID_GET_NODE_DESCRIPTION_FRAGMENT, self.host_node_id, payload)
     self.send(msg)
コード例 #6
0
 def set_bytecode(self, target_node_id, bytecode, address=0):
     """Set the bytecode by sending one or more SET_BYTECODE messages.
     """
     size = len(bytecode)
     i = 0
     while i < size:
         size_chunk = min(size - i, 256)
         payload = Message.uint16array_to_bytes([
             target_node_id,
             address + i
         ] + bytecode[i:i + size_chunk])
         msg = Message(Message.ID_SET_BYTECODE, self.host_node_id, payload)
         self.send(msg)
         i += size_chunk
コード例 #7
0
 def get_variables(self, target_node_id, chunk_offset=0, chunk_length=None):
     """Send a GET_VARIABLES message.
     """
     if target_node_id is not None:
         if chunk_length is None:
             chunk_length = (self.get_target_node_var_total_size(target_node_id)
                             - chunk_offset)
         payload = Message.uint16array_to_bytes([
             target_node_id,
             chunk_offset,
             chunk_length
         ])
         msg = Message(Message.ID_GET_VARIABLES, self.host_node_id, payload)
         self.remote_nodes[target_node_id].expected_var_end = chunk_offset + chunk_length
         self.send(msg)
コード例 #8
0
 def get_device_info(self, target_node_id, info=None):
     """Request device info (all available by default).
     """
     if info is None:
         self.get_device_info(target_node_id,
                              Message.DEVICE_INFO_NAME)
         self.get_device_info(target_node_id,
                              Message.DEVICE_INFO_THYMIO2_RF_SETTINGS)
         self.get_device_info(target_node_id,
                              Message.DEVICE_INFO_UUID)
     else:
         payload = Message.uint16array_to_bytes([
             target_node_id,
             info
         ])
         msg = Message(Message.ID_GET_DEVICE_INFO, self.host_node_id, payload)
         self.send(msg)
コード例 #9
0
 def send(self, msg: Message) -> None:
     """Send a message.
     """
     with self.output_lock:
         if self.debug:
             print(">", msg)
         try:
             self.io.write(msg.serialize())
         except Exception as error:
             self.comm_error = error
             if self.on_comm_error:
                 self.on_comm_error("write: " + error)
             raise error
コード例 #10
0
 def read_message(self) -> Message:
     """Read a complete message.
     """
     try:
         payload_len = self.read_uint16()
         source_node = self.read_uint16()
         id = self.read_uint16()
         payload = self.io.read(payload_len)
         msg = Message(id, source_node, payload)
         return msg
     except Exception as error:
         self.comm_error = error
         raise error
コード例 #11
0
 def list_nodes(self):
     """Send a LIST_NODES message.
     """
     payload = Message.uint16array_to_bytes([Message.PROTOCOL_VERSION])
     msg = Message(Message.ID_LIST_NODES, self.host_node_id, payload)
     self.send(msg)