code: def _update_info(self, target_id):
          
  
          # Call getInfo ...
          pk = CRTPPacket()
          pk.set_header(0xFF, 0xFF)
          pk.data = (target_id, 0x10)
          self.link.send_packet(pk)
  
          # Wait for the answer
          pk = self.link.receive_packet(2)
  
          if (pk and pk.header == 0xFF and struct.unpack('<BB', pk.data[0:2]) ==
                  (target_id, 0x10)):
              tab = struct.unpack('BBHHHH', pk.data[0:10])
              cpuid = struct.unpack('B' * 12, pk.data[10:22])
              if target_id not in self.targets:
                  self.targets[target_id] = Target(target_id)
              self.targets[target_id].addr = target_id
              if len(pk.data) > 22:
                  self.targets[target_id].protocol_version = pk.datat[22]
                  self.protocol_version = pk.datat[22]
              self.targets[target_id].page_size = tab[2]
              self.targets[target_id].buffer_pages = tab[3]
              self.targets[target_id].flash_pages = tab[4]
              self.targets[target_id].start_page = tab[5]
              self.targets[target_id].cpuid = '%02X' % cpuid[0]
              for i in cpuid[1:]:
                  self.targets[target_id].cpuid += ':%02X' % i
  
              if (self.protocol_version == 0x10 and
                      target_id == TargetTypes.STM32):
                  self._update_mapping(target_id)
  
              return True
  
          return False
docs: Call the command getInfo and fill up the information received in
          the fields of the object