summaryrefslogtreecommitdiff
path: root/include/libnds/nds/arm9/ndsmotion.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/libnds/nds/arm9/ndsmotion.h')
-rw-r--r--include/libnds/nds/arm9/ndsmotion.h190
1 files changed, 190 insertions, 0 deletions
diff --git a/include/libnds/nds/arm9/ndsmotion.h b/include/libnds/nds/arm9/ndsmotion.h
new file mode 100644
index 0000000000..f3940f5f2f
--- /dev/null
+++ b/include/libnds/nds/arm9/ndsmotion.h
@@ -0,0 +1,190 @@
+/*---------------------------------------------------------------------------------
+ DS Motion Card/DS Motion Pak functionality
+
+ Copyright (C) 2007
+ Michael Noland (joat)
+ Jason Rogers (dovoto)
+ Dave Murphy (WinterMute)
+ Keith Epstein (KeithE)
+
+ This software is provided 'as-is', without any express or implied
+ warranty. In no event will the authors be held liable for any
+ damages arising from the use of this software.
+
+ Permission is granted to anyone to use this software for any
+ purpose, including commercial applications, and to alter it and
+ redistribute it freely, subject to the following restrictions:
+
+ 1. The origin of this software must not be misrepresented; you
+ must not claim that you wrote the original software. If you use
+ this software in a product, an acknowledgment in the product
+ documentation would be appreciated but is not required.
+ 2. Altered source versions must be plainly marked as such, and
+ must not be misrepresented as being the original software.
+ 3. This notice may not be removed or altered from any source
+ distribution.
+
+---------------------------------------------------------------------------------*/
+
+/*! \file ndsmotion.h
+\brief interface code for the ds motion card, ds motion pak, MK6
+
+*/
+#ifndef NDS_MOTION_INCLUDE
+#define NDS_MOTION_INCLUDE
+//---------------------------------------------------------------------------------
+
+
+typedef struct
+{
+ short xoff, yoff, zoff, goff;
+ short xsens, ysens, zsens, gsens;
+}MotionCalibration;
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*! \fn int motion_init(void)
+\brief Initializes the DS Motion Sensor.
+Run this before using any of the DS Motion Sensor functions
+save the return value and pass it to the other motion_ functions
+*/
+int motion_init(void);
+
+/*! \fn int motion_deinit(void)
+\brief Deinitializes the DS Motion Sensor
+*/
+void motion_deinit(void);
+
+/*! \fn signed int motion_read_x(void)
+\brief read the X acceleration
+*/
+signed int motion_read_x(void);
+
+/*! \fn signed int motion_read_y(void)
+\brief read the Y acceleration
+*/
+signed int motion_read_y(void);
+
+/*! \fn signed int motion_read_z(void)
+\brief read the Z acceleration
+*/
+signed int motion_read_z(void);
+
+/*! \fn signed int motion_read_gyro(void)
+\brief read the Z rotational speed
+*/
+signed int motion_read_gyro(void);
+
+/*! \fn int motion_acceleration_x(void)
+\brief gets acceleration value to mili G (where g is 9.8 m/s*s)
+*/
+int motion_acceleration_x(void);
+
+/*! \fn int motion_acceleration_y(void)
+\brief gets acceleration value to mili G (where g is 9.8 m/s*s)
+*/
+int motion_acceleration_y(void);
+
+/*! \fn int motion_acceleration_z(void)
+\brief gets acceleration value to mili G (where g is 9.8 m/s*s)
+*/
+int motion_acceleration_z(void);
+
+/*! \fn void motion_set_sens_x(int sens)
+\brief this should be passed the raw reading at 1g for accurate
+acceleration calculations. Default is 819
+*/
+void motion_set_sens_x(int sens);
+
+/*! \fn void motion_set_sens_y(int sens)
+\brief this should be passed the raw reading at 1g for accurate
+acceleration calculations. Default is 819
+*/
+void motion_set_sens_y(int sens);
+
+/*! \fn void motion_set_sens_z(int sens)
+\brief this should be passed the raw reading at 1g for accurate
+acceleration calculations. Default is 819
+*/
+void motion_set_sens_z(int sens);
+
+/*! \fn void motion_set_sens_x(int sens)
+\brief this should be passed the raw reading at 1g for accurate
+acceleration calculations. Default is 825
+*/
+void motion_set_sens_gyro(int sens);
+
+/*! \fn void motion_set_offs_x(void)
+\brief this should be called when the axis is under no acceleration
+default is 2048
+*/
+void motion_set_offs_x(void);
+
+/*! \fn void motion_set_offs_y(void)
+\brief this should be called when the axis is under no acceleration
+default is 2048
+*/
+void motion_set_offs_y(void);
+
+/*! \fn void motion_set_offs_z(void)
+\brief this should be called when the axis is under no acceleration
+default is 2048
+*/
+void motion_set_offs_z(void);
+
+/*! \fn void motion_set_offs_gyro(void)
+\brief this should be called when the axis is under no rotation
+default is 1680
+*/
+void motion_set_offs_gyro(void);
+
+/*! \fn int motion_rotation(void)
+\brief converts raw rotation value to degrees per second
+*/
+int motion_rotation(void);
+
+/*! \fn MotionCalibration* motion_get_calibration(void)void
+\brief This returns the current calibration settings for saving
+*/
+MotionCalibration* motion_get_calibration(void);
+
+/*! \fn void motion_set_calibration(MotionCalibration* cal)
+\brief This sets the calibration settings. Intended
+to restore saved calibration settings
+*/
+void motion_set_calibration(MotionCalibration* cal);
+
+/*! \fn MotionCalibration* motion_enable_ain_1(void)
+\brief This enables the analog input number 1.
+Required before reading analog input number 1.
+*/
+void motion_enable_ain_1(void);
+
+/*! \fn MotionCalibration* motion_enable_ain_2(void)
+\brief This enables the analog input number 2.
+Required before reading analog input number 2.
+*/
+void motion_enable_ain_2(void);
+
+/*! \fn MotionCalibration* motion_read_ain_1(void)
+\brief This reads the analog input number 1.
+analog input number 1 needs to be enabled before reading.
+*/
+int motion_read_ain_1(void);
+
+/*! \fn MotionCalibration* motion_read_ain_2(void)
+\brief This reads the analog input number 2.
+analog input number 2 needs to be enabled before reading.
+*/
+int motion_read_ain_2(void);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+
+
+