Exemple #1
0
        /// <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);
        }
Exemple #2
0
        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);
        }
Exemple #3
0
        /// <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);
        }
Exemple #4
0
        /// <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);
        }
Exemple #5
0
 internal P2pDataReceivedEventArgs(IntPtr p2pHandle, IntPtr ndefHandle)
 {
     _p2pTarget   = new NfcP2p(p2pHandle);
     _ndefMessage = new NfcNdefMessage(ndefHandle);
 }
Exemple #6
0
 internal NdefMessageDiscoveredEventArgs(IntPtr messageHandle)
 {
     _ndef = new NfcNdefMessage(messageHandle);
 }