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