blob: 8317957795b9611b2d599c75ea9fef961eab2065 [file] [log] [blame]
/*
$License:
Copyright (C) 2011-2012 InvenSense Corporation, All Rights Reserved.
See included License.txt for License information.
$
*/
/**
* @defgroup Message_Layer message_layer
* @brief Motion Library - Message Layer
* Holds Low Occurance messages
*
* @{
* @file message_layer.c
* @brief Holds Low Occurance Messages.
*/
#include "message_layer.h"
#include "log.h"
struct message_holder_t {
long message;
};
static struct message_holder_t mh;
/** Sets a message.
* @param[in] set The flags to set.
* @param[in] clear Before setting anything this will clear these messages,
* which is useful for mutually exclusive messages such
* a motion or no motion message.
* @param[in] level Level of the messages. It starts at 0, and may increase
* in the future to allow more messages if the bit storage runs out.
*/
void inv_set_message(long set, long clear, int level)
{
if (level == 0) {
mh.message &= ~clear;
mh.message |= set;
}
}
/** Returns Message Flags for Level 0 Messages.
* Levels are to allow expansion of more messages in the future.
* @param[in] clear If set, will clear the message. Typically this will be set
* for one reader, so that you don't get the same message over and over.
* @return bit field to corresponding message.
*/
long inv_get_message_level_0(int clear)
{
long msg;
msg = mh.message;
if (clear) {
mh.message = 0;
}
return msg;
}
/**
* @}
*/