mirror of
https://github.com/esphome/esphome.git
synced 2026-05-27 11:56:11 +08:00
[mipi_dsi] Disallow swap_xy (#14124)
This commit is contained in:
committed by
Jesse Hills
parent
19f4845185
commit
0975755a9d
@@ -87,38 +87,24 @@ COLOR_DEPTHS = {
|
|||||||
|
|
||||||
def model_schema(config):
|
def model_schema(config):
|
||||||
model = MODELS[config[CONF_MODEL].upper()]
|
model = MODELS[config[CONF_MODEL].upper()]
|
||||||
|
model.defaults[CONF_SWAP_XY] = cv.UNDEFINED
|
||||||
transform = cv.Schema(
|
transform = cv.Schema(
|
||||||
{
|
{
|
||||||
cv.Required(CONF_MIRROR_X): cv.boolean,
|
cv.Required(CONF_MIRROR_X): cv.boolean,
|
||||||
cv.Required(CONF_MIRROR_Y): cv.boolean,
|
cv.Required(CONF_MIRROR_Y): cv.boolean,
|
||||||
|
cv.Optional(CONF_SWAP_XY): cv.invalid(
|
||||||
|
"Axis swapping not supported by DSI displays"
|
||||||
|
),
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
if model.get_default(CONF_SWAP_XY) != cv.UNDEFINED:
|
|
||||||
transform = transform.extend(
|
|
||||||
{
|
|
||||||
cv.Optional(CONF_SWAP_XY): cv.invalid(
|
|
||||||
"Axis swapping not supported by this model"
|
|
||||||
)
|
|
||||||
}
|
|
||||||
)
|
|
||||||
else:
|
|
||||||
transform = transform.extend(
|
|
||||||
{
|
|
||||||
cv.Required(CONF_SWAP_XY): cv.boolean,
|
|
||||||
}
|
|
||||||
)
|
|
||||||
# CUSTOM model will need to provide a custom init sequence
|
# CUSTOM model will need to provide a custom init sequence
|
||||||
iseqconf = (
|
iseqconf = (
|
||||||
cv.Required(CONF_INIT_SEQUENCE)
|
cv.Required(CONF_INIT_SEQUENCE)
|
||||||
if model.initsequence is None
|
if model.initsequence is None
|
||||||
else cv.Optional(CONF_INIT_SEQUENCE)
|
else cv.Optional(CONF_INIT_SEQUENCE)
|
||||||
)
|
)
|
||||||
swap_xy = config.get(CONF_TRANSFORM, {}).get(CONF_SWAP_XY, False)
|
# Dimensions are optional if the model has a default width
|
||||||
|
cv_dimensions = cv.Optional if model.get_default(CONF_WIDTH) else cv.Required
|
||||||
# Dimensions are optional if the model has a default width and the swap_xy transform is not overridden
|
|
||||||
cv_dimensions = (
|
|
||||||
cv.Optional if model.get_default(CONF_WIDTH) and not swap_xy else cv.Required
|
|
||||||
)
|
|
||||||
pixel_modes = (PIXEL_MODE_16BIT, PIXEL_MODE_24BIT, "16", "24")
|
pixel_modes = (PIXEL_MODE_16BIT, PIXEL_MODE_24BIT, "16", "24")
|
||||||
schema = display.FULL_DISPLAY_SCHEMA.extend(
|
schema = display.FULL_DISPLAY_SCHEMA.extend(
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -15,8 +15,13 @@ esp_ldo:
|
|||||||
|
|
||||||
display:
|
display:
|
||||||
- platform: mipi_dsi
|
- platform: mipi_dsi
|
||||||
|
id: p4_nano
|
||||||
model: WAVESHARE-P4-NANO-10.1
|
model: WAVESHARE-P4-NANO-10.1
|
||||||
|
rotation: 90
|
||||||
|
- platform: mipi_dsi
|
||||||
|
id: p4_86
|
||||||
|
model: "WAVESHARE-P4-86-PANEL"
|
||||||
|
rotation: 180
|
||||||
i2c:
|
i2c:
|
||||||
sda: GPIO7
|
sda: GPIO7
|
||||||
scl: GPIO8
|
scl: GPIO8
|
||||||
|
|||||||
@@ -119,9 +119,11 @@ def test_code_generation(
|
|||||||
|
|
||||||
main_cpp = generate_main(component_fixture_path("mipi_dsi.yaml"))
|
main_cpp = generate_main(component_fixture_path("mipi_dsi.yaml"))
|
||||||
assert (
|
assert (
|
||||||
"mipi_dsi_mipi_dsi_id = new mipi_dsi::MIPI_DSI(800, 1280, display::COLOR_BITNESS_565, 16);"
|
"p4_nano = new mipi_dsi::MIPI_DSI(800, 1280, display::COLOR_BITNESS_565, 16);"
|
||||||
in main_cpp
|
in main_cpp
|
||||||
)
|
)
|
||||||
assert "set_init_sequence({224, 1, 0, 225, 1, 147, 226, 1," in main_cpp
|
assert "set_init_sequence({224, 1, 0, 225, 1, 147, 226, 1," in main_cpp
|
||||||
assert "mipi_dsi_mipi_dsi_id->set_lane_bit_rate(1500);" in main_cpp
|
assert "p4_nano->set_lane_bit_rate(1500);" in main_cpp
|
||||||
|
assert "p4_nano->set_rotation(display::DISPLAY_ROTATION_90_DEGREES);" in main_cpp
|
||||||
|
assert "p4_86->set_rotation(display::DISPLAY_ROTATION_0_DEGREES);" in main_cpp
|
||||||
# assert "backlight_id = new light::LightState(mipi_dsi_dsibacklight_id);" in main_cpp
|
# assert "backlight_id = new light::LightState(mipi_dsi_dsibacklight_id);" in main_cpp
|
||||||
|
|||||||
Reference in New Issue
Block a user