Subversion Repositories HomeAutomation

Rev

Rev 1020 | Rev 1028 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | SVN | RSS feed

Rev 1020 Rev 1022
Line 90... Line 90...
90
{
90
{
91
//print("node was reset and bios just started, ver:" + biosVersion);
91
//print("node was reset and bios just started, ver:" + biosVersion);
92
    if (this.myProgramming)
92
    if (this.myProgramming)
93
    {
93
    {
94
        this.myProgrammingHexAddress = this.myProgrammingHex.getAddrLower();
94
        this.myProgrammingHexAddress = this.myProgrammingHex.getAddrLower();
95
        this.myProgrammingWantAck = this.myProgrammingHexAddress&0xffff;
95
        this.myProgrammingWantAck = ((this.myProgrammingHexAddress<<8)|(this.myProgrammingHexAddress>>8))&0xffff;
96
   
96
   
97
        var canMessage = new CanNMTMessage("nmt", "Pgm_Start");
97
        var canMessage = new CanNMTMessage("nmt", "Pgm_Start");
98
        canMessage.setData("HardwareId", this.myHardwareId);
98
        canMessage.setData("HardwareId", this.myHardwareId);
99
        canMessage.setData("AddressLow", this.myProgrammingHexAddress&0xffff);
99
        canMessage.setData("Address0", this.myProgrammingHexAddress&0xff);
-
 
100
        canMessage.setData("Address1", (this.myProgrammingHexAddress>>8)&0xff);
100
        canMessage.setData("AddressHigh", (this.myProgrammingHexAddress>16)&0xffff);
101
        canMessage.setData("Address3", (this.myProgrammingHexAddress>>16)&0xff);
-
 
102
        canMessage.setData("Address4", (this.myProgrammingHexAddress>>24)&0xff);
101
        canMessage.send();
103
        canMessage.send();
102
        this.myProgrammingState = "DATA";
104
        this.myProgrammingState = "DATA";
103
       
105
       
104
        this.myProgrammingCallback(true, "START", "Started programming of node");
106
        this.myProgrammingCallback(true, "START", "Started programming of node");
105
    }
107
    }
Line 124... Line 126...
124
        switch (this.myProgrammingState)
126
        switch (this.myProgrammingState)
125
        {
127
        {
126
        case "DATA":
128
        case "DATA":
127
            var offset = this.myProgrammingHexOffset;
129
            var offset = this.myProgrammingHexOffset;
128
       
130
       
129
            this.myProgrammingWantAck = offset;
131
            this.myProgrammingWantAck = ((offset<<8)|(offset>>8))&0xffff;
130
            //var bytesLeft = this.myProgrammingHex.getAddrUpper() - (this.myProgrammingHexAddress+this.myProgrammingHexOffset);
132
            //var bytesLeft = this.myProgrammingHex.getAddrUpper() - (this.myProgrammingHexAddress+this.myProgrammingHexOffset);
131
            var bytesLeft = this.myProgrammingHex.getLength() - this.myProgrammingHexOffset;
133
            var bytesLeft = this.myProgrammingHex.getLength() - this.myProgrammingHexOffset;
132
           
134
           
133
this.myProgrammingCallback(true, "DBG", "bytesLeft: "+bytesLeft+", this.myProgrammingHex.getLength(): "+this.myProgrammingHex.getLength()+"");
-
 
134
            //here we must handle the possibility that data is less then 48 bits
135
            //here we must handle the possibility that data is less then 48 bits
135
            var canMessage = new CanNMTMessage("nmt", "Pgm_Data_48");
136
            var canMessage = new CanNMTMessage("nmt", "Pgm_Data_48");
136
            switch (bytesLeft)
137
            switch (bytesLeft)
137
            {
138
            {
138
            case 1:
139
            case 1:
139
                canMessage = new CanNMTMessage("nmt", "Pgm_Data_8");
140
                canMessage = new CanNMTMessage("nmt", "Pgm_Data_8");
140
this.myProgrammingCallback(true, "DBG", "Pgm_Data_8");
-
 
141
                break;
141
                break;
142
            case 2:
142
            case 2:
143
                canMessage = new CanNMTMessage("nmt", "Pgm_Data_16");
143
                canMessage = new CanNMTMessage("nmt", "Pgm_Data_16");
144
this.myProgrammingCallback(true, "DBG", "Pgm_Data_16");
-
 
145
                break;
144
                break;
146
            case 3:
145
            case 3:
147
                canMessage = new CanNMTMessage("nmt", "Pgm_Data_24");
146
                canMessage = new CanNMTMessage("nmt", "Pgm_Data_24");
148
this.myProgrammingCallback(true, "DBG", "Pgm_Data_24");
-
 
149
                break;
147
                break;
150
            case 4:
148
            case 4:
151
                canMessage = new CanNMTMessage("nmt", "Pgm_Data_32");
149
                canMessage = new CanNMTMessage("nmt", "Pgm_Data_32");
152
this.myProgrammingCallback(true, "DBG", "Pgm_Data_32");
-
 
153
                break;
150
                break;
154
            case 5:
151
            case 5:
155
                canMessage = new CanNMTMessage("nmt", "Pgm_Data_40");
152
                canMessage = new CanNMTMessage("nmt", "Pgm_Data_40");
156
this.myProgrammingCallback(true, "DBG", "Pgm_Data_40");
-
 
157
                break;
153
                break;
158
            }
154
            }
159
           
155
           
160
            canMessage.setData("Offset", offset);
156
            canMessage.setData("Offset0", offset&0xff);
-
 
157
            canMessage.setData("Offset1", (offset>>8)&0xff);
161
            for (var i=0; i<bytesLeft && i<6; i++)
158
            for (var i=0; i<bytesLeft && i<6; i++)
162
            {
159
            {
163
                switch (i)
160
                switch (i)
164
                {
161
                {
165
                case 0:
162
                case 0:
166
                    canMessage.setData("Data0", this.myProgrammingHex.getByte(offset));
163
                    canMessage.setData("Data0", this.myProgrammingHex.getByte(offset));
167
this.myProgrammingCallback(true, "DBG", "Data0");
-
 
168
                    break;
164
                    break;
169
                case 1:
165
                case 1:
170
                    canMessage.setData("Data1", this.myProgrammingHex.getByte(offset));
166
                    canMessage.setData("Data1", this.myProgrammingHex.getByte(offset));
171
this.myProgrammingCallback(true, "DBG", "Data1");
-
 
172
                    break;
167
                    break;
173
                case 2:
168
                case 2:
174
                    canMessage.setData("Data2", this.myProgrammingHex.getByte(offset));
169
                    canMessage.setData("Data2", this.myProgrammingHex.getByte(offset));
175
this.myProgrammingCallback(true, "DBG", "Data2");
-
 
176
                    break;
170
                    break;
177
                case 3:
171
                case 3:
178
                    canMessage.setData("Data3", this.myProgrammingHex.getByte(offset));
172
                    canMessage.setData("Data3", this.myProgrammingHex.getByte(offset));
179
this.myProgrammingCallback(true, "DBG", "Data3");
-
 
180
                    break;
173
                    break;
181
                case 4:
174
                case 4:
182
                    canMessage.setData("Data4", this.myProgrammingHex.getByte(offset));
175
                    canMessage.setData("Data4", this.myProgrammingHex.getByte(offset));
183
this.myProgrammingCallback(true, "DBG", "Data4");
-
 
184
                    break;
176
                    break;
185
                case 5:
177
                case 5:
186
                    canMessage.setData("Data5", this.myProgrammingHex.getByte(offset));
178
                    canMessage.setData("Data5", this.myProgrammingHex.getByte(offset));
187
this.myProgrammingCallback(true, "DBG", "Data5");
-
 
188
                    break;
179
                    break;
189
                }
180
                }
190
                offset++;
181
                offset++;
191
            }
182
            }
192
            canMessage.send();
183
            canMessage.send();
Line 198... Line 189...
198
           
189
           
199
            this.myProgrammingCallback(true, "PROGRESS", this.myProgrammingHexOffset + ":" + this.myProgrammingHex.getLength());
190
            this.myProgrammingCallback(true, "PROGRESS", this.myProgrammingHexOffset + ":" + this.myProgrammingHex.getLength());
200
            break;
191
            break;
201
       
192
       
202
        case "END":
193
        case "END":
203
            this.myProgrammingWantAck = this.myProgrammingHex.getCRC16();  ///TODO: Fill in something here
194
            this.myProgrammingWantAck = ((this.myProgrammingHex.getCRC16()<<8)|(this.myProgrammingHex.getCRC16()>>8))&0xffff;
204
       
195
       
205
            var canMessage = new CanNMTMessage("nmt", "Pgm_End");
196
            var canMessage = new CanNMTMessage("nmt", "Pgm_End");
206
            canMessage.send();
197
            canMessage.send();
207
 
198
 
208
            this.myProgrammingState = "CRC";
199
            this.myProgrammingState = "CRC";