Rev 1821 | Rev 1824 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | SVN | RSS feed
| Rev 1821 | Rev 1822 | ||
|---|---|---|---|
| Line 109... | Line 109... | ||
| 109 | StdCan_Set_class(msg.Header, CAN_MODULE_CLASS_SNS); |
109 | StdCan_Set_class(msg.Header, CAN_MODULE_CLASS_SNS); |
| 110 | StdCan_Set_direction(msg.Header, DIRECTIONFLAG_FROM_OWNER); |
110 | StdCan_Set_direction(msg.Header, DIRECTIONFLAG_FROM_OWNER); |
| 111 | msg.Header.ModuleType = CAN_MODULE_TYPE_SNS_IRTRANSCEIVE; |
111 | msg.Header.ModuleType = CAN_MODULE_TYPE_SNS_IRTRANSCEIVE; |
| 112 | msg.Header.ModuleId = sns_irTransceive_ID; |
112 | msg.Header.ModuleId = sns_irTransceive_ID; |
| 113 | 113 | ||
| 114 | /* |
114 | /* Send timing command */ |
| 115 | msg.Length = 5; |
115 | msg.Length = 5; |
| 116 | msg.Header.Command = CAN_MODULE_CMD_IRTRANSCEIVE_IRPRONTOTIMING; |
116 | msg.Header.Command = CAN_MODULE_CMD_IRTRANSCEIVE_IRPRONTOTIMING; |
| 117 | uint32_t currentTime=Timer_GetTicks(); |
117 | uint32_t currentTime=Timer_GetTicks(); |
| 118 | if ((currentTime < sns_irTransceive_LastPronto+sns_irTransceive_MAXTIMING) && (sns_irTransceive_LastPronto != 0)) |
118 | if ((currentTime < sns_irTransceive_LastPronto+sns_irTransceive_MAXTIMING) && (sns_irTransceive_LastPronto != 0)) |
| 119 | { |
119 | { |
| Line 125... | Line 125... | ||
| 125 | while (StdCan_Put(&msg) != StdCan_Ret_OK) {} |
125 | while (StdCan_Put(&msg) != StdCan_Ret_OK) {} |
| 126 | _delay_ms(1); |
126 | _delay_ms(1); |
| 127 | } |
127 | } |
| 128 | sns_irTransceive_LastPronto=currentTime; |
128 | sns_irTransceive_LastPronto=currentTime; |
| 129 | 129 | ||
| - | 130 | /* Send pronto start */ |
|
| 130 | msg.Length = 8; |
131 | msg.Length = 8; |
| 131 | msg.Header.Command = CAN_MODULE_CMD_IRTRANSCEIVE_IRPRONTOSTART; |
132 | msg.Header.Command = CAN_MODULE_CMD_IRTRANSCEIVE_IRPRONTOSTART; |
| 132 | 133 | ||
| 133 | msg.Data[0] = ((channel<<4)|0x0); /* Channel and Prontoformat 0x000 */ |
134 | msg.Data[0] = ((channel<<4)|0x0); /* Channel and Prontoformat 0x000 */ |
| 134 | msg.Data[1] = 0x00; |
135 | msg.Data[1] = 0x00; |
| 135 | msg.Data[2] = 0x00; /* Freq divider */ |
136 | msg.Data[2] = 0x00; /* Freq divider */ |
| 136 | msg.Data[3] = modfreq; |
137 | msg.Data[3] = modfreq; |
| 137 | msg.Data[4] = 0x00; /* Once seq length, first byte always 0 */ |
138 | msg.Data[4] = 0x00; /* Once seq length, first byte always 0 */ |
| 138 | msg.Data[5] = |
139 | msg.Data[5] = len/2; |
| 139 | msg.Data[6] = 0x00; /* Repeat seq length, always 0 for ir receive */ |
140 | msg.Data[6] = 0x00; /* Repeat seq length, always 0 for ir receive */ |
| 140 | msg.Data[7] = 0x00; |
141 | msg.Data[7] = 0x00; |
| 141 | 142 | ||
| 142 | while (StdCan_Put(&msg) != StdCan_Ret_OK) {} |
143 | while (StdCan_Put(&msg) != StdCan_Ret_OK) {} |
| 143 | _delay_ms(1); |
144 | _delay_ms(1); |
| 144 | 145 | ||
| - | 146 | /* Send pronto data */ |
|
| 145 | uint16_t divider = (1000000ULL*modfreq/sns_irTransceive_BaseFrq); |
147 | uint16_t divider = (1000000ULL*modfreq/sns_irTransceive_BaseFrq); |
| 146 | msg.Header.Command = CAN_MODULE_CMD_IRTRANSCEIVE_IRPRONTODATA1; |
148 | msg.Header.Command = CAN_MODULE_CMD_IRTRANSCEIVE_IRPRONTODATA1; |
| 147 | /* Counter for buffer */ |
149 | /* Counter for buffer */ |
| 148 | uint8_t i = 0; |
150 | uint8_t i = 0; |
| 149 | /* Counter for filling can frame data */ |
151 | /* Counter for filling can frame data */ |