view Discovery/Inc/motion.h @ 965:58cc980ee848
Evo_2_23
Set correct section name for HW Data
author
Ideenmodellierer
date
Mon, 13 Jan 2025 18:36:04 +0100 (4 weeks ago)
parents
c737cf5d9067
children
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 */+ −
+ −
#define MOTION_ENABLE_ROLL (0x01u)+ −
#define MOTION_ENABLE_PITCH (0x02u)+ −
#define MOTION_ENABLE_YAW (0x04u)+ −
#define MOTION_ENABLE_ALL (MOTION_ENABLE_ROLL | MOTION_ENABLE_PITCH | MOTION_ENABLE_YAW)+ −
+ −
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;+ −
+ −
typedef struct+ −
{+ −
float x;+ −
float y;+ −
float z;+ −
} SCoord;+ −
+ −
typedef enum+ −
{+ −
MOTION_HISTORY_ROLL = 0,+ −
MOTION_HISTORY_PITCH,+ −
MOTION_HISTORY_YAW+ −
} MotionHistoryEntry_t;+ −
+ −
typedef struct+ −
{+ −
uint8_t roll;+ −
uint8_t pitch;+ −
uint8_t yaw;+ −
} SDeltaHistory;+ −
+ −
void InitMotionDetection(void);+ −
void suspendMotionDetection(uint8_t seconds);+ −
void HandleMotionDetection(void);+ −
void resetMotionDeltaHistory();+ −
void evaluateMotionDelta(float roll, float pitch, float yaw);+ −
void DefineSectorCount(uint8_t numOfSectors);+ −
void MapCVToSector(void);+ −
detectionState_t detectPitch(float currentPitch);+ −
detectionState_t detectSectorButtonEvent(float focusOffset);+ −
detectionState_t detectScrollButtonEvent(float focusOffset);+ −
+ −
void anglesToCoord(float roll, float pitch, float yaw, SCoord *pCoord);+ −
void calibrateViewport(float roll, float pitch, float yaw);+ −
float checkViewport(float roll, float pitch, float yaw, uint8_t enableAxis);+ −
uint8_t viewInFocus(void);+ −
uint8_t viewDetectionSuspended(void);+ −
void resetFocusState(void);+ −
+ −
#endif /* INC_MOTION_H_ */+ −