nfcd should using error code instead of boolean