43 lines
1.3 KiB
Python
43 lines
1.3 KiB
Python
# -*- coding: utf-8 -*-
|
|
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
|
|
|
from re import sub, finditer
|
|
import subprocess
|
|
from vcgencmd import Vcgencmd
|
|
import RPi.GPIO as GPIO
|
|
|
|
from odoo.addons.hw_drivers.interface import Interface
|
|
|
|
|
|
class DisplayInterface(Interface):
|
|
_loop_delay = 0
|
|
connection_type = 'display'
|
|
|
|
def get_devices(self):
|
|
display_devices = {}
|
|
x_screen = 0
|
|
hdmi_port = {'hdmi_0' : 2}
|
|
rpi_type = GPIO.RPI_INFO.get('TYPE')
|
|
# RPI 3B+ response on for booth hdmi port
|
|
if 'Pi 4' in rpi_type:
|
|
hdmi_port.update({'hdmi_1': 7})
|
|
|
|
for hdmi in hdmi_port:
|
|
power_state_hdmi = Vcgencmd().display_power_state(hdmi_port.get(hdmi))
|
|
if power_state_hdmi == 'on':
|
|
iot_device = {
|
|
'identifier': hdmi,
|
|
'name': 'Display hdmi ' + str(x_screen),
|
|
'x_screen': str(x_screen),
|
|
}
|
|
display_devices[hdmi] = iot_device
|
|
x_screen += 1
|
|
|
|
if not len(display_devices):
|
|
# No display connected, create "fake" device to be accessed from another computer
|
|
display_devices['distant_display'] = {
|
|
'name': "Distant Display",
|
|
}
|
|
|
|
return display_devices
|