Rev 365 | Blame | Compare with Previous | Last modification | View Log | SVN | RSS feed
[IR: repeat count] [IR: addr] [IR: data] [pgm: CLASS] [pgm: IDH] [pgm: HDL] [pgm: DATA1] [pgm: DATA0]struct _IR_COMMAND{BOOL valid;BYTE repeat;BYTE addr;BYTE data;BYTE pgm_class;WORD pgm_id;BYTE pgm_data[2];} IR_COMMAND;IR_COMMAND irCommand[128];EE_START// data[4] = RID// data[3] = 1 = external, 0 = internal eeprom// data[2] = ADDRU// data[1] = ADDRH// data[0] = ADDRLEE_ACKEE_NACKEE_CRC// data[4] = CRCH// data[3] = CRCL// data[2] = ADDRU// data[1] = ADDRH// data[0] = ADDRLEE_DONE// data[2] = number of valid bytes U// data[1] = number of valid bytes H// data[0] = number of valid bytes LEE_PGM// data[7] = offset// data[6-0] = DATAH = Hostprogramvara.N = Nod att programmera.P1: H skickar EE_START, data[4]=N.id, data[3]=0/1, data[2]=ADDRH, data[1]=ADDRL, data[0]=ADDR.H väntar på EE_ACK SID=N.id, RID=H.id.P2: När N mottagit P1 skickar den EE_ACL SID=N.id, RID=H.id.N sätter startaddress till data[2]:[0];Om H ej mottar P2 innom tid skickas P1 igen.annarsP4: H skickar EE_PGM data[6..0], data[7]=addroffset.H skickar åtta (eller hur mycket som finns kvar) sådana här paket, med ökande offset.P5: När åtta paket skickade skickas EE_CRC SID=H.id, RID=N.id, OFFSET=numpacket data[7..0]=CRCH väntar på EE_ACK, SID=N.id, RID=H.id.N tar emot varje skickat P4 paket och sparar undan chunk av sju byte.När N får ett P5 paket beräknas crc på OFFSET mottagna paket.P6: om ok, skicka EE_ACK, SID=N.id, RID=H.id.P7: annars skicka EE_NACK, SID=N.id, RID=H.id.Om H får P6, forsätt med P4.Om H får P7 eller timeout, skicka om senast åtta P4.P8: När H har slut på data, skickas EE_DONE, SID=H.id, RID=N.id.H skickar detta paket 10 gånger med 100ms intervall.