summaryrefslogtreecommitdiff
path: root/external/plyer/facades/irblaster.py
blob: 0e15a0759cd1c941766b6b7abfda07d9d74e072c (plain) (blame)
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
class IrBlaster(object):
    '''Infrared blaster facade.'''

    @staticmethod
    def periods_to_microseconds(frequency, pattern):
        '''Convert a pattern from period counts to microseconds.
        '''
        period = 1000000. / frequency
        return [period * x for x in pattern]

    @staticmethod
    def microseconds_to_periods(frequency, pattern):
        '''Convert a pattern from microseconds to period counts.
        '''
        period = 1000000. / frequency
        return [x / period for x in pattern]

    @property
    def frequencies(self):
        '''Property which contains a list of frequency ranges
           supported by the device in the form:

           [(from1, to1),
            (from2, to2),
            ...
            (fromN, toN)]
        '''
        return self.get_frequencies()

    def get_frequencies(self):
        return self._get_frequencies()

    def _get_frequencies(self):
        raise NotImplementedError()

    def transmit(self, frequency, pattern, mode='period'):
        '''Transmit an IR sequence.

        :parameters:
            `frequency`: int
                Carrier frequency for the IR transmission.
            `pattern`: list[int]
                Burst pair pattern to transmit.
            `mode`: str, defaults to 'period'
                Specifies the format of the pattern values.
                Can be 'period' or 'microseconds'.
        '''
        return self._transmit(frequency, pattern, mode)

    def _transmit(self, frequency, pattern, mode):
        raise NotImplementedError()

    def exists(self):
        '''Check if the device has an infrared emitter.
        '''
        return self._exists()

    def _exists(self):
        raise NotImplementedError()