<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def _setup(self):
 """Performs the RFXtrx initialisation protocol in a Future. Currently this is the rough workflow of the interactions with the RFXtrx. We also do a few extra things - flush the buffer, and attach readers/writers to the asyncio loop. 1. Write a RESET packet (write all zeros) 2. Wait at least 50ms and less than 9000ms 3. Write the STATUS packet to verify the device is up. 4. Receive status response 5. Write the MODE packet to enable or disabled the required protocols. """

        self.log.info("Adding reader to prepare to receive.")
        self.loop.add_reader(self.dev.fd, self.read)

        self.log.info("Flushing the RFXtrx buffer.")
        self.flushSerialInput()

        self.log.info("Writing the reset packet to the RFXtrx. (blocking)")
        yield from self.sendRESET()

        self.log.info("Wating 0.4s")
        yield from asyncio.sleep(0.4)

        self.log.info("Write the status packet (blocking)")
        yield from self.sendSTATUS()

        # TODO receive status response, compare it with the needed MODE and
        # request a new MODE if required. Currently MODE is always sent.

        self.log.info("Adding mode packet to the write queue (blocking)")
        yield from self.sendMODE()