summaryrefslogtreecommitdiff
path: root/pyvisa-py/common.py
blob: acf9edc2af2c21d8ff06d8fadcf5e0ce81173b25 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
# -*- coding: utf-8 -*-
"""
    pyvisa-sim.common
    ~~~~~~~~~~~~~~~~~

    Common code.

    :copyright: 2014 by PyVISA-sim Authors, see AUTHORS for more details.
    :license: MIT, see LICENSE for more details.
"""

from __future__ import (division, unicode_literals, print_function,
                        absolute_import)

import logging
import sys

from pyvisa import logger

logger = logging.LoggerAdapter(logger, {'backend': 'py'})


class MockInterface(object):

    def __init__(self, resource_name):
        self.resource_name = resource_name


class NamedObject(object):
    """A class to construct named sentinels.
    """

    def __init__(self, name):
        self.name = name

    def __repr__(self):
        return '<%s>' % self.name

    __str__ = __repr__


if sys.version >= '3':
    def iter_bytes(data, mask=None, send_end=False):

        if send_end and mask is None:
            raise ValueError('send_end requires a valid mask.')

        if mask is None:
            for d in data[:]:
                yield bytes([d])

        else:
            for d in data[:-1]:
                yield bytes([d & ~mask])

            if send_end:
                yield bytes([data[-1] | ~mask])
            else:
                yield bytes([data[-1] & ~mask])

    int_to_byte = lambda val: bytes([val])
    last_int = lambda val: val[-1]
else:
    def iter_bytes(data, mask=None, send_end=False):

        if send_end and mask is None:
            raise ValueError('send_end requires a valid mask.')

        if mask is None:
            for d in data[:]:
                yield d
        else:
            for d in data[:-1]:
                yield chr(ord(d) & ~mask)

            if send_end:
                yield chr(ord(data[-1]) | ~mask)
            else:
                yield chr(ord(data[-1]) & ~mask)

    int_to_byte = chr
    last_int = lambda val: ord(val[-1])