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