Subversion Repositories HomeAutomation

Rev

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 hwid) {
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;