diff options
author | Martijn Coenen <maco@google.com> | 2012-07-25 15:07:43 -0700 |
---|---|---|
committer | Martijn Coenen <maco@google.com> | 2012-07-27 18:33:54 -0700 |
commit | c981340b7157e1b1873ca741f37b1ff19edae0b8 (patch) | |
tree | 7a2d34db60e0ac35e458b7f7f146b6291969a7fa /nci/jni/DataQueue.h | |
parent | 7a1d2adf875d414625853b3a5360663e420a3769 (diff) | |
download | packages_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.h | 97 |
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; +}; + |