稍微分析了一下代码,在 sensor.c 中看到了如下部分:
pthismotion->MotionSensors.GyroData.x = -gyro[0];
pthismotion->MotionSensors.GyroData.y = -gyro[1];
pthismotion->MotionSensors.GyroData.z = gyro[2];
pthismotion->MotionSensors.AccData.x = -accel[0];
pthismotion->MotionSensors.AccData.y = -accel[1];
pthismotion->MotionSensors.AccData.z = accel[2];
if(TRUE == rdabt_hid_status() && (TRUE == IsMouseMode()) && (TRUE == is_top))
{
Mouse_Displacement_Conversion(pthismotion);
if((0 != pthismotion->MouseMotions.x || 0 != pthismotion->MouseMotions.y)) {
lpm_reset_time();
uart_putchar((UART_MemMapPtr)UART0_BASE_PTR, 0xff);
data[0] = 2; // id = mounse
data[1] = MouseKey(); // button
data[2] = pthismotion->MouseMotions.x; // x
data[3] = pthismotion->MouseMotions.y; // y
data[4] = 0; // wheel
data[5] = 0; // acdata
rdabt_send_hid_data(data,6);
}
}
GyroData 和 AccData 都用来生成鼠标数据了,但是 pthismotion->MotionSensors.MagData 似乎从来没有出现过,磁力计的数据虽然被读取了,但是并没有被放进 pthismotion 中?偏偏 pthismotion 还设计了 MagData 这部分数据结构。Mouse_Displacement_Conversion 这个函数貌似是在 lib 文件中,算法没有公开。
那么问题来了,磁力计的数据到底有没有被用到啊?
|