static constexpr adc_sample_value_id_t getChannelLength()
Get number of samples for each channel in a buffer.
Definition: cs_AdcBuffer.h:109
Circular Buffer implementation.
Definition: cs_CircularBuffer.h:27
Authors: Crownstone Team Copyright: Crownstone (https://crownstone.rocks) Date: March 23,...
Definition: cs_RecognizeSwitch.h:13
float _thresholdSimilar
Definition: cs_RecognizeSwitch.h:26
void configure(float threshold)
Configure threshold.
void getLastDetection(PowerSamplesType type, uint8_t index, cs_result_t &result)
Get the samples of the last (almost) detected switch event.
float _thresholdDifferent
Definition: cs_RecognizeSwitch.h:23
bool detect(const CircularBuffer< adc_buffer_id_t > &bufQueue, adc_channel_id_t voltageChannelId)
Recognize switch event.
bool ignoreSample(const adc_sample_value_t value0, const adc_sample_value_t value1, const adc_sample_value_t value2)
void init()
Initialize: set initial values and allocate buffers.
void skip(uint16_t num)
Don't detect anything for num detect() calls.
cs_power_samples_header_t _lastAlmostDetection
Definition: cs_RecognizeSwitch.h:37
bool ignoreSample(const adc_sample_value_t value1, const adc_sample_value_t value2)
void setLastDetection(bool aboveThreshold, const CircularBuffer< adc_buffer_id_t > &bufQueue, adc_channel_id_t voltageChannelId)
FoundSwitch detect(const CircularBuffer< adc_buffer_id_t > &bufQueue, adc_channel_id_t voltageChannelId, uint8_t iteration)
Check if a switch is detected in the given buffers.
cs_power_samples_header_t _lastDetection
Definition: cs_RecognizeSwitch.h:36
void deinit()
Deinitialize: deallocate buffers.
void stop()
Stop detecting.
RecognizeSwitch()
Constructor: sets some default config values.
FoundSwitch detectSwitch(const CircularBuffer< adc_buffer_id_t > &bufQueue, adc_channel_id_t voltageChannelId)
Check if a switch is detected in the given buffers.
int16_t _lastAlmostDetectionSamples[_numStoredBuffers *AdcBuffer::getChannelLength()]
Definition: cs_RecognizeSwitch.h:39
static const uint8_t _numBuffersRequired
Definition: cs_RecognizeSwitch.h:31
static const uint8_t _numStoredBuffers
Definition: cs_RecognizeSwitch.h:33
int16_t _lastDetectionSamples[_numStoredBuffers *AdcBuffer::getChannelLength()]
Definition: cs_RecognizeSwitch.h:38
FoundSwitch
Definition: cs_RecognizeSwitch.h:41
@ False
Definition: cs_RecognizeSwitch.h:41
@ Almost
Definition: cs_RecognizeSwitch.h:41
@ True
Definition: cs_RecognizeSwitch.h:41
bool _running
Definition: cs_RecognizeSwitch.h:16
void start()
Start detecting.
float _thresholdRatio
Definition: cs_RecognizeSwitch.h:29
float calcDiff(const CircularBuffer< adc_buffer_id_t > &bufQueue, const adc_channel_id_t voltageChannelId, const adc_buffer_id_t bufIndex1, const adc_buffer_id_t bufIndex2, const adc_sample_value_id_t startIndex, const adc_sample_value_id_t numSamples)
uint8_t _skipSwitchDetectionTriggers
Definition: cs_RecognizeSwitch.h:20
static RecognizeSwitch & getInstance()
Definition: cs_RecognizeSwitch.h:79
#define SWITCHCRAFT_THRESHOLD
Definition: cs_Config.h:193
PowerSamplesType
Definition: cs_Packets.h:455
uint8_t adc_buffer_id_t
Definition: cs_Typedefs.h:30
int16_t adc_sample_value_t
Definition: cs_Typedefs.h:34
uint8_t adc_channel_id_t
Definition: cs_Typedefs.h:31
uint16_t adc_sample_value_id_t
Definition: cs_Typedefs.h:33
Definition: cs_PacketsInternal.h:46