1cd79002b2edb60b25843e5f4f9a06e768bc1a568Nick Vaccaro/*
2cd79002b2edb60b25843e5f4f9a06e768bc1a568Nick Vaccaro $License:
3cd79002b2edb60b25843e5f4f9a06e768bc1a568Nick Vaccaro    Copyright (C) 2011-2012 InvenSense Corporation, All Rights Reserved.
4cd79002b2edb60b25843e5f4f9a06e768bc1a568Nick Vaccaro    See included License.txt for License information.
5cd79002b2edb60b25843e5f4f9a06e768bc1a568Nick Vaccaro $
6cd79002b2edb60b25843e5f4f9a06e768bc1a568Nick Vaccaro */
7cd79002b2edb60b25843e5f4f9a06e768bc1a568Nick Vaccaro/**
8cd79002b2edb60b25843e5f4f9a06e768bc1a568Nick Vaccaro *   @defgroup  Message_Layer message_layer
9cd79002b2edb60b25843e5f4f9a06e768bc1a568Nick Vaccaro *   @brief     Motion Library - Message Layer
10cd79002b2edb60b25843e5f4f9a06e768bc1a568Nick Vaccaro *              Holds Low Occurance messages
11cd79002b2edb60b25843e5f4f9a06e768bc1a568Nick Vaccaro *
12cd79002b2edb60b25843e5f4f9a06e768bc1a568Nick Vaccaro *   @{
13cd79002b2edb60b25843e5f4f9a06e768bc1a568Nick Vaccaro *       @file message_layer.c
14cd79002b2edb60b25843e5f4f9a06e768bc1a568Nick Vaccaro *       @brief Holds Low Occurance Messages.
15cd79002b2edb60b25843e5f4f9a06e768bc1a568Nick Vaccaro */
16cd79002b2edb60b25843e5f4f9a06e768bc1a568Nick Vaccaro#include "message_layer.h"
17cd79002b2edb60b25843e5f4f9a06e768bc1a568Nick Vaccaro#include "log.h"
18cd79002b2edb60b25843e5f4f9a06e768bc1a568Nick Vaccaro
19cd79002b2edb60b25843e5f4f9a06e768bc1a568Nick Vaccarostruct message_holder_t {
20cd79002b2edb60b25843e5f4f9a06e768bc1a568Nick Vaccaro    long message;
21cd79002b2edb60b25843e5f4f9a06e768bc1a568Nick Vaccaro};
22cd79002b2edb60b25843e5f4f9a06e768bc1a568Nick Vaccaro
23cd79002b2edb60b25843e5f4f9a06e768bc1a568Nick Vaccarostatic struct message_holder_t mh;
24cd79002b2edb60b25843e5f4f9a06e768bc1a568Nick Vaccaro
25cd79002b2edb60b25843e5f4f9a06e768bc1a568Nick Vaccaro/** Sets a message.
26cd79002b2edb60b25843e5f4f9a06e768bc1a568Nick Vaccaro* @param[in] set The flags to set.
27cd79002b2edb60b25843e5f4f9a06e768bc1a568Nick Vaccaro* @param[in] clear Before setting anything this will clear these messages,
28cd79002b2edb60b25843e5f4f9a06e768bc1a568Nick Vaccaro*                  which is useful for mutually exclusive messages such
29cd79002b2edb60b25843e5f4f9a06e768bc1a568Nick Vaccaro*                  a motion or no motion message.
30cd79002b2edb60b25843e5f4f9a06e768bc1a568Nick Vaccaro* @param[in] level Level of the messages. It starts at 0, and may increase
31cd79002b2edb60b25843e5f4f9a06e768bc1a568Nick Vaccaro*            in the future to allow more messages if the bit storage runs out.
32cd79002b2edb60b25843e5f4f9a06e768bc1a568Nick Vaccaro*/
33cd79002b2edb60b25843e5f4f9a06e768bc1a568Nick Vaccarovoid inv_set_message(long set, long clear, int level)
34cd79002b2edb60b25843e5f4f9a06e768bc1a568Nick Vaccaro{
35cd79002b2edb60b25843e5f4f9a06e768bc1a568Nick Vaccaro    if (level == 0) {
36cd79002b2edb60b25843e5f4f9a06e768bc1a568Nick Vaccaro        mh.message &= ~clear;
37cd79002b2edb60b25843e5f4f9a06e768bc1a568Nick Vaccaro        mh.message |= set;
38cd79002b2edb60b25843e5f4f9a06e768bc1a568Nick Vaccaro    }
39cd79002b2edb60b25843e5f4f9a06e768bc1a568Nick Vaccaro}
40cd79002b2edb60b25843e5f4f9a06e768bc1a568Nick Vaccaro
41cd79002b2edb60b25843e5f4f9a06e768bc1a568Nick Vaccaro/** Returns Message Flags for Level 0 Messages.
42cd79002b2edb60b25843e5f4f9a06e768bc1a568Nick Vaccaro* Levels are to allow expansion of more messages in the future.
43cd79002b2edb60b25843e5f4f9a06e768bc1a568Nick Vaccaro* @param[in] clear If set, will clear the message. Typically this will be set
44cd79002b2edb60b25843e5f4f9a06e768bc1a568Nick Vaccaro*  for one reader, so that you don't get the same message over and over.
45cd79002b2edb60b25843e5f4f9a06e768bc1a568Nick Vaccaro* @return bit field to corresponding message.
46cd79002b2edb60b25843e5f4f9a06e768bc1a568Nick Vaccaro*/
47cd79002b2edb60b25843e5f4f9a06e768bc1a568Nick Vaccarolong inv_get_message_level_0(int clear)
48cd79002b2edb60b25843e5f4f9a06e768bc1a568Nick Vaccaro{
49cd79002b2edb60b25843e5f4f9a06e768bc1a568Nick Vaccaro    long msg;
50cd79002b2edb60b25843e5f4f9a06e768bc1a568Nick Vaccaro    msg = mh.message;
51cd79002b2edb60b25843e5f4f9a06e768bc1a568Nick Vaccaro    if (clear) {
52cd79002b2edb60b25843e5f4f9a06e768bc1a568Nick Vaccaro        mh.message = 0;
53cd79002b2edb60b25843e5f4f9a06e768bc1a568Nick Vaccaro    }
54cd79002b2edb60b25843e5f4f9a06e768bc1a568Nick Vaccaro    return msg;
55cd79002b2edb60b25843e5f4f9a06e768bc1a568Nick Vaccaro}
56cd79002b2edb60b25843e5f4f9a06e768bc1a568Nick Vaccaro
57cd79002b2edb60b25843e5f4f9a06e768bc1a568Nick Vaccaro/**
58cd79002b2edb60b25843e5f4f9a06e768bc1a568Nick Vaccaro * @}
59cd79002b2edb60b25843e5f4f9a06e768bc1a568Nick Vaccaro */
60