164ca18f95225d0a86f7ccfd1d21c23971b9f77aeRamanan Rajeswaran/* 264ca18f95225d0a86f7ccfd1d21c23971b9f77aeRamanan Rajeswaran $License: 364ca18f95225d0a86f7ccfd1d21c23971b9f77aeRamanan Rajeswaran Copyright (C) 2011-2012 InvenSense Corporation, All Rights Reserved. 464ca18f95225d0a86f7ccfd1d21c23971b9f77aeRamanan Rajeswaran See included License.txt for License information. 564ca18f95225d0a86f7ccfd1d21c23971b9f77aeRamanan Rajeswaran $ 664ca18f95225d0a86f7ccfd1d21c23971b9f77aeRamanan Rajeswaran */ 764ca18f95225d0a86f7ccfd1d21c23971b9f77aeRamanan Rajeswaran/** 864ca18f95225d0a86f7ccfd1d21c23971b9f77aeRamanan Rajeswaran * @defgroup Message_Layer message_layer 964ca18f95225d0a86f7ccfd1d21c23971b9f77aeRamanan Rajeswaran * @brief Motion Library - Message Layer 1064ca18f95225d0a86f7ccfd1d21c23971b9f77aeRamanan Rajeswaran * Holds Low Occurance messages 1164ca18f95225d0a86f7ccfd1d21c23971b9f77aeRamanan Rajeswaran * 1264ca18f95225d0a86f7ccfd1d21c23971b9f77aeRamanan Rajeswaran * @{ 1364ca18f95225d0a86f7ccfd1d21c23971b9f77aeRamanan Rajeswaran * @file message_layer.c 1464ca18f95225d0a86f7ccfd1d21c23971b9f77aeRamanan Rajeswaran * @brief Holds Low Occurance Messages. 1564ca18f95225d0a86f7ccfd1d21c23971b9f77aeRamanan Rajeswaran */ 1664ca18f95225d0a86f7ccfd1d21c23971b9f77aeRamanan Rajeswaran#include "message_layer.h" 1764ca18f95225d0a86f7ccfd1d21c23971b9f77aeRamanan Rajeswaran#include "log.h" 1864ca18f95225d0a86f7ccfd1d21c23971b9f77aeRamanan Rajeswaran 1964ca18f95225d0a86f7ccfd1d21c23971b9f77aeRamanan Rajeswaranstruct message_holder_t { 2064ca18f95225d0a86f7ccfd1d21c23971b9f77aeRamanan Rajeswaran long message; 2164ca18f95225d0a86f7ccfd1d21c23971b9f77aeRamanan Rajeswaran}; 2264ca18f95225d0a86f7ccfd1d21c23971b9f77aeRamanan Rajeswaran 2364ca18f95225d0a86f7ccfd1d21c23971b9f77aeRamanan Rajeswaranstatic struct message_holder_t mh; 2464ca18f95225d0a86f7ccfd1d21c23971b9f77aeRamanan Rajeswaran 2564ca18f95225d0a86f7ccfd1d21c23971b9f77aeRamanan Rajeswaran/** Sets a message. 2664ca18f95225d0a86f7ccfd1d21c23971b9f77aeRamanan Rajeswaran* @param[in] set The flags to set. 2764ca18f95225d0a86f7ccfd1d21c23971b9f77aeRamanan Rajeswaran* @param[in] clear Before setting anything this will clear these messages, 2864ca18f95225d0a86f7ccfd1d21c23971b9f77aeRamanan Rajeswaran* which is useful for mutually exclusive messages such 2964ca18f95225d0a86f7ccfd1d21c23971b9f77aeRamanan Rajeswaran* a motion or no motion message. 3064ca18f95225d0a86f7ccfd1d21c23971b9f77aeRamanan Rajeswaran* @param[in] level Level of the messages. It starts at 0, and may increase 3164ca18f95225d0a86f7ccfd1d21c23971b9f77aeRamanan Rajeswaran* in the future to allow more messages if the bit storage runs out. 3264ca18f95225d0a86f7ccfd1d21c23971b9f77aeRamanan Rajeswaran*/ 3364ca18f95225d0a86f7ccfd1d21c23971b9f77aeRamanan Rajeswaranvoid inv_set_message(long set, long clear, int level) 3464ca18f95225d0a86f7ccfd1d21c23971b9f77aeRamanan Rajeswaran{ 3564ca18f95225d0a86f7ccfd1d21c23971b9f77aeRamanan Rajeswaran if (level == 0) { 3664ca18f95225d0a86f7ccfd1d21c23971b9f77aeRamanan Rajeswaran mh.message &= ~clear; 3764ca18f95225d0a86f7ccfd1d21c23971b9f77aeRamanan Rajeswaran mh.message |= set; 3864ca18f95225d0a86f7ccfd1d21c23971b9f77aeRamanan Rajeswaran } 3964ca18f95225d0a86f7ccfd1d21c23971b9f77aeRamanan Rajeswaran} 4064ca18f95225d0a86f7ccfd1d21c23971b9f77aeRamanan Rajeswaran 4164ca18f95225d0a86f7ccfd1d21c23971b9f77aeRamanan Rajeswaran/** Returns Message Flags for Level 0 Messages. 4264ca18f95225d0a86f7ccfd1d21c23971b9f77aeRamanan Rajeswaran* Levels are to allow expansion of more messages in the future. 4364ca18f95225d0a86f7ccfd1d21c23971b9f77aeRamanan Rajeswaran* @param[in] clear If set, will clear the message. Typically this will be set 4464ca18f95225d0a86f7ccfd1d21c23971b9f77aeRamanan Rajeswaran* for one reader, so that you don't get the same message over and over. 4564ca18f95225d0a86f7ccfd1d21c23971b9f77aeRamanan Rajeswaran* @return bit field to corresponding message. 4664ca18f95225d0a86f7ccfd1d21c23971b9f77aeRamanan Rajeswaran*/ 4764ca18f95225d0a86f7ccfd1d21c23971b9f77aeRamanan Rajeswaranlong inv_get_message_level_0(int clear) 4864ca18f95225d0a86f7ccfd1d21c23971b9f77aeRamanan Rajeswaran{ 4964ca18f95225d0a86f7ccfd1d21c23971b9f77aeRamanan Rajeswaran long msg; 5064ca18f95225d0a86f7ccfd1d21c23971b9f77aeRamanan Rajeswaran msg = mh.message; 5164ca18f95225d0a86f7ccfd1d21c23971b9f77aeRamanan Rajeswaran if (clear) { 5264ca18f95225d0a86f7ccfd1d21c23971b9f77aeRamanan Rajeswaran mh.message = 0; 5364ca18f95225d0a86f7ccfd1d21c23971b9f77aeRamanan Rajeswaran } 5464ca18f95225d0a86f7ccfd1d21c23971b9f77aeRamanan Rajeswaran return msg; 5564ca18f95225d0a86f7ccfd1d21c23971b9f77aeRamanan Rajeswaran} 5664ca18f95225d0a86f7ccfd1d21c23971b9f77aeRamanan Rajeswaran 5764ca18f95225d0a86f7ccfd1d21c23971b9f77aeRamanan Rajeswaran/** 5864ca18f95225d0a86f7ccfd1d21c23971b9f77aeRamanan Rajeswaran * @} 5964ca18f95225d0a86f7ccfd1d21c23971b9f77aeRamanan Rajeswaran */ 60