Ejemplo n.º 1
0
 def __init__(self, character_string=None, code_page=850, **keywords):
     if character_string != None:
         if keywords.has_key('decode'):
             raise ETypeError('character_string and decode keyword ' +
                              'are mutually exclusive')
         self.encode(character_string, code_page)
     elif keywords.has_key('decode'):
         self.decode(keywords['decode'])
     else:
         raise ETypeError('character_string or decode keyword required')
Ejemplo n.º 2
0
 def __init__(self, *args, **keywords):
     if keywords.has_key('decode'):
         self.decode(keywords['decode'])
     elif len(args) == 1:
         self.encode(args[0])
     else:
         raise ETypeError('requires ndpu or decode')
Ejemplo n.º 3
0
 def decode(self, buffer):
     if len(buffer) != 10:
         raise ETypeError('BDT entries must be 10 octets long')
     self.encoding = buffer
     self.addr = Addr(self.encoding[0:6])
     self.ttl = _str_as_ushort(self.encoding[6:8])
     self.seconds_remaining = _str_as_ushort(self.encoding[8:10]) + 30
Ejemplo n.º 4
0
 def decode(self, buffer):
     if len(buffer) != 10:
         raise ETypeError('BDT entries must be 10 octets long')
     self.encoding = buffer
     self.ip_address = _str_as_ulong(self.encoding[0:4])
     self.ip_port = _str_as_ushort(self.encoding[4:6])
     self.ip_mask = _str_as_ulong(self.encoding[6:10])
Ejemplo n.º 5
0
 def __init__(self, *args, **keywords):
     if keywords.has_key('decode'):
         self.decode(keywords['decode'])
     elif len(args) == 0:
         self.encode()
     else:
         raise ETypeError('requires no parameters or decode=')
Ejemplo n.º 6
0
def get_bdt_for(network):
    if BBMD_servers.has_key(network):
        try:
            return BBMD_servers[network].bdt.as_text()
        except:
            raise ETypeError('BDT as text failed')
    return []
Ejemplo n.º 7
0
 def __init__(self, *args, **keywords):
     self.entries = {}
     #self.network = 0  #init with network interface number?
     if keywords.has_key('from_text'):
         self.from_text(keywords['from_text'])
     elif len(args) > 0:
         raise ETypeError('requires no parameters or "from_text="')
     self._start_ticking()
Ejemplo n.º 8
0
def update_bbmds(network, list):
    try:
        if not BBMD_servers[
                network].register_as_foreign_device:  #block us from updating a table
            bdt = BroadcastDistributionTable(_network_map[network])
            bdt.update_bbmds(network, list)
    except:
        msglog.exception()
        raise ETypeError('Update BBMDS failed')
Ejemplo n.º 9
0
def _ip_format_str_as_ulong(string):
    ip_string = string
    answer = 0L
    index = ip_string.find('.')
    i = 0
    while index > 0:
        i += 1
        answer *= 256L
        v = int(ip_string[0:index])
        if v > 255:
            raise ETypeError('ip value greater than 255')
        answer += v
        ip_string = ip_string[index + 1:]
        index = ip_string.find('.')
    if i <> 3:
        raise ETypeError('ipstring format bad: %s' % string)
    answer *= 256L
    answer += int(ip_string)
    return answer
Ejemplo n.º 10
0
def encode_bit_string(value):
    """##
    # Return a Python string that contains the BACnet encoded octets for the
    # supplied BitString.
    # @param A BitString instance that describes the bit string
    #        to encode.
    # @returns A Python string containing the encoded octets."""
    if not isinstance(value, BitString):
        msg = 'Object must be derived from mpx.lib.bacnet.BitString'
        raise ETypeError(msg)
    return value.encoding
Ejemplo n.º 11
0
def encode_character_string(value):
    """##
    # Return a Python string that contains the BACnet encoded octets for the
    # supplied CharacterString.
    # @param A CharacterString derived class that describes the character string
    #        to encode.
    # @returns A Python string containing the encoded octets."""
    if not isinstance(value, CharacterString):
        msg = 'Object must be derived from mpx.lib.bacnet.CharacterString'
        raise ETypeError(msg)
    return value.encoding
Ejemplo n.º 12
0
def start_bbmd_service(interface=None,
                       initial_table=None,
                       node=None,
                       register_as_foreign_device=None):
    global BBMD_servers
    global BBMD_thread_started, RAFD_thread_started
    global The_BBMD_Server
    try:
        if interface:
            if not BBMD_servers.has_key(interface.network):
                BBMD_servers[interface.network] = BBMD_Server(interface)
                BBMD_servers[interface.network].bdt.node = node
            if initial_table:
                BBMD_servers[interface.network].bdt.from_text(
                    initial_table, node)
            if register_as_foreign_device:
                BBMD_servers[interface.network].register_as_foreign_device = 1
            BBMD_servers[interface.network].bbmd_enabled(1)
            #still needs to be enabled, either by bbmd node or external call
    except:
        raise ETypeError('BBMD failed to initialize table')

    if not BBMD_thread_started:
        BBMD_thread_started = 1
        The_BBMD_Server = _BBMD_Server(_recv_queue)
        try:
            if debug: print 'BBMD_Server: about to start'
            The_BBMD_Server.start()
        except:
            raise ETypeError('BBMD thread failed to start')
        #_bbmd_service( queue)  #single threaded test mode
    if register_as_foreign_device:
        if not RAFD_thread_started:
            RAFD_thread_started = 1
            The_RAFD_thread = _RAFD_Thread()
            try:
                The_RAFD_thread.start()
            except:
                raise EInvalidValue('RAFD thread failded to start')
Ejemplo n.º 13
0
 def __init__(self, interface, *args, **keywords):
     self.interface = interface
     self.ourBDTentry = None
     self.entries = []
     self.node = None  #supervising ion
     # @fixme ADD SELF
     self.reports = {}
     #self.network = 0  #init with network interface number?
     if keywords.has_key('from_text'):
         self.from_text(keywords['from_text'])
     elif len(args) > 0:
         raise ETypeError('requires no parameters or "from_text="')
     if self.ourBDTentry is None:  #used by broadcast_forwarded_message
         self._set_our_bdt_entry()