亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? message_types.h

?? 嵌入式操作系統(tǒng)內(nèi)核
?? H
字號(hào):
/* -*- Mode: C; tab-width:4 -*- */
/* ex: set ts=4 shiftwidth=4 softtabstop=4 cindent: */
/*
 * Copyright (c) 2003 The Regents of the University of California.
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above
 *    copyright notice, this list of conditions and the following
 *    disclaimer in the documentation and/or other materials provided
 *    with the distribution.
 * 3. All advertising materials mentioning features or use of this
 *    software must display the following acknowledgement:
 *       This product includes software developed by Networked &
 *       Embedded Systems Lab at UCLA
 * 4. Neither the name of the University nor that of the Laboratory
 *    may be used to endorse or promote products derived from this
 *    software without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS''
 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
 * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS
 * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
 * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 *
 */
/**
 * @brief Message related types and defines
 * @author Simon Han (simonhan@ee.ucla.edu)
 */
#ifndef _MESSAGE_TYPES_H
#define _MESSAGE_TYPES_H

#include <pid.h>
#include <stddef.h>
// for struct packing
#include <sos_info.h>

#define SOS_MSG_PAYLOAD_LENGTH 4
/**
 * @brief message 
 *
 * NOTE: *data will have to be before flag
 * the main reason is flag is not transmitted over network
 * if any additional header field is needed,
 * if this new field need to be over network, add before *data
 * otherwise, add after *data.
 * the fields below larg will not be transmitted over the network.
 */
typedef struct Message{
	sos_pid_t  did;                          //!< module destination id
	sos_pid_t  sid;                          //!< module source id
	uint16_t daddr;                          //!< node destination address
	uint16_t saddr;                          //!< node source address
	uint8_t  type;                           //!< module specific message type
	uint8_t  len;                            //!< payload length 
	uint8_t  *data;                          //!< actual payload
	uint16_t flag;                           //!< flag to indicate the status of message, see below
	uint8_t payload[SOS_MSG_PAYLOAD_LENGTH]; //!< statically allocated payload
	struct Message *next;                    //!< link list for the Message
} PACK_STRUCT  
Message;


typedef int8_t (*msg_handler_t)(void *state, Message *m);


#define SOS_MSG_HEADER_SIZE (offsetof(struct Message, data))
#define SOS_MSG_DID_OFFSET  (offsetof(struct Message, did))
#define SOS_MSG_TYPE_OFFSET (offsetof(struct Message, type))
#define SOS_MSG_LEN_OFFSET (offsetof(struct Message, len))
#define SOS_MSG_PRE_HEADER_SIZE 1 //! This pre-header currently sends the group ID (Transparent to apps)
#define SOS_MSG_CRC_SIZE (sizeof(uint16_t))

/**
 * states for a tx/rx protocol to step through
 * while working with a sos msg
 *
 * the uninitalized state of any messing system must be no_state!
 * 
 * raw states are for framed raw byte streams.  the behavior of the 
 * system should be equivalant to that of a rx/tx data state.
 * 
 * crc_only is for byte streams that are doing crc verification
 * in the case of a sos_msg a crc is required
 *
 * the start/end states are msg wait states to allow for 
 * lower level framing (i.e. HDLC start stop symbols)
 *
 * the sequence of states corospond to the parts of a sos_msg
 * [START]  lower layer framing
 * HDR      header
 * DATA     payload
 * CRC_LOW  low byte of crc
 * CRC_HIGH low byte of crc
 * [END]    lower layer framing
 * 
 */
enum {
	SOS_MSG_NO_STATE,  // no defined state
	SOS_MSG_WAIT,      // expecting sos msg but no action

	SOS_MSG_TX_RAW,    // tx raw data no msg header/crc
	SOS_MSG_RX_RAW,    // rx raw data no msg header/crc

	SOS_MSG_TX_CRC_ONLY,  // raw data no msg header but crc enabled
	SOS_MSG_RX_CRC_ONLY,  // raw data no msg header but crc enabled

	SOS_MSG_TX_START,  // tx modes for sos msg
	SOS_MSG_TX_HDR,
	SOS_MSG_TX_DATA,
	SOS_MSG_TX_CRC_LOW,
	SOS_MSG_TX_CRC_HIGH,
	SOS_MSG_TX_END,

	SOS_MSG_RX_START,  // rx modes for sos msg
	SOS_MSG_RX_HDR,
	SOS_MSG_RX_DATA,
	SOS_MSG_RX_CRC_LOW,
	SOS_MSG_RX_CRC_HIGH,
	SOS_MSG_RX_END,
};

/**
 * @brief data structure used for statically allocated payload
 * We provide a common case allocation
 */
typedef struct {
	uint8_t byte;         //!< one byte parameter
	uint16_t word;        //!< two bytes parameter
} PACK_STRUCT
MsgParam;

/**
 * @brief message flag field
 * 
 * The flags are used for memory mgmt. and time sync.
 */

enum {
  // Network IO Flags
  // These flags have to be sequential
  // Please update NUM_IO_LINKS
  SOS_MSG_FROM_NETWORK    = 0x0100,    //!< Message is coming in from the network
  SOS_MSG_RADIO_IO        = 0x0200,    //!< Message is Rx/Tx over radio
  SOS_MSG_I2C_IO          = 0x0400,    //!< Message ix Rx/Tx over I2C
  SOS_MSG_UART_IO         = 0x0800,    //!< Message is Rx/Tx over UART
  SOS_MSG_SPI_IO          = 0x1000,    //!< Message is Rx/Tx over SPI
  SOS_MSG_ALL_LINK_IO     = 0x1E00,    //!< Message is Rx/Tx over all IO links
  SOS_MSG_LINK_AUTO       = 0x2000,    //!< automatically select right link
  // Scheduler Priority Flags
  SOS_MSG_SYSTEM_PRIORITY = 0x0080,    //!< Highest priority message
  SOS_MSG_HIGH_PRIORITY   = 0x0040,    //!< High priority message
  // Memory Management Flags
  SOS_MSG_RELIABLE        = 0x0008,    //!< Indicate senddone should be sent, memory will be included as payload
  SOS_MSG_RELEASE         = 0x0004,    //!< Indicate larg is dynamically allocated 
  SOS_MSG_SEND_FAIL       = 0x0002,    //!< Message failed to send
  // MAC flags
  SOS_MSG_USE_UBMAC       = 0x0020,    //!< Send packet using UBMAC
};

// This has to be the first network interface
#define SOS_MSG_START_IO SOS_MSG_RADIO_IO
// This is the number of IO links supported by the kernel
#define NUM_IO_LINKS     4

// SOS Link Identifier
enum{
  SOS_RADIO_LINK_ID = 0,
  SOS_I2C_LINK_ID,
  SOS_UART_LINK_ID,
  SOS_SPI_LINK_ID,
};


/**
 * @brief flag helpers
 */
// Network IO Flag Helpers
#define flag_msg_from_network(fflag)    ((fflag) & SOS_MSG_FROM_NETWORK)
#define flag_msg_from_radio(fflag)      ((fflag) & SOS_MSG_RADIO_IO)
#define flag_msg_from_i2c(fflag)        ((fflag) & SOS_MSG_I2C_IO)
#define flag_msg_from_uart(fflag)       ((fflag) & SOS_MSG_UART_IO)
#define flag_msg_from_spi(fflag)        ((fflag) & SOS_MSG_SPI_IO)
#define flag_msg_link_auto(fflag)       ((fflag) & SOS_MSG_LINK_AUTO)
// Scheduler Priority Flag Helpers
#define flag_system(fflag)              ((fflag) & SOS_MSG_SYSTEM_PRIORITY)
#define flag_high_priority(fflag)       ((fflag) & SOS_MSG_HIGH_PRIORITY)
// Memory Management Flag Helpers
#define flag_msg_release(fflag)         ((fflag) & SOS_MSG_RELEASE)
#define flag_msg_reliable(fflag)        ((fflag) & SOS_MSG_RELIABLE)
#define flag_send_fail(fflag)           ((fflag) & SOS_MSG_SEND_FAIL)
#define flag_use_ubmac(fflag)           ((fflag) & SOS_MSG_USE_UBMAC)

/**
 * @brief message filter flags
 *
 * These are used in ker_msg_change_rules()
 *
 * NOTE that the bottom four flags are allocated for kernel itself
 */
typedef uint8_t sos_ker_flag_t;
enum {
	//! user request receiving promiscuous messages
	SOS_MSG_RULES_PROMISCUOUS     = 0x40,
	//! module state is statically allocated
	SOS_KER_STATIC_MODULE         = 0x02,
	//! kernel flag indicating memory failed
	SOS_KER_MEM_FAILED            = 0x01,
};

/**
 * @brief starting number for each kind of message in a module
 *
 * This is module specific message type
 * kernel should not use these numbers
 */
enum {
	KER_MSG_START         = 0,
};

/**
 * By default, all messages are assume to be successful.
 * Module only gets message (INT_ERROR) when error happens
 */
// ---------------------------------------------------------------------------------------------
//                                                msg discription          
enum {
	MSG_INIT              = (KER_MSG_START + 0),  //!< initialization       
	MSG_DEBUG             = (KER_MSG_START + 1),  //!< debug info request    
	MSG_TIMER_TIMEOUT     = (KER_MSG_START + 2),  //!< timeout timer id    
	MSG_PKT_SENDDONE      = (KER_MSG_START + 3),  //!< send done            
	MSG_DATA_READY        = (KER_MSG_START + 4),  //!< sensor data ready  
	MSG_TIMER3_TIMEOUT    = (KER_MSG_START + 5),  //!< Timer 3 timeout   
	MSG_FINAL             = (KER_MSG_START + 6),  //!< process kill      
	MSG_FROM_USER         = (KER_MSG_START + 7),  //!< user input (gw only)
	MSG_GET_DATA          = (KER_MSG_START + 8),  //!< sensor get data    
	MSG_SEND_PACKET       = (KER_MSG_START + 9),  //!< send packet message (Implemented by routing protocols)
	MSG_DFUNC_REMOVED     = (KER_MSG_START + 10), //!< message to tell module that dynamic functions are removed, function entry index is included
	MSG_FUNC_USER_REMOVED = (KER_MSG_START + 11), //!< message to tell module that function user is removed, module id is included
	MSG_FETCHER_DONE      = (KER_MSG_START + 12), //!< module fetch is completed
	MSG_MODULE_OP         = (KER_MSG_START + 13), //!< module operation, see sos_module_types.h for the message format
	MSG_CAL_DATA_READY    = (KER_MSG_START + 14), //!< Calibrated Data Ready
	MSG_ERROR             = (KER_MSG_START + 15), //!< Error message contains <Mod Id, SOS Error No.>
	MSG_TIMESTAMP         = (KER_MSG_START + 16), //!< timestamped packet (used only by post_net)
	MSG_DISCOVERY         = (KER_MSG_START + 17), //!< discovery anouncement for new device detection on a link
	MSG_COMM_TEST         = (KER_MSG_START + 21), //!< test packet for developing comm layers 0x15 = 00010101 aiding scope debugging
	MSG_KER_UNKNOWN       = (KER_MSG_START + 31), //!< undefined or unknown message type
	//! MAXIMUM is 31 for now
	MOD_MSG_START		  = (KER_MSG_START + 32), //!< Type for Reply message and p2p message
};
//! PLEASE add name string to kernel/message.c

/**
 * @brief application message type definition
 */
enum {
	PROC_MSG_START		= 0x40,
	PLAT_MSG_START		= 0x80,
	MOD_CMD_START       = 0xc0,    //!< Type for Command message
};

#ifdef PC_PLATFORM
extern char ker_msg_name[][256];
#endif


#endif

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久精品在这里| 亚洲天堂av一区| www.亚洲免费av| 亚洲超碰精品一区二区| 久久亚洲精品国产精品紫薇| 欧美在线999| 国产91精品精华液一区二区三区 | 成人激情校园春色| 午夜精品aaa| 亚洲色图丝袜美腿| 久久婷婷综合激情| 欧美性大战久久久久久久| 风间由美一区二区三区在线观看| 婷婷丁香久久五月婷婷| 亚洲精品亚洲人成人网在线播放| 国产亚洲一区二区三区在线观看| 欧美一区二区三区免费| 日本道色综合久久| 粉嫩绯色av一区二区在线观看 | 中文一区二区在线观看| 4438成人网| 91福利社在线观看| 国产 欧美在线| 国产一级精品在线| 美女视频黄久久| 亚洲国产中文字幕| 一区二区三区在线观看国产| 国产精品视频麻豆| 精品国产电影一区二区| 欧美一区二区三区系列电影| 欧美午夜寂寞影院| 91久久精品一区二区二区| 99视频在线精品| 波多野结衣在线一区| 国产精品一区二区你懂的| 黄色日韩三级电影| 国产在线麻豆精品观看| 精品一区精品二区高清| 奇米色一区二区三区四区| 天堂一区二区在线免费观看| 天天免费综合色| 亚洲高清不卡在线| 亚洲成av人片一区二区梦乃| 亚洲一区视频在线| 亚洲精品成a人| 亚洲日本成人在线观看| 亚洲欧洲韩国日本视频| 中文字幕在线播放不卡一区| 国产精品色婷婷| 国产精品久久久久久久裸模| 国产精品久久久久影院| 中文字幕制服丝袜一区二区三区 | 亚洲另类春色国产| 亚洲黄色小视频| 亚洲欧美二区三区| 亚洲精品国产a久久久久久| 亚洲国产另类av| 亚洲午夜久久久久久久久久久| 亚洲精品免费播放| 亚洲va韩国va欧美va精品| 偷偷要91色婷婷| 精品综合久久久久久8888| 国产在线一区观看| 91亚洲资源网| 欧美三级视频在线| 日韩美女在线视频| 中文字幕免费在线观看视频一区| 亚洲欧美在线aaa| 亚洲国产婷婷综合在线精品| 日本美女一区二区| 国产成a人亚洲精| 色爱区综合激月婷婷| 欧美久久久影院| 久久午夜色播影院免费高清| 国产精品欧美一区二区三区| 亚洲激情第一区| 老司机午夜精品99久久| 成人中文字幕在线| 6080亚洲精品一区二区| 精品福利一二区| 日韩理论在线观看| 日本aⅴ免费视频一区二区三区| 国产精品一区二区免费不卡| 91福利在线导航| 337p粉嫩大胆色噜噜噜噜亚洲 | 国产精品免费丝袜| 一区二区欧美国产| 久久国产视频网| aaa国产一区| 在线综合亚洲欧美在线视频| 国产婷婷一区二区| 亚洲成av人**亚洲成av**| 国产永久精品大片wwwapp| 在线观看不卡一区| 久久精品视频网| 亚洲一区二区黄色| 国产传媒一区在线| 717成人午夜免费福利电影| 国产精品久久三| 精品一区二区三区av| 91网页版在线| 2021中文字幕一区亚洲| 亚洲一区二区在线免费看| 国产精品羞羞答答xxdd| 538在线一区二区精品国产| 中文字幕欧美激情一区| 免费高清在线视频一区·| 91黄色在线观看| 国产精品视频观看| 黑人巨大精品欧美一区| 欧美色综合天天久久综合精品| 国产午夜精品福利| 奇米色一区二区三区四区| 色偷偷久久一区二区三区| 国产性色一区二区| 免费av成人在线| 在线看日韩精品电影| 日韩国产欧美一区二区三区| 日本久久精品电影| 国产精品久久久久久久久图文区| 国模娜娜一区二区三区| 91精品国产欧美一区二区 | 蜜桃av噜噜一区| 91网站视频在线观看| 国产精品久久久久桃色tv| 国产一区999| 久久久美女艺术照精彩视频福利播放| 午夜视频在线观看一区二区三区| 97久久精品人人做人人爽| 国产精品拍天天在线| 国产成人免费视频一区| 久久久亚洲综合| 九九在线精品视频| 日韩一区二区三区电影| av电影天堂一区二区在线观看| 久久免费视频色| 国产美女精品一区二区三区| 亚洲精品在线一区二区| 久久91精品久久久久久秒播| 日韩三级视频在线看| 免费欧美日韩国产三级电影| 777精品伊人久久久久大香线蕉| 香港成人在线视频| 51午夜精品国产| 日日摸夜夜添夜夜添国产精品| 欧美日韩国产首页在线观看| 婷婷中文字幕一区三区| 6080国产精品一区二区| 日本视频中文字幕一区二区三区| 6080午夜不卡| 久久国产视频网| 久久精品亚洲精品国产欧美 | 欧美夫妻性生活| 日韩电影在线免费看| 在线综合亚洲欧美在线视频| 久久国产精品99久久久久久老狼| 久久夜色精品一区| 成人av在线资源| 亚洲精品免费看| 制服丝袜av成人在线看| 精品一区二区在线观看| 中文字幕第一区二区| 91美女福利视频| 日韩av一区二区三区四区| 2021国产精品久久精品| 成人午夜视频在线| 亚洲卡通动漫在线| 欧美日韩一区视频| 九九九久久久精品| 国产精品卡一卡二| 欧美日韩一区二区三区在线看| 日本亚洲一区二区| 久久午夜国产精品| 欧美tk丨vk视频| 成人国产精品免费观看| 亚洲va韩国va欧美va| 久久久.com| 欧美色精品在线视频| 精品在线免费视频| 18欧美乱大交hd1984| 欧美色图一区二区三区| 国产在线精品免费| 亚洲激情五月婷婷| 欧美精品一区二区久久婷婷| 91在线播放网址| 久久精品国产澳门| 自拍视频在线观看一区二区| 欧美一区二区视频在线观看| 丁香一区二区三区| 日韩精品一二三四| 国产精品久久久久久福利一牛影视 | 成人黄色777网| 日韩电影一区二区三区四区| 中文字幕va一区二区三区| 欧美人狂配大交3d怪物一区| 成人一级片在线观看| 日韩精品电影在线| 亚洲三级在线免费观看| 精品捆绑美女sm三区| 欧美色涩在线第一页|