Mercurial > public > ostc4
annotate Discovery/Inc/motion.h @ 1023:d268fc2b6052 GasConsumption
Update the hwos download documentation for the three new events
- Compass heading
- GNSS position
- Scrubber state update
| author | heinrichsweikamp |
|---|---|
| date | Sun, 13 Jul 2025 17:20:45 +0200 |
| parents | c737cf5d9067 |
| children |
| rev | line source |
|---|---|
|
359
4258ea9b67fa
Added new files for motion detection (shaking) detection
ideenmodellierer
parents:
diff
changeset
|
1 /* |
|
4258ea9b67fa
Added new files for motion detection (shaking) detection
ideenmodellierer
parents:
diff
changeset
|
2 * motion.h |
|
4258ea9b67fa
Added new files for motion detection (shaking) detection
ideenmodellierer
parents:
diff
changeset
|
3 * |
|
4258ea9b67fa
Added new files for motion detection (shaking) detection
ideenmodellierer
parents:
diff
changeset
|
4 * Created on: 20.05.2019 |
|
4258ea9b67fa
Added new files for motion detection (shaking) detection
ideenmodellierer
parents:
diff
changeset
|
5 * Author: Thorsten Sonntag |
|
4258ea9b67fa
Added new files for motion detection (shaking) detection
ideenmodellierer
parents:
diff
changeset
|
6 */ |
|
4258ea9b67fa
Added new files for motion detection (shaking) detection
ideenmodellierer
parents:
diff
changeset
|
7 |
|
4258ea9b67fa
Added new files for motion detection (shaking) detection
ideenmodellierer
parents:
diff
changeset
|
8 #ifndef INC_MOTION_H_ |
|
4258ea9b67fa
Added new files for motion detection (shaking) detection
ideenmodellierer
parents:
diff
changeset
|
9 #define INC_MOTION_H_ |
|
4258ea9b67fa
Added new files for motion detection (shaking) detection
ideenmodellierer
parents:
diff
changeset
|
10 |
|
4258ea9b67fa
Added new files for motion detection (shaking) detection
ideenmodellierer
parents:
diff
changeset
|
11 |
|
4258ea9b67fa
Added new files for motion detection (shaking) detection
ideenmodellierer
parents:
diff
changeset
|
12 /* exported data types */ |
|
373
7b981f8bdd41
Add scroll event by pitch angle detection:
ideenmodellierer
parents:
371
diff
changeset
|
13 #define CUSTOMER_DEFINED_VIEWS (100u) /* value will cause the function to detect the number of selected views */ |
|
7b981f8bdd41
Add scroll event by pitch angle detection:
ideenmodellierer
parents:
371
diff
changeset
|
14 #define CUSTOMER_KEEP_LAST_SECTORS (200u) /* do not update number of sectors, just define the new center position */ |
|
370
77cdfbdaca8c
Changed function names from shake to pitch and improved detection function: Shake might be confusing for people reading the code because pitch values are ased for calculation => changed name to pitch to be more transparent
ideenmodellierer
parents:
363
diff
changeset
|
15 |
|
625
028d8f3a9410
Switch Sector / Scroll detection to vector implementation:
Ideenmodellierer
parents:
611
diff
changeset
|
16 #define MOTION_ENABLE_ROLL (0x01u) |
|
028d8f3a9410
Switch Sector / Scroll detection to vector implementation:
Ideenmodellierer
parents:
611
diff
changeset
|
17 #define MOTION_ENABLE_PITCH (0x02u) |
|
028d8f3a9410
Switch Sector / Scroll detection to vector implementation:
Ideenmodellierer
parents:
611
diff
changeset
|
18 #define MOTION_ENABLE_YAW (0x04u) |
|
028d8f3a9410
Switch Sector / Scroll detection to vector implementation:
Ideenmodellierer
parents:
611
diff
changeset
|
19 #define MOTION_ENABLE_ALL (MOTION_ENABLE_ROLL | MOTION_ENABLE_PITCH | MOTION_ENABLE_YAW) |
|
028d8f3a9410
Switch Sector / Scroll detection to vector implementation:
Ideenmodellierer
parents:
611
diff
changeset
|
20 |
|
370
77cdfbdaca8c
Changed function names from shake to pitch and improved detection function: Shake might be confusing for people reading the code because pitch values are ased for calculation => changed name to pitch to be more transparent
ideenmodellierer
parents:
363
diff
changeset
|
21 typedef enum |
|
77cdfbdaca8c
Changed function names from shake to pitch and improved detection function: Shake might be confusing for people reading the code because pitch values are ased for calculation => changed name to pitch to be more transparent
ideenmodellierer
parents:
363
diff
changeset
|
22 { |
|
77cdfbdaca8c
Changed function names from shake to pitch and improved detection function: Shake might be confusing for people reading the code because pitch values are ased for calculation => changed name to pitch to be more transparent
ideenmodellierer
parents:
363
diff
changeset
|
23 MOTION_DETECT_OFF = 0, |
|
77cdfbdaca8c
Changed function names from shake to pitch and improved detection function: Shake might be confusing for people reading the code because pitch values are ased for calculation => changed name to pitch to be more transparent
ideenmodellierer
parents:
363
diff
changeset
|
24 MOTION_DETECT_SECTOR, |
|
373
7b981f8bdd41
Add scroll event by pitch angle detection:
ideenmodellierer
parents:
371
diff
changeset
|
25 MOTION_DETECT_MOVE, |
|
375
4bb5ceebfaf9
Use Enum values for initialization and setting check:
ideenmodellierer
parents:
373
diff
changeset
|
26 MOTION_DETECT_SCROLL, |
|
4bb5ceebfaf9
Use Enum values for initialization and setting check:
ideenmodellierer
parents:
373
diff
changeset
|
27 MOTION_DETECT_END |
|
370
77cdfbdaca8c
Changed function names from shake to pitch and improved detection function: Shake might be confusing for people reading the code because pitch values are ased for calculation => changed name to pitch to be more transparent
ideenmodellierer
parents:
363
diff
changeset
|
28 } MotionDetectMethod_t; |
|
77cdfbdaca8c
Changed function names from shake to pitch and improved detection function: Shake might be confusing for people reading the code because pitch values are ased for calculation => changed name to pitch to be more transparent
ideenmodellierer
parents:
363
diff
changeset
|
29 |
|
359
4258ea9b67fa
Added new files for motion detection (shaking) detection
ideenmodellierer
parents:
diff
changeset
|
30 typedef enum |
|
4258ea9b67fa
Added new files for motion detection (shaking) detection
ideenmodellierer
parents:
diff
changeset
|
31 { |
|
4258ea9b67fa
Added new files for motion detection (shaking) detection
ideenmodellierer
parents:
diff
changeset
|
32 DETECT_START = 0, |
|
4258ea9b67fa
Added new files for motion detection (shaking) detection
ideenmodellierer
parents:
diff
changeset
|
33 DETECT_POS_MOVE, |
| 363 | 34 DETECT_MAXIMA, |
| 35 DETECT_FALLBACK, | |
|
370
77cdfbdaca8c
Changed function names from shake to pitch and improved detection function: Shake might be confusing for people reading the code because pitch values are ased for calculation => changed name to pitch to be more transparent
ideenmodellierer
parents:
363
diff
changeset
|
36 DETECT_POS_PITCH, |
|
359
4258ea9b67fa
Added new files for motion detection (shaking) detection
ideenmodellierer
parents:
diff
changeset
|
37 DETECT_NEG_MOVE, |
|
4258ea9b67fa
Added new files for motion detection (shaking) detection
ideenmodellierer
parents:
diff
changeset
|
38 DETECT_MINIMA, |
|
4258ea9b67fa
Added new files for motion detection (shaking) detection
ideenmodellierer
parents:
diff
changeset
|
39 DETECT_RISEBACK, |
|
370
77cdfbdaca8c
Changed function names from shake to pitch and improved detection function: Shake might be confusing for people reading the code because pitch values are ased for calculation => changed name to pitch to be more transparent
ideenmodellierer
parents:
363
diff
changeset
|
40 DETECT_NEG_PITCH, |
|
359
4258ea9b67fa
Added new files for motion detection (shaking) detection
ideenmodellierer
parents:
diff
changeset
|
41 DETECT_NOTHING |
|
4258ea9b67fa
Added new files for motion detection (shaking) detection
ideenmodellierer
parents:
diff
changeset
|
42 } detectionState_t; |
|
4258ea9b67fa
Added new files for motion detection (shaking) detection
ideenmodellierer
parents:
diff
changeset
|
43 |
|
370
77cdfbdaca8c
Changed function names from shake to pitch and improved detection function: Shake might be confusing for people reading the code because pitch values are ased for calculation => changed name to pitch to be more transparent
ideenmodellierer
parents:
363
diff
changeset
|
44 typedef struct |
|
77cdfbdaca8c
Changed function names from shake to pitch and improved detection function: Shake might be confusing for people reading the code because pitch values are ased for calculation => changed name to pitch to be more transparent
ideenmodellierer
parents:
363
diff
changeset
|
45 { |
|
383
49a02dea8ae3
Combine variables in a structure to improve readability of code
ideenmodellierer
parents:
375
diff
changeset
|
46 float upperborder; /* current sector is changed if pitch exceeds these borders */ |
|
49a02dea8ae3
Combine variables in a structure to improve readability of code
ideenmodellierer
parents:
375
diff
changeset
|
47 float lowerborder; |
|
49a02dea8ae3
Combine variables in a structure to improve readability of code
ideenmodellierer
parents:
375
diff
changeset
|
48 |
|
49a02dea8ae3
Combine variables in a structure to improve readability of code
ideenmodellierer
parents:
375
diff
changeset
|
49 uint8_t current; /* number of the current visible sector */ |
|
49a02dea8ae3
Combine variables in a structure to improve readability of code
ideenmodellierer
parents:
375
diff
changeset
|
50 uint8_t target; /* used for sector switch => number of the sector which shall be finnaly displayed */ |
|
49a02dea8ae3
Combine variables in a structure to improve readability of code
ideenmodellierer
parents:
375
diff
changeset
|
51 |
|
49a02dea8ae3
Combine variables in a structure to improve readability of code
ideenmodellierer
parents:
375
diff
changeset
|
52 float offset; /* offset to adjust minimum pitch value used for detection to zero */ |
|
49a02dea8ae3
Combine variables in a structure to improve readability of code
ideenmodellierer
parents:
375
diff
changeset
|
53 float size; /* delta of upper and lower boarder defining the sector in degree */ |
|
49a02dea8ae3
Combine variables in a structure to improve readability of code
ideenmodellierer
parents:
375
diff
changeset
|
54 float window; /* defines which range of pitch values are used for detection */ |
|
49a02dea8ae3
Combine variables in a structure to improve readability of code
ideenmodellierer
parents:
375
diff
changeset
|
55 float center; /* defines the offset from pitch to middle of active sector (avoid center position is close to the calculated borders) */ |
|
49a02dea8ae3
Combine variables in a structure to improve readability of code
ideenmodellierer
parents:
375
diff
changeset
|
56 uint8_t count; /* number of sectors used for detection */ |
|
370
77cdfbdaca8c
Changed function names from shake to pitch and improved detection function: Shake might be confusing for people reading the code because pitch values are ased for calculation => changed name to pitch to be more transparent
ideenmodellierer
parents:
363
diff
changeset
|
57 } SSector; |
|
77cdfbdaca8c
Changed function names from shake to pitch and improved detection function: Shake might be confusing for people reading the code because pitch values are ased for calculation => changed name to pitch to be more transparent
ideenmodellierer
parents:
363
diff
changeset
|
58 |
| 551 | 59 typedef struct |
| 60 { | |
| 61 float x; | |
| 62 float y; | |
| 63 float z; | |
| 64 } SCoord; | |
|
383
49a02dea8ae3
Combine variables in a structure to improve readability of code
ideenmodellierer
parents:
375
diff
changeset
|
65 |
| 551 | 66 typedef enum |
| 67 { | |
| 68 MOTION_HISTORY_ROLL = 0, | |
| 69 MOTION_HISTORY_PITCH, | |
| 70 MOTION_HISTORY_YAW | |
| 71 } MotionHistoryEntry_t; | |
|
383
49a02dea8ae3
Combine variables in a structure to improve readability of code
ideenmodellierer
parents:
375
diff
changeset
|
72 |
| 551 | 73 typedef struct |
| 74 { | |
| 75 uint8_t roll; | |
| 76 uint8_t pitch; | |
| 77 uint8_t yaw; | |
| 78 } SDeltaHistory; | |
|
383
49a02dea8ae3
Combine variables in a structure to improve readability of code
ideenmodellierer
parents:
375
diff
changeset
|
79 |
|
370
77cdfbdaca8c
Changed function names from shake to pitch and improved detection function: Shake might be confusing for people reading the code because pitch values are ased for calculation => changed name to pitch to be more transparent
ideenmodellierer
parents:
363
diff
changeset
|
80 void InitMotionDetection(void); |
|
611
916998f90e39
Suspend MotionDetection events while diver is operationg the OSTC:
Ideenmodellierer
parents:
597
diff
changeset
|
81 void suspendMotionDetection(uint8_t seconds); |
|
916998f90e39
Suspend MotionDetection events while diver is operationg the OSTC:
Ideenmodellierer
parents:
597
diff
changeset
|
82 void HandleMotionDetection(void); |
| 551 | 83 void resetMotionDeltaHistory(); |
| 84 void evaluateMotionDelta(float roll, float pitch, float yaw); | |
|
625
028d8f3a9410
Switch Sector / Scroll detection to vector implementation:
Ideenmodellierer
parents:
611
diff
changeset
|
85 void DefineSectorCount(uint8_t numOfSectors); |
|
597
132e7e3d13a7
MotionControl-Sector: Map sectors during switch T7 <=> T3:
Ideenmodellierer
parents:
551
diff
changeset
|
86 void MapCVToSector(void); |
|
370
77cdfbdaca8c
Changed function names from shake to pitch and improved detection function: Shake might be confusing for people reading the code because pitch values are ased for calculation => changed name to pitch to be more transparent
ideenmodellierer
parents:
363
diff
changeset
|
87 detectionState_t detectPitch(float currentPitch); |
|
625
028d8f3a9410
Switch Sector / Scroll detection to vector implementation:
Ideenmodellierer
parents:
611
diff
changeset
|
88 detectionState_t detectSectorButtonEvent(float focusOffset); |
|
028d8f3a9410
Switch Sector / Scroll detection to vector implementation:
Ideenmodellierer
parents:
611
diff
changeset
|
89 detectionState_t detectScrollButtonEvent(float focusOffset); |
|
359
4258ea9b67fa
Added new files for motion detection (shaking) detection
ideenmodellierer
parents:
diff
changeset
|
90 |
| 551 | 91 void anglesToCoord(float roll, float pitch, float yaw, SCoord *pCoord); |
| 92 void calibrateViewport(float roll, float pitch, float yaw); | |
|
625
028d8f3a9410
Switch Sector / Scroll detection to vector implementation:
Ideenmodellierer
parents:
611
diff
changeset
|
93 float checkViewport(float roll, float pitch, float yaw, uint8_t enableAxis); |
| 551 | 94 uint8_t viewInFocus(void); |
|
642
c737cf5d9067
Do not show focus indicator in case motion detection is suspended:
Ideenmodellierer
parents:
625
diff
changeset
|
95 uint8_t viewDetectionSuspended(void); |
| 551 | 96 void resetFocusState(void); |
| 97 | |
|
359
4258ea9b67fa
Added new files for motion detection (shaking) detection
ideenmodellierer
parents:
diff
changeset
|
98 #endif /* INC_MOTION_H_ */ |
