/// <summary> /// Reads the NDEF formatted data from the NFC tag. /// </summary> /// <since_tizen> 3 </since_tizen> /// <privilege>http://tizen.org/privilege/nfc</privilege> /// <exception cref="NotSupportedException">Thrown when the NFC is not supported.</exception> /// <exception cref="InvalidOperationException">Thrown when the method fails due to an invalid operation.</exception> public Task <NfcNdefMessage> ReadNdefMessageAsync() { var task = new TaskCompletionSource <NfcNdefMessage>(); NfcNdefMessage ndefMsg = null; Interop.Nfc.TagReadCompletedCallback callback = (int result, IntPtr ndefMessage, IntPtr userData) => { if (result == (int)NfcError.None) { ndefMsg = new NfcNdefMessage(ndefMessage); task.SetResult(ndefMsg); return(true); } return(false); }; int ret = Interop.Nfc.Tag.ReadNdef(_tagHandle, callback, IntPtr.Zero); if (ret != (int)NfcError.None) { Log.Error(Globals.LogTag, "Failed to read ndef message, Error - " + (NfcError)ret); NfcErrorFactory.ThrowNfcException(ret); } return(task.Task); }
bool ReadNdefCallback(int result, IntPtr ndefMessage, IntPtr userData) { bool ret = false; int requestId = (int)userData; if (_readNdefTaskSource.ContainsKey(requestId)) { if (result == (int)NfcError.None) { var ndefMsg = new NfcNdefMessage(ndefMessage); _readNdefTaskSource[requestId].TrySetResult(ndefMsg); ret = true; } _readNdefTaskSource.Remove(requestId); } return(ret); }
/// <summary> /// Writes the NDEF formatted data. /// </summary> /// <since_tizen> 3 </since_tizen> /// <param name="ndefMessage">The NfcNdefMessage object.</param> /// <privilege>http://tizen.org/privilege/nfc</privilege> /// <exception cref="NotSupportedException">Thrown when the NFC is not supported.</exception> /// <exception cref="ArgumentException">Thrown when the method fails due to an invalid parameter.</exception> /// <exception cref="InvalidOperationException">Thrown when the method fails due to an invalid operation.</exception> public Task <NfcError> WriteNdefMessageAsync(NfcNdefMessage ndefMessage) { var task = new TaskCompletionSource <NfcError>(); Interop.Nfc.VoidCallback callback = (int result, IntPtr userData) => { task.SetResult((NfcError)result); return; }; int ret = Interop.Nfc.Tag.WriteNdef(_tagHandle, ndefMessage.GetHandle(), callback, IntPtr.Zero); if (ret != (int)NfcError.None) { Log.Error(Globals.LogTag, "Failed to write ndef message, Error - " + (NfcError)ret); NfcErrorFactory.ThrowNfcException(ret); } return(task.Task); }
/// <summary> /// Writes the NDEF formatted data. /// </summary> /// <since_tizen> 3 </since_tizen> /// <param name="ndefMessage">The NfcNdefMessage object.</param> /// <privilege>http://tizen.org/privilege/nfc</privilege> /// <exception cref="NotSupportedException">Thrown when the NFC is not supported.</exception> /// <exception cref="ArgumentException">Thrown when the method fails due to an invalid parameter.</exception> /// <exception cref="InvalidOperationException">Thrown when the method fails due to an invalid operation.</exception> public Task <NfcError> WriteNdefMessageAsync(NfcNdefMessage ndefMessage) { int requestId = 0; var task = new TaskCompletionSource <NfcError>(); lock (this) { requestId = _requestId++; _voidTaskSource[requestId] = task; } int ret = Interop.Nfc.Tag.WriteNdef(_tagHandle, ndefMessage.GetHandle(), _nativeVoidCallback, (IntPtr)requestId); if (ret != (int)NfcError.None) { Log.Error(Globals.LogTag, "Failed to write ndef message, Error - " + (NfcError)ret); _voidTaskSource.Remove(requestId); NfcErrorFactory.ThrowNfcException(ret); } return(task.Task); }
internal P2pDataReceivedEventArgs(IntPtr p2pHandle, IntPtr ndefHandle) { _p2pTarget = new NfcP2p(p2pHandle); _ndefMessage = new NfcNdefMessage(ndefHandle); }
internal NdefMessageDiscoveredEventArgs(IntPtr messageHandle) { _ndef = new NfcNdefMessage(messageHandle); }