|
@@ -228,34 +228,35 @@ static int board_proc(upg_handle_t *h, int quit)
|
|
|
board_send(mm, 0, fbuf.buf, fbuf.dlen);
|
|
board_send(mm, 0, fbuf.buf, fbuf.dlen);
|
|
|
while(1) {
|
|
while(1) {
|
|
|
r = xlist_get_node(l, &ln, 0);
|
|
r = xlist_get_node(l, &ln, 0);
|
|
|
- if(r==0) {
|
|
|
|
|
- tmp = (board_info_t*)ln->data.buf;
|
|
|
|
|
- for(i=0; i<RETRY_MAX; i++) {
|
|
|
|
|
- r = board_get_info(mm, tmp->addr, &swinfo);
|
|
|
|
|
- if(r==0) {
|
|
|
|
|
- break;
|
|
|
|
|
- }
|
|
|
|
|
- LOGE("___ board upgrade failed, retry %d\n", i+1);
|
|
|
|
|
- board_send(mm, i, fbuf.buf, fbuf.dlen);
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ if(r) {
|
|
|
|
|
+ break;
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
- if(r) {
|
|
|
|
|
- tmp->status = UPGRADE_FAIL;
|
|
|
|
|
- err++;
|
|
|
|
|
- }
|
|
|
|
|
- else {
|
|
|
|
|
- sw_to_info(tmp->addr, tmp, &swinfo, UPGRADE_OK);
|
|
|
|
|
- ok++;
|
|
|
|
|
|
|
+ tmp = (board_info_t*)ln->data.buf;
|
|
|
|
|
+ for(i=0; i<RETRY_MAX; i++) {
|
|
|
|
|
+ r = board_get_info(mm, tmp->addr, &swinfo);
|
|
|
|
|
+ if(r==0) {
|
|
|
|
|
+ break;
|
|
|
}
|
|
}
|
|
|
- board_info_set(tmp);
|
|
|
|
|
- xlist_remove(l, 0);
|
|
|
|
|
|
|
+ LOGE("___ board upgrade failed, retry %d\n", i+1);
|
|
|
|
|
+ board_send(mm, i, fbuf.buf, fbuf.dlen);
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+ if(r) {
|
|
|
|
|
+ tmp->status = UPGRADE_FAIL;
|
|
|
|
|
+ err++;
|
|
|
|
|
+ }
|
|
|
|
|
+ else {
|
|
|
|
|
+ sw_to_info(tmp->addr, tmp, &swinfo, UPGRADE_OK);
|
|
|
|
|
+ ok++;
|
|
|
|
|
+ }
|
|
|
|
|
+ board_info_set(tmp);
|
|
|
|
|
+
|
|
|
|
|
+ xlist_remove(l, 0);
|
|
|
}
|
|
}
|
|
|
free(fbuf.buf);
|
|
free(fbuf.buf);
|
|
|
|
|
|
|
|
- if(ok>0) {
|
|
|
|
|
- exit(0); //restart app
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ exit(0); //restart app
|
|
|
|
|
|
|
|
return 0;
|
|
return 0;
|
|
|
}
|
|
}
|
|
@@ -542,7 +543,7 @@ static int md5_check(buf_t *fb)
|
|
|
|
|
|
|
|
int upg_board_file_check(char *path)
|
|
int upg_board_file_check(char *path)
|
|
|
{
|
|
{
|
|
|
- int r;
|
|
|
|
|
|
|
+ int r=UPG_OK;
|
|
|
buf_t fb;
|
|
buf_t fb;
|
|
|
upg_handle_t *h=&uHandle;
|
|
upg_handle_t *h=&uHandle;
|
|
|
|
|
|
|
@@ -558,15 +559,16 @@ int upg_board_file_check(char *path)
|
|
|
fw_hdr_t *fh=(fw_hdr_t*)fb.buf;
|
|
fw_hdr_t *fh=(fw_hdr_t*)fb.buf;
|
|
|
if(memcmp(fh->hdr.magic,FW_HEAD_MAGIC,sizeof(FW_HEAD_MAGIC))) {
|
|
if(memcmp(fh->hdr.magic,FW_HEAD_MAGIC,sizeof(FW_HEAD_MAGIC))) {
|
|
|
LOGE("not found %s, invalid board firmware\n", FW_HEAD_MAGIC);
|
|
LOGE("not found %s, invalid board firmware\n", FW_HEAD_MAGIC);
|
|
|
- return UPG_HDR_FAIL;
|
|
|
|
|
|
|
+ r = UPG_HDR_FAIL;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
if(md5_check(&fb)) {
|
|
if(md5_check(&fb)) {
|
|
|
- return UPG_MD5_FAIL;
|
|
|
|
|
|
|
+ LOGE("md5 check failed, invalid board firmware\n");
|
|
|
|
|
+ r = UPG_MD5_FAIL;
|
|
|
}
|
|
}
|
|
|
free(fb.buf);
|
|
free(fb.buf);
|
|
|
|
|
|
|
|
- return UPG_OK;
|
|
|
|
|
|
|
+ return r;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
int upg_host_file_check(char *path)
|
|
int upg_host_file_check(char *path)
|