/* | |
$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; | |
} | |
/** | |
* @} | |
*/ |