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 
37 {
38 public:
43 
44 
45  enum Frequency {
46  FREQ_1Hz = 0,
47  FREQ_2Hz = 1,
48  FREQ_4Hz = 2,
49  FREQ_8Hz = 3,
50  FREQ_16Hz = 4,
51  FREQ_32Hz = 5,
52  FREQ_64Hz = 6,
57 
58  };
59 
60  enum OutputValue {
61  RAW = 0,
62  AVERAGE = 1,
64  };
65 
66  enum Transform {
67  NONE = 0,
70  };
71  int16_t writeInverted(bool inverted);
72  int16_t writeFirstOrderFilteringConstant(uint16_t constant);
73  int16_t writeAveragingNumberOfSamples(uint16_t numberOfSamples);
74  int16_t writeExcludeBelowAbove(uint16_t low, uint16_t high);
75  int16_t configureQueue(SerialWombatQueue* queue, Frequency frequency, bool queueHighByte = true, bool queueLowByte = true);
76  int16_t configureOutputValue(OutputValue outputValue);
77  int16_t configureTransformScaleRange(uint16_t min, uint16_t max);
78  int16_t configureTransformLinearMXB(int32_t m, int32_t b);
79  int16_t writeProcessedInputEnable(bool enabled);
80  uint16_t readMinimum(bool reset = false);
81  uint16_t readMaximum(bool reset = false);
82  uint16_t readAverage();
83  uint16_t readFiltered();
84  virtual uint8_t pin() = 0;
85  virtual uint8_t swPinModeNumber() = 0;
86 
87 private:
88  SerialWombatChip& _pisw;
89 };
90 
91 
SerialWombatAbstractProcessedInput::readMinimum
uint16_t readMinimum(bool reset=false)
Definition: SerialWombatAbstractProcessedInput.cpp:23
SerialWombatAbstractProcessedInput::FREQ_4Hz
@ FREQ_4Hz
Definition: SerialWombatAbstractProcessedInput.h:48
SerialWombatAbstractProcessedInput::FREQ_1024Hz
@ FREQ_1024Hz
Definition: SerialWombatAbstractProcessedInput.h:56
SerialWombatChip
Class for a Serial Wombat chip. Each Serial Wombat chip on a project should have its own instance.
Definition: SerialWombat.h:265
SerialWombatAbstractProcessedInput::readFiltered
uint16_t readFiltered()
Definition: SerialWombatAbstractProcessedInput.cpp:76
SerialWombatAbstractProcessedInput::SCALE_RANGE
@ SCALE_RANGE
Definition: SerialWombatAbstractProcessedInput.h:68
SerialWombatAbstractProcessedInput::NONE
@ NONE
Definition: SerialWombatAbstractProcessedInput.h:67
SerialWombatAbstractProcessedInput::writeFirstOrderFilteringConstant
int16_t writeFirstOrderFilteringConstant(uint16_t constant)
Definition: SerialWombatAbstractProcessedInput.cpp:108
SerialWombatAbstractProcessedInput::pin
virtual uint8_t pin()=0
SerialWombatAbstractProcessedInput::RAW
@ RAW
Definition: SerialWombatAbstractProcessedInput.h:61
SerialWombatAbstractProcessedInput::configureOutputValue
int16_t configureOutputValue(OutputValue outputValue)
Definition: SerialWombatAbstractProcessedInput.cpp:166
SerialWombatAbstractProcessedInput::Transform
Transform
Definition: SerialWombatAbstractProcessedInput.h:66
SerialWombatAbstractProcessedInput::FREQ_512Hz
@ FREQ_512Hz
Definition: SerialWombatAbstractProcessedInput.h:55
SerialWombatAbstractProcessedInput::FREQ_16Hz
@ FREQ_16Hz
Definition: SerialWombatAbstractProcessedInput.h:50
SerialWombatAbstractProcessedInput::configureTransformLinearMXB
int16_t configureTransformLinearMXB(int32_t m, int32_t b)
Definition: SerialWombatAbstractProcessedInput.cpp:196
SerialWombatAbstractProcessedInput::readMaximum
uint16_t readMaximum(bool reset=false)
Definition: SerialWombatAbstractProcessedInput.cpp:41
SerialWombatAbstractProcessedInput::writeExcludeBelowAbove
int16_t writeExcludeBelowAbove(uint16_t low, uint16_t high)
Definition: SerialWombatAbstractProcessedInput.cpp:135
SerialWombatAbstractProcessedInput::FREQ_128Hz
@ FREQ_128Hz
Definition: SerialWombatAbstractProcessedInput.h:53
SerialWombatAbstractProcessedInput::writeAveragingNumberOfSamples
int16_t writeAveragingNumberOfSamples(uint16_t numberOfSamples)
Definition: SerialWombatAbstractProcessedInput.cpp:120
SerialWombat.h
SerialWombatAbstractProcessedInput::swPinModeNumber
virtual uint8_t swPinModeNumber()=0
SerialWombatAbstractProcessedInput::OutputValue
OutputValue
Definition: SerialWombatAbstractProcessedInput.h:60
SerialWombatAbstractProcessedInput::FREQ_8Hz
@ FREQ_8Hz
Definition: SerialWombatAbstractProcessedInput.h:49
SerialWombatAbstractProcessedInput::configureQueue
int16_t configureQueue(SerialWombatQueue *queue, Frequency frequency, bool queueHighByte=true, bool queueLowByte=true)
Definition: SerialWombatAbstractProcessedInput.cpp:150
SerialWombatAbstractProcessedInput::FREQ_1Hz
@ FREQ_1Hz
Definition: SerialWombatAbstractProcessedInput.h:46
SerialWombatAbstractProcessedInput::LINEAR_MXB
@ LINEAR_MXB
Definition: SerialWombatAbstractProcessedInput.h:69
SerialWombatAbstractProcessedInput::FREQ_256Hz
@ FREQ_256Hz
Definition: SerialWombatAbstractProcessedInput.h:54
SerialWombatAbstractProcessedInput::FREQ_64Hz
@ FREQ_64Hz
Definition: SerialWombatAbstractProcessedInput.h:52
SerialWombatAbstractProcessedInput::AVERAGE
@ AVERAGE
Definition: SerialWombatAbstractProcessedInput.h:62
SerialWombatAbstractProcessedInput::configureTransformScaleRange
int16_t configureTransformScaleRange(uint16_t min, uint16_t max)
Definition: SerialWombatAbstractProcessedInput.cpp:181
SerialWombatAbstractProcessedInput::writeInverted
int16_t writeInverted(bool inverted)
Definition: SerialWombatAbstractProcessedInput.cpp:93
SerialWombatAbstractProcessedInput
SerialWombatAnalogInput, SerialWombatPulseTimer, SerialWombatResistanceInput and others inherit from ...
Definition: SerialWombatAbstractProcessedInput.h:36
SerialWombatAbstractProcessedInput::SerialWombatAbstractProcessedInput
SerialWombatAbstractProcessedInput(SerialWombatChip &sw)
Constructor for the SerialWombatAbstractScaledOutput Class.
Definition: SerialWombatAbstractProcessedInput.cpp:3
SerialWombatAbstractProcessedInput::readAverage
uint16_t readAverage()
Definition: SerialWombatAbstractProcessedInput.cpp:59
SerialWombatAbstractProcessedInput::FREQ_2Hz
@ FREQ_2Hz
Definition: SerialWombatAbstractProcessedInput.h:47
SerialWombatQueue
A Class representing a Queue in the User Ram area on the Serial Wombat Chip.
Definition: SerialWombatQueue.h:39
SerialWombatAbstractProcessedInput::Frequency
Frequency
Definition: SerialWombatAbstractProcessedInput.h:45
SerialWombatAbstractProcessedInput::FREQ_32Hz
@ FREQ_32Hz
Definition: SerialWombatAbstractProcessedInput.h:51
SerialWombatAbstractProcessedInput::writeProcessedInputEnable
int16_t writeProcessedInputEnable(bool enabled)
Definition: SerialWombatAbstractProcessedInput.cpp:8
SerialWombatAbstractProcessedInput::FIRST_ORDER_FILTERED
@ FIRST_ORDER_FILTERED
Definition: SerialWombatAbstractProcessedInput.h:63