Rev 1133 | Rev 1910 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | SVN | RSS feed
| Rev 1133 | Rev 1616 | ||
|---|---|---|---|
| Line 5... | Line 5... | ||
| 5 | uint8_t sns_irTransmit_repeatCount = 0; |
5 | uint8_t sns_irTransmit_repeatCount = 0; |
| 6 | uint8_t sns_irTransmit_stop = 0; |
6 | uint8_t sns_irTransmit_stop = 0; |
| 7 | Ir_Protocol_Data_t sns_irTransmit_proto; |
7 | Ir_Protocol_Data_t sns_irTransmit_proto; |
| 8 | uint16_t sns_irTransmit_txbuffer[MAX_NR_TIMES]; |
8 | uint16_t sns_irTransmit_txbuffer[MAX_NR_TIMES]; |
| 9 | uint8_t sns_irTransmit_length = 0; |
9 | uint8_t sns_irTransmit_length = 0; |
| - | 10 | uint8_t sns_irTransmit_burst_mode = 0; |
|
| 10 | 11 | ||
| 11 | void sns_irTransmit_Init(void) |
12 | void sns_irTransmit_Init(void) |
| 12 | { |
13 | { |
| 13 | IrTransceiver_Init(); |
14 | IrTransceiver_Init(); |
| 14 | sns_irTransmit_proto.timeout = 0; |
15 | sns_irTransmit_proto.timeout = 0; |
| Line 39... | Line 40... | ||
| 39 | else |
40 | else |
| 40 | { |
41 | { |
| 41 | sns_irTransmit_state = sns_irTransmit_STATE_IDLE; |
42 | sns_irTransmit_state = sns_irTransmit_STATE_IDLE; |
| 42 | } |
43 | } |
| 43 | } |
44 | } |
| 44 | else if (sns_irTransmit_state == sns_irTransmit_STATE_TRANSMITTING) |
45 | else if (sns_irTransmit_state == sns_irTransmit_STATE_TRANSMITTING) |
| - | 46 | { |
|
| 45 | //polla om den är klar, om klar gå till sns_irTransmit_STATE_START_PAUSE |
47 | //polla om den är klar, om klar gå till sns_irTransmit_STATE_START_PAUSE |
| 46 | if (IrTransceiver_Transmit_Poll() != IR_NOT_FINISHED) |
48 | if (IrTransceiver_Transmit_Poll() != IR_NOT_FINISHED) |
| - | 49 | { |
|
| - | 50 | if (sns_irTransmit_burst_mode) |
|
| - | 51 | { |
|
| - | 52 | sns_irTransmit_state = sns_irTransmit_STATE_STOP; |
|
| - | 53 | } |
|
| - | 54 | else |
|
| 47 | { |
55 | { |
| 48 | sns_irTransmit_state = sns_irTransmit_STATE_START_PAUSE; |
56 | sns_irTransmit_state = sns_irTransmit_STATE_START_PAUSE; |
| 49 | } |
57 | } |
| - | 58 | } |
|
| 50 | } |
59 | } |
| 51 | else if (sns_irTransmit_state == sns_irTransmit_STATE_START_PAUSE) |
60 | else if (sns_irTransmit_state == sns_irTransmit_STATE_START_PAUSE) |
| 52 | { |
61 | { |
| 53 | if (sns_irTransmit_repeatCount < sns_irTransmit_proto.repeats) |
62 | if (sns_irTransmit_repeatCount < sns_irTransmit_proto.repeats) |
| 54 | { |
63 | { |
| 55 | sns_irTransmit_repeatCount++; |
64 | sns_irTransmit_repeatCount++; |
| 56 | } |
65 | } |
| 57 | 66 | ||
| 58 | Timer_SetTimeout(sns_irTransmit_REPEAT_TIMER, sns_irTransmit_proto.timeout, TimerTypeOneShot, 0); |
67 | Timer_SetTimeout(sns_irTransmit_REPEAT_TIMER, sns_irTransmit_proto.timeout, TimerTypeOneShot, 0); |
| 59 | 68 | ||
| 60 | if (sns_irTransmit_proto.framecnt != 255) |
69 | if (sns_irTransmit_proto.framecnt != 255) |
| 61 | { |
70 | { |
| 62 | sns_irTransmit_proto.framecnt++; |
71 | sns_irTransmit_proto.framecnt++; |
| 63 | } |
72 | } |
| 64 | 73 | ||
| 65 | sns_irTransmit_state = sns_irTransmit_STATE_PAUSING; |
74 | sns_irTransmit_state = sns_irTransmit_STATE_PAUSING; |
| 66 | } |
75 | } |
| 67 | else if (sns_irTransmit_state == sns_irTransmit_STATE_PAUSING) |
76 | else if (sns_irTransmit_state == sns_irTransmit_STATE_PAUSING) |
| 68 | { |
77 | { |
| 69 | //när timeout har gått (timebase) så gå till sns_irTransmit_STATE_START_TRANSMIT |
78 | //när timeout har gått (timebase) så gå till sns_irTransmit_STATE_START_TRANSMIT |
| 70 | if (Timer_Expired(sns_irTransmit_REPEAT_TIMER)) |
79 | if (Timer_Expired(sns_irTransmit_REPEAT_TIMER)) |
| 71 | { |
80 | { |
| 72 | sns_irTransmit_state = sns_irTransmit_STATE_START_TRANSMIT; |
81 | sns_irTransmit_state = sns_irTransmit_STATE_START_TRANSMIT; |
| 73 | } |
82 | } |
| 74 | 83 | ||
| 75 | if (sns_irTransmit_stop == 1 && sns_irTransmit_repeatCount >= sns_irTransmit_proto.repeats) |
84 | if (sns_irTransmit_stop == 1 && sns_irTransmit_repeatCount >= sns_irTransmit_proto.repeats) |
| 76 | { |
85 | { |
| 77 | sns_irTransmit_state = sns_irTransmit_STATE_STOP; |
86 | sns_irTransmit_state = sns_irTransmit_STATE_STOP; |
| 78 | } |
87 | } |
| 79 | } |
88 | } |
| 80 | else if (sns_irTransmit_state == sns_irTransmit_STATE_STOP) |
89 | else if (sns_irTransmit_state == sns_irTransmit_STATE_STOP) |
| 81 | { |
90 | { |
| - | 91 | sns_irTransmit_burst_mode = 0; |
|
| 82 | sns_irTransmit_stop = 0; |
92 | sns_irTransmit_stop = 0; |
| 83 | sns_irTransmit_proto.timeout = 0; |
93 | sns_irTransmit_proto.timeout = 0; |
| 84 | sns_irTransmit_proto.framecnt = 0; |
94 | sns_irTransmit_proto.framecnt = 0; |
| 85 | sns_irTransmit_repeatCount = 0; |
95 | sns_irTransmit_repeatCount = 0; |
| 86 | sns_irTransmit_state = sns_irTransmit_STATE_IDLE; |
96 | sns_irTransmit_state = sns_irTransmit_STATE_IDLE; |
| 87 | } |
97 | } |
| 88 | } |
98 | } |
| 89 | 99 | ||
| 90 | void sns_irTransmit_HandleMessage(StdCan_Msg_t *rxMsg) |
100 | void sns_irTransmit_HandleMessage(StdCan_Msg_t *rxMsg) |
| 91 | { |
101 | { |
| 92 | if ( StdCan_Ret_class(rxMsg->Header) == CAN_MODULE_CLASS_SNS && |
102 | if ( StdCan_Ret_class(rxMsg->Header) == CAN_MODULE_CLASS_SNS && |
| 93 | StdCan_Ret_direction(rxMsg->Header) == DIRECTIONFLAG_TO_OWNER && |
103 | StdCan_Ret_direction(rxMsg->Header) == DIRECTIONFLAG_TO_OWNER && |
| Line 96... | Line 106... | ||
| 96 | { |
106 | { |
| 97 | switch (rxMsg->Header.Command) |
107 | switch (rxMsg->Header.Command) |
| 98 | { |
108 | { |
| 99 | case CAN_MODULE_CMD_PHYSICAL_IR: |
109 | case CAN_MODULE_CMD_PHYSICAL_IR: |
| 100 | 110 | ||
| - | 111 | if ( sns_irTransmit_state == sns_irTransmit_STATE_IDLE && |
|
| 101 |
|
112 | (rxMsg->Data[0] == CAN_MODULE_ENUM_PHYSICAL_IR_STATUS_PRESSED || |
| - | 113 | rxMsg->Data[0] == CAN_MODULE_ENUM_PHYSICAL_IR_STATUS_BURST)) |
|
| 102 | { |
114 | { |
| - | 115 | sns_irTransmit_burst_mode = (uint8_t)(rxMsg->Data[0] == CAN_MODULE_ENUM_PHYSICAL_IR_STATUS_BURST); |
|
| - | 116 | ||
| 103 | sns_irTransmit_proto.protocol = rxMsg->Data[1]; |
117 | sns_irTransmit_proto.protocol = rxMsg->Data[1]; |
| 104 | 118 | ||
| 105 | sns_irTransmit_proto.data = rxMsg->Data[2]; |
119 | sns_irTransmit_proto.data = rxMsg->Data[2]; |
| 106 | sns_irTransmit_proto.data = sns_irTransmit_proto.data<<8; |
120 | sns_irTransmit_proto.data = sns_irTransmit_proto.data<<8; |
| 107 | sns_irTransmit_proto.data |= rxMsg->Data[3]; |
121 | sns_irTransmit_proto.data |= rxMsg->Data[3]; |