Serial Wombat 18AB Firmware
inputProcess.h
Go to the documentation of this file.
1 /*
2 Copyright 2020-2021 Broadwell Consulting Inc.
3 
4 Permission is hereby granted, free of charge, to any person obtaining a
5  * copy of this software and associated documentation files (the "Software"),
6  * to deal in the Software without restriction, including without limitation
7  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
8  * and/or sell copies of the Software, and to permit persons to whom the
9  * Software is furnished to do so, subject to the following conditions:
10 
11 The above copyright notice and this permission notice shall be included in
12  * all copies or substantial portions of the Software.
13 
14 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
17  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
18  * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
19  * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
20  * OTHER DEALINGS IN THE SOFTWARE.
21 
22  Serial Wombat is a trademark of Broadwell Consulting Inc.
23 */
24 
25 #ifndef _INPUT_PROCESS_
26 #define _INPUT_PROCESS_
27 
28 #include <stdint.h>
29 #include "serialWombat.h"
30 
31 typedef enum
32 {
36 
37 
39 
40 typedef enum
41 {
46 
47 typedef struct inputProcess_n
48 {
49 
50  struct {
51  uint16_t filteredValue;
52  uint16_t filterconstant;
53  }firstOrder;
54  struct {
55  uint32_t sum;
56  uint16_t samplesToAverage;
58  uint16_t average;
59  }average;
60  union{
61  int16_t transform_i16[6];
62  uint16_t transform_u16[6];
63  uint8_t transform_bytes[12];
64  struct{
65  int32_t m;
66  int32_t b;
67  }mxb;
68  struct{
69  uint16_t low;
70  uint16_t high;
71  }scaleRange;
72  };
73  uint16_t lastInput;
74  uint16_t excludeBelow;
75  uint16_t excludeAbove;
76  uint16_t min;
77  uint16_t max;
78  uint16_t queue;
79  uint8_t filterMode;
80  uint8_t transformMode;
81  uint8_t invert:1;
82  uint8_t active:1;
83  uint8_t initialized:1;
84  uint8_t queueHighByte:1;
85  uint8_t queueLowByte:1;
86  uint8_t queueFrequency:4;
88 
89 void inputProcessInit(inputProcess_t* inputProcess);
90 uint16_t inputProcessProcess(inputProcess_t* inputProcess, uint16_t inputValue);
91 void inputProcessCommProcess(inputProcess_t* inputProcess);
92 #endif
INPUT_TRANSFORM_MODE_LINEAR_MXB
@ INPUT_TRANSFORM_MODE_LINEAR_MXB
Definition: inputProcess.h:44
inputProcess_n::sum
uint32_t sum
Definition: inputProcess.h:55
INPUT_TRANSFORM_MODE_SCALE_RANGE
@ INPUT_TRANSFORM_MODE_SCALE_RANGE
Definition: inputProcess.h:43
inputProcess_n::active
uint8_t active
Definition: inputProcess.h:82
inputProcess_n::mxb
struct inputProcess_n::@2::@4 mxb
inputProcess_n::queue
uint16_t queue
Definition: inputProcess.h:78
inputProcess_n::samplesAddedToSum
uint16_t samplesAddedToSum
Definition: inputProcess.h:57
inputProcess_n::excludeAbove
uint16_t excludeAbove
Definition: inputProcess.h:75
inputProcess_n::queueLowByte
uint8_t queueLowByte
Definition: inputProcess.h:85
inputProcessInit
void inputProcessInit(inputProcess_t *inputProcess)
Definition: inputProcess.c:24
INPUT_FILTER_MODE_FIRST_ORDER
@ INPUT_FILTER_MODE_FIRST_ORDER
Definition: inputProcess.h:34
inputProcess_n::b
int32_t b
Definition: inputProcess.h:66
INPUT_FILTER_MODE_t
INPUT_FILTER_MODE_t
Definition: inputProcess.h:31
inputProcessProcess
uint16_t inputProcessProcess(inputProcess_t *inputProcess, uint16_t inputValue)
Definition: inputProcess.c:64
inputProcess_n::transform_i16
int16_t transform_i16[6]
Definition: inputProcess.h:61
inputProcess_n::transformMode
uint8_t transformMode
Definition: inputProcess.h:80
inputProcess_n::initialized
uint8_t initialized
Definition: inputProcess.h:83
INPUT_FILTER_MODE_AVERAGE
@ INPUT_FILTER_MODE_AVERAGE
Definition: inputProcess.h:35
inputProcess_n::transform_u16
uint16_t transform_u16[6]
Definition: inputProcess.h:62
serialWombat.h
inputProcess_n::m
int32_t m
Definition: inputProcess.h:65
inputProcess_n::filterMode
uint8_t filterMode
Definition: inputProcess.h:79
INPUT_TRANSFORM_MODE_t
INPUT_TRANSFORM_MODE_t
Definition: inputProcess.h:40
inputProcess_n::samplesToAverage
uint16_t samplesToAverage
Definition: inputProcess.h:56
inputProcess_n::average
uint16_t average
Definition: inputProcess.h:58
inputProcess_n::excludeBelow
uint16_t excludeBelow
Definition: inputProcess.h:74
inputProcess_n::queueFrequency
uint8_t queueFrequency
Definition: inputProcess.h:86
inputProcess_n::queueHighByte
uint8_t queueHighByte
Definition: inputProcess.h:84
inputProcess_n::high
uint16_t high
Definition: inputProcess.h:70
inputProcess_n::filterconstant
uint16_t filterconstant
Definition: inputProcess.h:52
inputProcess_t
struct inputProcess_n inputProcess_t
inputProcess_n::lastInput
uint16_t lastInput
Definition: inputProcess.h:73
inputProcess_n::invert
uint8_t invert
Definition: inputProcess.h:81
inputProcess_n::max
uint16_t max
Definition: inputProcess.h:77
inputProcess_n::scaleRange
struct inputProcess_n::@2::@5 scaleRange
INPUT_TRANSFORM_MODE_NONE
@ INPUT_TRANSFORM_MODE_NONE
Definition: inputProcess.h:42
inputProcess_n::transform_bytes
uint8_t transform_bytes[12]
Definition: inputProcess.h:63
inputProcess_n::min
uint16_t min
Definition: inputProcess.h:76
inputProcess_n::filteredValue
uint16_t filteredValue
Definition: inputProcess.h:51
INPUT_FILTER_MODE_NONE
@ INPUT_FILTER_MODE_NONE
Definition: inputProcess.h:33
inputProcess_n::firstOrder
struct inputProcess_n::@0 firstOrder
inputProcess_n
Definition: inputProcess.h:47
inputProcess_n::low
uint16_t low
Definition: inputProcess.h:69
inputProcessCommProcess
void inputProcessCommProcess(inputProcess_t *inputProcess)
Definition: inputProcess.c:227