Tezzeret  1
Tezzeret
Public Member Functions | Public Attributes | List of all members
Geometrics::GmBufferedSensor Class Reference

The class from which event sources and sensors that post events to the application's main event queue are derived. More...

#include <GmBufferedSensor.hpp>

Inheritance diagram for Geometrics::GmBufferedSensor:
Inheritance graph
[legend]
Collaboration diagram for Geometrics::GmBufferedSensor:
Collaboration graph
[legend]

Public Member Functions

 GmBufferedSensor (UInt8 iSubjectId, int iRingCount, int iDataSize, GmManagedArrayRingBuffer< uint8_t, GM_SIZE_OF_APP_DATA_QUEUE > *mainEventQueue)
 Constructor for derived classes, when it's OK to allocate a local buffer dynamically. More...
 
 GmBufferedSensor (UInt8 iSubjectId, int iRingCount, int iDataSize, UInt8 *puiBuffer, UInt32 uiBufferSize, GmManagedArrayRingBuffer< uint8_t, GM_SIZE_OF_APP_DATA_QUEUE > *mainEventQueue)
 Constructor used by most derived classes on memory-constrained systems. In this case the derived class provides a buffer, usually static, so that the buffer doesn't need to be allocated dynamically. More...
 
int Start ()
 
int ResetBuffers ()
 
Bool HasData ()
 
int ReadRecord (char *pcDestination, int iSize)
 The main interface for consumers of a sensors data to get that data. It simply copies the data in the sensor's buffer into the caller's buffer. It is up to the caller to know what to do with that data, and how to free any local memory. (This function should have been name ReadNextRecord)
 
virtual int DeleteNextRecord ()
 DeleteNextRecord allows a caller to discard the next record without retrieving it. The subclasses that implement DeleteNextRecord must be able to deal with any memory that needs to be freed, or other such concerns.
 
- Public Member Functions inherited from Geometrics::GmEventSource
virtual int WriteToStorage (UInt32 ui32Topic, char *pData, UInt32 iSize, GmStorage *psStorage, UInt32 ui32FormatId)=0
 
void SetSensorId (int iSensorId)
 
int GetSensorId ()
 

Public Attributes

CChildRingBufferm_rbBuffer
 The local buffer into which the sensor or event source stores each of its events or measurements. When an item is committed to this buffer, it also adds an event (consisting of the sensor's subject ID) into the application main event queue. The full event or measurement remains here, until the application reads the subject ID out of the main queue and then asks this sensor object for the full information by calling ReadRecord.
 
UInt8 m_iSubjectId
 

Additional Inherited Members

- Protected Attributes inherited from Geometrics::GmEventSource
int m_iSensorId
 

Detailed Description

The class from which event sources and sensors that post events to the application's main event queue are derived.

Constructor & Destructor Documentation

◆ GmBufferedSensor() [1/2]

GmBufferedSensor::GmBufferedSensor ( UInt8  iSubjectId,
int  iRingCount,
int  iDataSize,
GmManagedArrayRingBuffer< uint8_t, GM_SIZE_OF_APP_DATA_QUEUE > *  mainEventQueue 
)

Constructor for derived classes, when it's OK to allocate a local buffer dynamically.

Parameters
iSubjectIdID to be placed into the main event queue.
iRingCountMax number of data items to be placed in buffer
iDataSizeSize of local data item
mainEventQueueThe main application event queue. When this sensor stores an item locally, it places its event ID (iSubjectId) into the main event queue. This pointer is not recorded here in the sensor, but is set given to the local buffer when it is set up, to that commits to the local buffer also include putting the eventID into the main event queue.

◆ GmBufferedSensor() [2/2]

GmBufferedSensor::GmBufferedSensor ( UInt8  iSubjectId,
int  iRingCount,
int  iDataSize,
UInt8 *  puiBuffer,
UInt32  uiBufferSize,
GmManagedArrayRingBuffer< uint8_t, GM_SIZE_OF_APP_DATA_QUEUE > *  mainEventQueue 
)

Constructor used by most derived classes on memory-constrained systems. In this case the derived class provides a buffer, usually static, so that the buffer doesn't need to be allocated dynamically.

Parameters
iSubjectIdID to be placed into the main event queue.
iRingCountMax number of data items to be placed in buffer
iDataSizeSize of local data item
puiBufferExisting (usually static) buffer to be used by sensor.
uiBufferSizeTotal size of buffer
mainEventQueueThe main application event queue. When this sensor stores an item locally, it places its event ID (iSubjectId) into the main event queue. This pointer is not recorded here in the sensor, but is set given to the local buffer when it is set up, to that commits to the local buffer also include putting the eventID into the main event queue.

The documentation for this class was generated from the following files: