Subversion Repositories HomeAutomation

Rev

Rev 1978 | Rev 2045 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | SVN | RSS feed

Rev 1978 Rev 2040
Line 519... Line 519...
519
    StdCan_Set_class(irTxMsg.Header, CAN_MODULE_CLASS_SNS);
519
    StdCan_Set_class(irTxMsg.Header, CAN_MODULE_CLASS_SNS);
520
    StdCan_Set_direction(irTxMsg.Header, DIRECTIONFLAG_FROM_OWNER);
520
    StdCan_Set_direction(irTxMsg.Header, DIRECTIONFLAG_FROM_OWNER);
521
    irTxMsg.Header.ModuleType = CAN_MODULE_TYPE_SNS_IRTRANSCEIVE;
521
    irTxMsg.Header.ModuleType = CAN_MODULE_TYPE_SNS_IRTRANSCEIVE;
522
    irTxMsg.Header.ModuleId = sns_irTransceive_ID;
522
    irTxMsg.Header.ModuleId = sns_irTransceive_ID;
523
    irTxMsg.Header.Command = CAN_MODULE_CMD_PHYSICAL_IR;
523
    irTxMsg.Header.Command = CAN_MODULE_CMD_PHYSICAL_IR;
524
    irTxMsg.Length = 6;
524
    irTxMsg.Length = 8;
525
 
525
 
526
    for (uint8_t i = 0; i < IR_SUPPORTED_NUM_CHANNELS; i++)
526
    for (uint8_t i = 0; i < IR_SUPPORTED_NUM_CHANNELS; i++)
527
    {
527
    {
528
#if IR_RX_ENABLE==1
528
#if IR_RX_ENABLE==1
529
        irRxChannel[i].state = sns_irTransceive_STATE_DISABLED;
529
        irRxChannel[i].state = sns_irTransceive_STATE_DISABLED;
Line 657... Line 657...
657
            if (irRxChannel[channel].proto.protocol != IR_PROTO_UNKNOWN) {
657
            if (irRxChannel[channel].proto.protocol != IR_PROTO_UNKNOWN) {
658
                /* Send button release command on CAN. */
658
                /* Send button release command on CAN. */
659
                irTxMsg.Data[0] = 0xf&CAN_MODULE_ENUM_PHYSICAL_IR_STATUS_RELEASED;
659
                irTxMsg.Data[0] = 0xf&CAN_MODULE_ENUM_PHYSICAL_IR_STATUS_RELEASED;
660
                irTxMsg.Data[0] |= channel<<4;
660
                irTxMsg.Data[0] |= channel<<4;
661
                irTxMsg.Data[1] = irRxChannel[channel].proto.protocol;
661
                irTxMsg.Data[1] = irRxChannel[channel].proto.protocol;
-
 
662
                irTxMsg.Data[2] = (irRxChannel[channel].proto.data>>40)&0xff;
-
 
663
                irTxMsg.Data[3] = (irRxChannel[channel].proto.data>>32)&0xff;
662
                irTxMsg.Data[2] = (irRxChannel[channel].proto.data>>24)&0xff;
664
                irTxMsg.Data[4] = (irRxChannel[channel].proto.data>>24)&0xff;
663
                irTxMsg.Data[3] = (irRxChannel[channel].proto.data>>16)&0xff;
665
                irTxMsg.Data[5] = (irRxChannel[channel].proto.data>>16)&0xff;
664
                irTxMsg.Data[4] = (irRxChannel[channel].proto.data>>8)&0xff;
666
                irTxMsg.Data[6] = (irRxChannel[channel].proto.data>>8)&0xff;
665
                irTxMsg.Data[5] = irRxChannel[channel].proto.data&0xff;
667
                irTxMsg.Data[7] = irRxChannel[channel].proto.data&0xff;
666
 
668
 
667
                StdCan_Put(&irTxMsg);
669
                StdCan_Put(&irTxMsg);
668
            }
670
            }
669
            irRxChannel[channel].state = sns_irTransceive_STATE_START_RECEIVE;
671
            irRxChannel[channel].state = sns_irTransceive_STATE_START_RECEIVE;
670
            break;
672
            break;
Line 692... Line 694...
692
                uint8_t res2 = parseProtocol(irRxChannel[channel].rxbuf, irRxChannel[channel].rxlen, &irRxChannel[channel].proto);
694
                uint8_t res2 = parseProtocol(irRxChannel[channel].rxbuf, irRxChannel[channel].rxlen, &irRxChannel[channel].proto);
693
                if (res2 == IR_OK && irRxChannel[channel].proto.protocol != IR_PROTO_UNKNOWN) {
695
                if (res2 == IR_OK && irRxChannel[channel].proto.protocol != IR_PROTO_UNKNOWN) {
694
                    irTxMsg.Data[0] = 0xf&CAN_MODULE_ENUM_PHYSICAL_IR_STATUS_PRESSED;
696
                    irTxMsg.Data[0] = 0xf&CAN_MODULE_ENUM_PHYSICAL_IR_STATUS_PRESSED;
695
                    irTxMsg.Data[0] |= channel<<4;
697
                    irTxMsg.Data[0] |= channel<<4;
696
                    irTxMsg.Data[1] = irRxChannel[channel].proto.protocol;
698
                    irTxMsg.Data[1] = irRxChannel[channel].proto.protocol;
-
 
699
                    irTxMsg.Data[2] = (irRxChannel[channel].proto.data>>40)&0xff;
-
 
700
                    irTxMsg.Data[3] = (irRxChannel[channel].proto.data>>32)&0xff;
697
                    irTxMsg.Data[2] = (irRxChannel[channel].proto.data>>24)&0xff;
701
                    irTxMsg.Data[4] = (irRxChannel[channel].proto.data>>24)&0xff;
698
                    irTxMsg.Data[3] = (irRxChannel[channel].proto.data>>16)&0xff;
702
                    irTxMsg.Data[5] = (irRxChannel[channel].proto.data>>16)&0xff;
699
                    irTxMsg.Data[4] = (irRxChannel[channel].proto.data>>8)&0xff;
703
                    irTxMsg.Data[6] = (irRxChannel[channel].proto.data>>8)&0xff;
700
                    irTxMsg.Data[5] = irRxChannel[channel].proto.data&0xff;
704
                    irTxMsg.Data[7] = irRxChannel[channel].proto.data&0xff;
701
 
705
 
702
                    StdCan_Put(&irTxMsg);
706
                    StdCan_Put(&irTxMsg);
703
                }
707
                }
704
                else if (irRxChannel[channel].proto.protocol == IR_PROTO_UNKNOWN)
708
                else if (irRxChannel[channel].proto.protocol == IR_PROTO_UNKNOWN)
705
                {
709
                {
Line 1014... Line 1018...
1014
                irTxChannel[channel].proto.data |= rxMsg->Data[3];
1018
                irTxChannel[channel].proto.data |= rxMsg->Data[3];
1015
                irTxChannel[channel].proto.data = irTxChannel[channel].proto.data<<8;
1019
                irTxChannel[channel].proto.data = irTxChannel[channel].proto.data<<8;
1016
                irTxChannel[channel].proto.data |= rxMsg->Data[4];
1020
                irTxChannel[channel].proto.data |= rxMsg->Data[4];
1017
                irTxChannel[channel].proto.data = irTxChannel[channel].proto.data<<8;
1021
                irTxChannel[channel].proto.data = irTxChannel[channel].proto.data<<8;
1018
                irTxChannel[channel].proto.data |= rxMsg->Data[5];
1022
                irTxChannel[channel].proto.data |= rxMsg->Data[5];
-
 
1023
                irTxChannel[channel].proto.data = irTxChannel[channel].proto.data<<8;
-
 
1024
                irTxChannel[channel].proto.data |= rxMsg->Data[6];
-
 
1025
                irTxChannel[channel].proto.data = irTxChannel[channel].proto.data<<8;
-
 
1026
                irTxChannel[channel].proto.data |= rxMsg->Data[7];
1019
 
1027
 
1020
                irTxChannel[channel].state = sns_irTransceive_STATE_START_TRANSMIT;
1028
                irTxChannel[channel].state = sns_irTransceive_STATE_START_TRANSMIT;
1021
            }
1029
            }
1022
        }
1030
        }
1023
        else if (buttonStatus == CAN_MODULE_ENUM_PHYSICAL_IR_STATUS_RELEASED)
1031
        else if (buttonStatus == CAN_MODULE_ENUM_PHYSICAL_IR_STATUS_RELEASED)