|
|
|
@ -86,8 +86,6 @@ public class IspManager { |
|
|
|
|
serialPort = device.device; |
|
|
|
|
if (serialPort != null) |
|
|
|
|
serialPort.resetDevice(); |
|
|
|
|
else |
|
|
|
|
System.out.println("device is null fuck"); |
|
|
|
|
|
|
|
|
|
if (serialPort != null && serialPort.isOpen()) { |
|
|
|
|
serialPort.setBaudRate(baudRate); |
|
|
|
@ -108,7 +106,6 @@ public class IspManager { |
|
|
|
|
serialPort.purge(D2xxManager.FT_PURGE_RX); |
|
|
|
|
String[] uids = readUid(); |
|
|
|
|
if (uids == null) { |
|
|
|
|
System.out.println("uids null fuck"); |
|
|
|
|
return false; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
@ -130,18 +127,13 @@ public class IspManager { |
|
|
|
|
int ret = sendCommand(READ_UID); |
|
|
|
|
|
|
|
|
|
if (ret != 0) { |
|
|
|
|
System.out.println("Send Command " + ret); |
|
|
|
|
return null; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
byte[] buf = new byte[REP_BUF]; |
|
|
|
|
|
|
|
|
|
int size = read(buf, 50, 500); |
|
|
|
|
for (int i = 0; i < size; i++) { |
|
|
|
|
System.out.println(String.format("%02x", buf[i])); |
|
|
|
|
} |
|
|
|
|
if (size <= 0) { |
|
|
|
|
System.out.println("Send size " + size); |
|
|
|
|
return null; |
|
|
|
|
} |
|
|
|
|
String[] uids = new String[4]; |
|
|
|
@ -158,7 +150,6 @@ public class IspManager { |
|
|
|
|
buffer = buffer.substring(buffer.indexOf("\r") + 1); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
System.out.println("uids ok"); |
|
|
|
|
return uids; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -186,7 +177,6 @@ public class IspManager { |
|
|
|
|
return null; |
|
|
|
|
int ret = sendCommand(READ_BOOT_VERSION); |
|
|
|
|
if (ret != 0) { |
|
|
|
|
System.out.println("Send Command " + ret); |
|
|
|
|
return null; |
|
|
|
|
} |
|
|
|
|
byte[] buf = new byte[REP_BUF]; |
|
|
|
@ -194,7 +184,6 @@ public class IspManager { |
|
|
|
|
int size = read(buf, 50, 500); |
|
|
|
|
|
|
|
|
|
if (size <= 0) { |
|
|
|
|
System.out.println("Receive " + size); |
|
|
|
|
return null; |
|
|
|
|
} |
|
|
|
|
String[] version = new String[2]; |
|
|
|
@ -254,7 +243,6 @@ public class IspManager { |
|
|
|
|
File file = new File(context.getApplicationInfo().dataDir + "/" + server.id + "/" + binary.path + binary.filename); |
|
|
|
|
int size = copy_buffer(file, data, parts.flash_size); |
|
|
|
|
if (size <= 0) { |
|
|
|
|
System.out.println("Size " + size); |
|
|
|
|
listener.onError(context.getString(R.string.copy_file),flashView); |
|
|
|
|
return -5; |
|
|
|
|
} |
|
|
|
@ -315,7 +303,6 @@ public class IspManager { |
|
|
|
|
serialPort.purge(D2xxManager.FT_PURGE_TX); |
|
|
|
|
byte[] buf; |
|
|
|
|
if (serialPort.write(SYNC_START) != SYNC_START.length) { |
|
|
|
|
System.out.println("Start"); |
|
|
|
|
return false; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -325,11 +312,9 @@ public class IspManager { |
|
|
|
|
String expected = new String(SYNC); |
|
|
|
|
if (result.compareTo(expected) != 0) { |
|
|
|
|
serialPort.write("\r\n".getBytes()); |
|
|
|
|
System.out.println("Start answer " + result); |
|
|
|
|
return false; |
|
|
|
|
} |
|
|
|
|
if (serialPort.write(SYNC) != SYNC.length) { |
|
|
|
|
System.out.println("SYNC write"); |
|
|
|
|
return false; |
|
|
|
|
} |
|
|
|
|
clearBuffer(SYNC.length); |
|
|
|
@ -338,13 +323,11 @@ public class IspManager { |
|
|
|
|
result = new String(buf); |
|
|
|
|
expected = new String(SYNC_OK); |
|
|
|
|
if (result.compareTo(expected) != 0) { |
|
|
|
|
System.out.println("SYNC OK " + result); |
|
|
|
|
return false; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
String freq = String.valueOf(crystal_freq) + "\r\n"; |
|
|
|
|
if (serialPort.write(freq.getBytes()) != freq.length()) { |
|
|
|
|
System.out.println("freq write"); |
|
|
|
|
return false; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -354,12 +337,10 @@ public class IspManager { |
|
|
|
|
result = new String(buf); |
|
|
|
|
expected = new String(SYNC_OK); |
|
|
|
|
if (result.compareTo(expected) != 0) { |
|
|
|
|
System.out.println("freq answer " + result); |
|
|
|
|
return false; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (serialPort.write(SYNC_ECHO_OFF) != SYNC_ECHO_OFF.length) { |
|
|
|
|
System.out.println("Sync Echo Off write"); |
|
|
|
|
return false; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -439,17 +420,14 @@ public class IspManager { |
|
|
|
|
String request = String.format(Locale.getDefault(),"%c %d %d %d\r\n",c,flash_addr,ram_addr,write_size); |
|
|
|
|
len = serialPort.write(request.getBytes()); |
|
|
|
|
if(len != request.getBytes().length){ |
|
|
|
|
System.out.println("cmd addr write"); |
|
|
|
|
return -5; |
|
|
|
|
} |
|
|
|
|
len = read(buf,buf.length,500); |
|
|
|
|
if (len <= 0) { |
|
|
|
|
System.out.println("cmd addr read"); |
|
|
|
|
return -4; |
|
|
|
|
} |
|
|
|
|
ret = parseRetCode(buf); |
|
|
|
|
|
|
|
|
|
System.out.println("cmd addr ret "+ret); |
|
|
|
|
return ret; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -464,7 +442,6 @@ public class IspManager { |
|
|
|
|
|
|
|
|
|
ret = sendCommand('W',ram_addr,write_size); |
|
|
|
|
if(ret != 0){ |
|
|
|
|
System.out.println("ask for write to ram"); |
|
|
|
|
return -8; |
|
|
|
|
} |
|
|
|
|
if(!uuencode) { |
|
|
|
@ -491,41 +468,27 @@ public class IspManager { |
|
|
|
|
computed_checksum = calc_checksum(dataToSend,total_sent,data_size); |
|
|
|
|
|
|
|
|
|
byte[] checksum = String.format(Locale.getDefault(),"%d\r\n", computed_checksum).getBytes(); |
|
|
|
|
System.out.println(String.format(Locale.getDefault(),"%d %08x",i,computed_checksum)); |
|
|
|
|
System.arraycopy(checksum,0,buf,encoded_size,checksum.length); |
|
|
|
|
encoded_size+=checksum.length; |
|
|
|
|
//buf[encoded_size]='\0';
|
|
|
|
|
//encoded_size++;
|
|
|
|
|
for(int j = 0; j < encoded_size; j++) { |
|
|
|
|
System.out.print(String.format(Locale.getDefault(),"%02x",buf[j])); |
|
|
|
|
if(j%10==0) |
|
|
|
|
System.out.println(""); |
|
|
|
|
} |
|
|
|
|
len = serialPort.write(buf,encoded_size); |
|
|
|
|
if(len != encoded_size) { |
|
|
|
|
System.out.println("write fail "+i); |
|
|
|
|
return -8; |
|
|
|
|
} |
|
|
|
|
len = read(repbuf,REP_BUF,500); |
|
|
|
|
if(len <= 0) { |
|
|
|
|
System.out.println("read answer fail "+i); |
|
|
|
|
return -9; |
|
|
|
|
} |
|
|
|
|
repbuf[len]='\0'; |
|
|
|
|
System.out.println("Length "+len); |
|
|
|
|
for(int j = 0; j < len; j++) { |
|
|
|
|
System.out.println(String.format(Locale.getDefault(),"%02x",repbuf[j])); |
|
|
|
|
} |
|
|
|
|
String result = new String(repbuf,0,len); |
|
|
|
|
String expected = new String(DATA_BLOCK_OK); |
|
|
|
|
System.out.println("result "+result+"."); |
|
|
|
|
if(result.compareTo(expected)==0){ |
|
|
|
|
total_sent += data_size; |
|
|
|
|
resend_requested_for_block = 0; |
|
|
|
|
} else { |
|
|
|
|
resend_requested_for_block++; |
|
|
|
|
if(resend_requested_for_block >= 3) { |
|
|
|
|
System.out.println("resend fail "+i); |
|
|
|
|
return -10; |
|
|
|
|
} |
|
|
|
|
i--; |
|
|
|
@ -547,7 +510,6 @@ public class IspManager { |
|
|
|
|
private int eraseFlash(Part parts,FlashListener listener) { |
|
|
|
|
int ret = unlock(); |
|
|
|
|
if (ret != 0) { |
|
|
|
|
System.out.println("unlock fail"); |
|
|
|
|
return -1; |
|
|
|
|
} |
|
|
|
|
for (int i = 0; i < parts.flash_nb_sectors; i++) { |
|
|
|
@ -559,7 +521,6 @@ public class IspManager { |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (ret < 0) { |
|
|
|
|
System.out.println("blank "+i+" fail"); |
|
|
|
|
return ret; |
|
|
|
|
} else { |
|
|
|
|
byte buf[] = new byte[REP_BUF]; |
|
|
|
@ -568,13 +529,11 @@ public class IspManager { |
|
|
|
|
//prepare-for-write
|
|
|
|
|
ret = send_cmd_sectors('P', i, i); |
|
|
|
|
if (ret != 0) { |
|
|
|
|
System.out.println("prepare-for-write "+i+" fail"); |
|
|
|
|
return ret; |
|
|
|
|
} |
|
|
|
|
//erase
|
|
|
|
|
ret = send_cmd_sectors('E', i, i); |
|
|
|
|
if (ret != 0) { |
|
|
|
|
System.out.println("erase "+i+" fail"); |
|
|
|
|
return ret; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|