Serial Wombat 18AB Firmware
SerialWombat18A_18B.X
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
{
33
INPUT_FILTER_MODE_NONE
= 0,
34
INPUT_FILTER_MODE_FIRST_ORDER
= 1,
35
INPUT_FILTER_MODE_AVERAGE
= 2,
36
37
38
}
INPUT_FILTER_MODE_t
;
39
40
typedef
enum
41
{
42
INPUT_TRANSFORM_MODE_NONE
= 0,
43
INPUT_TRANSFORM_MODE_SCALE_RANGE
= 1,
44
INPUT_TRANSFORM_MODE_LINEAR_MXB
= 2,
45
}
INPUT_TRANSFORM_MODE_t
;
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
;
57
uint16_t
samplesAddedToSum
;
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;
87
}
inputProcess_t
;
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
Generated by
1.8.17