Mercurial > public > ostc4
view Discovery/Inc/motion.h @ 424:2b31cf1ebbcc ImprovmentNVM_2
Added (optional) menu item to analyse log sample buffer:
The analysis function will check the ring buffer for proper closure of sectors. In case of a log sample ring corruption more than sector will show the state started (4). Depending on the time past since corruption and the location of the corrupted sector, a cleanup function will be executed if a dive is started. The dive is necessary because of the definition of sample position during OSTC startup phase.
author | ideenmodellierer |
---|---|
date | Sat, 15 Feb 2020 20:45:19 +0100 |
parents | 49a02dea8ae3 |
children | e3237f580ae9 |
line wrap: on
line source
/* * 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_ */