96 lines
3.8 KiB
C
96 lines
3.8 KiB
C
/*
|
|
$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.h 5629 2011-06-11 03:13:08Z mcaramello $
|
|
******************************************************************************/
|
|
|
|
/**
|
|
* @defgroup MLDMP
|
|
* @brief
|
|
*
|
|
* These are the top level functions that define how to load the MPL. In order
|
|
* to use most of the features, the DMP must be loaded with some code. The
|
|
* loading procedure takes place when calling inv_dmp_open with a given DMP set
|
|
* function, after having open the serial communication with the device via
|
|
* inv_serial_start().
|
|
* The DMP set function will load the DMP memory and enable a certain
|
|
* set of features.
|
|
*
|
|
* First select a DMP version from one of the released DMP sets.
|
|
* These could be:
|
|
* - DMP default to load and use the default DMP code featuring pedometer,
|
|
* gestures, and orientation. Use inv_dmp_open().
|
|
* - DMP pedometer stand-alone to load and use the standalone pedometer
|
|
* implementation. Use inv_open_low_power_pedometer().
|
|
* <!-- - DMP EIS ... Use inv_eis_open_dmp(). -->
|
|
*
|
|
* After inv_dmp_openXXX any number of appropriate initialization and configuration
|
|
* routines can be called. Each one of these routines will return an error code
|
|
* and will check to make sure that it is compatible with the the DMP version
|
|
* selected during the call to inv_dmp_open.
|
|
*
|
|
* Once the configuration is complete, make a call to inv_dmp_start(). This will
|
|
* finally turn on the DMP and run the code previously loaded.
|
|
*
|
|
* While the DMP is running, all data fetching, polling or other functions can
|
|
* be called and will return valid data. Some parameteres can be changed while
|
|
* the DMP is runing, while others cannot. Therefore it is important to always
|
|
* check the return code of each function. Check the error code list in mltypes
|
|
* to know what each returned error corresponds to.
|
|
*
|
|
* When no more motion processing is required, the library can be shut down and
|
|
* the DMP turned off. We can do that by calling inv_dmp_close(). Note that
|
|
* inv_dmp_close() will not close the serial communication automatically, which will
|
|
* remain open an active, in case another module needs to be loaded instead.
|
|
* If the intention is shutting down the MPL as well, an explicit call to
|
|
* inv_serial_stop() following inv_dmp_close() has to be made.
|
|
*
|
|
* The MPL additionally implements a basic state machine, whose purpose is to
|
|
* give feedback to the user on whether he is following all the required
|
|
* initialization steps. If an anomalous transition is detected, the user will
|
|
* be warned by a terminal message with the format:
|
|
*
|
|
* <tt>"Error : illegal state transition from STATE_1 to STATE_3"</tt>
|
|
*
|
|
* @{
|
|
* @file mldmp.h
|
|
* @brief Top level entry functions to the MPL library with DMP support
|
|
*/
|
|
|
|
#ifndef MLDMP_H
|
|
#define MLDMP_H
|
|
#ifdef INV_INCLUDE_LEGACY_HEADERS
|
|
#include "mldmp_legacy.h"
|
|
#endif
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
inv_error_t inv_dmp_open(void);
|
|
inv_error_t inv_dmp_start(void);
|
|
inv_error_t inv_dmp_stop(void);
|
|
inv_error_t inv_dmp_close(void);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
#endif /* MLDMP_H */
|
|
/**
|
|
* @}
|
|
**/
|