/*
 $License:
    Copyright (C) 2011-2012 InvenSense Corporation, All Rights Reserved.
    See included License.txt for License information.
 $
 */
#ifndef INV_MESSAGE_LAYER_H__
#define INV_MESSAGE_LAYER_H__

#include "mltypes.h"

#ifdef __cplusplus
extern "C" {
#endif

/* Level 0 Type Messages */
/** A motion event has occured */
#define INV_MSG_MOTION_EVENT                (0x01)
/** A no motion event has occured */
#define INV_MSG_NO_MOTION_EVENT             (0x02)
/** A setting of the gyro bias has occured */
#define INV_MSG_NEW_GB_EVENT                (0x04)
/** A setting of the compass bias has occured */
#define INV_MSG_NEW_CB_EVENT                (0x08)
/** A setting of the accel bias has occured */
#define INV_MSG_NEW_AB_EVENT                (0x10)
/** Sensor fusion has switched from 9- to 6-axes
    because of a magnetic disturbance */
#define INV_MSG_6X_SF_EVENT    (0x020)
/** Compass accuracy has dropped has dropped to 0
    because of a magnetic disturbance */
#define INV_MSG_HEADING_NOT_ACCURATE_EVENT  (0x40)
/** A setting of the factory gyro bias has occured */
#define INV_MSG_NEW_FGB_EVENT            (0x80)
/** A setting of the factory accel bias has occured */
#define INV_MSG_NEW_FAB_EVENT            (0x100)

void inv_set_message(long set, long clear, int level);
long inv_get_message_level_0(int clear);

#ifdef __cplusplus
}
#endif

#endif  // INV_MESSAGE_LAYER_H__
