void parseProvisioningNotifications(final byte[] data) {
        final UnprovisionedMeshNode unprovisionedMeshNode = mUnprovisionedMeshNode;
        try {
            switch (provisioningState.getState()) {
                case PROVISIONING_INVITE:
                    break;
                case PROVISIONING_CAPABILITIES:
                    if (validateMessage(data)) {
                        if (!parseProvisioningCapabilitiesMessage(unprovisionedMeshNode, data)) {
                            parseProvisioningState(unprovisionedMeshNode, data);
                        }
                    } else {
                        parseProvisioningState(unprovisionedMeshNode, data);
                    }
                    break;
                case PROVISIONING_START:
                    break;
                case PROVISIONING_PUBLIC_KEY:
                    if (validateMessage(data)) {
                        parseProvisioneePublicKeyXY(unprovisionedMeshNode, data);
                    } else {
                        parseProvisioningState(unprovisionedMeshNode, data);
                    }
                    break;
                case PROVISIONING_INPUT_COMPLETE:
                    if (validateMessage(data)) {
                        if (parseProvisioningInputCompleteState(data)) {
                            sendProvisioningConfirmation(null);
                        }
                    } else {
                        parseProvisioningState(unprovisionedMeshNode, data);
                    }
                    break;
                case PROVISIONING_CONFIRMATION:
                    if (validateMessage(data)) {
                        if (parseProvisioneeConfirmation(data)) {
                            sendRandomConfirmationPDU(unprovisionedMeshNode);
                        }
                    } else {
                        parseProvisioningState(unprovisionedMeshNode, data);
                    }
                    break;
                case PROVISIONING_RANDOM:
                    if (validateMessage(data)) {
                        if (parseProvisioneeRandom(data)) {
                            sendProvisioningData(unprovisionedMeshNode);
                        }
                    } else {
                        parseProvisioningState(unprovisionedMeshNode, data);
                    }
                    break;
                case PROVISIONING_DATA:
                case PROVISIONING_COMPLETE:
                case PROVISIONING_FAILED:
                    parseProvisioningState(unprovisionedMeshNode, data);
                    break;

            }
        } catch (Exception ex) {
            MeshLogger.error(TAG, "Exception in " + provisioningState.getState().name() + " : " + ex.getMessage());
            parseProvisioningState(unprovisionedMeshNode, data);
        }
    }
Sets the provisioning callbacks

@param provisioningCallbacks {@link MeshProvisioningStatusCallbacks} callbacks
mesh/src/main/java/no/nordicsemi/android/mesh/MeshProvisioningHandler.java