<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def send_highspeed(self, data, progress_callback):
 """Send a script to a device at highspeed, reporting progress. This method takes a binary blob and downloads it to the device as fast as possible, calling the passed progress_callback periodically with updates on how far it has gotten. Args: data (bytes):
 The binary blob that should be sent to the device at highspeed. progress_callback (callable):
 A function that will be called periodically to report progress. The signature must be callback(done_count, total_count) where done_count and total_count will be passed as integers. """


        if not self.connected:
            raise HardwareError("Cannot send a script if we are not in a connected state")

        if isinstance(data, str) and not isinstance(data, bytes):
            raise ArgumentError("You must send bytes or bytearray to _send_highspeed", type=type(data))

        if not isinstance(data, bytes):
            data = bytes(data)

        try:
            self._on_progress = progress_callback
            self._loop.run_coroutine(self.adapter.send_script(0, data))
        finally:
            self._on_progress = None