Rev 363 | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | SVN | RSS feed
| Rev 363 | Rev 365 | ||
|---|---|---|---|
| - | 1 | [IR: repeat count] [IR: addr] [IR: data] [pgm: CLASS] [pgm: IDH] [pgm: HDL] [pgm: DATA1] [pgm: DATA0] |
|
| - | 2 | ||
| - | 3 | ||
| - | 4 | ||
| - | 5 | struct _IR_COMMAND |
|
| - | 6 | { |
|
| - | 7 | BOOL valid; |
|
| - | 8 | BYTE repeat; |
|
| - | 9 | BYTE addr; |
|
| - | 10 | BYTE data; |
|
| - | 11 | BYTE pgm_class; |
|
| - | 12 | WORD pgm_id; |
|
| - | 13 | BYTE pgm_data[2]; |
|
| - | 14 | } IR_COMMAND; |
|
| - | 15 | ||
| - | 16 | ||
| - | 17 | IR_COMMAND irCommand[128]; |
|
| - | 18 | ||
| 1 | 19 | ||
| 2 | 20 | ||
| 3 | EE_START |
21 | EE_START |
| 4 | // data[4] = RID |
22 | // data[4] = RID |
| 5 | // data[3] = 1 = external, 0 = internal eeprom |
23 | // data[3] = 1 = external, 0 = internal eeprom |
| 6 | // data[2] = ADDRU |
24 | // data[2] = ADDRU |
| 7 | // data[1] = ADDRH |
25 | // data[1] = ADDRH |
| 8 | // data[0] = ADDRL |
26 | // data[0] = ADDRL |
| 9 | 27 | ||
| 10 | 28 | ||
| 11 | EE_ACK |
29 | EE_ACK |
| 12 | 30 | ||
| 13 | EE_NACK |
31 | EE_NACK |
| 14 | 32 | ||
| 15 | EE_CRC |
33 | EE_CRC |
| 16 | // data[4] = CRCH |
34 | // data[4] = CRCH |
| 17 | // data[3] = CRCL |
35 | // data[3] = CRCL |
| 18 | // data[2] = ADDRU |
36 | // data[2] = ADDRU |
| 19 | // data[1] = ADDRH |
37 | // data[1] = ADDRH |
| 20 | // data[0] = ADDRL |
38 | // data[0] = ADDRL |
| 21 | 39 | ||
| 22 | EE_DONE |
40 | EE_DONE |
| 23 | - | ||
| - | 41 | // data[2] = number of valid bytes U |
|
| - | 42 | // data[1] = number of valid bytes H |
|
| - | 43 | // data[0] = number of valid bytes L |
|
| 24 | 44 | ||
| 25 | EE_PGM |
45 | EE_PGM |
| 26 | // data[7] = offset |
46 | // data[7] = offset |
| 27 | // data[6-0] = DATA |
47 | // data[6-0] = DATA |
| 28 | 48 | ||
| 29 | 49 | ||
| 30 | H = Hostprogramvara. |
50 | H = Hostprogramvara. |
| 31 | N = Nod att programmera. |
51 | N = Nod att programmera. |
| 32 | 52 | ||
| 33 | 53 | ||
| 34 | P1: H skickar EE_START, data[4]=N.id, data[3]=0/1, data[2]=ADDRH, data[1]=ADDRL, data[0]=ADDR. |
54 | P1: H skickar EE_START, data[4]=N.id, data[3]=0/1, data[2]=ADDRH, data[1]=ADDRL, data[0]=ADDR. |
| 35 | H väntar på EE_ACK SID=N.id, RID=H.id. |
55 | H väntar på EE_ACK SID=N.id, RID=H.id. |
| 36 | P2: När N mottagit P1 skickar den EE_ACL SID=N.id, RID=H.id. |
56 | P2: När N mottagit P1 skickar den EE_ACL SID=N.id, RID=H.id. |
| 37 | N sätter startaddress till data[2]:[0]; |
57 | N sätter startaddress till data[2]:[0]; |
| 38 | Om H ej mottar P2 innom tid skickas P1 igen. |
58 | Om H ej mottar P2 innom tid skickas P1 igen. |
| 39 | annars |
59 | annars |
| 40 | P4: H skickar EE_PGM data[6..0], data[7]=addroffset. |
60 | P4: H skickar EE_PGM data[6..0], data[7]=addroffset. |
| 41 | H skickar åtta (eller hur mycket som finns kvar) sådana här paket, med ökande offset. |
61 | H skickar åtta (eller hur mycket som finns kvar) sådana här paket, med ökande offset. |
| 42 | P5: När åtta paket skickade skickas EE_CRC SID=H.id, RID=N.id, OFFSET=numpacket data[7..0]=CRC |
62 | P5: När åtta paket skickade skickas EE_CRC SID=H.id, RID=N.id, OFFSET=numpacket data[7..0]=CRC |
| 43 | H väntar på EE_ACK, SID=N.id, RID=H.id. |
63 | H väntar på EE_ACK, SID=N.id, RID=H.id. |
| 44 | 64 | ||
| 45 | N tar emot varje skickat P4 paket och sparar undan chunk av sju byte. |
65 | N tar emot varje skickat P4 paket och sparar undan chunk av sju byte. |
| 46 | När N får ett P5 paket beräknas crc på OFFSET mottagna paket. |
66 | När N får ett P5 paket beräknas crc på OFFSET mottagna paket. |
| 47 | P6: om ok, skicka EE_ACK, SID=N.id, RID=H.id. |
67 | P6: om ok, skicka EE_ACK, SID=N.id, RID=H.id. |
| 48 | P7: annars skicka EE_NACK, SID=N.id, RID=H.id. |
68 | P7: annars skicka EE_NACK, SID=N.id, RID=H.id. |
| 49 | 69 | ||
| 50 | Om H får P6, forsätt med P4. |
70 | Om H får P6, forsätt med P4. |
| 51 | Om H får P7 eller timeout, skicka om senast åtta P4. |
71 | Om H får P7 eller timeout, skicka om senast åtta P4. |
| 52 | 72 | ||
| 53 | P8: När H har slut på data, skickas EE_DONE, SID=H.id, RID=N.id. |
73 | P8: När H har slut på data, skickas EE_DONE, SID=H.id, RID=N.id. |
| 54 | H skickar detta paket |
74 | H skickar detta paket 10 gånger med 100ms intervall. |