[Feature][ZXW-130]merge P50U02 version
Only Configure: No
Affected branch: master
Affected module: unknow
Is it affected on both ZXIC and MTK: only ZXIC
Self-test: Yes
Doc Update: No
Change-Id: I4f29ec5bb7c59385f23738d2b7ca84e67c100f69
diff --git a/ap/app/nvro_tool/main.c b/ap/app/nvro_tool/main.c
new file mode 100755
index 0000000..681e236
--- /dev/null
+++ b/ap/app/nvro_tool/main.c
@@ -0,0 +1,69 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include "libcpnv.h"
+#include "flags_api.h"
+
+int main(int argc, char *argv[])
+{
+ unsigned int nvro_flag;
+ int ret;
+
+ if (argc == 1)
+ {
+ printf("%s backup\n", argv[0]);
+ printf("%s restore\n", argv[0]);
+ printf("%s check\n", argv[0]);
+ return -1;
+ }
+ if (argc > 1 && (strcmp("backup", argv[1])==0))
+ {
+ if (cpnv_NvroBackup() == CPNV_OK)
+ {
+ printf("cpnv_NvroBackup success\n");
+ return 0;
+ }
+ else
+ {
+ printf("cpnv_NvroBackup fail\n");
+ return -1;
+ }
+ }
+ if (argc > 1 && (strcmp("restore", argv[1])==0))
+ {
+ ret = flags_set_nvroflag(NVRO_RESTORING);
+ if (ret != 0)
+ {
+ printf("[error]nvro_tool set NVRO_RESTORING\n");
+ return -1;
+ }
+ else
+ {
+ printf("nvro_tool set NVRO_RESTORING success\n");
+ return 0;
+ }
+
+ }
+ if (argc > 1 && (strcmp("check", argv[1])==0))
+ {
+ nvro_flag = flags_get_nvroflag();
+ if (nvro_flag != NVRO_RESTORING)
+ {
+ printf("nvro_tool restore check and do nothing:%08x\n", nvro_flag);
+ return 0;
+ }
+ if (cpnv_NvroRestore() == CPNV_OK)
+ {
+ printf("cpnv_NvroRestore success\n");
+ return 0;
+ }
+ else
+ {
+ printf("cpnv_NvroRestore fail\n");
+ return -1;
+ }
+ }
+
+ return -1;
+}
+