summaryrefslogtreecommitdiffstats
path: root/nci/jni/DataQueue.h
diff options
context:
space:
mode:
authorMartijn Coenen <maco@google.com>2012-07-25 15:07:43 -0700
committerMartijn Coenen <maco@google.com>2012-07-27 18:33:54 -0700
commitc981340b7157e1b1873ca741f37b1ff19edae0b8 (patch)
tree7a2d34db60e0ac35e458b7f7f146b6291969a7fa /nci/jni/DataQueue.h
parent7a1d2adf875d414625853b3a5360663e420a3769 (diff)
downloadpackages_apps_nfc-c981340b7157e1b1873ca741f37b1ff19edae0b8.zip
packages_apps_nfc-c981340b7157e1b1873ca741f37b1ff19edae0b8.tar.gz
packages_apps_nfc-c981340b7157e1b1873ca741f37b1ff19edae0b8.tar.bz2
NFC: Initial NCI DeviceHost and JNI implementation.
From partner drop at 07/20. Modified to fit into our new JNI/DH split. New build config that builds two targets, Nfc and NfcNci, each with their own dependencies. Product config files have to specify either Nfc or NfcNci in their packages config. Change-Id: I348a3aad7167195ca03baf9636408ab8e4c55fce
Diffstat (limited to 'nci/jni/DataQueue.h')
-rw-r--r--nci/jni/DataQueue.h97
1 files changed, 97 insertions, 0 deletions
diff --git a/nci/jni/DataQueue.h b/nci/jni/DataQueue.h
new file mode 100644
index 0000000..4c0c454
--- /dev/null
+++ b/nci/jni/DataQueue.h
@@ -0,0 +1,97 @@
+/*****************************************************************************
+**
+** Name: DataQueue.h
+**
+** Description: Store data bytes in a variable-size queue.
+**
+** Copyright (c) 2012, Broadcom Corp., All Rights Reserved.
+** Proprietary and confidential.
+**
+*****************************************************************************/
+
+#pragma once
+#include "NfcJniUtil.h"
+#include "gki.h"
+#include "Mutex.h"
+#include <list>
+
+
+class DataQueue
+{
+public:
+ /*******************************************************************************
+ **
+ ** Function: DataQueue
+ **
+ ** Description: Initialize member variables.
+ **
+ ** Returns: None.
+ **
+ *******************************************************************************/
+ DataQueue ();
+
+
+ /*******************************************************************************
+ **
+ ** Function: ~DataQueue
+ **
+ ** Description: Release all resources.
+ **
+ ** Returns: None.
+ **
+ *******************************************************************************/
+ ~DataQueue ();
+
+
+ /*******************************************************************************
+ **
+ ** Function: enqueue
+ **
+ ** Description: Append data to the queue.
+ ** data: array of bytes
+ ** dataLen: length of the data.
+ **
+ ** Returns: True if ok.
+ **
+ *******************************************************************************/
+ bool enqueue (UINT8* data, UINT16 dataLen);
+
+
+ /*******************************************************************************
+ **
+ ** Function: dequeue
+ **
+ ** Description: Retrieve and remove data from the front of the queue.
+ ** buffer: array to store the data.
+ ** bufferMaxLen: maximum size of the buffer.
+ ** actualLen: actual length of the data.
+ **
+ ** Returns: True if ok.
+ **
+ *******************************************************************************/
+ bool dequeue (UINT8* buffer, UINT16 bufferMaxLen, UINT16& actualLen);
+
+
+ /*******************************************************************************
+ **
+ ** Function: isEmpty
+ **
+ ** Description: Whether the queue is empty.
+ **
+ ** Returns: True if empty.
+ **
+ *******************************************************************************/
+ bool isEmpty();
+
+private:
+ struct tHeader
+ {
+ UINT16 mDataLen; //number of octets of data
+ UINT16 mOffset; //offset of the first octet of data
+ };
+ typedef std::list<tHeader*> Queue;
+
+ Queue mQueue;
+ Mutex mMutex;
+};
+