Rev 1458 | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | SVN | RSS feed
| Rev 1458 | Rev 1717 | ||
|---|---|---|---|
| Line 12... | Line 12... | ||
| 12 | private ulong dlOffset = 0; |
12 | private ulong dlOffset = 0; |
| 13 | //private Thread down; |
13 | //private Thread down; |
| 14 | private byte receiveID; |
14 | private byte receiveID; |
| 15 | private uint hwid; |
15 | private uint hwid; |
| 16 | private bool HWID_INUSE; |
16 | private bool HWID_INUSE; |
| - | 17 | private bool defaultBios; |
|
| 17 | 18 | ||
| 18 | private enum dState { SEND_START, WAIT_ACK_PRG, SEND_PGM_DATA, WAIT_ACK_DATA, RESEND_ADDR, WAIT_DONE, SEND_DONE, SEND_BIOS_UPDATE, SEND_RESET, DONE, DEBUG_STATE2, WAIT_BOOT, SEND_EMPTY_START, WAIT_ACK_PRG_EMPTY, SEND_EMPTY_DATA, WAIT_ACK_EMPTY_DATA, SEND_DONE_EMPTY, WAIT_DONE_EMPTY}; |
19 | private enum dState { SEND_START, WAIT_ACK_PRG, SEND_PGM_DATA, WAIT_ACK_DATA, RESEND_ADDR, WAIT_DONE, SEND_DONE, SEND_BIOS_UPDATE, SEND_RESET, DONE, DEBUG_STATE2, WAIT_BOOT, SEND_EMPTY_START, WAIT_ACK_PRG_EMPTY, SEND_EMPTY_DATA, WAIT_ACK_EMPTY_DATA, SEND_DONE_EMPTY, WAIT_DONE_EMPTY}; |
| 19 | 20 | ||
| 20 | private const byte CAN_NMT = 0x00; |
21 | private const byte CAN_NMT = 0x00; |
| 21 | 22 | ||
| Line 47... | Line 48... | ||
| 47 | private const int TIMEOUT_MS = 1000; |
48 | private const int TIMEOUT_MS = 1000; |
| 48 | private const int TIMEOUT_SHORT_MS = 500; |
49 | private const int TIMEOUT_SHORT_MS = 500; |
| 49 | 50 | ||
| 50 | private long timeStart = 0; |
51 | private long timeStart = 0; |
| 51 | 52 | ||
| 52 | public Downloader(HexFile hf, DaemonConnection dc, byte receiveID, bool isBiosUpdate, bool HWID_INUSE, uint |
53 | public Downloader(HexFile hf, DaemonConnection dc, byte receiveID, bool isBiosUpdate, bool HWID_INUSE, uint hwid, bool defaultBios) { |
| 53 | this.hf = hf; |
54 | this.hf = hf; |
| 54 | this.dc = dc; |
55 | this.dc = dc; |
| 55 | this.receiveID = receiveID; |
56 | this.receiveID = receiveID; |
| 56 | this.isBiosUpdate = isBiosUpdate; |
57 | this.isBiosUpdate = isBiosUpdate; |
| 57 | this.hwid = hwid; |
58 | this.hwid = hwid; |
| 58 | this.HWID_INUSE = HWID_INUSE; |
59 | this.HWID_INUSE = HWID_INUSE; |
| - | 60 | this.defaultBios = defaultBios; |
|
| 59 | } |
61 | } |
| 60 | 62 | ||
| 61 | public int calcCRC(HexFile hf) { |
63 | public int calcCRC(HexFile hf) { |
| 62 | int crc=0; |
64 | int crc=0; |
| 63 | for (ulong i=hf.getAddrLower(); i <= hf.getAddrUpper(); i++) { |
65 | for (ulong i=hf.getAddrLower(); i <= hf.getAddrUpper(); i++) { |
| Line 128... | Line 130... | ||
| 128 | data[ADDR0_INDEX] = (byte)((currentAddress-dlOffset) & 0x0000FF); |
130 | data[ADDR0_INDEX] = (byte)((currentAddress-dlOffset) & 0x0000FF); |
| 129 | data[ADDR1_INDEX] = (byte)(((currentAddress-dlOffset) & 0x00FF00) >> 8); |
131 | data[ADDR1_INDEX] = (byte)(((currentAddress-dlOffset) & 0x00FF00) >> 8); |
| 130 | data[ADDR2_INDEX] = (byte)(((currentAddress-dlOffset) & 0xFF0000) >> 16); |
132 | data[ADDR2_INDEX] = (byte)(((currentAddress-dlOffset) & 0xFF0000) >> 16); |
| 131 | data[ADDR3_INDEX] = 0; |
133 | data[ADDR3_INDEX] = 0; |
| 132 | if (HWID_INUSE) { |
134 | if (HWID_INUSE) { |
| - | 135 | if (!defaultBios) { |
|
| 133 | data[HWID0_INDEX] = (byte)((hwid) & 0xFF); |
136 | data[HWID0_INDEX] = (byte)((hwid) & 0xFF); |
| 134 | data[HWID1_INDEX] = (byte)((hwid>>8) & 0xFF); |
137 | data[HWID1_INDEX] = (byte)((hwid>>8) & 0xFF); |
| 135 | data[HWID2_INDEX] = (byte)((hwid>>16) & 0xFF); |
138 | data[HWID2_INDEX] = (byte)((hwid>>16) & 0xFF); |
| 136 | data[HWID3_INDEX] = (byte)((hwid>>24) & 0xFF); |
139 | data[HWID3_INDEX] = (byte)((hwid>>24) & 0xFF); |
| - | 140 | } else { |
|
| - | 141 | data[HWID0_INDEX] = 0xFF; |
|
| - | 142 | data[HWID1_INDEX] = 0xFF; |
|
| - | 143 | data[HWID2_INDEX] = 0xFF; |
|
| - | 144 | data[HWID3_INDEX] = 0xFF; |
|
| - | 145 | } |
|
| 137 | } |
146 | } |
| 138 | //outCm = new CanPacket(CAN_NMT, CAN_NMT_PGM_START, MY_ID, receiveID, 4, data); |
147 | //outCm = new CanPacket(CAN_NMT, CAN_NMT_PGM_START, MY_ID, receiveID, 4, data); |
| 139 | outCm = cpn.getPgmStartPacket(data); |
148 | outCm = cpn.getPgmStartPacket(data); |
| 140 | dc.sendCanPacket(outCm); |
149 | dc.sendCanPacket(outCm); |
| 141 | t = Environment.TickCount; |
150 | t = Environment.TickCount; |