annotate Small_CPU/Src/wireless.c @ 109:65a6e352ce08 FlipDisplay

Consider computer heading in case of a flipped display
author Ideenmodellierer
date Tue, 01 Jan 2019 21:00:55 +0100
parents 5f11787b4f42
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1 /**
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2 ******************************************************************************
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3 * @file wireless.c
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
4 * @author heinrichs weikamp gmbh
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
5 * @date 02-July-2015
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
6 * @version V0.0.2
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
7 * @since 24-March-2016
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
8 * @brief Data transfer via magnetic field using Manchester code
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
9 *
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
10 @verbatim
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
11 ==============================================================================
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
12 ##### How to use #####
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
13 ==============================================================================
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
14 history:
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
15 160324 V 0.0.2 für Bonex Sender (Only in old hardware. No longer supported)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
16
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
17
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
18 PA2 triggers to falling edge
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
19 PA1 triggers to rising edge
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
20 see baseCPU2.c definitions of ports for details
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
21 time base is the systick of CMSIS with SysTick->VAL for sub ms info
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
22
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
23
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
24 start id is 4 ms low (fall to rise time)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
25 old: followed by 2 ms high (but can continue with high on sending '0' next (Hi->Lo)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
26 160324: followed by bit 0: high to low of byte 1
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
27
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
28 even index numbers are falling edge
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
29 odd index numbers are rising edge
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
30
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
31 first bit ('1' or '0' can be evaluated with triggerTimeDiffArray[2] (falling edge)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
32 if it is much longer than 2ms than the first bit is '0'
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
33 if it is 2ms than it is '1'
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
34
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
35 // Manchester code: 1 = low to high; 0 = high to low;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
36 bits are either
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
37 rising edge at the middle of the bit transfer -> 1
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
38 falling edge at the middle of the bit transfer -> 0
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
39
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
40 an array is used with even index for falling and odd for rising
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
41 the next time difference array entry is set to 0 to identify the loss of any edge
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
42 the time index is stored as microseconds
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
43 and generated by systick and SysTick->VAL (that is counting down from ->LOAD)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
44
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
45 old: startTime is the first falling edge, hence the ver first falling edge of the start byte)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
46 160324: startTime is the first rising edge
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
47
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
48 160324: total transfer time (excluding start with 8 ms) 10*8*2ms + 2ms (stop bit) = 162 ms
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
49
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
50 Definition: first bit is always '0'
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
51 old: to recognize second start bit easily!
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
52 old: hence after 2 ms there is a falling edge!
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
53 160324: after 1 ms is a falling edge of first bit with value 0
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
54
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
55 160324:
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
56 Measurement of send data: length 162 ms including stop bit
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
57 81 bit
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
58
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
59 @endverbatim
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
60 ******************************************************************************
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
61 * @attention
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
62 *
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
63 * <h2><center>&copy; COPYRIGHT(c) 2016 heinrichs weikamp</center></h2>
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
64 *
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
65 ******************************************************************************
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
66 */
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
67 /* Includes ------------------------------------------------------------------*/
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
68 #include "stm32f4xx_hal.h"
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
69 #include "wireless.h"
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
70 #include "scheduler.h"
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
71
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
72 /* array starts with first falling edge
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
73 * old: beginning of first start byte,
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
74 * old: data starts on 3
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
75 * new: beginning of first bit that is always 0 -> high->low
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
76 * new: data starts on 0
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
77 */
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
78
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
79 #define ttdaSize (1200)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
80
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
81 #define TIMEOUTSIZE (20000)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
82
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
83 #define WIRELESS_OK (0)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
84 #define WIRELESS_FAIL (1)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
85
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
86 #define FALLING (0)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
87 #define RISING (1)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
88
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
89 //#define STEP_HALFBIT (1010)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
90 #define STEP_HALFBIT (1000)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
91 #define LIMIT_STARTBIT (5000)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
92 #define MIN_TIME_STARTBIT (3800)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
93 #define MAX_TIME_FIRST_STARTBIT (5200)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
94 #define MIN_TIME_BOTH_STARTBITS (MIN_TIME_STARTBIT + MIN_TIME_STARTBIT)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
95 #define MAX_TIME_BOTH_STARTBITS (MAX_TIME_FIRST_STARTBIT + 4200)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
96 // includes necessary start bit (2000 us) and timing issues
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
97 #define HELPER_MAX_DATA_LENGTH_TOLERANCE (10*STEP_HALFBIT)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
98 #define HELPER_MAX_DATA_BYTES (10) ///< 160324: 10, before 8
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
99 #define MAX_DATA_BITS (HELPER_MAX_DATA_BYTES*8)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
100 #define MAX_DATA_LENGTH ((STEP_HALFBIT*2*MAX_DATA_BITS) + HELPER_MAX_DATA_LENGTH_TOLERANCE)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
101
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
102 #define MAX_DIFF_IN_MS ((MAX_DATA_LENGTH+999)/1000)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
103
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
104 void wireless_reset(uint32_t timeMain, uint32_t timeSub);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
105
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
106 /* triggerTimeDiffArray in us with max 65 ms */
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
107
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
108 int32_t triggerNewArray[ttdaSize][2];
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
109
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
110 int32_t triggerNewArrayDebugStartBits[20][2];
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
111
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
112 //uint16_t triggerTimeDiffArray[ttdaSize];
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
113 uint16_t ttdaPointer;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
114 uint32_t startTimeMain;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
115
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
116 uint32_t subDivisorX1000;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
117 uint8_t blockDataCapture = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
118 uint8_t evaluateRequest = 0; ///<
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
119
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
120 uint8_t found_first_4ms_high = 0; ///<
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
121 uint8_t found_second_4ms_low = 0; ///<
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
122
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
123
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
124
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
125
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
126 // ===============================================================================
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
127 // wireless_init
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
128 /// @brief has to be called once to initialize the variables
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
129 // ===============================================================================
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
130 void wireless_init(void)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
131 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
132 subDivisorX1000 = SysTick->LOAD; ///< never changes
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
133 wireless_reset(0,0);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
134 ttdaPointer = 0; ///< is set back again by timeout or on error
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
135 blockDataCapture = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
136 //triggerTimeDiffArray[0] = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
137 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
138
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
139
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
140 /**
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
141 ******************************************************************************
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
142 * @brief RECORDING functions
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
143 * @author heinrichs weikamp gmbh
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
144 * @date 03-July-2015
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
145 * @version V0.0.1
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
146 * @since 03-July-2015
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
147 ******************************************************************************
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
148 */
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
149
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
150
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
151 // ===============================================================================
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
152 // wireless_getTime
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
153 /// @brief RECORDING
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
154 ///
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
155 /// @param
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
156 // ===============================================================================
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
157 void wireless_getTime(uint32_t *timeMain, uint32_t *timeSub)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
158 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
159 uint32_t timeSub2, timeMain2;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
160
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
161 *timeSub = SysTick->VAL;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
162 *timeMain = HAL_GetTick();
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
163 timeSub2 = SysTick->VAL;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
164 timeMain2 = HAL_GetTick();
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
165
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
166 /*
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
167 static uint32_t difference = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
168 if(ttdaPointer == 1)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
169 difference = 7; //& breakpoint
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
170 */
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
171
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
172 if((timeSub2 > *timeSub) && (timeMain2 == *timeMain))
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
173 *timeMain -= 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
174
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
175 *timeSub = subDivisorX1000 - *timeSub;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
176 *timeSub *= 1000;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
177 *timeSub /= subDivisorX1000;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
178 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
179
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
180
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
181
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
182 /* stored value _could be_ in multiples of 2 us
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
183 * to have 1000 for each byte
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
184 * 0000 is beginning of start bit (always 1)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
185 * 1000 is beginning of first bit (if timing is perfect, otherwise less or more)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
186 * ...
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
187 * XXXX000 is beginning of XXXX bit
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
188 *
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
189 */
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
190
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
191 // ===============================================================================
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
192 // wireless_time0keeper
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
193 /// @brief RECORDING
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
194 ///
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
195 /// @param
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
196 /// @return still in us
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
197 // ===============================================================================
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
198 int32_t wireless_time0keeper(uint8_t store1_or_diffOut0, uint32_t timeMain, uint32_t timeSub)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
199 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
200 static uint32_t storeMain = 0, storeSub = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
201
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
202 /* store time0 */
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
203 if(store1_or_diffOut0)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
204 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
205 storeMain = timeMain;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
206 storeSub = timeSub;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
207 return 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
208 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
209
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
210 /* evaluate time difference */
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
211 int32_t diff = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
212
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
213 if((timeMain < storeMain) || ((timeMain - storeMain) > MAX_DIFF_IN_MS))
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
214 return -1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
215
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
216 diff = timeMain - storeMain;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
217 diff *= 1000;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
218 diff += timeSub;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
219 diff -= storeSub;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
220
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
221 return diff;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
222 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
223
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
224
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
225 // ===============================================================================
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
226 // wireless_save_time0
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
227 /// @brief RECORDING
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
228 ///
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
229 /// @param
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
230 // ===============================================================================
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
231 void wireless_save_time0(uint32_t timeMain, uint32_t timeSub)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
232 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
233 wireless_time0keeper(1, timeMain, timeSub);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
234 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
235
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
236
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
237 // ===============================================================================
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
238 // wireless_get_time_since_time0
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
239 /// @brief RECORDING
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
240 ///
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
241 /// @param
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
242 /// @return
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
243 // ===============================================================================
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
244 int32_t wireless_get_time_since_time0(uint32_t timeMain, uint32_t timeSub)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
245 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
246 return wireless_time0keeper(0, timeMain, timeSub);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
247 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
248
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
249
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
250 // ===============================================================================
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
251 // wireless_get_time_since_previous
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
252 /// @brief RECORDING
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
253 ///
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
254 /// @param
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
255 /// @return
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
256 // ===============================================================================
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
257 int32_t wireless_get_time_since_previous(uint8_t fallingOrRising, uint32_t timeMain, uint32_t timeSub)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
258 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
259 int32_t absoluteTimeDiff = wireless_time0keeper(0, timeMain, timeSub);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
260
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
261 if(fallingOrRising == FALLING) // same array
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
262 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
263 return (absoluteTimeDiff - triggerNewArray[ttdaPointer][FALLING]);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
264 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
265 else
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
266 if(ttdaPointer > 0)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
267 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
268 return (absoluteTimeDiff - triggerNewArray[ttdaPointer - 1][RISING]);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
269 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
270 else // not possible
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
271 return -1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
272 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
273
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
274
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
275 // ===============================================================================
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
276 // wireless_reset
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
277 /// @brief RECORDING
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
278 ///
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
279 /// @param
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
280 // ===============================================================================
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
281 void wireless_reset(uint32_t timeMain, uint32_t timeSub)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
282 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
283 found_first_4ms_high = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
284 found_second_4ms_low = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
285 ttdaPointer = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
286 startTimeMain = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
287 evaluateRequest = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
288 wireless_save_time0(timeMain, timeSub);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
289 triggerNewArray[ttdaPointer][FALLING] = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
290 triggerNewArray[ttdaPointer][RISING] = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
291 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
292
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
293
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
294
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
295
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
296 // ===============================================================================
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
297 // wireless_trigger_FallingEdgeSignalHigh
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
298 /// @brief RECORDING
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
299 ///
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
300 // ===============================================================================
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
301 void wireless_trigger_FallingEdgeSignalHigh(void)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
302 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
303 uint32_t timeSub, timeMain;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
304 int32_t timeDifference;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
305
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
306 wireless_getTime(&timeMain, &timeSub);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
307
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
308 if((blockDataCapture) || (evaluateRequest == 1))
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
309 return;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
310
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
311 if(evaluateRequest == 2)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
312 wireless_reset(0, 0);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
313
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
314 if(!found_first_4ms_high) // trying to get first start 4ms
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
315 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
316 if(ttdaPointer == 0)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
317 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
318 wireless_reset(timeMain, timeSub);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
319 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
320 else
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
321 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
322 timeDifference = wireless_get_time_since_time0(timeMain, timeSub);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
323 if((timeDifference > 0) && (timeDifference <= LIMIT_STARTBIT))
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
324 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
325 triggerNewArray[ttdaPointer][0] = timeDifference;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
326 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
327 else
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
328 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
329 wireless_reset(timeMain, timeSub);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
330 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
331 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
332 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
333 else // here comes the very important time0 for all following data
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
334 if(!found_second_4ms_low) ///< the beginning of the very first is recorded here :-)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
335 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
336 timeDifference = wireless_get_time_since_time0(timeMain, timeSub);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
337 if((timeDifference > 0) && (timeDifference >= MIN_TIME_BOTH_STARTBITS) && (timeDifference <= MAX_TIME_BOTH_STARTBITS))
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
338 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
339 // now we are ready for data
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
340 for(int i=0;i<20;i++)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
341 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
342 if(i <= ttdaPointer)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
343 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
344 triggerNewArrayDebugStartBits[i][FALLING] = triggerNewArray[i][FALLING];
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
345 triggerNewArrayDebugStartBits[i][RISING] = triggerNewArray[i][FALLING];
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
346 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
347 else
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
348 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
349 triggerNewArrayDebugStartBits[i][FALLING] = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
350 triggerNewArrayDebugStartBits[i][RISING] = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
351 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
352 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
353 wireless_reset(timeMain, timeSub); ///< reset all including ttdaPointer and more
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
354 startTimeMain = timeMain; ///< set again
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
355 found_first_4ms_high = 1; ///< set again
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
356 found_second_4ms_low = 1; ///< set now: ready for recording
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
357 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
358 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
359 else
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
360 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
361 timeDifference = wireless_get_time_since_time0(timeMain, timeSub);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
362
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
363 if((timeDifference > MAX_DATA_LENGTH) || (ttdaPointer > (ttdaSize - 2)))
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
364 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
365 evaluateRequest = 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
366 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
367 else
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
368 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
369 triggerNewArray[ttdaPointer][FALLING] = timeDifference;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
370 triggerNewArray[ttdaPointer][RISING] = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
371 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
372 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
373 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
374
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
375
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
376 // ===============================================================================
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
377 // wireless_trigger_RisingEdgeSilence
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
378 /// @brief RECORDING
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
379 ///
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
380 // ===============================================================================
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
381 void wireless_trigger_RisingEdgeSilence(void)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
382 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
383 uint32_t timeSub, timeMain;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
384 int32_t timeDifference;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
385
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
386 wireless_getTime(&timeMain, &timeSub);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
387
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
388 if((blockDataCapture) || (evaluateRequest == 1))
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
389 return;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
390
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
391 if(evaluateRequest == 2)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
392 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
393 wireless_reset(0, 0);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
394 return; // Falling Edge first
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
395 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
396
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
397 timeDifference = wireless_get_time_since_time0(timeMain, timeSub);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
398
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
399 if(!found_first_4ms_high)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
400 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
401 if((timeDifference > 0) && (timeDifference <= MAX_TIME_FIRST_STARTBIT))
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
402 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
403 triggerNewArray[ttdaPointer++][RISING] = timeDifference;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
404 triggerNewArray[ttdaPointer][FALLING] = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
405
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
406 if(timeDifference >= MIN_TIME_STARTBIT) ///< start bit is the 4 ms
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
407 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
408 found_first_4ms_high = 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
409 found_second_4ms_low = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
410 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
411 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
412 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
413 else
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
414 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
415 if((timeDifference > MAX_DATA_LENGTH) || (ttdaPointer > (ttdaSize - 2)))
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
416 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
417 evaluateRequest = 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
418 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
419 else
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
420 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
421 triggerNewArray[ttdaPointer++][RISING] = timeDifference;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
422 triggerNewArray[ttdaPointer][FALLING] = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
423 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
424 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
425 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
426
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
427
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
428 // ===============================================================================
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
429 // wireless_position_next
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
430 /// @brief RECORDING
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
431 ///
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
432 /// @param
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
433 /// @return
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
434 // ===============================================================================
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
435 uint8_t wireless_position_next(uint16_t *ttdaPointerNow, uint8_t *typeNow)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
436 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
437 if(*typeNow == FALLING)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
438 *typeNow = RISING;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
439 else if(*ttdaPointerNow < (ttdaSize - 1))
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
440 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
441 *ttdaPointerNow += 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
442 *typeNow = FALLING;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
443 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
444 else
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
445 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
446 return WIRELESS_FAIL;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
447 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
448 return WIRELESS_OK;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
449
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
450 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
451
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
452
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
453 // ===============================================================================
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
454 // wireless_position_previous
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
455 /// @brief RECORDING
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
456 ///
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
457 /// @param
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
458 /// @return
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
459 // ===============================================================================
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
460 uint8_t wireless_position_previous(uint16_t *ttdaPointerNow, uint8_t *typeNow)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
461 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
462 if(*typeNow == RISING)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
463 *typeNow = FALLING;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
464 else if(*ttdaPointerNow > 0)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
465 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
466 *ttdaPointerNow -= 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
467 *typeNow = RISING;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
468 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
469 else
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
470 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
471 return WIRELESS_FAIL;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
472 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
473 return WIRELESS_OK;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
474 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
475
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
476
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
477 // ===============================================================================
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
478 // wireless_position_compare
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
479 /// @brief RECORDING
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
480 ///
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
481 /// @param
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
482 /// @return
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
483 // ===============================================================================
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
484 int8_t wireless_position_compare(uint16_t ttdaPointerLeft, uint8_t typeLeft, uint16_t ttdaPointerRight, uint8_t typeRight)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
485 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
486 if(ttdaPointerLeft < ttdaPointerRight)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
487 return -1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
488 else
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
489 if(ttdaPointerLeft > ttdaPointerRight)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
490 return 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
491 else
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
492 if(typeLeft < typeRight)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
493 return -1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
494 else
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
495 if(typeLeft > typeRight)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
496 return 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
497 else
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
498 return 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
499 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
500
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
501
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
502 // ===============================================================================
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
503 // wireless_debug
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
504 /// @brief
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
505 ///
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
506 /// @param
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
507 /// @return
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
508 // ===============================================================================
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
509 /* outlined because of errors while compiling
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
510 void wireless_debug(int8_t *adcData, uint16_t max_size_adc)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
511 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
512 // debug
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
513 uint32_t dataVisual[201];
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
514 uint8_t dataVisualValue[201];
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
515 int8_t dataVisualResult[201];
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
516
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
517 dataVisualValue[0] = 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
518
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
519 for(int i=0;i<201;i++)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
520 dataVisualResult[i] = -1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
521
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
522 for(int i=0;i<201-4;i +=4)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
523 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
524 dataVisualValue[i] = 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
525 dataVisualValue[i+1] = 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
526 dataVisualValue[i+2] = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
527 dataVisualValue[i+3] = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
528 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
529
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
530 dataVisual[0] = triggerNewArray[0][FALLING];
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
531
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
532 int j = 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
533 uint32_t valueStore = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
534 for(int i=0;i<50;i++)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
535 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
536 valueStore = triggerNewArray[i][FALLING];
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
537 dataVisual[j++] = valueStore;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
538 dataVisual[j++] = valueStore + 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
539 valueStore = triggerNewArray[i][RISING];
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
540 dataVisual[j++] = valueStore;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
541 dataVisual[j++] = valueStore + 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
542 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
543
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
544
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
545 if(max_size_adc > 0)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
546 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
547 int jStep = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
548 int jData = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
549 for(int i=0;i<201;i++)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
550 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
551 if(dataVisual[i] >= jStep)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
552 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
553 if(adcData[jData] > 0)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
554 dataVisualResult[i] = 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
555 else
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
556 dataVisualResult[i] = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
557 jStep += STEP_HALFBIT + STEP_HALFBIT;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
558 jData++;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
559 if(jData >= max_size_adc)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
560 break;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
561 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
562 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
563 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
564 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
565 */
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
566
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
567 // ===============================================================================
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
568 // wireless_debug_test_failed_AACCF1010203
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
569 /// @brief
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
570 ///
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
571 /// @param
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
572 /// @return
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
573 // ===============================================================================
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
574 uint8_t wireless_debug_test_failed_AACCF1010203(uint8_t *data)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
575 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
576 if(data[0] != 0xAA)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
577 return 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
578 if(data[1] != 0xCC)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
579 return 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
580 if(data[2] != 0xF1)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
581 return 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
582 if(data[3] != 0x01)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
583 return 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
584 if(data[4] != 0x02)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
585 return 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
586 if(data[5] != 0x03)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
587 return 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
588
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
589 return 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
590 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
591
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
592
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
593 // ===============================================================================
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
594 // wireless_check_crc_failed
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
595 /// @brief
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
596 ///
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
597 /// @param
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
598 /// @return
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
599 // ===============================================================================
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
600 uint8_t wireless_check_crc_failed(uint8_t *dataOut, uint8_t maxData)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
601 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
602 return (wireless_debug_test_failed_AACCF1010203(dataOut));
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
603 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
604
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
605
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
606 /**
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
607 ******************************************************************************
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
608 * @brief EVALUATION functions
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
609 * @author heinrichs weikamp gmbh
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
610 * @date 03-July-2015
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
611 * @version V0.0.2
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
612 * @since 14-July-2015
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
613 ******************************************************************************
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
614 */
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
615
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
616 // ===============================================================================
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
617 // wireless_time0keeper
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
618 /// @brief EVALUATION
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
619 ///
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
620 /// @param
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
621 /// @return
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
622 // ===============================================================================
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
623 uint8_t wireless_evaluate_internal_loop(uint8_t *dataOut, uint8_t maxData, int32_t shift, uint8_t *confidence)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
624 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
625 // variables
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
626 int iOut = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
627 int jAdc = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
628
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
629 int8_t adcData[MAX_DATA_BITS];
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
630 uint16_t adcPointer = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
631
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
632 int8_t bitLeft = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
633 int8_t bitRight = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
634
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
635 uint16_t ttdaPointerStart = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
636 uint16_t ttdaPointerEnd = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
637 uint8_t typeStart = RISING;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
638 uint8_t typeEnd = RISING;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
639 int32_t startTimeHalfBit = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
640 int32_t endTimeHalfBit = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
641 int32_t startOfThisPeak = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
642 int32_t endOfThisPeak = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
643 uint8_t wirelessErrorStatus = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
644 uint8_t timeToStop = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
645 int32_t valueSingle = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
646 int32_t halfbitTemp = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
647 int confidenceTemp = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
648
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
649 // safety end for all loops coming
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
650 triggerNewArray[ttdaPointer][RISING] = INT32_MAX;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
651
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
652 ttdaPointerStart = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
653 ttdaPointerEnd = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
654 typeStart = RISING;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
655 typeEnd = RISING;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
656 startTimeHalfBit = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
657 endTimeHalfBit = shift;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
658 adcPointer = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
659
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
660 while(!timeToStop)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
661 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
662 // start is latest start
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
663 ttdaPointerEnd = ttdaPointerStart;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
664 typeEnd = typeStart;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
665 for(int doItTwice=0;doItTwice<2;doItTwice++)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
666 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
667 startTimeHalfBit = endTimeHalfBit;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
668 endTimeHalfBit += STEP_HALFBIT;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
669 // find the end for this half bit; this will include values that continue to the next halfbit and negative values
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
670 while(triggerNewArray[ttdaPointerEnd][typeEnd] < endTimeHalfBit)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
671 wireless_position_next(&ttdaPointerEnd,&typeEnd);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
672
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
673 if(triggerNewArray[ttdaPointerEnd][typeEnd] == INT32_MAX)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
674 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
675 timeToStop = 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
676 break;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
677 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
678 startOfThisPeak = startTimeHalfBit;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
679 wirelessErrorStatus = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
680 halfbitTemp = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
681 while(!wirelessErrorStatus && (wireless_position_compare(ttdaPointerStart,typeStart, ttdaPointerEnd,typeEnd) <= 0))
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
682 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
683 endOfThisPeak = triggerNewArray[ttdaPointerStart][typeStart];
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
684 if(endOfThisPeak <= startOfThisPeak)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
685 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
686 wireless_position_next(&ttdaPointerStart,&typeStart);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
687 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
688 else
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
689 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
690 // TODO: what about time difference errors?
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
691 if(endOfThisPeak >= endTimeHalfBit)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
692 valueSingle = endTimeHalfBit - startOfThisPeak;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
693 else
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
694 valueSingle = endOfThisPeak - startOfThisPeak;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
695
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
696 if(typeStart == RISING)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
697 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
698 halfbitTemp += valueSingle;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
699 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
700 // next, also valid for every next halfbit
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
701 if(endOfThisPeak <= endTimeHalfBit)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
702 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
703 startOfThisPeak = endOfThisPeak;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
704 wireless_position_next(&ttdaPointerStart,&typeStart);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
705 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
706 else
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
707 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
708 startOfThisPeak = endTimeHalfBit;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
709 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
710 // should not be necessary, anyway
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
711 if(startOfThisPeak == endTimeHalfBit)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
712 break;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
713 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
714 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
715 // store
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
716 halfbitTemp *= 100;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
717 halfbitTemp /= STEP_HALFBIT;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
718 if(halfbitTemp > 100) halfbitTemp = 100;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
719 if(doItTwice == 0)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
720 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
721 bitLeft = halfbitTemp;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
722 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
723 else
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
724 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
725 bitRight = halfbitTemp;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
726 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
727 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
728 // Gewichtung und Bit Generierung
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
729 adcData[adcPointer++] = (int8_t)((bitLeft - bitRight)); // possitive value
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
730 if(adcPointer >= MAX_DATA_BITS)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
731 timeToStop = 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
732 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
733
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
734 // Auswertung
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
735 jAdc = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
736 iOut = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
737
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
738 for(int i=0;i<maxData;i++)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
739 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
740 dataOut[i] = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
741 for(int j=0;j<8;j++)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
742 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
743 dataOut[i] *= 2;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
744 if((adcData[jAdc++] > 0))
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
745 dataOut[i] |= 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
746 if(jAdc >= adcPointer)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
747 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
748 j++;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
749 while(j<8)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
750 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
751 jAdc = adcPointer + 1; // end signal
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
752 dataOut[i] *= 2;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
753 j++;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
754 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
755 break;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
756 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
757 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
758 if(jAdc > adcPointer)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
759 break;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
760 iOut++;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
761 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
762
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
763 confidenceTemp = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
764 for(int i=0;i<adcPointer;i++)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
765 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
766 if(adcData[i] < 0)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
767 confidenceTemp -= adcData[i];
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
768 else
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
769 confidenceTemp += adcData[i];
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
770 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
771 // confidence in adcData is 0 to 127 only
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
772 confidenceTemp *= 2;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
773 *confidence = (uint8_t)(confidenceTemp/adcPointer);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
774
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
775 /*
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
776 if( (iOut>= 5) && wireless_debug_test_failed_AACCF1010203(dataOut))
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
777 wireless_debug(adcData,MAX_DATA_BITS);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
778 */
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
779 return iOut;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
780
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
781 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
782
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
783
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
784 // ===============================================================================
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
785 // wireless_evaluate_crc_error
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
786 /// @brief EVALUATION
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
787 ///
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
788 /// @param
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
789 /// @return
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
790 // ===============================================================================
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
791 uint8_t wireless_evaluate_crc_error(uint8_t *dataIn, uint8_t maxData)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
792 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
793 uint8_t crcTest = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
794 for(int i=0; i< maxData; i++)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
795 crcTest ^= dataIn[i];
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
796
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
797 return crcTest;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
798 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
799
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
800
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
801 // ===============================================================================
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
802 // wireless_evaluate
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
803 /// @brief EVALUATION
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
804 ///
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
805 /// @param
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
806 /// @return
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
807 // ===============================================================================
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
808 uint8_t wireless_evaluate(uint8_t *dataOut, uint8_t maxData, uint8_t *confidence)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
809 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
810 uint32_t timeTick;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
811 uint32_t timeElapsed;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
812
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
813 timeTick = HAL_GetTick();
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
814 timeElapsed = time_elapsed_ms(startTimeMain,timeTick);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
815
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
816 uint8_t start = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
817 int iOut = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
818
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
819 // check condition for start
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
820 if(evaluateRequest == 2)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
821 return 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
822
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
823 if(evaluateRequest == 1)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
824 start = 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
825
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
826 if((ttdaPointer > 10) && (timeElapsed > (MAX_DATA_LENGTH/1000)))
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
827 start = 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
828
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
829 if(!start)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
830 return 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
831
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
832 // start
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
833 blockDataCapture = 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
834
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
835 // evaluate
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
836 iOut = wireless_evaluate_internal_loop(dataOut, maxData, 0, confidence);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
837
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
838
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
839 /*
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
840 for(int i=0; i>=-500; i -= 100)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
841 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
842 iOut = wireless_evaluate_internal_loop(dataOut, maxData, i, confidence);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
843 if(iOut < 5)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
844 break;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
845 if(wireless_check_crc_failed(dataOut,iOut) == 0)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
846 break;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
847 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
848 */
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
849 // end
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
850 evaluateRequest = 2;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
851 blockDataCapture = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
852
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
853 return iOut;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
854 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
855
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
856 /************************ (C) COPYRIGHT heinrichs weikamp *****END OF FILE****/