Home | History | Annotate | Download | only in mllite
      1 /*
      2  $License:
      3    Copyright 2011 InvenSense, Inc.
      4 
      5  Licensed under the Apache License, Version 2.0 (the "License");
      6  you may not use this file except in compliance with the License.
      7  You may obtain a copy of the License at
      8 
      9  http://www.apache.org/licenses/LICENSE-2.0
     10 
     11  Unless required by applicable law or agreed to in writing, software
     12  distributed under the License is distributed on an "AS IS" BASIS,
     13  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     14  See the License for the specific language governing permissions and
     15  limitations under the License.
     16   $
     17  */
     18 /***************************************************************************** *
     19  * $Id: mldmp.h 5629 2011-06-11 03:13:08Z mcaramello $
     20  ******************************************************************************/
     21 
     22 /**
     23  * @defgroup MLDMP
     24  * @brief
     25  *
     26  *  These are the top level functions that define how to load the MPL.  In order
     27  *  to use most of the features, the DMP must be loaded with some code.  The
     28  *  loading procedure takes place when calling inv_dmp_open with a given DMP set
     29  *  function, after having open the serial communication with the device via
     30  *  inv_serial_start().
     31  *  The DMP set function will load the DMP memory and enable a certain
     32  *  set of features.
     33  *
     34  *  First select a DMP version from one of the released DMP sets.
     35  *  These could be:
     36  *  - DMP default to load and use the default DMP code featuring pedometer,
     37  *    gestures, and orientation.  Use inv_dmp_open().
     38  *  - DMP pedometer stand-alone to load and use the standalone pedometer
     39  *    implementation. Use inv_open_low_power_pedometer().
     40  *  <!-- - DMP EIS ... Use inv_eis_open_dmp(). -->
     41  *
     42  *  After inv_dmp_openXXX any number of appropriate initialization and configuration
     43  *  routines can be called. Each one of these routines will return an error code
     44  *  and will check to make sure that it is compatible with the the DMP version
     45  *  selected during the call to inv_dmp_open.
     46  *
     47  *  Once the configuration is complete, make a call to inv_dmp_start(). This will
     48  *  finally turn on the DMP and run the code previously loaded.
     49  *
     50  *  While the DMP is running, all data fetching, polling or other functions can
     51  *  be called and will return valid data. Some parameteres can be changed while
     52  *  the DMP is runing, while others cannot.  Therefore it is important to always
     53  *  check the return code of each function.  Check the error code list in mltypes
     54  *  to know what each returned error corresponds to.
     55  *
     56  *  When no more motion processing is required, the library can be shut down and
     57  *  the DMP turned off.  We can do that by calling inv_dmp_close().  Note that
     58  *  inv_dmp_close() will not close the serial communication automatically, which will
     59  *  remain open an active, in case another module needs to be loaded instead.
     60  *  If the intention is shutting down the MPL as well, an explicit call to
     61  *  inv_serial_stop() following inv_dmp_close() has to be made.
     62  *
     63  *  The MPL additionally implements a basic state machine, whose purpose is to
     64  *  give feedback to the user on whether he is following all the required
     65  *  initialization steps.  If an anomalous transition is detected, the user will
     66  *  be warned by a terminal message with the format:
     67  *
     68  *  <tt>"Error : illegal state transition from STATE_1 to STATE_3"</tt>
     69  *
     70  *  @{
     71  *      @file     mldmp.h
     72  *      @brief    Top level entry functions to the MPL library with DMP support
     73  */
     74 
     75 #ifndef MLDMP_H
     76 #define MLDMP_H
     77 #ifdef INV_INCLUDE_LEGACY_HEADERS
     78 #include "mldmp_legacy.h"
     79 #endif
     80 
     81 #ifdef __cplusplus
     82 extern "C" {
     83 #endif
     84 
     85     inv_error_t inv_dmp_open(void);
     86     inv_error_t inv_dmp_start(void);
     87     inv_error_t inv_dmp_stop(void);
     88     inv_error_t inv_dmp_close(void);
     89 
     90 #ifdef __cplusplus
     91 }
     92 #endif
     93 #endif                          /* MLDMP_H */
     94 /**
     95  * @}
     96 **/
     97