fota_upgrade: add process status of fota_upgrade [1/1]

PD#SWPL-183126

Problem:
add process status of fota_upgrade

Solution:
add process status of fota_upgrade

Verify:
ap222

Change-Id: I6fc9d279c1ac826c94c5cac4424f83118eb93475
Signed-off-by: Ruoran Xi <ruoran.xi@amlogic.com>
diff --git a/utils/fota_upgrade.c b/utils/fota_upgrade.c
index dc9f916..61cae5a 100644
--- a/utils/fota_upgrade.c
+++ b/utils/fota_upgrade.c
@@ -1,19 +1,19 @@
+#include <ctype.h>
+#include <fcntl.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
-#include <unistd.h>
-#include <ctype.h>
-#include <fcntl.h>
 #include <sys/socket.h>
 #include <sys/un.h>
 #include <time.h>
+#include <unistd.h>
 
-#include "../fota/dmgr_api.h"
 #include "../aml_utility/unifykey.h"
+#include "../fota/dmgr_api.h"
 #include "aml_device_property.h"
 
-#define CHECK_NETWORK_DEALY 20 //60
-#define INFO_LEN  128
+#define CHECK_NETWORK_DEALY 20 // 60
+#define INFO_LEN 128
 
 struct test_context {
   char DEVINFO_OEM[INFO_LEN];
@@ -36,36 +36,34 @@
   int has_new_version;
   struct version_info cloned_version;
   int download_exit;
-
 };
 
-#define INIT_DEFAULT_TEST_CONTEXT() \
-{ \
-  .DEVINFO_OEM        = "Amlogic", \
-  .DEVINFO_DEVICETYPE = "smarthome", \
-  .DEVINFO_PLATFORM   = "A113D", \
-  .DEVINFO_MODELS     = "OTT", \
-  .DEVINFO_MID        = "20220809043042",\
-  .DEVINFO_VERSION    = "0.5.0", \
-  .DEVINFO_PRODUCTID  = "1660115992", \
-  .DEVINFO_PRODUCTSECRET = "fa7bfc8d755c4c0b8c52fdb00d431d3f", \
-  .DEVINFO_APPVERSION = "2", \
-  .DEVINFO_NETWORKTYPE= "WIFI", \
-  .DEVINFO_CHK_URL    = NULL, \
-  .DEVINFO_SERVER_OPT = SERVER_TRANSOPT_IOT| SERVER_TRANSOPT_HTTP, \
-  .has_new_version = 0, \
-  .download_exit = 0, \
-}
+#define INIT_DEFAULT_TEST_CONTEXT()                                            \
+  {                                                                            \
+    .DEVINFO_OEM = "Amlogic", .DEVINFO_DEVICETYPE = "smarthome",               \
+    .DEVINFO_PLATFORM = "A113D", .DEVINFO_MODELS = "OTT",                      \
+    .DEVINFO_MID = "20220809043042", .DEVINFO_VERSION = "0.5.0",               \
+    .DEVINFO_PRODUCTID = "1660115992",                                         \
+    .DEVINFO_PRODUCTSECRET = "fa7bfc8d755c4c0b8c52fdb00d431d3f",               \
+    .DEVINFO_APPVERSION = "2", .DEVINFO_NETWORKTYPE = "WIFI",                  \
+    .DEVINFO_CHK_URL = NULL,                                                   \
+    .DEVINFO_SERVER_OPT = SERVER_TRANSOPT_IOT | SERVER_TRANSOPT_HTTP,          \
+    .has_new_version = 0, .download_exit = 0,                                  \
+  }
 
-#define TEST_ASSERT_EQUAL_INT(expected, actual) do{ if(expected != actual) return -1;}while(0)
+#define TEST_ASSERT_EQUAL_INT(expected, actual)                                \
+  do {                                                                         \
+    if (expected != actual)                                                    \
+      return -1;                                                               \
+  } while (0)
 
 #ifndef CONTAINER_OF
-#define CONTAINER_OF(ptr, type, member) \
-  (type *)((char *)(ptr) - (char *) &((type *)0)->member)
+#define CONTAINER_OF(ptr, type, member)                                        \
+  (type *)((char *)(ptr) - (char *)&((type *)0)->member)
 #endif
 
 #define FOTA_WEB_SERVER "www.abupdate.com"
-#define AML_SYS_SAVE_PATH  "/data"
+#define AML_SYS_SAVE_PATH "/data"
 
 static char *__save_file_path = "/data/software.swu";
 static char *__version_file_path = "/version.txt";
@@ -85,28 +83,27 @@
   snprintf(cmd_buf, 200, "%s/%s", save_path, __new_version_file);
   ver_fd = fopen(cmd_buf, "w+");
   if (NULL == ver_fd) {
-    printf("Cannot open version file %s\n", cmd_buf);
+    fprintf(stdout, "Cannot open version file %s\n", cmd_buf);
     return -1;
   }
 
   fprintf(ver_fd, "version_name:%s\n", ver->version_name);
-  //fprintf(ver_fd, "file_size:%d\n", ver->file_size);
-  //fprintf(ver_fd, "delta_id:%s\n", ver->delta_id);
-  //fprintf(ver_fd, "md5sum:%s\n", ver->md5sum);
-  //fprintf(ver_fd, "delta_url:%s\n", ver->delta_url);
-  //fprintf(ver_fd, "release_note:%s\n", ver->release_note);
-  //fprintf(ver_fd, "upgrade_from_time:%s\n", ver->upgrade_from_time);
-  //fprintf(ver_fd, "upgrade_to_time:%s\n", ver->upgrade_to_time);
-  //fprintf(ver_fd, "upgrade_gap:%s\n", ver->upgrade_gap);
-  //fprintf(ver_fd, "meta_data:%s\n", ver->meta_data);
-  //fprintf(ver_fd, "event_id:%s\n", ver->event_id);
+  // fprintf(ver_fd, "file_size:%d\n", ver->file_size);
+  // fprintf(ver_fd, "delta_id:%s\n", ver->delta_id);
+  // fprintf(ver_fd, "md5sum:%s\n", ver->md5sum);
+  // fprintf(ver_fd, "delta_url:%s\n", ver->delta_url);
+  // fprintf(ver_fd, "release_note:%s\n", ver->release_note);
+  // fprintf(ver_fd, "upgrade_from_time:%s\n", ver->upgrade_from_time);
+  // fprintf(ver_fd, "upgrade_to_time:%s\n", ver->upgrade_to_time);
+  // fprintf(ver_fd, "upgrade_gap:%s\n", ver->upgrade_gap);
+  // fprintf(ver_fd, "meta_data:%s\n", ver->meta_data);
+  // fprintf(ver_fd, "event_id:%s\n", ver->event_id);
 
   fclose(ver_fd);
   return 0;
 }
 
-static char *simple_strndup(const char *s, size_t n)
-{
+static char *simple_strndup(const char *s, size_t n) {
   size_t max_len = strnlen(s, n);
 
   char *dest = malloc(max_len + 1);
@@ -118,13 +115,12 @@
   return dest;
 }
 
-static char *simple_strdup(const char *s)
-{
+static char *simple_strdup(const char *s) {
   return simple_strndup(s, 0x7fffff);
 }
 
-static void clone_version(struct test_context *test_ctx, struct version_info *info)
-{
+static void clone_version(struct test_context *test_ctx,
+                          struct version_info *info) {
   test_ctx->cloned_version.file_size = info->file_size;
   test_ctx->cloned_version.flags = info->flags;
 
@@ -144,7 +140,8 @@
     test_ctx->cloned_version.release_note = simple_strdup(info->release_note);
   }
   if (info->upgrade_from_time) {
-    test_ctx->cloned_version.upgrade_from_time = strdup(info->upgrade_from_time);
+    test_ctx->cloned_version.upgrade_from_time =
+        strdup(info->upgrade_from_time);
   }
   if (info->upgrade_to_time) {
     test_ctx->cloned_version.upgrade_to_time = strdup(info->upgrade_to_time);
@@ -160,8 +157,7 @@
   }
 }
 
-static void free_cloned_version(struct test_context *test_ctx)
-{
+static void free_cloned_version(struct test_context *test_ctx) {
   struct version_info *info = &test_ctx->cloned_version;
 
   if (!test_ctx->has_new_version) {
@@ -204,24 +200,24 @@
 }
 
 static int checkversion_notifier(struct notifier_block *nb,
-                unsigned long action,
-                void *data)
-{
-  struct test_context *test_ctx = CONTAINER_OF(nb, struct test_context, nb_checkversion);
+                                 unsigned long action, void *data) {
+  struct test_context *test_ctx =
+      CONTAINER_OF(nb, struct test_context, nb_checkversion);
 
   switch (action) {
   case NOTIFY_CHECKVERSION_PREPARE:
-    printf("[callback: checkversion_prepare]\n");
+    fprintf(stdout, "[callback: checkversion_prepare]\n");
     break;
 
   case NOTIFY_CHECKVERSION_ABORTED:
-    printf("[callback: checkversion_abored]\n");
+    fprintf(stdout, "[callback: checkversion_abored]\n");
     break;
 
   case NOTIFY_CHECKVERSION_FINISHED:
-    printf("[callback: checkversion_finished]\n");
+    fprintf(stdout, "[callback: checkversion_finished]\n");
     if (data) {
-      printf("[callback: new version %s]\n", ((struct version_info *)data)->version_name);
+      fprintf(stdout, "[callback: new version %s]\n",
+              ((struct version_info *)data)->version_name);
       test_ctx->has_new_version = 1;
       clone_version(test_ctx, data);
     }
@@ -231,60 +227,52 @@
   return 0;
 }
 
-static int download_notifier(struct notifier_block *nb,
-              unsigned long action,
-              void *data)
-{
-  struct test_context *test_ctx = CONTAINER_OF(nb, struct test_context, nb_download);
+static int download_notifier(struct notifier_block *nb, unsigned long action,
+                             void *data) {
+  struct test_context *test_ctx =
+      CONTAINER_OF(nb, struct test_context, nb_download);
   notifier_data_t *notify_data = (notifier_data_t *)data;
-  long total_Kbytes = notify_data->u.dlinfo.total_bytes/1024;
-  long saved_Kbytes = notify_data->u.dlinfo.saved_bytes/1024;
-  unsigned int percent = (saved_Kbytes * 100)/total_Kbytes;
-  static unsigned int  pre_percent = 0;
+  long total_Kbytes = notify_data->u.dlinfo.total_bytes / 1024;
+  long saved_Kbytes = notify_data->u.dlinfo.saved_bytes / 1024;
+  unsigned int percent = (saved_Kbytes * 100) / total_Kbytes;
+  static unsigned int pre_percent = 0;
 
-  //printf("[download_notifier] percent:%d, total_Kbytes:%d, saved_Kbytes:%d\n", percent, total_Kbytes, saved_Kbytes);
+  // fprintf(stdout, "[download_notifier] percent:%d, total_Kbytes:%d,
+  // saved_Kbytes:%d\n", percent, total_Kbytes, saved_Kbytes);
 
   switch (action) {
-  case NOTIFY_DOWNLOAD_PREPARE:
-    printf("[callback: download_prepare]\n");
+  case NOTIFY_DOWNLOAD_PREPARE: {
+    fprintf(stdout, "DOWNLOAD: prepare\n");
     pre_percent = 0;
-    break;
-
-  case NOTIFY_DOWNLOAD_ABORTED:
-    printf("[callback: download_abored]\n");
+  } break;
+  case NOTIFY_DOWNLOAD_ABORTED: {
+    fprintf(stdout, "ERROR: Download abored!\n");
     test_ctx->download_exit = -1;
-    break;
-
-  case NOTIFY_DOWNLOAD_TRANSLATING:
+  } break;
+  case NOTIFY_DOWNLOAD_TRANSLATING: {
     if (percent < 100) {
       if (pre_percent != percent) {
         pre_percent = percent;
-        printf("[callback: download_translating] percent:%d\n", percent);
-
-        char cmd_buf[100];
-        snprintf(cmd_buf, 100, "echo Downloading %d > /tmp/fota_stat", percent);
-        system(cmd_buf);
+        fprintf(stdout, "DOWNLOAD: %d\n", percent);
       }
     }
-    break;
-
-  case NOTIFY_DOWNLOAD_FINISHED:
+  } break;
+  case NOTIFY_DOWNLOAD_FINISHED: {
     test_ctx->download_exit = 1;
     percent = 100;
-    printf("[callback: download_finished], percent:%d\n", percent);
-    break;
-
-  case NOTIFY_DOWNLOAD_PARTTIAL_FINISHED:
-    printf("[callback: download_partial_finished]\n");
+    fprintf(stdout, "DOWNLOAD: %d\n", percent);
+  } break;
+  case NOTIFY_DOWNLOAD_PARTTIAL_FINISHED: {
+    fprintf(stdout, "DOWNLOAD: partial finished\n");
     test_ctx->download_exit = 1;
-    break;
+  } break;
   }
+  fflush(stdout);
 
   return 0;
 }
 
-static int init_notifier(dmgr_t dm_id, struct test_context *test_ctx)
-{
+static int init_notifier(dmgr_t dm_id, struct test_context *test_ctx) {
   test_ctx->nb_checkversion.notifier_call = checkversion_notifier;
   test_ctx->nb_checkversion.priority = 0;
 
@@ -292,39 +280,36 @@
   test_ctx->nb_download.priority = 0;
 
   TEST_ASSERT_EQUAL_INT(0, dmgr_register_notifier(dm_id,
-            &test_ctx->nb_checkversion,
-            NOTIFY_ID_CHECK_VERSION));
+                                                  &test_ctx->nb_checkversion,
+                                                  NOTIFY_ID_CHECK_VERSION));
 
-  TEST_ASSERT_EQUAL_INT(0, dmgr_register_notifier(dm_id,
-            &test_ctx->nb_download,
-            NOTIFY_ID_DOWNLOAD));
+  TEST_ASSERT_EQUAL_INT(0, dmgr_register_notifier(dm_id, &test_ctx->nb_download,
+                                                  NOTIFY_ID_DOWNLOAD));
 
   return 0;
 }
 
-static void WAIT_DOWNLOAD_COMPLETED(struct test_context *test_ctx)
-{
+static void WAIT_DOWNLOAD_COMPLETED(struct test_context *test_ctx) {
   if (!test_ctx) {
     return;
   }
   for (;;) {
     if (test_ctx->download_exit != 0) {
-      printf(">>>>>download_exit = %d\n", test_ctx->download_exit);
+      fprintf(stdout, ">>>>>download_exit = %d\n", test_ctx->download_exit);
       break;
     }
     sleep(1);
   }
 }
 
-static int getMid(char* readbuf)
-{
-  #define DEVICE_NAME "deviceid"
-  int fd,ret = -1;
+static int getMid(char *readbuf) {
+#define DEVICE_NAME "deviceid"
+  int fd, ret = -1;
 
   ret = Aml_Util_UnifyKeyInit(UNIFYKEYS_PATH);
   if (0 > ret) {
-    printf("%s() %d, init unifykey failed @ %d!\n",
-      __func__, __LINE__, ret);
+    fprintf(stdout, "%s() %d, init unifykey failed @ %d!\n", __func__, __LINE__,
+            ret);
   }
 
   ret = Aml_Util_UnifyKeyRead(UNIFYKEYS_PATH, DEVICE_NAME, readbuf);
@@ -337,17 +322,15 @@
 
   ver_fd = fopen(__version_file_path, "r");
   if (NULL == ver_fd) {
-    printf("Cannot open version file %s\n", __version_file_path);
+    fprintf(stdout, "Cannot open version file %s\n", __version_file_path);
     return -1;
   }
 
-  while (fgets(line, sizeof(line), ver_fd))
-  {
+  while (fgets(line, sizeof(line), ver_fd)) {
     char *pLine = strstr(line, "imagename");
-    if (NULL != pLine)
-    {
+    if (NULL != pLine) {
       // 20220809043042
-      memcpy(sw_version, pLine+strlen(pLine)-15, 14);
+      memcpy(sw_version, pLine + strlen(pLine) - 15, 14);
       break;
     }
   }
@@ -364,8 +347,8 @@
   ret = get_sw_version(test_ctx->DEVINFO_VERSION);
 
   // SDK_VERSION of device.properties, only can sync time base on clean build
-  //ret = AmlDeviceGetProperty("SDK_VERSION", out_value, INFO_LEN);
-  //if (ret == AMLDEVICE_SUCCESS) {
+  // ret = AmlDeviceGetProperty("SDK_VERSION", out_value, INFO_LEN);
+  // if (ret == AMLDEVICE_SUCCESS) {
   //  memcpy(test_ctx->DEVINFO_VERSION, out_value, strlen(out_value));
   //}
 
@@ -406,12 +389,13 @@
   struct version_info cur_ver;
   int ret;
 
-  if (ver == NULL) return -1;
+  if (ver == NULL)
+    return -1;
 
   memset(&cur_ver, 0, sizeof(struct version_info));
   cur_ver.version_name = ver;
   ret = dmgr_report_upgraded_version(dm_id, &cur_ver, "Upgrade done");
-  printf("dmgr_report_upgraded_version %s ret = %d\n", ver, ret);
+  fprintf(stdout, "dmgr_report_upgraded_version %s ret = %d\n", ver, ret);
 
   return ret;
 }
@@ -422,15 +406,15 @@
 #define PATH_LEN 256
 #define MD5_LEN 32
 
-static int CalcFileMD5(char *file_name, char *md5_sum)
-{
+static int CalcFileMD5(char *file_name, char *md5_sum) {
 #define MD5SUM_CMD_FMT "md5sum %." STR(PATH_LEN) "s 2>/dev/null"
-  char cmd[PATH_LEN + sizeof (MD5SUM_CMD_FMT)];
+  char cmd[PATH_LEN + sizeof(MD5SUM_CMD_FMT)];
   sprintf(cmd, MD5SUM_CMD_FMT, file_name);
 #undef MD5SUM_CMD_FMT
 
   FILE *p = popen(cmd, "r");
-  if (p == NULL) return 0;
+  if (p == NULL)
+    return 0;
 
   int i, ch;
   for (i = 0; i < MD5_LEN && isxdigit(ch = fgetc(p)); i++) {
@@ -444,16 +428,16 @@
 }
 
 static int check_md5(char *md5sum) {
-  char md5_str[MD5_LEN+1];
+  char md5_str[MD5_LEN + 1];
 
   if (!CalcFileMD5(__save_file_path, md5_str)) {
-    printf("Cannot calculate the md5 sum\n");
+    fprintf(stdout, "Cannot calculate the md5 sum\n");
     return -1;
   }
 
-  printf("Calculate the md5 sum = %s\n", md5_str);
+  fprintf(stdout, "Calculate the md5 sum = %s\n", md5_str);
   if (!strncmp(md5_str, md5sum, MD5_LEN)) {
-    printf("Check md5sum OK\n");
+    fprintf(stdout, "Check md5sum OK\n");
     return 0;
   }
 
@@ -466,26 +450,27 @@
   char *p, num[3];
 
   snprintf(buffer, 200, "ping %s -c 1 -w 2 > /tmp/netlog", web_server);
-  //printf("command: %s\n", buffer);
+  // fprintf(stdout, "command: %s\n", buffer);
   system(buffer);
-  //sleep(2);
+  // sleep(2);
   usleep(50000);
 
   fp = fopen("/tmp/netlog", "r");
   if (fp < 0) {
-    printf("open file failed.\n");
+    fprintf(stdout, "open file failed.\n");
     return 0;
   }
 
   fseek(fp, 0, SEEK_SET);
   memset(buffer, 0, sizeof(buffer));
-  // read penultimate row, 1 packets transmitted, 1 received, 0% packet loss, time 0ms
+  // read penultimate row, 1 packets transmitted, 1 received, 0% packet loss,
+  // time 0ms
   while (fgets(buffer, 200, fp) != NULL) {
     p = strstr(buffer, "received,");
     if (p) {
-      //printf("string is: %s", p);
-      memcpy(num, p+10, 3);
-      //printf("num: %s\n", num);
+      // fprintf(stdout, "string is: %s", p);
+      memcpy(num, p + 10, 3);
+      // fprintf(stdout, "num: %s\n", num);
       if (atoi(num) == 0)
         return 1;
       else
@@ -499,86 +484,87 @@
   return 0;
 }
 
-int main(void)
-{
-  dmgr_t dm_id,ret;
+int main(void) {
+  dmgr_t dm_id, ret;
   char rbuf[64];
   struct test_context test_ctx = INIT_DEFAULT_TEST_CONTEXT();
   struct policy_info policy = POLICY_INFO_INIT(policy);
+  policy.so_transfer_timeout = 10;
+  policy.so_connect_timeout = 5;
   policy.sstate_cached_path = "/var";
-  policy.sub_certificates  = "/var/client.crt";
+  policy.sub_certificates = "/var/client.crt";
   policy.server_transfer_opt = SERVER_TRANSOPT_IOT | SERVER_TRANSOPT_HTTP;
 
   ret = getMid(rbuf);
-  if ((0 != strcmp(rbuf,"")) && (0 < ret)) {
+  if ((0 != strcmp(rbuf, "")) && (0 < ret)) {
     strcpy(test_ctx.DEVINFO_MID, rbuf);
   } else {
-    printf("get mid fail\n");
+    fprintf(stdout, "ERROR: Get mid failed!\n");
     return -1;
   }
 
   ret = get_deviceinfo(&test_ctx);
   if (ret < 0) {
-    printf("get deviceinfo fail\n");
+    fprintf(stdout, "ERROR: Get device info failed!\n");
     return -1;
   }
 
 #if 1
-  printf(" %s:  DEVINFO_OEM = %s \n",__func__,test_ctx.DEVINFO_OEM);
-  printf(" %s:  DEVINFO_DEVICETYPE = %s \n",__func__,test_ctx.DEVINFO_DEVICETYPE);
-  printf(" %s:  DEVINFO_PLATFORM = %s \n",__func__,test_ctx.DEVINFO_PLATFORM);
-  printf(" %s:  DEVINFO_MODELS = %s \n",__func__,test_ctx.DEVINFO_MODELS);
-  printf(" %s:  DEVINFO_MID = %s \n",__func__,test_ctx.DEVINFO_MID);
-  printf(" %s:  DEVINFO_VERSION = %s \n",__func__,test_ctx.DEVINFO_VERSION);
-  printf(" %s:  DEVINFO_PRODUCTID = %s \n",__func__,test_ctx.DEVINFO_PRODUCTID);
-  printf(" %s:  DEVINFO_PRODUCTSECRET = %s \n",__func__,test_ctx.DEVINFO_PRODUCTSECRET);
-  printf(" %s:  DEVINFO_APPVERSION = %s \n",__func__,test_ctx.DEVINFO_APPVERSION);
-  printf(" %s:  DEVINFO_NETWORKTYPE = %s \n",__func__,test_ctx.DEVINFO_NETWORKTYPE);
+  fprintf(stdout, "INFO: DEVINFO_OEM = %s \n", test_ctx.DEVINFO_OEM);
+  fprintf(stdout, "INFO: DEVINFO_DEVICETYPE = %s \n",
+          test_ctx.DEVINFO_DEVICETYPE);
+  fprintf(stdout, "INFO: DEVINFO_PLATFORM = %s \n", test_ctx.DEVINFO_PLATFORM);
+  fprintf(stdout, "INFO: DEVINFO_MODELS = %s \n", test_ctx.DEVINFO_MODELS);
+  fprintf(stdout, "INFO: DEVINFO_MID = %s \n", test_ctx.DEVINFO_MID);
+  fprintf(stdout, "INFO: DEVINFO_VERSION = %s \n", test_ctx.DEVINFO_VERSION);
+  fprintf(stdout, "INFO: DEVINFO_PRODUCTID = %s \n",
+          test_ctx.DEVINFO_PRODUCTID);
+  fprintf(stdout, "INFO: DEVINFO_PRODUCTSECRET = %s \n",
+          test_ctx.DEVINFO_PRODUCTSECRET);
+  fprintf(stdout, "INFO: DEVINFO_APPVERSION = %s \n",
+          test_ctx.DEVINFO_APPVERSION);
+  fprintf(stdout, "INFO: DEVINFO_NETWORKTYPE = %s \n",
+          test_ctx.DEVINFO_NETWORKTYPE);
 #endif
 
-  system("echo Checking_NewVersion > /tmp/fota_stat");
   while (1) {
     if (0 == checkNet(FOTA_WEB_SERVER)) {
-      printf(" network not connect \n ");
-      system("echo network_not_connect > /tmp/fota_stat");
-      //sleep(CHECK_NETWORK_DEALY);
+      fprintf(stdout, "ERROR: Network not connected!\n ");
+      // sleep(CHECK_NETWORK_DEALY);
       return -1;
     }
 
-    printf(" network  connected \n ");
-    dm_id = dmgr_alloc(&policy, LOG_INFO, LOGGER_STDIO, stdout);
+    dm_id = dmgr_alloc(&policy, LOG_ERROR, LOGGER_STDIO, stdout);
     if (0 >= dm_id) {
+      fprintf(stdout, "ERROR: Alloc dm_id failed!\n");
       return -1;
     }
 
-    if (0 != dmgr_register_deviceinfo(dm_id,
-        "oem", test_ctx.DEVINFO_OEM) ||
-      0 != dmgr_register_deviceinfo(dm_id,
-          "deviceType",test_ctx.DEVINFO_DEVICETYPE) ||
-      0 != dmgr_register_deviceinfo(dm_id,
-          "platform", test_ctx.DEVINFO_PLATFORM) ||
-      0 != dmgr_register_deviceinfo(dm_id,
-          "models", test_ctx.DEVINFO_MODELS) ||
-      0 != dmgr_register_deviceinfo(dm_id,
-          "mid", test_ctx.DEVINFO_MID) ||
-      0 != dmgr_register_deviceinfo(dm_id,
-          "version", test_ctx.DEVINFO_VERSION) ||
-      0 != dmgr_register_deviceinfo(dm_id,
-          "productId", test_ctx.DEVINFO_PRODUCTID) ||
-      0 != dmgr_register_deviceinfo(dm_id,
-          "productSecret", test_ctx.DEVINFO_PRODUCTSECRET) ||
-      0 != dmgr_register_deviceinfo(dm_id,
-          "appversion", test_ctx.DEVINFO_APPVERSION) ||
-      0 != dmgr_register_deviceinfo(dm_id,
-        "networkType", test_ctx.DEVINFO_NETWORKTYPE)) {
+    if (0 != dmgr_register_deviceinfo(dm_id, "oem", test_ctx.DEVINFO_OEM) ||
+        0 != dmgr_register_deviceinfo(dm_id, "deviceType",
+                                      test_ctx.DEVINFO_DEVICETYPE) ||
+        0 != dmgr_register_deviceinfo(dm_id, "platform",
+                                      test_ctx.DEVINFO_PLATFORM) ||
+        0 != dmgr_register_deviceinfo(dm_id, "models",
+                                      test_ctx.DEVINFO_MODELS) ||
+        0 != dmgr_register_deviceinfo(dm_id, "mid", test_ctx.DEVINFO_MID) ||
+        0 != dmgr_register_deviceinfo(dm_id, "version",
+                                      test_ctx.DEVINFO_VERSION) ||
+        0 != dmgr_register_deviceinfo(dm_id, "productId",
+                                      test_ctx.DEVINFO_PRODUCTID) ||
+        0 != dmgr_register_deviceinfo(dm_id, "productSecret",
+                                      test_ctx.DEVINFO_PRODUCTSECRET) ||
+        0 != dmgr_register_deviceinfo(dm_id, "appversion",
+                                      test_ctx.DEVINFO_APPVERSION) ||
+        0 != dmgr_register_deviceinfo(dm_id, "networkType",
+                                      test_ctx.DEVINFO_NETWORKTYPE)) {
       TEST_ASSERT_EQUAL_INT(0, dmgr_free(dm_id));
       continue;
     }
 
     if (test_ctx.DEVINFO_CHK_URL) {
-      if (0 != dmgr_register_serverinfo(dm_id,
-                  SERI_CHK_URL,
-                  test_ctx.DEVINFO_CHK_URL)) {
+      if (0 != dmgr_register_serverinfo(dm_id, SERI_CHK_URL,
+                                        test_ctx.DEVINFO_CHK_URL)) {
         TEST_ASSERT_EQUAL_INT(0, dmgr_free(dm_id));
         continue;
       }
@@ -587,54 +573,44 @@
     init_notifier(dm_id, &test_ctx);
     if (0 != dmgr_check_version(dm_id)) {
       TEST_ASSERT_EQUAL_INT(0, dmgr_free(dm_id));
-      printf(">>>> no new version detect\n");
-      system("echo Check_NewVersion Failed> /tmp/fota_stat");
+      fprintf(stdout, "ERROR: No new version detected!\n");
       break;
     }
     if (0 == test_ctx.has_new_version) {
-      if ((access("/data/software.swu",F_OK)) != -1) {
+      if ((access("/data/software.swu", F_OK)) != -1) {
         system("rm /data/software.swu");
       }
       TEST_ASSERT_EQUAL_INT(0, dmgr_free(dm_id));
-      printf(" no new_version \n");
-      system("echo No_NewVersion > /tmp/fota_stat");
+      fprintf(stdout, "ERROR: No new version!\n");
       ret = 0;
       break;
     } else {
-      printf(" ADUPS : has_new_version \n");
-      system("echo NewVersion > /tmp/fota_stat");
+      fprintf(stdout, "INFO: has_new_version \n");
     }
 
-    system("echo downloading > /tmp/fota_stat");
-    if (0 != dmgr_async_download_version(dm_id,
-        &test_ctx.cloned_version,
-        __save_file_path,
-        DOWNLOAD_FILE_SEEK_END,
-        0,
-        -1)) {
-        TEST_ASSERT_EQUAL_INT(0, dmgr_free(dm_id));
-        system("echo Download_FAILED > /tmp/fota_stat");
-        ret = -1;
-        break;
+    if (0 != dmgr_async_download_version(dm_id, &test_ctx.cloned_version,
+                                         __save_file_path,
+                                         DOWNLOAD_FILE_SEEK_END, 0, -1)) {
+      TEST_ASSERT_EQUAL_INT(0, dmgr_free(dm_id));
+      fprintf(stdout, "ERROR: Download image failed!\n");
+      ret = -1;
+      break;
     }
 
     WAIT_DOWNLOAD_COMPLETED(&test_ctx);
 
-    if (test_ctx.has_new_version &&
-      (test_ctx.download_exit == 1)) {
+    if (test_ctx.has_new_version && (test_ctx.download_exit == 1)) {
       write_new_version(&test_ctx.cloned_version);
       // ota package not match md5sum, remove software.swu
       if (check_md5(test_ctx.cloned_version.md5sum) == 0) {
-        printf("secure upgrade check pass!\n");
-        system("echo package_check_SUCCESS > /tmp/fota_stat");
+        fprintf(stdout, "INFO: secure upgrade check pass!\n");
         system("reboot recovery");
         ret = 1;
       } else {
         system("rm /data/software.swu");
         system("sync");
         TEST_ASSERT_EQUAL_INT(0, dmgr_free(dm_id));
-        system("echo package_check_FAILED > /tmp/fota_stat");
-        printf("ota package not match md5sum!\n");
+        fprintf(stdout, "ERROR: OTA package not match md5sum!\n");
         ret = -1;
       }
     }