Quelle adxl34x.h
Sprache: C
/* SPDX-License-Identifier: GPL-2.0-or-later */
/*
* include / linux / input / adxl34x . h
*
* Digital Accelerometer characteristics are highly application specific
* and may vary between boards and models . The platform_data for the
* device ' s " struct device " holds this information .
*
* Copyright 2009 Analog Devices Inc .
*/
#ifndef __LINUX_INPUT_ADXL34X_H__
#define __LINUX_INPUT_ADXL34X_H__
#include <linux/input.h>
struct adxl34x_platform_data {
/*
* X , Y , Z Axis Offset :
* offer user offset adjustments in twoscompliment
* form with a scale factor of 15 . 6 mg / LSB ( i . e . 0 x7F = + 2 g )
*/
s8 x_axis_offset;
s8 y_axis_offset;
s8 z_axis_offset;
/*
* TAP_X / Y / Z Enable : Setting TAP_X , Y , or Z Enable enables X ,
* Y , or Z participation in Tap detection . A ' 0 ' excludes the
* selected axis from participation in Tap detection .
* Setting the SUPPRESS bit suppresses Double Tap detection if
* acceleration greater than tap_threshold is present during the
* tap_latency period , i . e . after the first tap but before the
* opening of the second tap window .
*/
#define ADXL_SUPPRESS (1 << 3 )
#define ADXL_TAP_X_EN (1 << 2 )
#define ADXL_TAP_Y_EN (1 << 1 )
#define ADXL_TAP_Z_EN (1 << 0 )
u8 tap_axis_control;
/*
* tap_threshold :
* holds the threshold value for tap detection / interrupts .
* The data format is unsigned . The scale factor is 62 . 5 mg / LSB
* ( i . e . 0 xFF = + 16 g ) . A zero value may result in undesirable
* behavior if Tap / Double Tap is enabled .
*/
u8 tap_threshold;
/*
* tap_duration :
* is an unsigned time value representing the maximum
* time that an event must be above the tap_threshold threshold
* to qualify as a tap event . The scale factor is 625 us / LSB . A zero
* value will prevent Tap / Double Tap functions from working .
*/
u8 tap_duration;
/*
* tap_latency :
* is an unsigned time value representing the wait time
* from the detection of a tap event to the opening of the time
* window tap_window for a possible second tap event . The scale
* factor is 1 . 25 ms / LSB . A zero value will disable the Double Tap
* function .
*/
u8 tap_latency;
/*
* tap_window :
* is an unsigned time value representing the amount
* of time after the expiration of tap_latency during which a second
* tap can begin . The scale factor is 1 . 25 ms / LSB . A zero value will
* disable the Double Tap function .
*/
u8 tap_window;
/*
* act_axis_control :
* X / Y / Z Enable : A ' 1 ' enables X , Y , or Z participation in activity
* or inactivity detection . A ' 0 ' excludes the selected axis from
* participation . If all of the axes are excluded , the function is
* disabled .
* AC / DC : A ' 0 ' = DC coupled operation and a ' 1 ' = AC coupled
* operation . In DC coupled operation , the current acceleration is
* compared with activity_threshold and inactivity_threshold directly
* to determine whether activity or inactivity is detected . In AC
* coupled operation for activity detection , the acceleration value
* at the start of activity detection is taken as a reference value .
* New samples of acceleration are then compared to this
* reference value and if the magnitude of the difference exceeds
* activity_threshold the device will trigger an activity interrupt . In
* AC coupled operation for inactivity detection , a reference value
* is used again for comparison and is updated whenever the
* device exceeds the inactivity threshold . Once the reference
* value is selected , the device compares the magnitude of the
* difference between the reference value and the current
* acceleration with inactivity_threshold . If the difference is below
* inactivity_threshold for a total of inactivity_time , the device is
* considered inactive and the inactivity interrupt is triggered .
*/
#define ADXL_ACT_ACDC (1 << 7 )
#define ADXL_ACT_X_EN (1 << 6 )
#define ADXL_ACT_Y_EN (1 << 5 )
#define ADXL_ACT_Z_EN (1 << 4 )
#define ADXL_INACT_ACDC (1 << 3 )
#define ADXL_INACT_X_EN (1 << 2 )
#define ADXL_INACT_Y_EN (1 << 1 )
#define ADXL_INACT_Z_EN (1 << 0 )
u8 act_axis_control;
/*
* activity_threshold :
* holds the threshold value for activity detection .
* The data format is unsigned . The scale factor is
* 62 . 5 mg / LSB . A zero value may result in undesirable behavior if
* Activity interrupt is enabled .
*/
u8 activity_threshold;
/*
* inactivity_threshold :
* holds the threshold value for inactivity
* detection . The data format is unsigned . The scale
* factor is 62 . 5 mg / LSB . A zero value may result in undesirable
* behavior if Inactivity interrupt is enabled .
*/
u8 inactivity_threshold;
/*
* inactivity_time :
* is an unsigned time value representing the
* amount of time that acceleration must be below the value in
* inactivity_threshold for inactivity to be declared . The scale factor
* is 1 second / LSB . Unlike the other interrupt functions , which
* operate on unfiltered data , the inactivity function operates on the
* filtered output data . At least one output sample must be
* generated for the inactivity interrupt to be triggered . This will
* result in the function appearing un - responsive if the
* inactivity_time register is set with a value less than the time
* constant of the Output Data Rate . A zero value will result in an
* interrupt when the output data is below inactivity_threshold .
*/
u8 inactivity_time;
/*
* free_fall_threshold :
* holds the threshold value for Free - Fall detection .
* The data format is unsigned . The root - sum - square ( RSS ) value
* of all axes is calculated and compared to the value in
* free_fall_threshold to determine if a free fall event may be
* occurring . The scale factor is 62 . 5 mg / LSB . A zero value may
* result in undesirable behavior if Free - Fall interrupt is
* enabled . Values between 300 and 600 mg ( 0 x05 to 0 x09 ) are
* recommended .
*/
u8 free_fall_threshold;
/*
* free_fall_time :
* is an unsigned time value representing the minimum
* time that the RSS value of all axes must be less than
* free_fall_threshold to generate a Free - Fall interrupt . The
* scale factor is 5 ms / LSB . A zero value may result in
* undesirable behavior if Free - Fall interrupt is enabled .
* Values between 100 to 350 ms ( 0 x14 to 0 x46 ) are recommended .
*/
u8 free_fall_time;
/*
* data_rate :
* Selects device bandwidth and output data rate .
* RATE = 3200 Hz / ( 2 ^ ( 15 - x ) ) . Default value is 0 x0A , or 100 Hz
* Output Data Rate . An Output Data Rate should be selected that
* is appropriate for the communication protocol and frequency
* selected . Selecting too high of an Output Data Rate with a low
* communication speed will result in samples being discarded .
*/
u8 data_rate;
/*
* data_range :
* FULL_RES : When this bit is set with the device is
* in Full - Resolution Mode , where the output resolution increases
* with RANGE to maintain a 4 mg / LSB scale factor . When this
* bit is cleared the device is in 10 - bit Mode and RANGE determine the
* maximum g - Range and scale factor .
*/
#define ADXL_FULL_RES (1 << 3 )
#define ADXL_RANGE_PM_2g 0
#define ADXL_RANGE_PM_4g 1
#define ADXL_RANGE_PM_8g 2
#define ADXL_RANGE_PM_16g 3
u8 data_range;
/*
* low_power_mode :
* A ' 0 ' = Normal operation and a ' 1 ' = Reduced
* power operation with somewhat higher noise .
*/
u8 low_power_mode;
/*
* power_mode :
* LINK : A ' 1 ' with both the activity and inactivity functions
* enabled will delay the start of the activity function until
* inactivity is detected . Once activity is detected , inactivity
* detection will begin and prevent the detection of activity . This
* bit serially links the activity and inactivity functions . When ' 0 '
* the inactivity and activity functions are concurrent . Additional
* information can be found in the ADXL34x datasheet ' s Application
* section under Link Mode .
* AUTO_SLEEP : A ' 1 ' sets the ADXL34x to switch to Sleep Mode
* when inactivity ( acceleration has been below inactivity_threshold
* for at least inactivity_time ) is detected and the LINK bit is set .
* A ' 0 ' disables automatic switching to Sleep Mode . See the
* Sleep Bit section of the ADXL34x datasheet for more information .
*/
#define ADXL_LINK (1 << 5 )
#define ADXL_AUTO_SLEEP (1 << 4 )
u8 power_mode;
/*
* fifo_mode :
* BYPASS The FIFO is bypassed
* FIFO FIFO collects up to 32 values then stops collecting data
* STREAM FIFO holds the last 32 data values . Once full , the FIFO ' s
* oldest data is lost as it is replaced with newer data
*
* DEFAULT should be ADXL_FIFO_STREAM
*/
#define ADXL_FIFO_BYPASS 0
#define ADXL_FIFO_FIFO 1
#define ADXL_FIFO_STREAM 2
u8 fifo_mode;
/*
* watermark :
* The Watermark feature can be used to reduce the interrupt load
* of the system . The FIFO fills up to the value stored in watermark
* [ 1 . . 32 ] and then generates an interrupt .
* A ' 0 ' disables the watermark feature .
*/
u8 watermark;
/*
* When acceleration measurements are received from the ADXL34x
* events are sent to the event subsystem . The following settings
* select the event type and event code for new x , y and z axis data
* respectively .
*/
u32 ev_type; /* EV_ABS or EV_REL */
u32 ev_code_x; /* ABS_X,Y,Z or REL_X,Y,Z */
u32 ev_code_y; /* ABS_X,Y,Z or REL_X,Y,Z */
u32 ev_code_z; /* ABS_X,Y,Z or REL_X,Y,Z */
/*
* A valid BTN or KEY Code ; use tap_axis_control to disable
* event reporting
*/
u32 ev_code_tap[3 ]; /* EV_KEY {X-Axis, Y-Axis, Z-Axis} */
/*
* A valid BTN or KEY Code for Free - Fall or Activity enables
* input event reporting . A ' 0 ' disables the Free - Fall or
* Activity reporting .
*/
u32 ev_code_ff; /* EV_KEY */
u32 ev_code_act_inactivity; /* EV_KEY */
/*
* Use ADXL34x INT2 pin instead of INT1 pin for interrupt output
*/
u8 use_int2;
/*
* ADXL346 only ORIENTATION SENSING feature
* The orientation function of the ADXL346 reports both 2 - D and
* 3 - D orientation concurrently .
*/
#define ADXL_EN_ORIENTATION_2D 1
#define ADXL_EN_ORIENTATION_3D 2
#define ADXL_EN_ORIENTATION_2D_3D 3
u8 orientation_enable;
/*
* The width of the deadzone region between two or more
* orientation positions is determined by setting the Deadzone
* value . The deadzone region size can be specified with a
* resolution of 3 . 6 deg . The deadzone angle represents the total
* angle where the orientation is considered invalid .
*/
#define ADXL_DEADZONE_ANGLE_0p0 0 /* !!!0.0 [deg] */
#define ADXL_DEADZONE_ANGLE_3p6 1 /* 3.6 [deg] */
#define ADXL_DEADZONE_ANGLE_7p2 2 /* 7.2 [deg] */
#define ADXL_DEADZONE_ANGLE_10p8 3 /* 10.8 [deg] */
#define ADXL_DEADZONE_ANGLE_14p4 4 /* 14.4 [deg] */
#define ADXL_DEADZONE_ANGLE_18p0 5 /* 18.0 [deg] */
#define ADXL_DEADZONE_ANGLE_21p6 6 /* 21.6 [deg] */
#define ADXL_DEADZONE_ANGLE_25p2 7 /* 25.2 [deg] */
u8 deadzone_angle;
/*
* To eliminate most human motion such as walking or shaking ,
* a Divisor value should be selected to effectively limit the
* orientation bandwidth . Set the depth of the filter used to
* low - pass filter the measured acceleration for stable
* orientation sensing
*/
#define ADXL_LP_FILTER_DIVISOR_2 0
#define ADXL_LP_FILTER_DIVISOR_4 1
#define ADXL_LP_FILTER_DIVISOR_8 2
#define ADXL_LP_FILTER_DIVISOR_16 3
#define ADXL_LP_FILTER_DIVISOR_32 4
#define ADXL_LP_FILTER_DIVISOR_64 5
#define ADXL_LP_FILTER_DIVISOR_128 6
#define ADXL_LP_FILTER_DIVISOR_256 7
u8 divisor_length;
u32 ev_codes_orient_2d[4 ]; /* EV_KEY {+X, -X, +Y, -Y} */
u32 ev_codes_orient_3d[6 ]; /* EV_KEY {+Z, +Y, +X, -X, -Y, -Z} */
};
#endif
Messung V0.5 in Prozent C=90 H=97 G=93
¤ Dauer der Verarbeitung: 0.18 Sekunden
(vorverarbeitet am 2026-09-29)
¤
*© Formatika GbR, Deutschland
2026-10-10
Neuigkeiten
Aktuelles
Motto des Tages
Open Source Software
Jenseits des Üblichen ....
Besucherstatistik
Statistik
#Sources=1126438
#Domains=1897691