From: Yunhee Seo Date: Thu, 30 May 2024 12:44:41 +0000 (+0900) Subject: display: Add attribute for setting display state with option X-Git-Tag: accepted/tizen/8.0/unified/20240618.013352~23 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=2a465246400f91f2a75563d6768a6692294b762c;p=platform%2Fcore%2Fsystem%2Fdeviced.git display: Add attribute for setting display state with option New attribute: - id: DEVICED_DISPLAY_ATTR_TUPLE2_CURRENT_STATE_WITH_OPTION - type: SYSCOMMON_RESMAN_DATA_TYPE_2_UINT64 - setter: O - getter: X - 1st param: enum deviced_event - 2nd param: enum syscommon_deviced_display_state New attribute: - id: DEVICED_DISPLAY_ATTR_TUPLE4_LOCK_WITH_OPTION - type: SYSCOMMON_RESMAN_DATA_TYPE_4_UINT64 - setter: O - getter: X - 1st param: enum deviced_event - 2nd param: enum syscommon_deviced_display_state - 3rd param: display state flag (Macro starts with DEVICED_DISPLAY_STATE_*) - 4th param: timeout New attribute: - id: DEVICED_DISPLAY_ATTR_TUPLE3_UNLOCK_WITH_OPTION - type: SYSCOMMON_RESMAN_DATA_TYPE_3_UINT64 - setter: O - getter: X - 1st param: enum deviced_event - 2nd param: enum syscommon_deviced_display_state - 3rd param: display lock flag (Macro starts with DEVICED_LOCK_*) When the display state or display lock changing, some options are needed like below - time for locking or display state changing, triggered pid, lcd state, etc. To support above function, new attributes are added. Change-Id: Ifd2ef9ef33a0a3197d3ef5eb35a3e8a73c512844 Signed-off-by: Yunhee Seo --- diff --git a/src/display/resource-display.c b/src/display/resource-display.c index 911bf54f..3945efb1 100644 --- a/src/display/resource-display.c +++ b/src/display/resource-display.c @@ -43,6 +43,31 @@ typedef union { bool b; } resource_attr_data_t; +static int display_get_lcd_state_from_display_state(enum syscommon_deviced_display_state display_state, int *lcd_state) +{ + if (!lcd_state) + return -EINVAL; + + switch (display_state) { + case SYSCOMMON_DEVICED_DISPLAY_STATE_ON: + *lcd_state = LCD_NORMAL; + break; + case SYSCOMMON_DEVICED_DISPLAY_STATE_DIM: + *lcd_state = LCD_DIM; + break; + case SYSCOMMON_DEVICED_DISPLAY_STATE_OFF: + *lcd_state = LCD_OFF; + break; + case SYSCOMMON_DEVICED_DISPLAY_STATE_SLEEP: + *lcd_state = SUSPEND; + break; + default: + return -EINVAL; + } + + return 0; +} + static int set_display_attr_data(int resource_id, const struct syscommon_resman_resource_attribute *attr, const void *data, int count) @@ -96,6 +121,8 @@ static int set_tuple2_display_attr_data(int resource_id, const struct syscommon_resman_resource_attribute *attr, const void *data1, const void *data2, int count1, int count2) { + int ret = 0; + if (!data1 || !data2) return -EINVAL; @@ -137,6 +164,19 @@ static int set_tuple2_display_attr_data(int resource_id, display_panel_lcd_on_direct(flag); return 0; } + case DEVICED_DISPLAY_ATTR_TUPLE2_CURRENT_STATE_WITH_OPTION: + { + pid_t pid = *(pid_t *) data1; + enum syscommon_deviced_display_state display_state = *(enum syscommon_deviced_display_state *) data2; + int flag; + + ret = display_get_lcd_state_from_display_state(display_state, &flag); + if (ret < 0) + return ret; + + ret = display_state_transition_request_state_transition_with_option(pid, flag); + return ret; + } break; } @@ -147,6 +187,8 @@ static int set_tuple3_display_attr_data(int resource_id, const struct syscommon_resman_resource_attribute *attr, const void *data1, const void *data2, const void *data3, int count1, int count2, int count3) { + int ret = 0; + if (!data1 || !data2 || !data3) return -EINVAL; @@ -174,6 +216,57 @@ static int set_tuple3_display_attr_data(int resource_id, actor->caps &= ~caps; } break; + case DEVICED_DISPLAY_ATTR_TUPLE3_UNLOCK_WITH_OPTION: + { + enum deviced_event display_event_type = *(enum deviced_event *) data1; + enum syscommon_deviced_display_state display_state = *(enum syscommon_deviced_display_state *) data2; + unsigned long display_lock_flag = *(unsigned long *) data3; + int lcd_state = 0; + + ret = display_get_lcd_state_from_display_state(display_state, &lcd_state); + if (ret < 0) + return ret; + + ret = display_lock_request_unlock_with_option(display_event_type, lcd_state, display_lock_flag); + if (ret < 0) + return ret; + } + break; + default: + return -EINVAL; + } + + return 0; +} + +static int set_tuple4_display_attr_data(int resource_id, + const struct syscommon_resman_resource_attribute *attr, + const void *data1, const void *data2, const void *data3, const void *data4, + int count1, int count2, int count3, int count4) +{ + int ret = 0; + + if (!data1 || !data2 || !data3 || !data4) + return -EINVAL; + + switch (attr->id) { + case DEVICED_DISPLAY_ATTR_TUPLE4_LOCK_WITH_OPTION: + { + enum deviced_event display_event_type = *(enum deviced_event *) data1; + enum syscommon_deviced_display_state display_state = *(enum syscommon_deviced_display_state *) data2; + unsigned long display_state_flag = *(unsigned long *) data3; + int display_state_timeout = *(unsigned long *) data4; + int lcd_state = 0; + + ret = display_get_lcd_state_from_display_state(display_state, &lcd_state); + if (ret < 0) + return ret; + + ret = display_lock_request_lock_with_option(display_event_type, lcd_state, display_state_flag, display_state_timeout); + if (ret < 0) + return ret; + } + break; default: return -EINVAL; } @@ -427,6 +520,33 @@ static const struct syscommon_resman_resource_attribute display_attrs[] = { .get = get_display_attr_data, .is_supported = syscommon_resman_resource_attr_supported_always, }, + }, { + .name = "DEVICED_DISPLAY_ATTR_TUPLE2_CURRENT_STATE_WITH_OPTION", + .id = DEVICED_DISPLAY_ATTR_TUPLE2_CURRENT_STATE_WITH_OPTION, + .flag = SYSCOMMON_RESMAN_RESOURCE_FLAG_PUBLIC, + .type = SYSCOMMON_RESMAN_DATA_TYPE_2_UINT64, + .ops = { + .set_2_tuple = set_tuple2_display_attr_data, + .is_supported = syscommon_resman_resource_attr_supported_always, + }, + }, { + .name = "DEVICED_DISPLAY_ATTR_TUPLE4_LOCK_WITH_OPTION", + .id = DEVICED_DISPLAY_ATTR_TUPLE4_LOCK_WITH_OPTION, + .flag = SYSCOMMON_RESMAN_RESOURCE_FLAG_PUBLIC, + .type = SYSCOMMON_RESMAN_DATA_TYPE_4_UINT64, + .ops = { + .set_4_tuple = set_tuple4_display_attr_data, + .is_supported = syscommon_resman_resource_attr_supported_always, + }, + }, { + .name = "DEVICED_DISPLAY_ATTR_TUPLE3_UNLOCK_WITH_OPTION", + .id = DEVICED_DISPLAY_ATTR_TUPLE3_UNLOCK_WITH_OPTION, + .flag = SYSCOMMON_RESMAN_RESOURCE_FLAG_PUBLIC, + .type = SYSCOMMON_RESMAN_DATA_TYPE_3_UINT64, + .ops = { + .set_3_tuple = set_tuple3_display_attr_data, + .is_supported = syscommon_resman_resource_attr_supported_always, + }, } };