baseline build

Dependencies:   FastPWM mbed-os mbed

Committer:
jrhodes5150
Date:
Mon Jun 19 15:55:51 2017 +0000
Revision:
0:8a420ac6394e
initial build - baseline;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jrhodes5150 0:8a420ac6394e 1 #ifndef __DATACONTAINER_H__
jrhodes5150 0:8a420ac6394e 2 #define __DATACONTAINER_H__
jrhodes5150 0:8a420ac6394e 3
jrhodes5150 0:8a420ac6394e 4 #include "mbed.h"
jrhodes5150 0:8a420ac6394e 5
jrhodes5150 0:8a420ac6394e 6
jrhodes5150 0:8a420ac6394e 7
jrhodes5150 0:8a420ac6394e 8 class DataContainer
jrhodes5150 0:8a420ac6394e 9 {
jrhodes5150 0:8a420ac6394e 10
jrhodes5150 0:8a420ac6394e 11
jrhodes5150 0:8a420ac6394e 12 public:
jrhodes5150 0:8a420ac6394e 13
jrhodes5150 0:8a420ac6394e 14 /** Create a DataContianer object
jrhodes5150 0:8a420ac6394e 15 *
jrhodes5150 0:8a420ac6394e 16 * @param iSize size of the object in DataContianer
jrhodes5150 0:8a420ac6394e 17 * @param iCount number of items in the DataContianer
jrhodes5150 0:8a420ac6394e 18 */
jrhodes5150 0:8a420ac6394e 19 DataContainer( int iSize, int iCount );
jrhodes5150 0:8a420ac6394e 20
jrhodes5150 0:8a420ac6394e 21 /** destruction
jrhodes5150 0:8a420ac6394e 22 *
jrhodes5150 0:8a420ac6394e 23 */
jrhodes5150 0:8a420ac6394e 24 virtual ~DataContainer( void );
jrhodes5150 0:8a420ac6394e 25
jrhodes5150 0:8a420ac6394e 26 /** Add item to queue
jrhodes5150 0:8a420ac6394e 27 *
jrhodes5150 0:8a420ac6394e 28 * @param pvItem item to add
jrhodes5150 0:8a420ac6394e 29 * @returns true if item added, false if queue full
jrhodes5150 0:8a420ac6394e 30 */
jrhodes5150 0:8a420ac6394e 31 bool Put( void* pvItem );
jrhodes5150 0:8a420ac6394e 32
jrhodes5150 0:8a420ac6394e 33 /** get an item from the queue in an IRQ handler
jrhodes5150 0:8a420ac6394e 34 *
jrhodes5150 0:8a420ac6394e 35 * @param pvItem pointer to the tiem to retrieve
jrhodes5150 0:8a420ac6394e 36 * @returns true if item fetched, false if queue is empty
jrhodes5150 0:8a420ac6394e 37 */
jrhodes5150 0:8a420ac6394e 38 bool GetIrq( void* pvItem );
jrhodes5150 0:8a420ac6394e 39
jrhodes5150 0:8a420ac6394e 40 /** Add item to queue from an IRQ handler
jrhodes5150 0:8a420ac6394e 41 *
jrhodes5150 0:8a420ac6394e 42 * @param pvItem item to add
jrhodes5150 0:8a420ac6394e 43 * @returns true if item added, false if queue full
jrhodes5150 0:8a420ac6394e 44 */
jrhodes5150 0:8a420ac6394e 45 bool PutIrq( void* pvItem );
jrhodes5150 0:8a420ac6394e 46
jrhodes5150 0:8a420ac6394e 47 /** get an item from the queue
jrhodes5150 0:8a420ac6394e 48 *
jrhodes5150 0:8a420ac6394e 49 * @param pvItem pointer to the tiem to retrieve
jrhodes5150 0:8a420ac6394e 50 * @returns true if item fetched, false if queue is empty
jrhodes5150 0:8a420ac6394e 51 */
jrhodes5150 0:8a420ac6394e 52 bool Get( void* pvItem );
jrhodes5150 0:8a420ac6394e 53
jrhodes5150 0:8a420ac6394e 54 /** get the number of items in the queue
jrhodes5150 0:8a420ac6394e 55 *
jrhodes5150 0:8a420ac6394e 56 * @returns the number of items in the queue
jrhodes5150 0:8a420ac6394e 57 */
jrhodes5150 0:8a420ac6394e 58 int GetNumberOfItems( void );
jrhodes5150 0:8a420ac6394e 59
jrhodes5150 0:8a420ac6394e 60 /** peek at the entry at the top of the queue
jrhodes5150 0:8a420ac6394e 61 *
jrhodes5150 0:8a420ac6394e 62 * @returns the entry at the top of the queue
jrhodes5150 0:8a420ac6394e 63 */
jrhodes5150 0:8a420ac6394e 64 bool Peek( void* pvItem );
jrhodes5150 0:8a420ac6394e 65
jrhodes5150 0:8a420ac6394e 66 /** flush the queue
jrhodes5150 0:8a420ac6394e 67 *
jrhodes5150 0:8a420ac6394e 68 */
jrhodes5150 0:8a420ac6394e 69 void Flush( void );
jrhodes5150 0:8a420ac6394e 70
jrhodes5150 0:8a420ac6394e 71
jrhodes5150 0:8a420ac6394e 72 protected:
jrhodes5150 0:8a420ac6394e 73 int m_iSize; // size of each item in queue
jrhodes5150 0:8a420ac6394e 74 int m_iCount; // number of items in the queue
jrhodes5150 0:8a420ac6394e 75 unsigned char* m_pnHead; // pointer to the head of the queue
jrhodes5150 0:8a420ac6394e 76 unsigned char* m_pnTail; // pointer to the tail of the queue
jrhodes5150 0:8a420ac6394e 77 unsigned char* m_pnRdIndex; // read index
jrhodes5150 0:8a420ac6394e 78 unsigned char* m_pnWrIndex; // write index
jrhodes5150 0:8a420ac6394e 79 int m_iLclCount; // number of items in queue
jrhodes5150 0:8a420ac6394e 80 };
jrhodes5150 0:8a420ac6394e 81 #endif
jrhodes5150 0:8a420ac6394e 82