Subversion Repositories HomeAutomation

Rev

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
    /* TODO send timing command */
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] = 0x00; //len/2; /* not correct if any byte overflows */
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 */