Current fota_gui codes are based on old tdm library.
This patch applies the lastest changes for fota gui.
Change-Id: I6b4334799fba12e306b89535a14014d08b0e7cfe
Signed-off-by: Sunmin Lee <sunm.lee@samsung.com>
ENDIF("${CMAKE_BUILD_TYPE}" STREQUAL "")
MESSAGE("Build type: ${CMAKE_BUILD_TYPE}")
-IF("${FOTA_PARTITION_TYPE}" STREQUAL "PART_TW1")
-
INCLUDE(FindPkgConfig)
pkg_check_modules(gui_pkgs REQUIRED
libtbm
fota_gui_main.c
fota_gr.c
fota_png.c
- tdm-if.c
fota_gui_util.c
-)
-ELSE()
-
-INCLUDE(FindPkgConfig)
-pkg_check_modules(gui_pkgs REQUIRED
- libtbm
- libtdm
- libpng
-)
-SET(GUI_SRCS
- fota_gui_main.c
- fota_gr.c
- fota_png.c
tdm-if.c
- fota_gui_util.c
)
-ENDIF()
FOREACH(flag ${gui_pkgs_CFLAGS})
SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}")
IF("${FOTA_PARTITION_TYPE}" STREQUAL "PART_TW1")
- #ADD_DEFINITIONS("-DFEATURE_ROTATE")
- SET(GUI_SRCS ${GUI_SRCS} fota_gr_direct_wc1.c)
-ELSE()
- SET(GUI_SRCS ${GUI_SRCS} fota_gr_direct.c)
+ SET(GUI_SRCS ${GUI_SRCS} fota_gr_direct_tw1.c)
ENDIF("${FOTA_PARTITION_TYPE}" STREQUAL "PART_TW1")
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS} -fPIE")
SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--as-needed -pie")
ADD_EXECUTABLE(${FOTA_GUI} ${GUI_SRCS})
-TARGET_LINK_LIBRARIES(${FOTA_GUI} ${gui_pkgs_LDFLAGS} ${LIBS})
+TARGET_LINK_LIBRARIES(${FOTA_GUI} ${gui_pkgs_LDFLAGS} ${LIBS} -lpthread)
ADD_EXECUTABLE(${FOTA_GUI_TEST} fota_gui_test.c)
+++ /dev/null
-/*
- * tota-ua
- *
- * Copyright (c) 2017 Samsung Electronics Co., Ltd.
- *
- * Licensed under the Apache License, Version 2.0 (the License);
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef __FOTA_COMMON_H__
-#define __FOTA_COMMON_H__
-
-
-#include <stdio.h>
-#include "fota_log.h"
-
-typedef signed char s8;
-typedef unsigned char u8;
-
-typedef signed short s16;
-typedef unsigned short u16;
-
-typedef signed int s32;
-typedef unsigned int u32;
-typedef u32 size_t;
-
-typedef signed long sl32;
-typedef unsigned long ul32;
-
-typedef signed long long s64;
-typedef unsigned long long u64;
-
-#define UNUSED(x) (void)(x)
-
-#endif /* __FOTA_COMMON_H__ */
#define __FOTA_FBINFO_H__
typedef struct _FbInfo {
- unsigned char *buf;
- unsigned sz;
+ unsigned char *buf[2];
+ unsigned int current_fb_id;
int w;
int h;
+ int sz;
+ int degree;
+ int full_flag;
} FbInfo;
#endif /* __FOTA_FBINFO_H__ */
#ifndef __FOTA_GR_H__
#define __FOTA_GR_H__
-#include "fota_common.h"
-
extern int fota_gr_init(void);
extern void fota_gr_deinit(void);
extern void fota_gr_update_progress(int percent);
-extern void fota_gr_clear_screen(u32 color);
-
+extern void fota_gr_clear_screen(unsigned int color);
+extern void fota_gr_direct_circular_progress(void);
#endif /* __FOTA_GR_H__ */
#ifndef __FOTA_GR_DIRECT_H__
#define __FOTA_GR_DIRECT_H__
-#include "fota_common.h"
+#include "fota_gui_common.h"
extern int fota_gr_direct_init(void);
extern void fota_gr_direct_deinit(void);
/*****************************************************************************
** header files
*****************************************************************************/
+#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "fota_fbinfo.h"
#include "tdm-if.h"
+#define UNUSED(x) (void)(x)
-
-#define COLOR_RED 0xFF0000
-#define COLOR_GREEN 0xFF00
-#define COLOR_BLUE 0x00FF
-#define COLOR_WHITE 0xFFFFFF
#define COLOR_BLACK 0x0000
-#define COLOR_GRAY 0xAAAAAA
-#define COLOR_LIGHTGRAY 0xDE39
#define MAX_PATH 256
#define MAX_FILE_PATH 512
#endif
#define IMG_BASE RESDIR "/images/"
-#define POPUP_IMG_NAME "wc_popup_line.png"
-#define MAIN_IMG_NAME "wc_fota_start_downloading.png"
+#define MAIN_IMG_NAME "tw1_start_downloading.png"
#define MAIN_PG_IMG_NAME "tw1_fota_progress_bg.png"
-#define PROGRESS_IMG_PREFIX "wc_fota_progress_"
#define PROGRESS_BAR_IMG_PREFIX "tw1_fota_progress_"
-#define PROGRESS_NUM_PREFIX "wc_fota_downloading_"
-#define PERCENT_IMG_NAME "wc_fota_downloading_percent.png"
+#define PROGRESS_NUM_PREFIX "tw1_fota_downloading_"
+#define PERCENT_IMG_NAME "tw1_fota_downloading_percent.png"
/*****************************************************************************
** global variables
*****************************************************************************/
FbInfo s_fbi;
+tdm_if_disp s_disp;
int s_percent_to_draw = 0;
-#ifdef FEATURE_ROTATE
-int s_degree = 0;
-#endif
int s_saved_percent = -1;
+/*-----------------------------------------------------------------------------
+ fb_open()
+ ----------------------------------------------------------------------------*/
+int fb_open(FbInfo *fbi)
+{
+ memset(&s_disp, 0x00, sizeof(struct _tdm_if_disp));
+
+ if (tdm_if_display_init(&s_disp)) {
+ LOGE("tdm_if_display_init fail!!\n");
+ return -1;
+ }
+
+ fbi->buf[FRONT_BUFFER] = s_disp.buffer[FRONT_BUFFER];
+ fbi->buf[BACK_BUFFER] = s_disp.buffer[BACK_BUFFER];
+ fbi->current_fb_id = s_disp.current_buf_id;
+ fbi->w = s_disp.width;
+ fbi->h = s_disp.height;
+ fbi->sz = s_disp.buffer_size;
+
+ return 0;
+}
+
+/*-----------------------------------------------------------------------------
+ fb_close()
+ ----------------------------------------------------------------------------*/
+void fb_close(FbInfo *fbi)
+{
+ UNUSED(fbi);
+ tdm_if_display_deinit(&s_disp);
+}
+
+/*------------------------------------------------------------------------------
+ fb_display()
+------------------------------------------------------------------------------*/
+int fb_display(FbInfo *fbi)
+{
+ s_disp.current_buf_id = fbi->current_fb_id;
+ LOG("current_fb_id : %d", fbi->current_fb_id);
+ tdm_if_display_update(&s_disp);
+
+ return 0;
+}
+
+/*-----------------------------------------------------------------------------
+ fb_draw_img_forced_update()
+ ----------------------------------------------------------------------------*/
+void fb_draw_img_forced_update(FbInfo *fbi)
+{
+ int ret = 0;
+ ret = fb_display(fbi);
+ LOG("current_fb_id : %d, ret : %d", fbi->current_fb_id, ret);
+}
+/*-----------------------------------------------------------------------------
+ fb_draw_img_check_lcd_on()
+ ----------------------------------------------------------------------------*/
+void fb_draw_img_check_lcd_on(FbInfo *fbi)
+{
+
+ int ret = 0;
+
+ fbi->current_fb_id = FRONT_BUFFER;
+
+ LOG("current_fb_id :%d", fbi->current_fb_id);
+
+ ret = fb_display(fbi);
+
+ LOG("%s - drawing... ret : %d", __func__, ret);
+}
+
+/*-----------------------------------------------------------------------------
+ fb_clear_screen()
+ ----------------------------------------------------------------------------*/
+void fb_clear_screen(FbInfo *fbi, unsigned int color)
+{
+ unsigned int *fb_buf_cur = NULL;
+ int loop_count = fbi->w * fbi->h;
+
+ fb_buf_cur = (unsigned int *)fbi->buf[FRONT_BUFFER];
+
+ if (fb_buf_cur == NULL) {
+ LOG("fb_buf_cur is null error...");
+ return;
+ }
+ while (loop_count--)
+ *(fb_buf_cur++) = color;
+
+}
/*-----------------------------------------------------------------------------
_gr_direct_fill_rect
dy = h;
wb = w * sizeof(u32);
- fb_buf_int = (unsigned int *)fbi->buf;
+ fb_buf_int = (unsigned int *)fbi->buf[FRONT_BUFFER];
fb_buf_int += y * fbi->w + x;
fb_buf_cur = fb_buf_int;
dy = fbi->h;
w = fbi->w * sizeof(u32);
- fb_buf_int = (unsigned int *)fbi->buf;
+ fb_buf_int = (unsigned int *)fbi->buf[FRONT_BUFFER];
fb_buf_cur = fb_buf_int;
while (dx--)
}
-/*
-static void _gr_direct_draw_text_img(FbInfo *fbi)
-{
- int img_x = 0;
- int img_y = 0;
-
- if (read_png_file("/system/opt/usr/data/fota/FotaBgImage.png") < 0) {
- return;
- }
-
- img_x = 0;
- img_y = 0;
-
- draw_png_img_xy(fbi, img_x, img_y);
- release_png_res();
-
-}
-*/
-
-static void _gr_direct_draw_last_buffer_text_img(FbInfo *fbi)
-{
- int img_x = 0;
- int img_y = 0;
-
- if (read_png_file("/system/opt/usr/data/fota/FotaBgImage2.png") < 0)
- return;
-
- img_x = 0;
- img_y = 0;
-
- draw_png_img_xy(fbi, img_x, img_y);
- release_png_res();
-
-}
-
-static void _gr_direct_draw_popup_img(FbInfo *fbi)
-{
- int img_x = 0;
- int img_y = 0;
-
- if (read_png_file(IMG_BASE POPUP_IMG_NAME) < 0)
- return;
-
- img_x = 0;
- img_y = 0;
-
- draw_png_img_xy(fbi, img_x, img_y);
- release_png_res();
-
-}
-
/*-----------------------------------------------------------------------------
__init_screen
----------------------------------------------------------------------------*/
release_png_res();
}
-static void _gr_direct_circular_progress(FbInfo *fbi)
-{
- char img_name[MAX_PATH];
- static int prog_cnt = 0;
- static int prev_prog_cnt = -1;
-
- // delete previous progress image
- if (prev_prog_cnt >= 0) {
- snprintf(img_name, MAX_PATH, "%s%s%02d.png", IMG_BASE, PROGRESS_IMG_PREFIX, prev_prog_cnt+1);
- if (read_png_file(img_name) < 0)
- return;
-
- draw_png_mask_xy(fbi, 0, 0, 0, 0, 0);
- release_png_res();
- }
-
- // draw current progress image
- snprintf(img_name, MAX_PATH, "%s%s%02d.png", IMG_BASE, PROGRESS_IMG_PREFIX, prog_cnt+1);
- if (read_png_file(img_name) < 0)
- return;
-
- draw_png_img_xy(fbi, 0, 0);
- release_png_res();
-
- _gr_direct_draw_popup_img(fbi);
-
- prev_prog_cnt = prog_cnt;
-
- prog_cnt++;
- if (prog_cnt >= 30)
- prog_cnt = 0;
-}
-
static void _gr_direct_circle_progress_bar(FbInfo *fbi, int progress)
{
char img_name[MAX_PATH];
int prog_cnt = 0;
if (progress <= 0)
- progress = 0;
+ return;
if (progress > 100)
progress = 100;
- prog_cnt = (int)(progress * 32 / 100);
-
- LOG("prog_pre/prog_cnt : %d, %d \n", prog_pre , prog_cnt);
+ prog_cnt = progress;
for (; prog_pre <= prog_cnt; prog_pre++) {
LOG("prog_pre/prog_cnt : %d, %d \n", prog_pre , prog_cnt);
draw_png_img_xy(fbi, 0, 0);
release_png_res();
+ s_saved_percent = prog_pre;
+
count++;
if (count > 3)
break;
}
-
- s_saved_percent = prog_pre;
}
/*-----------------------------------------------------------------------------
----------------------------------------------------------------------------*/
static void _gr_direct_update_screen()
{
- tdm_if_buffer_update(s_fbi.buf);
+ s_disp.current_buf_id = s_fbi.current_fb_id;
-#ifdef FEATURE_ROTATE
- int battery_state = is_batt_status();
-
- if ((s_degree != CHG_DEGREE_0) &&
- (battery_state == BATT_STATE_CHARGING || battery_state == BATT_STATE_FULL)) {
- fota_gr_direct_rotate_screen(s_degree);
- } else
-#endif
- {
- tdm_if_display_update();
- }
-}
-
-static void _gr_direct_set_last_buffer()
-{
- _gr_direct_clear_screen(&s_fbi, COLOR_BLACK);
- _gr_direct_draw_last_buffer_text_img(&s_fbi);
- _gr_direct_draw_main_prog_img(&s_fbi, 0);
- _gr_direct_draw_prog_text(&s_fbi, 0);
- tdm_if_buffer_update(s_fbi.buf);
-}
-
-#ifdef FEATURE_ROTATE
-void fota_gr_direct_rotate_screen(int degree)
-{
- tdm_if_rotate_screen(degree);
+ tdm_if_display_update(&s_disp);
}
-void fota_gr_rotate_value(int rotate)
-{
- s_degree = rotate;
-}
-#endif
-
/*-----------------------------------------------------------------------------
fota_gr_direct_update_progress
----------------------------------------------------------------------------*/
void fota_gr_direct_circular_progress(void)
{
- _gr_direct_circular_progress(&s_fbi);
-
if (s_saved_percent != s_percent_to_draw) {
LOG("fota_gr_direct_circular_progress progress : %d \n", s_percent_to_draw);
----------------------------------------------------------------------------*/
int fota_gr_direct_init(void)
{
- unsigned char *buf = NULL;
-
- if (tdm_if_display_init() < 0)
- return -1;
-
-#if !defined(FOTA_GUI_EMBEDDED)
- tdm_if_lcd_off();
-#endif
-
- s_fbi.w = tdm_if_display_width();
- s_fbi.h = tdm_if_display_height();
- s_fbi.sz = tdm_if_display_bufsize();
-
- buf = malloc(s_fbi.sz);
- if (NULL == buf) {
- LOG("Not enough memory (s_fbi.sz = %d)\n", s_fbi.sz);
- tdm_if_display_deinit();
- return -1;
- }
- s_fbi.buf = buf;
+ /* open display interface */
+ if (fb_open(&s_fbi) < 0)
+ LOG("fb_open failed \n");
__init_screen(&s_fbi);
- _gr_direct_update_screen();
-
- tdm_if_lcd_on();
+ tdm_if_lcd_on(&s_disp);
return 0;
}
----------------------------------------------------------------------------*/
void fota_gr_direct_deinit(void)
{
- _gr_direct_set_last_buffer();
-
- if (s_fbi.buf) {
- free(s_fbi.buf);
- s_fbi.buf = NULL;
- }
- tdm_if_display_deinit();
+ fb_close(&s_fbi);
}
typedef signed long long s64;
typedef unsigned long long u64;
-#ifdef FEATURE_ROTATE
-enum {
- CHG_DEGREE_0 = 0,
- CHG_DEGREE_90 = 1,
- CHG_DEGREE_180 = 2,
- CHG_DEGREE_270 = 3,
-};
-
-enum {
- BATT_STATE_CHARGING = 0,
- BATT_STATE_FULL,
- BATT_STATE_ERROR,
- BATT_STATE_DISCONNECT,
- BATT_STATE_LOWBATT,
- BATT_STATE_OVERVOLTAGE,
- BATT_STATE_OVERHEAT,
- BATT_STATE_NOTCHARGE,
- BATT_STATE_COLD
-};
-
-extern int is_batt_status(void);
-
-#endif
-
#endif /* __FOTA_GUI_COMMON_H__ */
#include <stdio.h>
-#define _DEBUG_LOG(fmt, args...)
-#define _DEBUG_INFO(fmt, args...)
-#define _DEBUG_WARNING(fmt, args...)
-#define _DEBUG_EXCEPTION(fmt, args...)
-#define _FUNC_ENTER
-#define _FUNC_EXIT
-
-/*
- * DEBUGGING FEATURE
- */
-
extern unsigned int __log_level__;
extern FILE *__log_out_file__;
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
-#include <error.h>
-
-#include "fota_common.h"
+#include <errno.h>
+#include <signal.h>
+#include <pthread.h>
+#include <sys/time.h>
+#include <sys/resource.h>
+
+#include "fota_gui_common.h"
+#include "fota_gui_util.h"
#include "fota_gr.h"
-
#define SERV_PATH "/tmp/FotaGuiSocket"
#define MISSING_PARAM -2
int do_exit = 0;
+
+int s_pid = -1;
+
int run_command(sock_cmd * recvbuff, sock_ack * sendbuff, int connfd)
{
char cmd[100];
strncpy(sendbuff->ack_desc, "Command recieved",
sizeof(sendbuff->ack_desc) - 1);
ret = send(connfd, sendbuff, sizeof(sock_ack), 0);
- do_exit = 1;
+ LOG("send() returned %d\n", ret);
+ return -1;
}
} else {
LOG("Command Not Found \n");
ret = send(connfd, sendbuff, sizeof(sock_ack), 0);
}
+ LOG("run_command() ret = %d\n", ret);
return ret;
}
+static void *__thread_draw_progress_img(void *arg)
+{
+ int delay = 20000;
+
+ if (setpriority(PRIO_PROCESS, getpid(), -11) < 0)
+ LOG("failed to setpriority\n");
+
+ while (do_exit != 1) {
+ usleep(delay);
+ fota_gr_direct_circular_progress();
+ }
+
+ return NULL;
+}
+
int main(int argc, char **argv)
{
int connfd = 0, sockfd = 0;
sock_cmd *recvbuff = NULL;
sock_ack *sendbuff = NULL;
+// _init_stdio();
+
if (fota_gr_init() < 0) {
LOG("fota_gr_init() failed.\n");
+ _exit_stdio();
return -1;
}
fota_gr_update_progress(s_prog_percent);
s_last_prog_percent = s_prog_percent;
+ int error = 0;
+ pthread_t th_id = 0;
+
+ error = pthread_create(&th_id, NULL, __thread_draw_progress_img, NULL);
+ if (error != 0) {
+ LOG("Thread creation failed errno [%d]\n", errno);
+ _exit_stdio();
+ return -1;
+ }
recvbuff = malloc(sizeof(sock_cmd));
if (recvbuff == NULL) {
LOG("memory allocation failed:\n");
+ _exit_stdio();
return -1;
}
sendbuff = malloc(sizeof(sock_ack));
if (sendbuff == NULL) {
LOG("memory allocation failed:\n");
+ _exit_stdio();
return -1;
}
sockfd = socket(AF_UNIX, SOCK_STREAM, 0);
if (sockfd <= 0) {
LOG("invalide sockfd\n");
+ _exit_stdio();
return -1;
}
memset((char *)&saddr, 0, sizeof(saddr));
saddr.sun_family = AF_UNIX;
- strncpy(saddr.sun_path, SERV_PATH, sizeof(SERV_PATH) + 1);
- saddr.sun_path[sizeof(SERV_PATH)] = '\0';
+ strncpy(saddr.sun_path, SERV_PATH,
+ sizeof(saddr.sun_path) - 1);
slen = sizeof(saddr);
unlink(SERV_PATH);
if (bind(sockfd, (const struct sockaddr *)&saddr, slen) < 0) {
LOG("bind fail\n");
+ _exit_stdio();
return -1;
}
if (listen(sockfd, 5) < 0) {
LOG("listen fail\n");
+ _exit_stdio();
return -1;
}
clen = sizeof(caddr);
connfd = accept(sockfd, (struct sockaddr *)&caddr, &clen);
if (connfd < 0) {
- LOG("accept! \n");
+ LOG("accept fail \n");
+ _exit_stdio();
return -1;
}
if (cnt < 0)
perror("recv!");
done = 1;
+ LOG("recv() <= 0\n");
}
if (!done) {
- if (run_command(recvbuff, sendbuff, connfd) < 0)
+ if (run_command(recvbuff, sendbuff, connfd) < 0) {
done = 1;
+ do_exit = 1;
+ LOG("run_command() < 0\n");
+ }
}
-
} while (!done);
close(connfd);
close(sockfd);
+ LOG("waiting for termination of thread((th_id) = %lu)\n", (th_id));
+ if (pthread_join(th_id, NULL) != 0) {
+ LOG("pthread_join failed for thread [%lu] errno [%d]\n",
+ th_id, errno);
+ _exit_stdio();
+ return -1;
+ }
+
fota_gr_deinit();
+ _exit_stdio();
+
return 0;
}
#include <sys/stat.h>
#include <fcntl.h>
-#define LOG printf
+#define LOG(s, args...) do { printf("FOTA_GUI_TEST" "/(%s): " s, __func__, ##args); } while (0)
+
#define SERV_PATH "/tmp/FotaGuiSocket"
int len, ret;
struct sockaddr_un serv_addr;
- LOG("\n sock_init \n");
+ LOG("%s\n", __func__);
sendbuff = malloc(sizeof(sock_cmd));
if (sendbuff == NULL) {
LOG("memory allocation failed:%s\n", __FUNCTION__);
void sock_deinit(void)
{
- LOG("%s \n", __func__);
+ LOG("%s\n", __func__);
close(sockfd);
free(sendbuff);
int main(int argc, char **argv)
{
- int ret = -1;
+ int ret;
int percent = 0;
if (argc != 2) {
#include <unistd.h>
#include <errno.h>
+#include "fota_gui_log.h"
+
int s_fd_stdin = -1;
int s_fd_stdout = -1;
int s_fd_stderr = -1;
#include <stdlib.h>
#include <png.h>
-#include "fota_common.h"
+#include "fota_gui_common.h"
#include "fota_png.h"
int png_img_width;
//int png_img_width_batt_normal;
//int png_img_height_batt_normal;
-png_byte color_type;
-png_byte bit_depth;
+png_byte png_color_type;
+png_byte png_bit_depth;
png_structp png_ptr;
png_infop info_ptr;
if (!fp) {
LOG("[read_png_file] File %s could not be opened"
" for reading \n", file_name);
+
+ LOG("Failed to open png file, path = [%s]", file_name);
return -1;
}
rn = fread(header, 1, 8, fp);
if (rn != 8)
LOG("fread() read num mismatch\n");
-
if (png_sig_cmp((png_bytep)header, 0, 8)) {
fclose(fp);
LOG("[read_png_file] File %s is not recognized"
" as a PNG file \n", file_name);
+ LOG("Failed to recognized PNG file\n");
return -1;
}
/* initialize stuff */
- png_ptr =
- png_create_read_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
+ png_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
if (!png_ptr) {
fclose(fp);
LOG("[read_png_file] png_create_read_struct failed \n");
+
+ LOG("Failed png_create_read_struct()\n");
return -1;
}
png_destroy_read_struct(&png_ptr, NULL, NULL);
fclose(fp);
LOG("[read_png_file] png_create_info_struct failed \n");
+
+ LOG("Failed png_create_info_struct()\n");
return -1;
}
png_destroy_read_struct(&png_ptr, &info_ptr, NULL);
fclose(fp);
LOG("[read_png_file] Error during init_io \n");
+
+ LOG("Failed png_destroy_read_struct()\n");
return -1;
}
+ int bit_depth, color_type;
+ png_uint_32 png_width;
+ png_uint_32 png_height;
+
png_init_io(png_ptr, fp);
png_set_sig_bytes(png_ptr, 8);
png_read_info(png_ptr, info_ptr);
- png_img_width = png_get_image_width(png_ptr, info_ptr);
- png_img_height = png_get_image_height(png_ptr, info_ptr);
- color_type = png_get_color_type(png_ptr, info_ptr);
- bit_depth = png_get_bit_depth(png_ptr, info_ptr);
+ int ret = png_get_IHDR(png_ptr, info_ptr, &png_width, &png_height, &bit_depth, &color_type, NULL, NULL, NULL);
+ if (ret == 0) {
+ LOGE("Failed png_get_IHDR(), ret = [%d]", ret);
+ } else if (ret == 1) {
+ LOG("color_type = [%d]", color_type);
+
+ if (color_type == PNG_COLOR_TYPE_RGB)
+ LOG("png color type is PNG_COLOR_TYPE_RGB, color_type = [%d]\n", color_type);
+ else if (color_type == PNG_COLOR_TYPE_RGBA)
+ LOG("png color type is PNG_COLOR_TYPE_RGBA, color_type = [%d]\n", color_type);
+ else if (color_type == PNG_COLOR_TYPE_PALETTE)
+ LOG("png color type is PNG_COLOR_TYPE_PALETTE, color_type = [%d]\n", color_type);
+ else if (color_type == PNG_COLOR_TYPE_RGB_ALPHA)
+ LOG("png color type is PNG_COLOR_TYPE_RGB_ALPHA, color_type = [%d]\n", color_type);
+ else if (color_type == PNG_COLOR_TYPE_GRAY_ALPHA)
+ LOG("png color type is PNG_COLOR_TYPE_GRAY_ALPHA, color_type = [%d]\n", color_type);
+ else if (color_type == PNG_COLOR_TYPE_GA)
+ LOG("png color type is PNG_COLOR_TYPE_GA, color_type = [%d]\n", color_type);
+ else
+ LOG("Unknown color type = [%d]\n", color_type);
+ }
+
+ png_img_width = png_width;
+ png_img_height = png_height;
+ png_color_type = color_type;
+ LOG("png_color_type = [%d]", png_color_type);
+ png_bit_depth = bit_depth;
number_of_passes = png_set_interlace_handling(png_ptr);
png_read_update_info(png_ptr, info_ptr);
png_destroy_read_struct(&png_ptr, &info_ptr, NULL);
fclose(fp);
LOG("[read_png_file] Error during read_image \n");
+
+ LOG("Failed png_destroy_read_struct()\n");
return -1;
}
+ png_size_t row_size = 0;
+
row_pointers = (png_bytep *) malloc(sizeof(png_bytep)*png_img_height);
- for (y = 0; y < png_img_height; y++)
- row_pointers[y] = (png_byte *) malloc(png_get_rowbytes(png_ptr, info_ptr));
+ for (y = 0; y < png_img_height; y++) {
+ row_size = png_get_rowbytes(png_ptr, info_ptr);
+ row_pointers[y] = (png_byte *) malloc(row_size);
+ }
png_read_image(png_ptr, row_pointers);
int x, y;
/* temp patch - lcd resoultion for qualcomm */
- fb_buf_cur = (unsigned int *)fbi->buf;
+ fb_buf_cur = (unsigned int *)fbi->buf[0];
/* check out range */
if ((x1 + cw > fbi->w) ||
return;
}
- if (color_type == PNG_COLOR_TYPE_RGB)
+ if (png_color_type == PNG_COLOR_TYPE_RGB)
bpp = 3;
- else if (color_type == PNG_COLOR_TYPE_RGBA)
+ else if (png_color_type == PNG_COLOR_TYPE_RGBA)
bpp = 4;
else {
LOG("[draw_png_img_xy] png type does not match RGB or RGBA \n");
fb_buf_cur += x1;
for (y = 0; y < ch; y++) {
png_byte *row = (png_byte *) row_pointers[cy + y];
- if (bit_depth == 8)
+ if (png_bit_depth == 8)
row += (bpp * cx);
- else if (bit_depth == 16)
+ else if (png_bit_depth == 16)
row += (bpp * 2 * cx);
for (x = 0; x < cw; x++) {
if (bpp == 3) {
- if (bit_depth == 8) {
+ if (png_bit_depth == 8) {
(*fb_buf_cur) = ((*fb_buf_cur)&0xff000000) |
(row[0] << 16) | (row[1] << 8) | (row[2]);
row += bpp;
- } else if (bit_depth == 16) {
+ } else if (png_bit_depth == 16) {
(*fb_buf_cur) = ((*fb_buf_cur)&0xff000000) |
(row[0] << 16) | (row[2] << 8) | (row[4]);
row += bpp*2;
}
} else if (bpp == 4) {
- if (bit_depth == 8) {
+ if (png_bit_depth == 8) {
if (row[3] != 0) {
char r1, g1, b1, a1;
char r2, g2, b2, a2;
(r3 << 16) | (g3 << 8) | (b3);
}
row += bpp;
- } else if (bit_depth == 16) {
+ } else if (png_bit_depth == 16) {
if (row[6] != 0) {
short r1, g1, b1, a1;
short r2, g2, b2, a2;
int x, y;
/* temp patch - lcd resoultion for qualcomm */
- fb_buf_cur = (unsigned int *)fbi->buf;
+ fb_buf_cur = (unsigned int *)fbi->buf[0];
/* check out range */
if ((x1 + png_img_width > fbi->w) ||
- (y1 + png_img_height > fbi->h)) {
+ (y1 + png_img_height > fbi->h)) {
+ LOG("[draw_png_img_xy] output range exceeds frame buffer range \n");
+
LOG("[draw_png_img_xy] output range exceeds frame buffer range \n");
return;
}
- if (color_type == PNG_COLOR_TYPE_RGB)
+ LOG("png_color_type = [%d]", png_color_type);
+ if (png_color_type == PNG_COLOR_TYPE_RGB) {
bpp = 3;
- else if (color_type == PNG_COLOR_TYPE_RGBA)
+ LOG("png color type is PNG_COLOR_TYPE_RGB, png_color_type = [%d]", png_color_type);
+ } else if (png_color_type == PNG_COLOR_TYPE_RGBA) {
bpp = 4;
- else {
+ LOG("png color type is PNG_COLOR_TYPE_RGBA, png_color_type = [%d]", png_color_type);
+ } else {
LOG("[draw_png_img_xy] png type does not match RGB or RGBA \n");
+
+ LOG("[draw_png_img_xy] png type does not match RGB or RGBA, png_color_type = [%d] \n", png_color_type);
return;
}
+
/* temp patch - lcd resoultion for qualcomm */
fb_buf_cur += (y1 * (fbi->w));
fb_buf_cur += x1;
png_byte *row = (png_byte *) row_pointers[y];
for (x = 0; x < png_img_width; x++) {
if (bpp == 3) {
- if (bit_depth == 8) {
+ if (png_bit_depth == 8) {
(*fb_buf_cur) = ((*fb_buf_cur)&0xff000000) |
(row[0] << 16) | (row[1] << 8) | (row[2]);
row += bpp;
- } else if (bit_depth == 16) {
+ } else if (png_bit_depth == 16) {
(*fb_buf_cur) = ((*fb_buf_cur)&0xff000000) |
(row[0] << 16) | (row[2] << 8) | (row[4]);
row += bpp*2;
}
} else if (bpp == 4) {
- if (bit_depth == 8) {
+ if (png_bit_depth == 8) {
if (row[3] != 0) {
char r1, g1, b1, a1;
char r2, g2, b2, a2;
(r3 << 16) | (g3 << 8) | (b3);
}
row += bpp;
- } else if (bit_depth == 16) {
+ } else if (png_bit_depth == 16) {
if (row[6] != 0) {
short r1, g1, b1, a1;
short r2, g2, b2, a2;
int x, y;
/* temp patch - lcd resoultion for qualcomm */
- fb_buf_cur = (unsigned int *)fbi->buf;
+ fb_buf_cur = (unsigned int *)fbi->buf[0];
/* check out range */
if ((x1 + png_img_width > fbi->w) ||
return;
}
- if (color_type == PNG_COLOR_TYPE_RGB) {
+ if (png_color_type == PNG_COLOR_TYPE_RGB) {
bpp = 3;
LOG("[draw_png_img_xy] PNG_COLOR_TYPE_RGB : no mask channel \n");
return;
- } else if (color_type == PNG_COLOR_TYPE_RGBA)
+ } else if (png_color_type == PNG_COLOR_TYPE_RGBA)
bpp = 4;
else {
LOG("[draw_png_img_xy] png type does not match RGB or RGBA \n");
png_byte *row = (png_byte *) row_pointers[y];
for (x = 0; x < png_img_width; x++) {
if (bpp == 4) {
- if (bit_depth == 8) {
+ if (png_bit_depth == 8) {
if (row[3] != 0) {
(*fb_buf_cur) = ((*fb_buf_cur)&0xff000000) |
(r << 16) | (g << 8) | (b);
}
row += bpp;
- } else if (bit_depth == 16) {
+ } else if (png_bit_depth == 16) {
if (row[6] != 0) {
(*fb_buf_cur) = ((*fb_buf_cur)&0xff000000) |
(r << 16) | (g << 8) | (b);
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
- * http://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
#include <fcntl.h>
#include <sys/poll.h>
#include <sys/time.h>
+#include <pthread.h>
+#include "fota_gui_common.h"
#include "tdm-if.h"
-#include "fota_common.h"
-
-#define LOGD LOG
-
-tdm_if_disp s_st_disp;
static void tdm_if_display_commit_handler_cb(tdm_output *output, unsigned int sequence,
- unsigned int tv_sec, unsigned int tv_usec,
- void *user_data)
+ unsigned int tv_sec, unsigned int tv_usec, void *user_data)
{
- LOGD("commit_handle_cb!!\n");
+ LOG("commit_handle_cb!!\n");
return ;
}
-int tdm_if_display_init(void)
+int tdm_if_display_init(tdm_if_disp *st_disp)
{
int color = 0;
int buf_cnt;
- tdm_if_disp *st_disp = &s_st_disp;
+
tdm_error err = TDM_ERROR_NONE;
tdm_output *output = NULL;
int i = 0;
- LOGD("start");
+ LOG("start\n");
st_disp->disp = tdm_display_init(&err);
if (!st_disp->disp) {
- LOGD("failed to init tdm_display. error num = %d\n", err);
+ LOGE("failed to init tdm_display. error num = %d\n", err);
goto exit;
}
err = tdm_display_get_fd(st_disp->disp, &st_disp->tdm_fd);
if (err != TDM_ERROR_NONE) {
- LOGD("failed to get tdm fd. error num = %d\n", err);
+ LOGE("failed to get tdm fd. error num = %d\n", err);
goto exit;
}
st_disp->drm_fd = tdm_helper_get_fd("TDM_DRM_MASTER_FD");
if (st_disp->drm_fd == -1) {
- LOGD("failed to get tdm fd. error num = %d\n", err);
+ LOGE("failed to get tdm fd. error num = %d\n", err);
goto exit;
}
err = tdm_display_get_output_count(st_disp->disp, &output_count);
if (err != TDM_ERROR_NONE) {
- LOGD("failed to get output count. error num = %d\n", err);
+ LOGE("failed to get output count. error num = %d\n", err);
goto exit;
}
for (i = 0; i < output_count; i++) {
output = tdm_display_get_output(st_disp->disp, i, &err);
if (err != TDM_ERROR_NONE) {
- LOGD("failed to get outout. error num = %d\n", err);
+ LOGE("failed to get outout. error num = %d\n", err);
goto exit;
}
err = tdm_output_get_output_type(output, &output_type);
if (err != TDM_ERROR_NONE) {
- LOGD("failed to get output type. error num = %d\n", err);
+ LOGE("failed to get output type. error num = %d\n", err);
goto exit;
}
err = tdm_output_get_conn_status(output, &conn_status);
if (err != TDM_ERROR_NONE) {
- LOGD("failed to get output connection status. error num = %d\n", err);
+ LOGE("failed to get output connection status. error num = %d\n", err);
goto exit;
}
- LOGD("output_type=%d conn_status=%d\n", output_type, conn_status);
- if ((output_type == TDM_OUTPUT_TYPE_LVDS) || (output_type == TDM_OUTPUT_TYPE_DSI)) {
+ LOG("output_type=%d conn_status=%d\n", output_type, conn_status);
+ if ((output_type == TDM_OUTPUT_TYPE_LVDS || output_type == TDM_OUTPUT_TYPE_DSI) &&
+ (conn_status == TDM_OUTPUT_CONN_STATUS_CONNECTED)) {
int cnt = 0;
err = tdm_output_get_available_modes(output, &output_mode, &cnt);
if (err != TDM_ERROR_NONE) {
- LOGD("failed to get output available modes. error num = %d\n", err);
+ LOGE("failed to get output available modes. error num = %d\n", err);
goto exit;
}
unsigned int width_mm = 0;
unsigned int height_mm = 0;
err = tdm_output_get_physical_size(output, &width_mm, &height_mm);
- LOGD("TDM_OUTPUT_MODE:name[%s] mode:wh[%d %d] mm[%d %d]",
+ LOG("TDM_OUTPUT_MODE:name[%s] mode:wh[%d %d] mm[%d %d]",
output_mode->name, st_disp->width, st_disp->height, width_mm, height_mm);
break;
/* MEMORY ALLOCATION */
st_disp->bufmgr = tbm_bufmgr_init(st_disp->drm_fd);
if (!st_disp->bufmgr) {
- LOGD("failed to tbm_bufmgr_init\n");
+ LOGE("failed to tbm_bufmgr_init\n");
goto exit;
}
surf_info.planes[0].stride = st_disp->stride;
for (buf_cnt = 0; buf_cnt < MAX_BUF; buf_cnt++) {
- st_disp->bo[buf_cnt] = tbm_bo_alloc(st_disp->bufmgr, st_disp->buffer_size, TBM_BO_SCANOUT);
+ st_disp->bo[buf_cnt] = tbm_bo_alloc(st_disp->bufmgr, st_disp->buffer_size, TBM_BO_NONCACHABLE);
if (!st_disp->bo[buf_cnt]) {
- LOGD("failed to tbm_bo_alloc\n");
+ LOGE("failed to tbm_bo_alloc\n");
goto exit;
}
st_disp->surf[buf_cnt] = tbm_surface_internal_create_with_bos(&surf_info, &st_disp->bo[buf_cnt], 1);
if (!st_disp->surf[buf_cnt]) {
- LOGD("failed to create tbm_surface!!\n");
+ LOGE("failed to create tbm_surface!!\n");
goto exit;
}
}
}
if (!tmp_layer) {
- LOGD("failed to get output layer. error num = %d\n", err);
+ LOGE("failed to get output layer. error num = %d\n", err);
goto exit;
}
err = tdm_layer_set_info(st_disp->layer, &layer_info);
if (err != TDM_ERROR_NONE) {
- LOGD("failed to get output layer. error num = %d\n", err);
+ LOGE("failed to get output layer. error num = %d\n", err);
goto exit;
}
st_disp->current_buf_id = 0;
-
- LOGD("done\n");
+ LOG("done\n");
return 0;
exit:
- tdm_if_display_deinit();
+ tdm_if_display_deinit(st_disp);
return -1;
}
-void tdm_if_display_deinit(void)
+void tdm_if_display_deinit(tdm_if_disp *st_disp)
{
int buf_cnt = 0;
- tdm_if_disp *st_disp = &s_st_disp;
if (st_disp->disp != NULL) {
/* RELEASE RESOURCE */
}
}
-int tdm_if_display_width(void)
-{
- tdm_if_disp *st_disp = &s_st_disp;
- return st_disp->width;
-}
-
-int tdm_if_display_height(void)
-{
- tdm_if_disp *st_disp = &s_st_disp;
- return st_disp->height;
-}
-
-int tdm_if_display_bufsize(void)
-{
- tdm_if_disp *st_disp = &s_st_disp;
- return st_disp->buffer_size;
-}
-
-void tdm_if_buffer_update(unsigned char *buffer)
-{
- tdm_if_disp *st_disp = &s_st_disp;
- int buf_cnt = st_disp->current_buf_id;
- memcpy(st_disp->buffer[buf_cnt], buffer, st_disp->stride * st_disp->height);
-}
-
-void tdm_if_display_update(void)
+void tdm_if_display_update(tdm_if_disp *st_disp)
{
/* DISPLAY UPDATE */
int buf_cnt = 0;
- tdm_if_disp *st_disp = &s_st_disp;
buf_cnt = st_disp->current_buf_id;
- ++st_disp->current_buf_id;
- st_disp->current_buf_id %= MAX_BUF;
+ //st_disp->current_buf_id = (++st_disp->current_buf_id)%MAX_BUF;
tdm_layer_set_buffer(st_disp->layer, st_disp->surf[buf_cnt]);
return ;
}
-void tdm_if_lcd_on(void)
-{
- tdm_if_disp *st_disp = &s_st_disp;
+void tdm_if_lcd_on(tdm_if_disp *st_disp)
+{
/* SET DPMS ON */
- LOGD("DPMS ON!\n");
+ LOG("DPMS ON!\n");
tdm_output_set_dpms(st_disp->output, TDM_OUTPUT_DPMS_ON);
-
return ;
}
-void tdm_if_lcd_off(void)
+void tdm_if_lcd_suspend(tdm_if_disp *st_disp)
{
- tdm_if_disp *st_disp = &s_st_disp;
+ /* SET DPMS SUSPEND */
+ LOG("DPMS SUSPEND!\n");
+ tdm_output_set_dpms(st_disp->output, TDM_OUTPUT_DPMS_SUSPEND);
+
+ return ;
+}
+void tdm_if_lcd_off(tdm_if_disp *st_disp)
+{
/* SET DPMS OFF */
- LOGD("DPMS OFF!\n");
+ LOG("DPMS OFF!\n");
+
tdm_output_set_dpms(st_disp->output, TDM_OUTPUT_DPMS_OFF);
return ;
tdm_pp *pp;
int tdm_fd;
int drm_fd;
+
tbm_surface_h surf[MAX_BUF];
tbm_surface_h pp_surf[MAX_BUF];
tbm_bufmgr bufmgr;
unsigned int handle[MAX_BUF];
+ unsigned int pp_handle[MAX_BUF];
tbm_bo bo[MAX_BUF];
tbm_bo_handle bo_handle[MAX_BUF];
+ tbm_bo pp_bo[MAX_BUF];
+ tbm_bo_handle pp_bo_handle[MAX_BUF];
void *buffer[MAX_BUF];
+ void *pp_buffer[MAX_BUF];
int buffer_size;
int width;
int height;
extern tdm_if_disp s_disp;
-int tdm_if_display_init(void);
-void tdm_if_display_deinit(void);
-void tdm_if_display_update(void);
-int tdm_if_display_width(void);
-int tdm_if_display_height(void);
-int tdm_if_display_bufsize(void);
-
-void tdm_if_buffer_update(unsigned char *buffer);
-
-void tdm_if_lcd_on(void);
-void tdm_if_lcd_off(void);
-
+int tdm_if_display_init(tdm_if_disp *st_disp);
+void tdm_if_display_deinit(tdm_if_disp *st_disp);
+void tdm_if_display_update(tdm_if_disp *st_disp);
+void tdm_if_lcd_on(tdm_if_disp *st_disp);
+void tdm_if_lcd_suspend(tdm_if_disp *st_disp);
+void tdm_if_lcd_off(tdm_if_disp *st_disp);
#endif /* __TDM_IF_H__ */
Name: tota-ua
Summary: fota update agent
ExclusiveArch: %{arm}
-Version: 0.1.8
+Version: 0.1.9
Release: 0
Group: System
License: Apache-2.0
# ---- Target contents ----------------------------------------------------- #
VERBATIMS="
-/usr/share/fota/res/images/wc_fota_downloading_0.png
-/usr/share/fota/res/images/wc_fota_downloading_1.png
-/usr/share/fota/res/images/wc_fota_downloading_2.png
-/usr/share/fota/res/images/wc_fota_downloading_3.png
-/usr/share/fota/res/images/wc_fota_downloading_4.png
-/usr/share/fota/res/images/wc_fota_downloading_5.png
-/usr/share/fota/res/images/wc_fota_downloading_6.png
-/usr/share/fota/res/images/wc_fota_downloading_7.png
-/usr/share/fota/res/images/wc_fota_downloading_8.png
-/usr/share/fota/res/images/wc_fota_downloading_9.png
-/usr/share/fota/res/images/wc_fota_downloading_percent.png
+/usr/share/fota/res/images/tw1_fota_downloading_0.png
+/usr/share/fota/res/images/tw1_fota_downloading_1.png
+/usr/share/fota/res/images/tw1_fota_downloading_2.png
+/usr/share/fota/res/images/tw1_fota_downloading_3.png
+/usr/share/fota/res/images/tw1_fota_downloading_4.png
+/usr/share/fota/res/images/tw1_fota_downloading_5.png
+/usr/share/fota/res/images/tw1_fota_downloading_6.png
+/usr/share/fota/res/images/tw1_fota_downloading_7.png
+/usr/share/fota/res/images/tw1_fota_downloading_8.png
+/usr/share/fota/res/images/tw1_fota_downloading_9.png
+/usr/share/fota/res/images/tw1_fota_downloading_percent.png
/usr/share/fota/res/images/tw1_fota_progress_000.png
/usr/share/fota/res/images/tw1_fota_progress_001.png
/usr/share/fota/res/images/tw1_fota_progress_002.png
/usr/share/fota/res/images/tw1_fota_progress_030.png
/usr/share/fota/res/images/tw1_fota_progress_031.png
/usr/share/fota/res/images/tw1_fota_progress_032.png
+/usr/share/fota/res/images/tw1_fota_progress_033.png
+/usr/share/fota/res/images/tw1_fota_progress_034.png
+/usr/share/fota/res/images/tw1_fota_progress_035.png
+/usr/share/fota/res/images/tw1_fota_progress_036.png
+/usr/share/fota/res/images/tw1_fota_progress_037.png
+/usr/share/fota/res/images/tw1_fota_progress_038.png
+/usr/share/fota/res/images/tw1_fota_progress_039.png
+/usr/share/fota/res/images/tw1_fota_progress_040.png
+/usr/share/fota/res/images/tw1_fota_progress_041.png
+/usr/share/fota/res/images/tw1_fota_progress_042.png
+/usr/share/fota/res/images/tw1_fota_progress_043.png
+/usr/share/fota/res/images/tw1_fota_progress_044.png
+/usr/share/fota/res/images/tw1_fota_progress_045.png
+/usr/share/fota/res/images/tw1_fota_progress_046.png
+/usr/share/fota/res/images/tw1_fota_progress_047.png
+/usr/share/fota/res/images/tw1_fota_progress_048.png
+/usr/share/fota/res/images/tw1_fota_progress_049.png
+/usr/share/fota/res/images/tw1_fota_progress_050.png
+/usr/share/fota/res/images/tw1_fota_progress_051.png
+/usr/share/fota/res/images/tw1_fota_progress_052.png
+/usr/share/fota/res/images/tw1_fota_progress_053.png
+/usr/share/fota/res/images/tw1_fota_progress_054.png
+/usr/share/fota/res/images/tw1_fota_progress_055.png
+/usr/share/fota/res/images/tw1_fota_progress_056.png
+/usr/share/fota/res/images/tw1_fota_progress_057.png
+/usr/share/fota/res/images/tw1_fota_progress_058.png
+/usr/share/fota/res/images/tw1_fota_progress_059.png
+/usr/share/fota/res/images/tw1_fota_progress_060.png
+/usr/share/fota/res/images/tw1_fota_progress_061.png
+/usr/share/fota/res/images/tw1_fota_progress_062.png
+/usr/share/fota/res/images/tw1_fota_progress_063.png
+/usr/share/fota/res/images/tw1_fota_progress_064.png
+/usr/share/fota/res/images/tw1_fota_progress_065.png
+/usr/share/fota/res/images/tw1_fota_progress_066.png
+/usr/share/fota/res/images/tw1_fota_progress_067.png
+/usr/share/fota/res/images/tw1_fota_progress_068.png
+/usr/share/fota/res/images/tw1_fota_progress_069.png
+/usr/share/fota/res/images/tw1_fota_progress_070.png
+/usr/share/fota/res/images/tw1_fota_progress_071.png
+/usr/share/fota/res/images/tw1_fota_progress_072.png
+/usr/share/fota/res/images/tw1_fota_progress_073.png
+/usr/share/fota/res/images/tw1_fota_progress_074.png
+/usr/share/fota/res/images/tw1_fota_progress_075.png
+/usr/share/fota/res/images/tw1_fota_progress_076.png
+/usr/share/fota/res/images/tw1_fota_progress_077.png
+/usr/share/fota/res/images/tw1_fota_progress_078.png
+/usr/share/fota/res/images/tw1_fota_progress_079.png
+/usr/share/fota/res/images/tw1_fota_progress_080.png
+/usr/share/fota/res/images/tw1_fota_progress_081.png
+/usr/share/fota/res/images/tw1_fota_progress_082.png
+/usr/share/fota/res/images/tw1_fota_progress_083.png
+/usr/share/fota/res/images/tw1_fota_progress_084.png
+/usr/share/fota/res/images/tw1_fota_progress_085.png
+/usr/share/fota/res/images/tw1_fota_progress_086.png
+/usr/share/fota/res/images/tw1_fota_progress_087.png
+/usr/share/fota/res/images/tw1_fota_progress_088.png
+/usr/share/fota/res/images/tw1_fota_progress_089.png
+/usr/share/fota/res/images/tw1_fota_progress_090.png
+/usr/share/fota/res/images/tw1_fota_progress_091.png
+/usr/share/fota/res/images/tw1_fota_progress_092.png
+/usr/share/fota/res/images/tw1_fota_progress_093.png
+/usr/share/fota/res/images/tw1_fota_progress_094.png
+/usr/share/fota/res/images/tw1_fota_progress_095.png
+/usr/share/fota/res/images/tw1_fota_progress_096.png
+/usr/share/fota/res/images/tw1_fota_progress_097.png
+/usr/share/fota/res/images/tw1_fota_progress_098.png
+/usr/share/fota/res/images/tw1_fota_progress_099.png
+/usr/share/fota/res/images/tw1_fota_progress_100.png
/usr/share/fota/res/images/tw1_fota_progress_bg.png
/usr/share/fota/res/images/tw1_fota_progress_final.png
-/usr/share/fota/res/images/wc_fota_start_downloading.png
+/usr/share/fota/res/images/tw1_start_downloading.png
"
WITHLIBS="
/usr/bin/fota_gui
/usr/bin/fota_gui_test
/usr/lib/libtdm-mgr.so
+/usr/lib/tdm/libtdm-default.so
+/usr/lib/tdm/libtdm-exynos.so
/usr/lib/bufmgr/libtbm_default.so
"