mirror of
https://github.com/liberatedsystems/openCom-Companion.git
synced 2024-11-29 00:30:36 +01:00
105 lines
2.5 KiB
Python
105 lines
2.5 KiB
Python
|
'''
|
||
|
IrBlaster
|
||
|
============
|
||
|
|
||
|
The :class:`IrBlaster` provides access to public methods by which your device
|
||
|
can act as a remote and could be used to control your TV, AC, Music Player,
|
||
|
Projectors, Set top box or anything that can be controlled by a remote.
|
||
|
|
||
|
.. note::
|
||
|
- On Android your app needs the TRANSMIT_IR permission which allows an
|
||
|
application to use the device's IR transmitter, If available.
|
||
|
|
||
|
Simple Examples
|
||
|
---------------
|
||
|
|
||
|
To get transmit an IR sequence::
|
||
|
|
||
|
>>> from plyer import irblaster
|
||
|
>>> irblaster.transmit(frequency, pattern, mode)
|
||
|
|
||
|
To get frequencies::
|
||
|
|
||
|
>>> irblaster.frequencies
|
||
|
|
||
|
To check if IrBlaster exists::
|
||
|
|
||
|
>>> irblaster.exists()
|
||
|
True/False
|
||
|
|
||
|
Supported Platforms
|
||
|
-------------------
|
||
|
Android
|
||
|
|
||
|
'''
|
||
|
|
||
|
|
||
|
class IrBlaster:
|
||
|
'''
|
||
|
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 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 exists(self):
|
||
|
'''
|
||
|
Check if the device has an infrared emitter.
|
||
|
'''
|
||
|
return self._exists()
|
||
|
|
||
|
# private
|
||
|
|
||
|
def _get_frequencies(self):
|
||
|
raise NotImplementedError()
|
||
|
|
||
|
def _transmit(self, frequency, pattern, mode):
|
||
|
raise NotImplementedError()
|
||
|
|
||
|
def _exists(self):
|
||
|
raise NotImplementedError()
|