ASensor
 All Classes Functions Pages
MeasurementNode.h
1 #pragma once
2 /*
3  ASensor - Sensor library. Can be used standalone or in conjunction with AWind library
4  Copyright (C)2015 Andrei Degtiarev. All right reserved
5 
6  You can always find the latest version of the library at
7  https://github.com/AndreiDegtiarev/ASensor
8 
9  This library is free software; you can redistribute it and/or
10  modify it under the terms of the MIT license.
11  Please see the included documents for further information.
12 */
13 #include "LinkedList.h"
14 #include "ICriticalProcess.h"
15 #include "Transceiver.h"
18 {
19  LinkedList<SensorManager> &_sensors;
20  ICriticalProcess *_criticalProcess;
21 
22  Transceiver *_radio;
23  const __FlashStringHelper *_nodeID;
24 public:
26 
30  MeasurementNode(LinkedList<SensorManager> &sensors,Transceiver *tranceiver):_sensors(sensors)
31  {
32  //_radio= new NRF24Transceiver(8,9);
33  _radio= tranceiver;
34  _criticalProcess = NULL;
35  }
37  void SetID(const __FlashStringHelper *nodeID)
38  {
39  _nodeID=nodeID;
40  }
42  void Initialize()
43  {
44  if(_radio!=NULL)
45  _radio->setup();
46  }
48  void SetCriticalProcess(ICriticalProcess *criticalProcess)
49  {
50  _criticalProcess=criticalProcess;
51  }
53  bool Measure()
54  {
55  bool retCode=false;
56  for(int i=0;i<_sensors.Count();i++)
57  {
58  if(_criticalProcess!=NULL)
59  _criticalProcess->Idle();
60  if(_sensors[i]->IsReadyForMeasurement())
61  {
62  _sensors[i]->Measure();
63  retCode = true;
64  }
65  }
66  return retCode;
67  }
69  bool IsChanged()
70  {
71  for(int i=0;i<_sensors.Count();i++)
72  if(_sensors[i]->IsChanged())
73  {
74  return true;
75  }
76  return false;
77  }
79  void SendData()
80  {
81  for(int i=0;i<_sensors.Count();i++)
82  {
83  SensorManager *sensorManager=_sensors[i];
84  if(sensorManager->Status()!=Error)
85  {
86  if(_radio!=NULL)
87  _radio->send_data(_nodeID,sensorManager->Sensor()->Name(),sensorManager->GetData());
88  }
89  }
90  }
92  void LogResults()
93  {
94  for(int i=0;i<_sensors.Count();i++)
95  {
96  SensorManager *sensorManager=_sensors[i];
97  out<<sensorManager->Sensor()->Name()<<F(": ");
98  if(sensorManager->Status()!=Error)
99  out<<sensorManager->GetData();
100  else
101  out<<F("error");
102  out<<F("; ");
103  }
104  out<<endln;
105  }
107  void SetupPLXLog()
108  {
109  out<<F("CLEARDATA")<<endln;
110  out<<F("LABEL,Time,");
111  for(int i=0;i<_sensors.Count();i++)
112  {
113  SensorManager *sensorManager=_sensors[i];
114  out<<sensorManager->Sensor()->Name();
115  if(i<_sensors.Count()-1)
116  out<<F(",");
117  }
118  out<<endln;
119  }
120  void LogResultsPLX()
121  {
122  out<<"DATA,TIME,";
123  for(int i=0;i<_sensors.Count();i++)
124  {
125  SensorManager *sensorManager=_sensors[i];
126  if(sensorManager->Status()!=Error)
127  out<<sensorManager->GetData();
128  else
129  out<<F("error");
130  if(i<_sensors.Count()-1)
131  out<<",";
132  }
133  out<<endln;
134  }
135 
136 };
void SetupPLXLog()
Very usefull excel logging tool https://www.parallax.com/downloads/plx-daq.
Definition: MeasurementNode.h:107
Base class for Transceiver objects (like NRF24Transceiver)
Definition: Transceiver.h:15
bool Measure()
Perfroms measurements over all sensors.
Definition: MeasurementNode.h:53
Measurement node controls measurement process between different sensors.
Definition: MeasurementNode.h:17
void SetID(const __FlashStringHelper *nodeID)
Sets node id. The id is sended to the receiver.
Definition: MeasurementNode.h:37
void Initialize()
Setups radio module.
Definition: MeasurementNode.h:42
MeasurementNode(LinkedList< SensorManager > &sensors, Transceiver *tranceiver)
Constructor.
Definition: MeasurementNode.h:30
bool IsChanged()
Return true if during the last measurement step at least one sensor contains data that differ from pr...
Definition: MeasurementNode.h:69
void SendData()
Sends data over radio module.
Definition: MeasurementNode.h:79
void SetCriticalProcess(ICriticalProcess *criticalProcess)
Sets pointer to the critical process like touch management.
Definition: MeasurementNode.h:48
void LogResults()
Logs last measurement results.
Definition: MeasurementNode.h:92