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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? routingmessages.py

?? 無線通信的主要編程軟件,是無線通信工作人員的必備工具,關天相關教程我會在后續(xù)傳上.
?? PY
字號:
# "Copyright (c) 2000-2003 The Regents of the University of California.  # All rights reserved.## Permission to use, copy, modify, and distribute this software and its# documentation for any purpose, without fee, and without written agreement# is hereby granted, provided that the above copyright notice, the following# two paragraphs and the author appear in all copies of this software.# # IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR# DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT# OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE UNIVERSITY# OF CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.# # THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES,# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY# AND FITNESS FOR A PARTICULAR PURPOSE.  THE SOFTWARE PROVIDED HEREUNDER IS# ON AN "AS IS" BASIS, AND THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATION TO# PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS."## @author Kamin Whitehouse #"""\RoutingMessages:  This is a package of classes that have some functionalitycommonly used by routing messages, eg. Rpc and RamSymbol.This class is not intended to be used on its own."""import sys, string, time, typesimport pytos.util.nescDecls as nescDeclsimport pytos.Comm as Commimport pytos.tools.Drip as Dripimport pytos.tools.Drain as Drainfrom copy import deepcopyclass RoutingMessage( nescDecls.TosMsg ) :  def __init__(self, parent, amType, *structArgs) :    #store the parent    self.parent = parent    #initialize the default call parameters to none (ie, use the parent's defaults)    for (callParam,default) in self.parent.defaultCallParams :      self.__dict__[callParam] = None    nescDecls.TosMsg.__init__(self, parent.app.enums.AM_RPCCOMMANDMSG, *structArgs)  def _assignParam(self, field, param, paramId) :    """assign a call parameter to the correct field (checking types)"""    if type(field) == nescDecls.nescType and (       type(param) == int or type(param) == long or       type(param) == float or type(param) == str or       type(param) == unicode ) :      field.value = param    elif type(field) == type(param) :      field = param    else :      raise Exception("Illegal parameter type for param #%s.  Requires type %s." % (        str(paramId), str(type(field))) )      def _send(self, address, *posArgs, **nameArgs) :    commArgs = ()        #posArgs and nameArgs now contain only field values.    #now assign them to the appropriate RoutingMessage fields.    #create a temporary RoutingMessage to hold the call-time parameters    thisCall = deepcopy(self)    for i in range(len(posArgs)) :      thisCall._assignParam(thisCall.value[thisCall.fields[i+1]["name"]], posArgs[i], i)    for key in nameArgs.keys() :      if not thisCall.value.has_key(key) :        raise Exception("parameter name %s non-existent" % key)      thisCall._assignParam(thisCall.value[key], nameArgs[key], key)    thisCall.parent.sendComm.send(address, thisCall, *commArgs)        def parseCallParams(self, nameArgs) :    callParams = self.getCallParams()    #parse any call-time call parameters    for param in nameArgs.keys() :      if callParams.has_key(param) :        callParams[param] = nameArgs[param]        del nameArgs[param]    return callParams  def getCallParams(self) :    """Use the default call parameters from the parent module, but if I have the same    field with a non-None value, use it instead"""    callParams = self.parent.getCallParams()    for param in callParams.keys() :      if self.__dict__.has_key(param) and self.__getattribute__(param) != None :        callParams[param] = self.__getattribute__(param)    return callParams  def __repr__(self) :    """full function name"""    return "%s object at %s:\n\n%s" % (self.__class__, hex(id(self)), str(self))      def register(self, listener, comm=()) :    self.parent.receiveComm.register(self, listener, *comm)      def unregister(self, listener, comm=()) :    self.parent.receiveComm.unregister(self, listener, *comm)class Shortcut (object):  """used to allow multiple levels of indirection w/routing messages using dots;  ie., to allow something.module.interface.RoutingMessage()"""  def __init__(self, parent, name):    self.parent = parent    self.name = name  def __getattr__(self, name) :    name = self.name + "." + name    if self.parent._messages.has_key(name) :      return self.parent._messages.get(name)    else :      for message in self.parent._messages.values() :        if message.nescType.find(name+".") == 0 :          return Shortcut(self.parent,name)      raise Exception("Cannot find %s. Check spelling." % name)  def __repr__(self):    return "%s object at %s:\n\n%s" % (self.__class__, hex(id(self)), str(self))    def __str__(self):    string = ""    funcs = ()    messageNames = self.parent._messages.keys()    messageNames.sort()    for message in messageNames :      if message.find(self.name) == 0 :        string += str(self.parent._messages[message])    string = string.replace(self.name + "." , "" )    return string  class RoutingMessages(object) :    def __init__(self, app) :    self.app = app    self._messages = {}    ## In this constructor, we connect to the routing layer as best as    ## we can.  This may mean creating new drip/drain instances,    ## reusing old ones, reusing old Comm objects, or not connecting    ## at all, depending...    if app.motecom == None:      return    #connect to sendComm: use localComm if user requested or if drip not compiled in.    self.address=app.enums.TOS_BCAST_ADDR    if app.localCommOnly==True or "AM_DRIPMSG" not in app.enums._enums:      self.sendComm = Comm.getCommObject(app, app.motecom)    else :      self.sendComm = Drip.getDripObject(app, app.motecom, app.enums.AM_RPCCOMMANDMSG)[0]    #connect to receiveComm: always use Drain unless not compiled in    if "AM_DRAINMSG" not in app.enums._enums:      self.receiveComm = Comm.getCommObject(app, app.motecom)      self.returnAddress = app.enums.TOS_BCAST_ADDR    else :      treeID = 0xfffe                                        #can we set this automatically?      self.receiveComm = Drain.getDrainObject(app, app.motecom, treeID)[0]      if app.localCommOnly == False :        self.receiveComm.maintainTree()      if app.tosbase==True:                                  #can we discover this like deluge?        self.returnAddress = treeID      else :        self.returnAddress = app.enums.TOS_UART_ADDR        def initializeCallParams(self, callParams) :    for (callParam,defaultVal) in self.defaultCallParams :      if callParams.has_key(callParam) :        self.__dict__[callParam] = callParams[callParam]      elif not self.__dict__.has_key(callParam):        self.__dict__[callParam] = defaultVal  def getCallParams(self) :    callParams = {}    for (callParam,default) in self.defaultCallParams :      callParams[callParam] = self.__dict__[callParam]    return callParams  def __getattr__(self, name) :    for function in self._messages.values() :      if function.nescType.find(name + ".") == 0 :        return Shortcut(self,name)    raise AttributeError("No such attribute %s" % name)      def __repr__(self) :    return "%s object at %s:\n\n%s" % (self.__class__, hex(id(self)), str(self))    def __str__(self) :    """ Print all available RoutingMessages."""    string = ""    keys = self._messages.keys()    keys.sort()    for name in keys :      string += str( self._messages[name])    return string

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美精品 日韩| av一区二区不卡| 亚洲综合另类小说| 国产区在线观看成人精品| 欧美大片日本大片免费观看| 欧美二区乱c少妇| 欧美另类z0zxhd电影| 色婷婷国产精品| 色网站国产精品| 日本黄色一区二区| 色狠狠色狠狠综合| 欧美性猛片xxxx免费看久爱| 欧美午夜寂寞影院| 欧美一卡二卡三卡四卡| 日韩免费一区二区| 久久亚洲综合av| 国产精品久久久久精k8| 亚洲蜜臀av乱码久久精品蜜桃| 亚洲欧美日韩在线不卡| 亚洲一区二区三区四区不卡| 性感美女极品91精品| 美日韩一级片在线观看| 国精产品一区一区三区mba桃花 | 日本少妇一区二区| 麻豆91小视频| 国产二区国产一区在线观看| 99这里只有久久精品视频| 在线看日本不卡| 欧美一区二区三区精品| 欧美国产激情一区二区三区蜜月| 亚洲色图欧洲色图婷婷| 日韩电影免费在线看| 成人开心网精品视频| 欧美日韩免费电影| 日本一区二区三区电影| 午夜精品视频一区| 成人性生交大片免费看中文| 欧美日韩在线免费视频| 中文字幕的久久| 日本中文字幕不卡| 成人18精品视频| 日韩精品自拍偷拍| 亚洲黄网站在线观看| 狠狠色丁香久久婷婷综| 精品视频一区 二区 三区| 国产视频不卡一区| 秋霞午夜av一区二区三区| 欧美日韩国产乱码电影| 精品久久久久久最新网址| 一区二区日韩电影| 国产成人免费视频精品含羞草妖精| 欧美综合天天夜夜久久| 国产精品天干天干在观线| 日本不卡不码高清免费观看| 色婷婷综合久久久中文字幕| 久久精品一区蜜桃臀影院| 免费成人小视频| 欧美色图片你懂的| 亚洲欧洲99久久| 国产高清不卡二三区| 日韩三级在线免费观看| 亚洲精品自拍动漫在线| 成人av电影免费在线播放| 欧美精品一区二| 久久丁香综合五月国产三级网站 | 亚洲精品免费在线| 国产成人精品一区二| 欧美成人女星排行榜| 午夜视频一区在线观看| 99久久久免费精品国产一区二区| 久久亚洲综合色| 国产精品一二一区| 久久亚洲春色中文字幕久久久| 亚洲第一精品在线| 欧美日韩一本到| 亚洲成人激情av| 欧美剧在线免费观看网站| 一区二区在线免费| 91老师片黄在线观看| 亚洲精品中文在线影院| 在线这里只有精品| 亚洲香蕉伊在人在线观| 欧美日韩中文一区| 三级影片在线观看欧美日韩一区二区 | 午夜精品久久久久久久久久| 欧美又粗又大又爽| 日韩影院精彩在线| 日韩一区二区在线观看| 国产在线精品国自产拍免费| 久久久久久久久久久99999| 国产成人亚洲综合a∨婷婷| 国产精品毛片久久久久久久| 91丨porny丨最新| 一个色在线综合| 欧美一区2区视频在线观看| 激情综合网激情| 国产精品美女久久久久高潮| 91原创在线视频| 香蕉av福利精品导航| 欧美mv日韩mv| 一本一道综合狠狠老| 亚洲www啪成人一区二区麻豆 | 国产又粗又猛又爽又黄91精品| 国产偷国产偷精品高清尤物| a美女胸又www黄视频久久| 调教+趴+乳夹+国产+精品| 精品国产乱码久久久久久蜜臀| 成人一区二区三区在线观看 | 在线日韩一区二区| 秋霞午夜av一区二区三区| 日本一区二区成人| 欧美日韩中文国产| 国产成人av网站| 亚洲国产日韩av| 国产精品色一区二区三区| 欧美久久久一区| 成人动漫一区二区| 秋霞成人午夜伦在线观看| 中文字幕欧美三区| 欧美日韩亚洲另类| 99re成人精品视频| 国产尤物一区二区| 日韩福利视频导航| |精品福利一区二区三区| 日韩精品一区二区三区中文不卡| av激情亚洲男人天堂| 激情欧美一区二区| 亚洲成人久久影院| 亚洲色欲色欲www| 亚洲国产精品t66y| 欧美一级生活片| 欧美日韩亚洲综合在线| av在线一区二区三区| 国产福利91精品一区二区三区| 日韩精品亚洲一区| 亚洲一区二区三区中文字幕| 欧美国产精品一区二区| 精品久久国产97色综合| 欧美精品在线观看一区二区| 色哟哟一区二区| 不卡av在线免费观看| 高清在线不卡av| 国产乱码精品一区二区三区五月婷| 爽爽淫人综合网网站| 亚洲一区免费视频| 一区二区三区久久久| 亚洲婷婷国产精品电影人久久| 国产日韩综合av| 久久久久久夜精品精品免费| 精品精品欲导航| 精品免费日韩av| 久久综合给合久久狠狠狠97色69| 日韩精品中文字幕在线不卡尤物| 欧美精品777| 日韩视频在线永久播放| 日韩一区二区高清| 日韩一级大片在线观看| 日韩亚洲欧美中文三级| 2020国产精品| 国产欧美日韩精品在线| 中文字幕第一区综合| 综合色天天鬼久久鬼色| 亚洲精品高清在线观看| 亚洲愉拍自拍另类高清精品| 亚洲成人动漫精品| 麻豆精品视频在线观看| 国产综合久久久久影院| 国产成人午夜99999| 99视频精品在线| 欧美视频一区二区三区| 91精品国产一区二区三区| 精品日韩99亚洲| 亚洲国产精品精华液2区45| 成人欧美一区二区三区1314| 一区二区三区四区国产精品| 天天综合网 天天综合色| 精品亚洲成a人在线观看| 风间由美中文字幕在线看视频国产欧美| 成人av在线资源| 欧美日韩国产综合久久| 欧美精品一区二区久久婷婷| 日本一区二区三区四区| 亚洲国产美女搞黄色| 韩国三级在线一区| 99国产精品国产精品毛片| 777色狠狠一区二区三区| 国产亚洲污的网站| 亚洲高清在线视频| 国产精品中文字幕欧美| 日本韩国精品一区二区在线观看| 91精品国产aⅴ一区二区| www国产亚洲精品久久麻豆| 一个色妞综合视频在线观看| 美女诱惑一区二区| 一本色道a无线码一区v| 欧美电视剧免费观看| 一区二区三区精密机械公司| 韩国三级电影一区二区| 欧美色男人天堂| 中文字幕欧美一区|