#include <dfu.h>
#include <g_dnl.h>
#include <usb.h>
+#include <libtizen.h>
int do_thor_down(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
{
ret = thor_init();
if (ret) {
- pr_err("THOR DOWNLOAD failed: %d\n", ret);
- ret = CMD_RET_FAILURE;
+ error("THOR DOWNLOAD failed: %d", ret);
+ if (ret == -EINTR)
+ ret = CMD_RET_SUCCESS;
+ else
+ ret = CMD_RET_FAILURE;
+
goto exit;
}
done:
dfu_free_entities();
+#ifdef CONFIG_TIZEN
+#ifdef CONFIG_LCD /* TODO : Need to enable LCD */
+ if (ret != CMD_RET_SUCCESS)
+ draw_thor_fail_screen();
+ else
+ lcd_clear();
+#endif
+#endif
return ret;
}
#include <linux/usb/cdc.h>
#include <g_dnl.h>
#include <dfu.h>
+#include <libtizen.h>
+#include <samsung/misc.h>
+#include <linux/input.h>
+#include <usb.h>
#include "f_thor.h"
/* ********************************************************** */
DEFINE_CACHE_ALIGN_BUFFER(char, f_name, F_NAME_BUF_SIZE + 1);
static unsigned long long int thor_file_size;
+#ifdef CONFIG_TIZEN
+static unsigned long long int total_file_size;
+static unsigned long long int downloaded_file_size;
+#endif
static int alt_setting_num;
static void send_rsp(const struct rsp_box *rsp)
thor_file_size = (unsigned long long int)rqt->int_data[0] +
(((unsigned long long int)rqt->int_data[1])
<< 32);
- debug("INIT: total %llu bytes\n", thor_file_size);
+#ifdef CONFIG_TIZEN
+ total_file_size = thor_file_size;
+ downloaded_file_size = 0;
+#endif
+ debug("INIT: total %d bytes\n", rqt->int_data[0]);
break;
case RQT_DL_FILE_INFO:
file_type = rqt->int_data[0];
while (!dev->rxdata) {
usb_gadget_handle_interrupts(0);
if (ctrlc())
- return -1;
+ return -EINTR;
}
+
dev->rxdata = 0;
data_to_rx -= dev->out_req->actual;
+#ifdef CONFIG_TIZEN
+ downloaded_file_size += dev->out_req->actual;
+#ifdef CONFIG_LCD /* TODO : Need to enable LCD*/
+ draw_thor_progress(total_file_size, downloaded_file_size);
+#endif
+#endif
} while (data_to_rx);
return tmp;
int thor_init(void)
{
struct thor_dev *dev = thor_func->dev;
+ int power_key_cnt = 0;
+#ifdef CONFIG_TIZEN
+#ifdef CONFIG_LCD /* TODO : Need to enable LCD*/
+ draw_thor_init_screen();
+#endif
+#endif
/* Wait for a device enumeration and configuration settings */
debug("THOR enumeration/configuration setting....\n");
- while (!dev->configuration_done)
+ while (!dev->configuration_done) {
usb_gadget_handle_interrupts(0);
-
+#ifdef CONFIG_LCD_MENU
+ power_key_cnt += key_pressed(KEY_POWER);
+#endif
+ if (ctrlc() || power_key_cnt >= 3) {
+#ifdef CONFIG_BOOT_INFORM
+ boot_inform_clear();
+#endif
+ return -EINTR;
+ }
+ }
+#ifdef CONFIG_TIZEN
+#ifdef CONFIG_LCD /* TODO : Need to enable LCD*/
+ draw_thor_screen();
+#endif
+#endif
thor_set_dma(thor_rx_data_buf, strlen("THOR"));
/* detect the download request from Host PC */
if (thor_rx_data() < 0) {
return ret;
} else {
printf("%s: No data received!\n", __func__);
- break;
+ return ret;
}
}
usb_ep_disable(dev->int_ep);
dev->int_ep->driver_data = NULL;
}
+
+ dev->configuration_done = 0;
}
static int thor_eps_setup(struct usb_function *f)