Halyri - Mobiili  0.9
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Events
Halyri.Measurement.MeasurementManager Class Reference

Mock of a class that manages an active measurement session on a measurement instrument connested to the mobile device. Currently provides data conforming to the data structure parameters specified in the provided MeasurementInstrumentDto and imitating nomrmal ECG. More...

Public Member Functions

 MeasurementManager (MeasurementInstrumentDto instrument)
 Initializes a new mock MeasurementManager instance that provides mock samples conforming to the data parameters specified by the provided instrument. More...
 
void StartMeasurement ()
 Starts generating mock ECG data. MeasurementDataAvailableEvent is fired every time new measurement data sample is available. More...
 
void StopMeasurement ()
 Stops measurement. More...
 

Properties

bool Active [get]
 

Events

MeasurementDataAvailable MeasurementDataAvailableEvent
 

Private Member Functions

void GeneratePulseData ()
 Generates an ECG pulse imitating the Q, R and S waves. More...
 
void measurementDataSendTimerTick (Object state)
 Handles measurement data timer ticks. Generates a new measurement data sequence consisting of flat line and ECG pulses generated in the GeneratePulseData method. The rate of ECG pulses is determined by the ppm value. More...
 
void UpdatePpm ()
 Updates ppm value by addin or substracting the ppmFluctuationRate from the current ppm. Keeps the ppm value inside the range defined by the maxPpm and the minPpm. More...
 
float LinearSlope (int x1, int x2, int y1, int y2)
 Calculates the slope of a linear function using two point on the line. More...
 
byte addNoiseToByte (byte b)
 Adds or substracts a random value between 0 and the noiseMagnitude from the argument. Returns the resulting byte. More...
 

Private Attributes

MeasurementInstrumentDto activeMeasurementInstrument
 
Timer measurementPublishTimer
 
Random randomSource
 
int measurementPacketIntervalMilliSeconds = 1000
 
int measurementPacketIntervalSeconds
 
int measurementPacketSequence
 
byte zeroLevel = 70
 
byte[] pulseData
 
byte[] sampleOverflowData = null
 
int ppm = 75
 
int ppmFluctuationRate = 1
 
int minPpm = 50
 
int maxPpm = 185
 
int noiseMagnitude = 11
 
bool lastWasPulse = false
 
bool active = false
 

Detailed Description

Mock of a class that manages an active measurement session on a measurement instrument connested to the mobile device. Currently provides data conforming to the data structure parameters specified in the provided MeasurementInstrumentDto and imitating nomrmal ECG.

<author>Veli-Mikko Puupponen</author> Assumes the DataSampleSize to be 1 byte.

Constructor & Destructor Documentation

Halyri.Measurement.MeasurementManager.MeasurementManager ( MeasurementInstrumentDto  instrument)

Initializes a new mock MeasurementManager instance that provides mock samples conforming to the data parameters specified by the provided instrument.

Parameters
instrumentInstrument used as data parameter source

Member Function Documentation

byte Halyri.Measurement.MeasurementManager.addNoiseToByte ( byte  b)
private

Adds or substracts a random value between 0 and the noiseMagnitude from the argument. Returns the resulting byte.

Parameters
bThe byte to which the random value is added
Returns
The resulting byte
void Halyri.Measurement.MeasurementManager.GeneratePulseData ( )
private

Generates an ECG pulse imitating the Q, R and S waves.

float Halyri.Measurement.MeasurementManager.LinearSlope ( int  x1,
int  x2,
int  y1,
int  y2 
)
private

Calculates the slope of a linear function using two point on the line.

Parameters
x1x coordinate of the first point
x2x coordinate of the second point
y1y coordinate of the first point
y2y coordinate of the second point
Returns
void Halyri.Measurement.MeasurementManager.measurementDataSendTimerTick ( Object  state)
private

Handles measurement data timer ticks. Generates a new measurement data sequence consisting of flat line and ECG pulses generated in the GeneratePulseData method. The rate of ECG pulses is determined by the ppm value.

Fires the MeasurementDataAvailableEvent.

Parameters
stateState of the invoking timer instance.
void Halyri.Measurement.MeasurementManager.StartMeasurement ( )

Starts generating mock ECG data. MeasurementDataAvailableEvent is fired every time new measurement data sample is available.

void Halyri.Measurement.MeasurementManager.StopMeasurement ( )

Stops measurement.

void Halyri.Measurement.MeasurementManager.UpdatePpm ( )
private

Updates ppm value by addin or substracting the ppmFluctuationRate from the current ppm. Keeps the ppm value inside the range defined by the maxPpm and the minPpm.

Member Data Documentation

bool Halyri.Measurement.MeasurementManager.active = false
private
MeasurementInstrumentDto Halyri.Measurement.MeasurementManager.activeMeasurementInstrument
private
bool Halyri.Measurement.MeasurementManager.lastWasPulse = false
private
int Halyri.Measurement.MeasurementManager.maxPpm = 185
private
int Halyri.Measurement.MeasurementManager.measurementPacketIntervalMilliSeconds = 1000
private
int Halyri.Measurement.MeasurementManager.measurementPacketIntervalSeconds
private
int Halyri.Measurement.MeasurementManager.measurementPacketSequence
private
Timer Halyri.Measurement.MeasurementManager.measurementPublishTimer
private
int Halyri.Measurement.MeasurementManager.minPpm = 50
private
int Halyri.Measurement.MeasurementManager.noiseMagnitude = 11
private
int Halyri.Measurement.MeasurementManager.ppm = 75
private
int Halyri.Measurement.MeasurementManager.ppmFluctuationRate = 1
private
byte [] Halyri.Measurement.MeasurementManager.pulseData
private
Random Halyri.Measurement.MeasurementManager.randomSource
private
byte [] Halyri.Measurement.MeasurementManager.sampleOverflowData = null
private
byte Halyri.Measurement.MeasurementManager.zeroLevel = 70
private

Property Documentation

bool Halyri.Measurement.MeasurementManager.Active
get

Event Documentation

MeasurementDataAvailable Halyri.Measurement.MeasurementManager.MeasurementDataAvailableEvent

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