summaryrefslogtreecommitdiffstats
path: root/60xx/mlsdk/mllite/mldmp.c
diff options
context:
space:
mode:
Diffstat (limited to '60xx/mlsdk/mllite/mldmp.c')
-rw-r--r--60xx/mlsdk/mllite/mldmp.c284
1 files changed, 0 insertions, 284 deletions
diff --git a/60xx/mlsdk/mllite/mldmp.c b/60xx/mlsdk/mllite/mldmp.c
deleted file mode 100644
index 7381dd4..0000000
--- a/60xx/mlsdk/mllite/mldmp.c
+++ /dev/null
@@ -1,284 +0,0 @@
-/*
- $License:
- Copyright 2011 InvenSense, Inc.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
- $
- */
-
-/******************************************************************************
- *
- * $Id: mldmp.c 5629 2011-06-11 03:13:08Z mcaramello $
- *
- *****************************************************************************/
-
-/**
- * @addtogroup MLDMP
- *
- * @{
- * @file mldmp.c
- * @brief Shared functions between all the different DMP versions
-**/
-
-#include <stdio.h>
-
-#include "mltypes.h"
-#include "mlinclude.h"
-#include "mltypes.h"
-#include "ml.h"
-#include "mldl_cfg.h"
-#include "mldl.h"
-#include "compass.h"
-#include "mlSetGyroBias.h"
-#include "mlsl.h"
-#include "mlFIFO.h"
-#include "mldmp.h"
-#include "mlstates.h"
-#include "dmpDefault.h"
-#include "mlFIFOHW.h"
-#include "mlsupervisor.h"
-
-#include "log.h"
-#undef MPL_LOG_TAG
-#define MPL_LOG_TAG "MPL-dmp"
-
-/**
- * @brief Open the default motion sensor engine.
- * This function is used to open the default MPL engine,
- * featuring, for example, sensor fusion (6 axes and 9 axes),
- * sensor calibration, accelerometer data byte swapping, among
- * others.
- * Compare with the other provided engines.
- *
- * @pre inv_serial_start() must have been called to instantiate the serial
- * communication.
- *
- * Example:
- * @code
- * result = inv_dmp_open( );
- * if (INV_SUCCESS != result) {
- * // Handle the error case
- * }
- * @endcode
- *
- * @return Zero on success; Error Code on any failure.
- *
- */
-inv_error_t inv_dmp_open(void)
-{
- INVENSENSE_FUNC_START;
- inv_error_t result;
- unsigned char state = inv_get_state();
- struct mldl_cfg *mldl_cfg;
- unsigned long requested_sensors;
-
- /*************************************************************
- * Common operations before calling DMPOpen
- ************************************************************/
- if (state == INV_STATE_DMP_OPENED)
- return INV_SUCCESS;
-
- if (state == INV_STATE_DMP_STARTED) {
- return inv_dmp_stop();
- }
-
- result = inv_state_transition(INV_STATE_DMP_OPENED);
- if (result) {
- LOG_RESULT_LOCATION(result);
- return result;
- }
-
- result = inv_dl_open(inv_get_serial_handle());
- if (result) {
- LOG_RESULT_LOCATION(result);
- return result;
- }
-#ifdef ML_USE_DMP_SIM
- do {
- void setup_univ();
- setup_univ(); /* hijack the read and write paths
- and re-direct them to the simulator */
- } while (0);
-#endif
-
- result = inv_setup_dmp();
- if (result) {
- LOG_RESULT_LOCATION(result);
- return result;
- }
-
- // Init vars.
- inv_init_ml();
-
- result = inv_init_fifo_param();
- if (result) {
- LOG_RESULT_LOCATION(result);
- return result;
- }
- result = inv_enable_set_bias();
- if (result) {
- LOG_RESULT_LOCATION(result);
- return result;
- }
- inv_init_fifo_hardare();
- mldl_cfg = inv_get_dl_config();
- requested_sensors = INV_THREE_AXIS_GYRO;
- if (mldl_cfg->accel && mldl_cfg->accel->resume)
- requested_sensors |= INV_THREE_AXIS_ACCEL;
-
- if (mldl_cfg->compass && mldl_cfg->compass->resume)
- requested_sensors |= INV_THREE_AXIS_COMPASS;
-
- if (mldl_cfg->pressure && mldl_cfg->pressure->resume)
- requested_sensors |= INV_THREE_AXIS_PRESSURE;
-
- result = inv_init_requested_sensors(requested_sensors);
- if (result) {
- LOG_RESULT_LOCATION(result);
- return result;
- }
- result = inv_apply_calibration();
- if (result) {
- LOG_RESULT_LOCATION(result);
- return result;
- }
- if (NULL != mldl_cfg->accel){
- result = inv_apply_endian_accel();
- }
-
- return result;
-}
-
-/**
- * @brief Start the DMP.
- *
- * @pre inv_dmp_open() must have been called.
- *
- * @code
- * result = inv_dmp_start();
- * if (INV_SUCCESS != result) {
- * // Handle the error case
- * }
- * @endcode
- *
- * @return INV_SUCCESS if successful, or Non-zero error code otherwise.
- */
-inv_error_t inv_dmp_start(void)
-{
- INVENSENSE_FUNC_START;
- inv_error_t result;
-
- if (inv_get_state() == INV_STATE_DMP_STARTED)
- return INV_SUCCESS;
-
- result = inv_state_transition(INV_STATE_DMP_STARTED);
- if (result) {
- LOG_RESULT_LOCATION(result);
- return result;
- }
- inv_init_sensor_fusion_supervisor();
- result = inv_dl_start(inv_get_dl_config()->requested_sensors);
- if (result) {
- LOG_RESULT_LOCATION(result);
- return result;
- }
- /* This is done after the start since it will modify DMP memory, which
- * will cause a full reset is most cases */
- result = inv_reset_motion();
- if (result) {
- LOG_RESULT_LOCATION(result);
- return result;
- }
-
- return result;
-}
-
-/**
- * @brief Stops the DMP and puts it in low power.
- *
- * @pre inv_dmp_start() must have been called.
- *
- * @return INV_SUCCESS, Non-zero error code otherwise.
- */
-inv_error_t inv_dmp_stop(void)
-{
- INVENSENSE_FUNC_START;
- inv_error_t result;
-
- if (inv_get_state() == INV_STATE_DMP_OPENED)
- return INV_SUCCESS;
-
- result = inv_state_transition(INV_STATE_DMP_OPENED);
- if (result) {
- LOG_RESULT_LOCATION(result);
- return result;
- }
- result = inv_dl_stop(INV_ALL_SENSORS);
- if (result) {
- LOG_RESULT_LOCATION(result);
- return result;
- }
-
- return result;
-}
-
-/**
- * @brief Closes the motion sensor engine.
- * Does not close the serial communication. To do that,
- * call inv_serial_stop().
- * After calling inv_dmp_close() another DMP module can be
- * loaded in the MPL with the corresponding necessary
- * intialization and configurations, via any of the
- * MLDmpXXXOpen functions.
- *
- * @pre inv_dmp_open() must have been called.
- *
- * @code
- * result = inv_dmp_close();
- * if (INV_SUCCESS != result) {
- * // Handle the error case
- * }
- * @endcode
- *
- * @return INV_SUCCESS, Non-zero error code otherwise.
- */
-inv_error_t inv_dmp_close(void)
-{
- INVENSENSE_FUNC_START;
- inv_error_t result;
- inv_error_t firstError = INV_SUCCESS;
-
- if (inv_get_state() <= INV_STATE_DMP_CLOSED)
- return INV_SUCCESS;
-
- result = inv_disable_set_bias();
- ERROR_CHECK_FIRST(firstError, result);
-
- result = inv_dl_stop(INV_ALL_SENSORS);
- ERROR_CHECK_FIRST(firstError, result);
-
- result = inv_close_fifo();
- ERROR_CHECK_FIRST(firstError, result);
-
- result = inv_dl_close();
- ERROR_CHECK_FIRST(firstError, result);
-
- result = inv_state_transition(INV_STATE_SERIAL_OPENED);
- ERROR_CHECK_FIRST(firstError, result);
-
- return result;
-}
-
-/**
- * @}
- */