Serial Wombat Arduino Library
SerialWombatAbstractProcessedInput.h
Go to the documentation of this file.
1 #pragma once
2 /*
3 Copyright 2021 Broadwell Consulting Inc.
4 
5 "Serial Wombat" is a registered trademark of Broadwell Consulting Inc. in
6 the United States. See SerialWombat.com for usage guidance.
7 
8 Permission is hereby granted, free of charge, to any person obtaining a
9  * copy of this software and associated documentation files (the "Software"),
10  * to deal in the Software without restriction, including without limitation
11  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
12  * and/or sell copies of the Software, and to permit persons to whom the
13  * Software is furnished to do so, subject to the following conditions:
14 
15 The above copyright notice and this permission notice shall be included in
16  * all copies or substantial portions of the Software.
17 
18 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
21  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
22  * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
23  * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
24  * OTHER DEALINGS IN THE SOFTWARE.
25 */
26 
27 #include "SerialWombat.h"
28 #include "limits.h"
29 
80 {
81 public:
86 
87 
88  enum Period {
100 
101  };
102 
103  enum OutputValue {
104  RAW = 0,
106  AVERAGE = 2,
107  };
108 
109  enum Transform {
110  NONE = 0,
113  };
114 
120  int16_t writeInverted(bool inverted);
121 
140  int16_t writeFirstOrderFilteringConstant(uint16_t constant);
141 
150  int16_t writeAveragingNumberOfSamples(uint16_t numberOfSamples);
151 
161  int16_t writeExcludeBelowAbove(uint16_t low, uint16_t high);
162 
163 
177  int16_t configureQueue(SerialWombatQueue* queue, Period period, bool queueHighByte = true, bool queueLowByte = true);
178 
182  int16_t configureOutputValue(OutputValue outputValue);
183 
197  int16_t writeTransformScaleRange(uint16_t min, uint16_t max);
198 
205  //
211  int16_t writeTransformLinearMXB(int32_t m, int32_t b);
212 
215  int16_t writeProcessedInputEnable(bool enabled);
216 
217 
223  uint16_t readMinimum(bool resetAfterRead = false);
229  uint16_t readMaximum(bool resetAfterRead = false);
230 
235  uint16_t readAverage();
236 
240  uint16_t readFiltered();
241 
243  virtual uint8_t pin() = 0;
244 
246  virtual uint8_t swPinModeNumber() = 0;
247 
248 private:
249  SerialWombatChip& _pisw;
250 };
251 
252 
SerialWombatAbstractProcessedInput::PERIOD_4mS
@ PERIOD_4mS
Definition: SerialWombatAbstractProcessedInput.h:91
SerialWombatChip
Class for a Serial Wombat chip. Each Serial Wombat chip on a project should have its own instance.
Definition: SerialWombat.h:272
SerialWombatAbstractProcessedInput::readFiltered
uint16_t readFiltered()
Retreive the filtered value.
Definition: SerialWombatAbstractProcessedInput.cpp:76
SerialWombatAbstractProcessedInput::SCALE_RANGE
@ SCALE_RANGE
Scale the input signal to a 0-65535 value based on input high and low limits.
Definition: SerialWombatAbstractProcessedInput.h:111
SerialWombatAbstractProcessedInput::NONE
@ NONE
Don't transform the input signal.
Definition: SerialWombatAbstractProcessedInput.h:110
SerialWombatAbstractProcessedInput::writeFirstOrderFilteringConstant
int16_t writeFirstOrderFilteringConstant(uint16_t constant)
Set a first order filtering constant to be applied to the signal Higher is heavier filtering.
Definition: SerialWombatAbstractProcessedInput.cpp:108
SerialWombatAbstractProcessedInput::readMinimum
uint16_t readMinimum(bool resetAfterRead=false)
Retreive the maximum public data output value since the last call with reset= true.
Definition: SerialWombatAbstractProcessedInput.cpp:23
SerialWombatAbstractProcessedInput::pin
virtual uint8_t pin()=0
Used for inheritance.
SerialWombatAbstractProcessedInput::RAW
@ RAW
Use the unfiltered signal for the pin's public data.
Definition: SerialWombatAbstractProcessedInput.h:104
SerialWombatAbstractProcessedInput::configureOutputValue
int16_t configureOutputValue(OutputValue outputValue)
Configures whether the pin's public data value is averaged, filtered, or neither.
Definition: SerialWombatAbstractProcessedInput.cpp:164
SerialWombatAbstractProcessedInput::Transform
Transform
Definition: SerialWombatAbstractProcessedInput.h:109
SerialWombatAbstractProcessedInput::PERIOD_1mS
@ PERIOD_1mS
Definition: SerialWombatAbstractProcessedInput.h:89
SerialWombatAbstractProcessedInput::PERIOD_512mS
@ PERIOD_512mS
Definition: SerialWombatAbstractProcessedInput.h:98
SerialWombatAbstractProcessedInput::PERIOD_128mS
@ PERIOD_128mS
Definition: SerialWombatAbstractProcessedInput.h:96
SerialWombatAbstractProcessedInput::PERIOD_8mS
@ PERIOD_8mS
Definition: SerialWombatAbstractProcessedInput.h:92
SerialWombatAbstractProcessedInput::PERIOD_32mS
@ PERIOD_32mS
Definition: SerialWombatAbstractProcessedInput.h:94
SerialWombatAbstractProcessedInput::writeExcludeBelowAbove
int16_t writeExcludeBelowAbove(uint16_t low, uint16_t high)
Sets input value ranges which are discarded rather than processed.
Definition: SerialWombatAbstractProcessedInput.cpp:135
SerialWombatAbstractProcessedInput::PERIOD_16mS
@ PERIOD_16mS
Definition: SerialWombatAbstractProcessedInput.h:93
SerialWombatAbstractProcessedInput::writeAveragingNumberOfSamples
int16_t writeAveragingNumberOfSamples(uint16_t numberOfSamples)
Set a number of samples to average for each update of the downstream signal.
Definition: SerialWombatAbstractProcessedInput.cpp:120
SerialWombatAbstractProcessedInput::PERIOD_64mS
@ PERIOD_64mS
Definition: SerialWombatAbstractProcessedInput.h:95
SerialWombat.h
SerialWombatAbstractProcessedInput::swPinModeNumber
virtual uint8_t swPinModeNumber()=0
Used for ineheritance.
SerialWombatAbstractProcessedInput::OutputValue
OutputValue
Definition: SerialWombatAbstractProcessedInput.h:103
SerialWombatAbstractProcessedInput::LINEAR_MXB
@ LINEAR_MXB
Scale the input signal based on a linear mx+b equation.
Definition: SerialWombatAbstractProcessedInput.h:112
SerialWombatAbstractProcessedInput::AVERAGE
@ AVERAGE
Use an averaged signal for the pin's public data (updates less often)
Definition: SerialWombatAbstractProcessedInput.h:106
SerialWombatAbstractProcessedInput::readMaximum
uint16_t readMaximum(bool resetAfterRead=false)
Retreive the minimum public data output value since the last call with reset= true.
Definition: SerialWombatAbstractProcessedInput.cpp:41
SerialWombatAbstractProcessedInput::PERIOD_1024mS
@ PERIOD_1024mS
Definition: SerialWombatAbstractProcessedInput.h:99
SerialWombatAbstractProcessedInput::configureQueue
int16_t configureQueue(SerialWombatQueue *queue, Period period, bool queueHighByte=true, bool queueLowByte=true)
Sets up the queueing feature for this pin mode. Queue must have been initialized prior to this queue.
Definition: SerialWombatAbstractProcessedInput.cpp:150
SerialWombatAbstractProcessedInput::writeInverted
int16_t writeInverted(bool inverted)
if enabled subtract the input value from 65535 before doing any other processing.
Definition: SerialWombatAbstractProcessedInput.cpp:93
SerialWombatAbstractProcessedInput
SerialWombatAnalogInput, SerialWombatPulseTimer, SerialWombatResistanceInput and others inherit from ...
Definition: SerialWombatAbstractProcessedInput.h:79
SerialWombatAbstractProcessedInput::PERIOD_2mS
@ PERIOD_2mS
Definition: SerialWombatAbstractProcessedInput.h:90
SerialWombatAbstractProcessedInput::SerialWombatAbstractProcessedInput
SerialWombatAbstractProcessedInput(SerialWombatChip &sw)
Constructor for the SerialWombatAbstractScaledOutput Class.
Definition: SerialWombatAbstractProcessedInput.cpp:3
SerialWombatAbstractProcessedInput::readAverage
uint16_t readAverage()
Retreive the last completed averaged value.
Definition: SerialWombatAbstractProcessedInput.cpp:59
SerialWombatAbstractProcessedInput::writeTransformLinearMXB
int16_t writeTransformLinearMXB(int32_t m, int32_t b)
Scale incoming values based on an mx+b linear equation.
Definition: SerialWombatAbstractProcessedInput.cpp:194
SerialWombatAbstractProcessedInput::Period
Period
Definition: SerialWombatAbstractProcessedInput.h:88
SerialWombatQueue
A Class representing a Queue in the User Ram area on the Serial Wombat Chip.
Definition: SerialWombatQueue.h:39
SerialWombatAbstractProcessedInput::writeProcessedInputEnable
int16_t writeProcessedInputEnable(bool enabled)
Enables or disables all input processing functions If disabled, the raw input value is placed directl...
Definition: SerialWombatAbstractProcessedInput.cpp:8
SerialWombatAbstractProcessedInput::PERIOD_256mS
@ PERIOD_256mS
Definition: SerialWombatAbstractProcessedInput.h:97
SerialWombatAbstractProcessedInput::FIRST_ORDER_FILTERED
@ FIRST_ORDER_FILTERED
Use a first order filtered signal for the pin's public data.
Definition: SerialWombatAbstractProcessedInput.h:105
SerialWombatAbstractProcessedInput::writeTransformScaleRange
int16_t writeTransformScaleRange(uint16_t min, uint16_t max)
Scale incoming values to a range of 0 to 65535.
Definition: SerialWombatAbstractProcessedInput.cpp:179