def add_attribute(aname, rw=READ, tp=DevString, query='auto', extra=None): '''Adds a scalar attribute. If no read function is defined, create_rfun() will be used to generate a suitable default. ''' extra = PS.get_attr_extra(aname, extra) rfun_name = 'read_' + aname CLASS.attr_list[aname] = [[tp, SCALAR, rw], extra] if not hasattr(DEVICE, rfun_name): # creates generic read function rfun = create_rfun(aname, query=query) setattr(DEVICE, rfun_name, rfun)
def add_attribute(aname, rw=READ, tp=DevString, query='auto', extra=None): '''Adds a scalar attribute. If no read function is defined, create_rfun() will be used to generate a suitable default. ''' extra = PS.get_attr_extra(aname, extra) rfun_name = 'read_'+aname CLASS.attr_list[aname] = [[tp, SCALAR, rw] , extra ] if not hasattr(DEVICE, rfun_name): # creates generic read function rfun = create_rfun(aname, query=query) setattr(DEVICE, rfun_name, rfun)
def add_ec_attr(aname, mnemonic=None, rw=READ, tp=DevDouble, extra=None, qconv=None, wconv=None, query='auto'): '''Adds a scalars attribute to the server that roughly corresponds to a mnemonic being read or written. If no read_XYZ function exists, one will be created by create_rfun(). Likewise, if no query_XYZ functions exists, one will be created. ''' extra = PS.get_attr_extra(aname, extra) rfun_name = 'read_' + aname qfun_name = 'query_' + aname if mnemonic is None and not hasattr(DEVICE, qfun_name): msg = "neither mnemonic given to add_ec_attr %s nor query method defined" % ( aname, ) raise Exception(msg) CLASS.attr_list[aname] = [[tp, SCALAR, rw], extra] if not hasattr(DEVICE, rfun_name): rfun = create_rfun(aname, query=query) setattr(DEVICE, rfun_name, rfun) if not hasattr(DEVICE, qfun_name): if qconv is None: qconv = CONVERT[tp] qfun = create_ec_qfun(mnemonic, conv=qconv) setattr(DEVICE, qfun_name, qfun) if rw == READ: return wfun_name = 'write_' + aname if not hasattr(DEVICE, wfun_name): if wconv is None: wconv = CONVERT_WRITE.get(tp, str) wfun = create_ec_wfun(mnemonic, conv=wconv) setattr(DEVICE, wfun_name, wfun)
def add_ec_attr( aname, mnemonic=None, rw=READ, tp=DevDouble, extra=None, qconv=None, wconv=None, query='auto' ): '''Adds a scalars attribute to the server that roughly corresponds to a mnemonic being read or written. If no read_XYZ function exists, one will be created by create_rfun(). Likewise, if no query_XYZ functions exists, one will be created. ''' extra = PS.get_attr_extra(aname, extra) rfun_name = 'read_'+aname qfun_name = 'query_'+aname if mnemonic is None and not hasattr(DEVICE, qfun_name): msg = "neither mnemonic given to add_ec_attr %s nor query method defined" % (aname,) raise Exception(msg) CLASS.attr_list[aname] = [[tp, SCALAR, rw] , extra ] if not hasattr(DEVICE, rfun_name): rfun = create_rfun(aname, query=query) setattr(DEVICE, rfun_name, rfun) if not hasattr(DEVICE, qfun_name): if qconv is None: qconv = CONVERT[tp] qfun = create_ec_qfun(mnemonic, conv=qconv) setattr(DEVICE, qfun_name, qfun) if rw==READ: return wfun_name = 'write_'+aname if not hasattr(DEVICE, wfun_name): if wconv is None: wconv = CONVERT_WRITE.get(tp,str) wfun = create_ec_wfun(mnemonic, conv=wconv) setattr(DEVICE, wfun_name, wfun)