149ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow/* 249ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow $License: 349ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow Copyright (C) 2011-2012 InvenSense Corporation, All Rights Reserved. 449ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow See included License.txt for License information. 549ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow $ 649ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow */ 749ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow/** 849ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow * @defgroup MPL mpl 949ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow * @brief Motion Library - Start Point 1049ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow * Initializes MPL. 1149ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow * 1249ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow * @{ 1349ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow * @file mpl.c 1449ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow * @brief MPL start point. 1549ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow */ 1649ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow 1749ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow#include "storage_manager.h" 1849ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow#include "log.h" 1949ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow#include "mpl.h" 2049ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow#include "start_manager.h" 2149ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow#include "data_builder.h" 2249ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow#include "results_holder.h" 2349ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow#include "mlinclude.h" 2449ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow#include "message_layer.h" 2549ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow 2649ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow/** 2749ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow * @brief Initializes the MPL. Should be called first and once 2849ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow * @return Returns INV_SUCCESS if successful or an error code if not. 2949ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow */ 3049ea3e26ca3c6a779e527a0322e49a663333350aRosa Chowinv_error_t inv_init_mpl(void) 3149ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow{ 3249ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow inv_init_storage_manager(); 3349ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow 3449ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow /* initialize the start callback manager */ 3549ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow INV_ERROR_CHECK(inv_init_start_manager()); 3649ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow 3749ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow /* initialize the data builder */ 3849ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow INV_ERROR_CHECK(inv_init_data_builder()); 3949ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow 4049ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow INV_ERROR_CHECK(inv_enable_results_holder()); 4149ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow 4249ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow // Get any left over messages and clear them. Throw message away as it is not 4349ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow // initialized. 4449ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow (void)inv_get_message_level_0(1); 4549ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow 4649ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow return INV_SUCCESS; 4749ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow} 4849ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow 494a28f9c897c46c42a255823f7e307169a828a025Rosa Chowconst char ml_ver[] = "InvenSense MA 5.1.6 RC25"; 5049ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow 5149ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow/** 5249ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow * @brief used to get the MPL version. 5349ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow * @param version a string where the MPL version gets stored. 5449ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow * @return INV_SUCCESS if successful or a non-zero error code otherwise. 5549ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow */ 5649ea3e26ca3c6a779e527a0322e49a663333350aRosa Chowinv_error_t inv_get_version(char **version) 5749ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow{ 5849ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow INVENSENSE_FUNC_START; 5949ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow /* cast out the const */ 6049ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow *version = (char *)&ml_ver; 6149ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow return INV_SUCCESS; 6249ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow} 6349ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow 6449ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow/** 6549ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow * @brief Starts the MPL. Typically called after inv_init_mpl() or after a 6649ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow * inv_stop_mpl() to start the MPL back up an running. 6749ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow * @return INV_SUCCESS if successful or a non-zero error code otherwise. 6849ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow */ 6949ea3e26ca3c6a779e527a0322e49a663333350aRosa Chowinv_error_t inv_start_mpl(void) 7049ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow{ 7149ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow INV_ERROR_CHECK(inv_execute_mpl_start_notification()); 7249ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow return INV_SUCCESS; 7349ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow} 7449ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow 7549ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow/** 7649ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow * @} 7749ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow */ 78