MCPcopy Create free account
hub / github.com/RT-Thread/rt-thread / efm_accel_get_data

Function efm_accel_get_data

bsp/efm32/dev_accel.c:73–158  ·  view source on GitHub ↗

Private variables ---------------------------------------------------------*/ Private function prototypes -----------------------------------------------*/ Private functions ---------------------------------------------------------*/ / * @brief * Get accelerometer output * * @details * * @note * * @param[out] data * Pointer to output buffer * * @param[in] lowResolution * Resolution

Source from the content-addressed store, hash-verified

71 * Error code
72 ******************************************************************************/
73rt_err_t efm_accel_get_data(struct efm32_accel_result_t *data,
74 rt_bool_t lowResolution)
75{
76 RT_ASSERT(accel != RT_NULL);
77
78 rt_err_t ret;
79
80 if (data == RT_NULL)
81 {
82 return -RT_ERROR;
83 }
84
85 ret = RT_EOK;
86 do
87 {
88 /* --------- ADC interface --------- */
89#if (EFM32_USING_ACCEL == EFM32_INTERFACE_ADC)
90 struct efm32_adc_result_t result;
91
92 result.mode = control.mode;
93 result.buffer = (void *)data;
94 if ((ret = accel->control(accel, RT_DEVICE_CTRL_RESUME,
95 (void *)&result)) != RT_EOK)
96 {
97 break;
98 }
99 if ((ret = accel->control(accel, RT_DEVICE_CTRL_ADC_RESULT, \
100 (void *)&result)) != RT_EOK)
101 {
102 break;
103 }
104
105 data->x += accelOffset.x - 0x800;
106 data->y += accelOffset.y - 0x800;
107 data->z += accelOffset.z - 0x800;
108 if (lowResolution)
109 {
110 data->x >>= 4;
111 data->y >>= 4;
112 data->z >>= 4;
113 }
114
115 /* --------- IIC interface --------- */
116#elif (EFM32_USING_ACCEL == EFM32_INTERFACE_IIC)
117 if (lowResolution || \
118 ((accelConfig & ACCEL_MASK_RANGE) != MCTL_RANGE_8G))
119 {
120 rt_int8_t buf[3];
121
122 buf[0] = XOUT8;
123 if (accel->read(accel, ACCEL_IIC_SLAVE_ADDRESS, (void *)buf, \
124 sizeof(buf)) == 0)
125 {
126 ret = -RT_ERROR;
127 break;
128 }
129 data->x = buf[0];
130 data->y = buf[1];

Callers 3

rt_demo_thread_entryFunction · 0.85
efm_accel_auto_zeroFunction · 0.85
dev_accel.cFile · 0.85

Calls 1

readMethod · 0.45

Tested by

no test coverage detected