 
     case DeviceIsNotAllowedToJoinNetwork
     case DeviceIsUnableToFindNetworkToJoin
+    case DeviceTimeoutWhileJoiningNetwork
 
     //CheckDeviceGotClaimed
     case DeviceConnectToCloudTimeout


    private func targetDeviceLeaveNetwork() {
        self.targetDevice.transceiver!.sendLeaveNetwork { result in
            self.log("didReceiveLeaveNetworkReply: \(result)")
            if (result == .NONE) {
                self.stepComplete()
            } else {

        /// INVALID_STATE: The commissioner role is not started
        /// NOT_ALLOWED: The client is not authenticated
        self.commissionerDevice!.transceiver!.sendAddJoiner(eui64: self.targetDevice.joinerCredentials!.eui64, password: self.targetDevice.joinerCredentials!.password) { result in
            self.log("commissionerDevice.sendAddJoiner: \(result)")
            if (result == .NONE) {
                self.log("Delaying call to joinNetwork")
                DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + .seconds(10)) {
                    if (self.canceled) {
                        return
                    }
