Subversion Repositories HomeAutomation

Rev

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 5 gånger med 100ms intervall.
74
	H skickar detta paket 10 gånger med 100ms intervall.