<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 async def start(self, remoteParameters):
 """ Initiate connectivity checks. :param: remoteParameters: The :class:`RTCIceParameters` associated with the remote :class:`RTCIceTransport`. """

        if self.state == 'closed':
            raise InvalidStateError('RTCIceTransport is closed')

        # handle the case where start is already in progress
        if self.__start is not None:
            return await self.__start.wait()
        self.__start = asyncio.Event()

        self.__setState('checking')
        self._connection.remote_username = remoteParameters.usernameFragment
        self._connection.remote_password = remoteParameters.password
        try:
            await self._connection.connect()
        except ConnectionError:
            self.__setState('failed')
        else:
            self.__setState('completed')
        self.__start.set()