Mercurial > public > ostc4
diff Discovery/Inc/motion.h @ 387:0dbb74be972f
Merged in Ideenmodellierer/ostc4/MotionDetection (pull request #34)
MotionDetection
author | heinrichsweikamp <bitbucket@heinrichsweikamp.com> |
---|---|
date | Sun, 24 Nov 2019 15:46:58 +0000 |
parents | 49a02dea8ae3 |
children | e3237f580ae9 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Discovery/Inc/motion.h Sun Nov 24 15:46:58 2019 +0000 @@ -0,0 +1,63 @@ +/* + * motion.h + * + * Created on: 20.05.2019 + * Author: Thorsten Sonntag + */ + +#ifndef INC_MOTION_H_ +#define INC_MOTION_H_ + + +/* exported data types */ +#define CUSTOMER_DEFINED_VIEWS (100u) /* value will cause the function to detect the number of selected views */ +#define CUSTOMER_KEEP_LAST_SECTORS (200u) /* do not update number of sectors, just define the new center position */ + +typedef enum +{ + MOTION_DETECT_OFF = 0, + MOTION_DETECT_SECTOR, + MOTION_DETECT_MOVE, + MOTION_DETECT_SCROLL, + MOTION_DETECT_END +} MotionDetectMethod_t; + +typedef enum +{ + DETECT_START = 0, + DETECT_POS_MOVE, + DETECT_MAXIMA, + DETECT_FALLBACK, + DETECT_POS_PITCH, + DETECT_NEG_MOVE, + DETECT_MINIMA, + DETECT_RISEBACK, + DETECT_NEG_PITCH, + DETECT_NOTHING +} detectionState_t; + +typedef struct +{ + float upperborder; /* current sector is changed if pitch exceeds these borders */ + float lowerborder; + + uint8_t current; /* number of the current visible sector */ + uint8_t target; /* used for sector switch => number of the sector which shall be finnaly displayed */ + + float offset; /* offset to adjust minimum pitch value used for detection to zero */ + float size; /* delta of upper and lower boarder defining the sector in degree */ + float window; /* defines which range of pitch values are used for detection */ + float center; /* defines the offset from pitch to middle of active sector (avoid center position is close to the calculated borders) */ + uint8_t count; /* number of sectors used for detection */ +} SSector; + + + + +void InitMotionDetection(void); +void DefinePitchSectors(float centerAngle, uint8_t numOfSectors); +detectionState_t detectPitch(float currentPitch); +detectionState_t detectSectorButtonEvent(float curPitch); +detectionState_t detectScrollButtonEvent(float curPitch); + +#endif /* INC_MOTION_H_ */