Rev 611 | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | SVN | RSS feed
| Rev 611 | Rev 614 | ||
|---|---|---|---|
| Line 16... | Line 16... | ||
| 16 | #define STATE_IR_REPEAT 1 |
16 | #define STATE_IR_REPEAT 1 |
| 17 | #define STATE_START_RECEIVE 2 |
17 | #define STATE_START_RECEIVE 2 |
| 18 | #define STATE_RECEIVING 3 |
18 | #define STATE_RECEIVING 3 |
| 19 | #define STATE_START_PAUSE 4 |
19 | #define STATE_START_PAUSE 4 |
| 20 | #define STATE_PAUSING 5 |
20 | #define STATE_PAUSING 5 |
| - | 21 | #define STATE_START_IDLE 6 |
|
| 21 | 22 | ||
| 22 | #define IR_ID_DATA 0 |
23 | #define IR_ID_DATA 0 |
| 23 | #define IR_ID_RAW 1 |
24 | #define IR_ID_RAW 1 |
| 24 | #define IR_ID_DEBUG 10 |
25 | #define IR_ID_DEBUG 10 |
| 25 | 26 | ||
| Line 73... | Line 74... | ||
| 73 | IrTransceiver_Receive_Start(rxbuffer); |
74 | IrTransceiver_Receive_Start(rxbuffer); |
| 74 | state = STATE_START_RECEIVE; |
75 | state = STATE_START_RECEIVE; |
| 75 | } else if (state == STATE_START_RECEIVE) { |
76 | } else if (state == STATE_START_RECEIVE) { |
| 76 | state = STATE_RECEIVING; |
77 | state = STATE_RECEIVING; |
| 77 | } else if (state == STATE_RECEIVING) { |
78 | } else if (state == STATE_RECEIVING) { |
| 78 |
|
79 | uint8_t res = IrTransceiver_Receive_Poll(&len); |
| 79 | if ( |
80 | if ((res == IR_OK) && (len > 0)) { |
| 80 | //låt protocols parsa och skicka på can |
81 | //låt protocols parsa och skicka på can |
| 81 | if (parseProtocol(rxbuffer, len, &proto) == IR_OK) { |
82 | if (parseProtocol(rxbuffer, len, &proto) == IR_OK) { |
| 82 | if (proto.protocol != IR_PROTO_UNKNOWN) { |
83 | if (proto.protocol != IR_PROTO_UNKNOWN) { |
| 83 | txMsg.Data.bytes[0] = IR_BUTTON_DOWN; |
84 | txMsg.Data.bytes[0] = IR_BUTTON_DOWN; |
| 84 | txMsg.Data.bytes[1] = proto.protocol; |
85 | txMsg.Data.bytes[1] = proto.protocol; |
| Line 93... | Line 94... | ||
| 93 | } |
94 | } |
| 94 | 95 | ||
| 95 | state = STATE_START_PAUSE; |
96 | state = STATE_START_PAUSE; |
| 96 | } |
97 | } |
| 97 | } else if (state == STATE_START_PAUSE) { |
98 | } else if (state == STATE_START_PAUSE) { |
| - | 99 | IrTransceiver_Receive_Start(rxbuffer); |
|
| 98 | timePauseStarted = Timebase_CurrentTime(); |
100 | timePauseStarted = Timebase_CurrentTime(); |
| 99 | state = STATE_PAUSING; |
101 | state = STATE_PAUSING; |
| 100 | } else if (state == STATE_PAUSING) { |
102 | } else if (state == STATE_PAUSING) { |
| 101 | //resetta timebase-var om ir finns, detta bör göras snyggare |
103 | //resetta timebase-var om ir finns, detta bör göras snyggare |
| 102 |
|
104 | /*for (uint8_t i=0; i<10; i++) { |
| 103 | if (IrTransceiver_Receive_Pause_Poll() == 0) { |
105 | if (IrTransceiver_Receive_Pause_Poll() == 0) { |
| 104 | break; |
106 | break; |
| 105 | } |
107 | } |
| 106 | if (i==9) { |
108 | if (i==9) { |
| 107 | timePauseStarted = Timebase_CurrentTime(); |
109 | timePauseStarted = Timebase_CurrentTime(); |
| 108 | } |
110 | } |
| - | 111 | }*/ |
|
| - | 112 | uint8_t res = IrTransceiver_Receive_Poll(&len); |
|
| - | 113 | if (res == IR_NOT_FINISHED || res == IR_OK) { |
|
| - | 114 | timePauseStarted = Timebase_CurrentTime(); |
|
| - | 115 | } |
|
| - | 116 | if (res == IR_OK) { |
|
| - | 117 | IrTransceiver_Receive_Start(rxbuffer); |
|
| 109 | } |
118 | } |
| 110 | 119 | ||
| 111 | time = Timebase_CurrentTime(); |
120 | time = Timebase_CurrentTime(); |
| 112 | if (time - timePauseStarted >= proto.timeout) { |
121 | if (time - timePauseStarted >= proto.timeout) { |
| - | 122 | state = STATE_START_IDLE; |
|
| - | 123 | } |
|
| - | 124 | } else if (state == STATE_START_IDLE) { |
|
| 113 | if (proto.protocol != IR_PROTO_UNKNOWN) { |
125 | if (proto.protocol != IR_PROTO_UNKNOWN) { |
| 114 | //skicka på can |
126 | //skicka på can |
| 115 | txMsg.Data.bytes[0] = IR_BUTTON_UP; |
127 | txMsg.Data.bytes[0] = IR_BUTTON_UP; |
| 116 | BIOS_CanSend(&txMsg); |
128 | BIOS_CanSend(&txMsg); |
| 117 | } |
129 | } |
| 118 | state = STATE_IDLE; |
130 | state = STATE_IDLE; |
| 119 | } |
131 | } |
| 120 |
|
132 | |
| 121 | 133 | ||
| 122 | 134 | ||
| 123 | if (rxMsgFull) { |
135 | if (rxMsgFull) { |
| 124 | /* No message reception functionality implemented */ |
136 | /* No message reception functionality implemented */ |
| 125 | /* Flush the received message */ |
137 | /* Flush the received message */ |