Subversion Repositories HomeAutomation

Rev

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

Rev 486 Rev 493
Line 42... Line 42...
42
#define STATUS_SEND_PERIOD  10000UL /* milliseconds */
42
#define STATUS_SEND_PERIOD  10000UL /* milliseconds */
43
#define FAILSAFE_SEND_PERIOD    10000UL /* milliseconds */
43
#define FAILSAFE_SEND_PERIOD    10000UL /* milliseconds */
44
#define BOUNCE_TIME         10 /* milliseconds */
44
#define BOUNCE_TIME         10 /* milliseconds */
45
#define BUTTON1             1
45
#define BUTTON1             1
46
#define BUTTON2             2
46
#define BUTTON2             2
-
 
47
 
-
 
48
#define THISRELAYID         NODE_ID     /* application software should not depend on the id of the physical node
-
 
49
                                            but for now lets do it like this */
47
 
50
 
48
#define APP_TYPE    CAN_APPTYPES_RELAY
51
#define APP_TYPE    CAN_APPTYPES_RELAY
49
#define APP_VERSION 0x0001
52
#define APP_VERSION 0x0001
50
 
53
 
51
/*-------------------------------------------------------------------------
54
/*-------------------------------------------------------------------------
Line 122... Line 125...
122
            sendStatus();
125
            sendStatus();
123
        }
126
        }
124
 
127
 
125
        if (rxMsgFull) {
128
        if (rxMsgFull) {
126
            uint8_t acttype;
129
            uint8_t acttype;
127
            uint16_t servoid;
130
            uint16_t relayid;
128
       
131
       
129
            if ( ((rxMsg.Id & CAN_MASK_CLASS)>>CAN_SHIFT_CLASS) == CAN_ACT){
132
            if ( ((rxMsg.Id & CAN_MASK_CLASS)>>CAN_SHIFT_CLASS) == CAN_ACT){
130
                // Actuator package
133
                // Actuator package
131
                acttype =(uint8_t)((rxMsg.Id & CAN_MASK_ACT_FUNCC) >> CAN_SHIFT_ACT_FUNCC);
134
                acttype =(uint8_t)((rxMsg.Id & CAN_MASK_ACT_TYPE) >> CAN_SHIFT_ACT_TYPE);
132
                servoid = (uint16_t)((rxMsg.Id & CAN_MASK_ACT_NID) >> CAN_SHIFT_ACT_NID);
135
                relayid = (uint16_t)((rxMsg.Id & CAN_MASK_ACT_ID) >> CAN_SHIFT_ACT_ID);
133
               
136
               
134
                if ((acttype == ACT_FUNCC_RELAY) && (servoid == NODE_ID)) {
137
                if ((acttype == ACT_TYPE_RELAY) && (relayid == THISRELAYID)) {
135
                    // This is a message for this relay
138
                    // This is a message for this relay
136
                    if (rxMsg.Data.bytes[0] == RELAY_CMD_RESET) {
139
                    if (rxMsg.Data.bytes[0] == RELAY_CMD_RESET) {
137
                        // Return to normal operation
140
                        // Return to normal operation
138
                        failsafe_flag = 0;
141
                        failsafe_flag = 0;
139
                    }
142
                    }
Line 210... Line 213...
210
    uint32_t temperature;
213
    uint32_t temperature;
211
    Can_Message_t statusMsg;
214
    Can_Message_t statusMsg;
212
    statusMsg.RemoteFlag = 0;
215
    statusMsg.RemoteFlag = 0;
213
    statusMsg.ExtendedFlag = 1;
216
    statusMsg.ExtendedFlag = 1;
214
    statusMsg.DataLength = 4;
217
    statusMsg.DataLength = 4;
215
    statusMsg.Id = ( CAN_SNS<<CAN_SHIFT_CLASS )|( SNS_FUNCC_RELAY_STATUS<<CAN_SHIFT_ACT_FUNCC )|( NODE_ID<<CAN_SHIFT_SNS_SID );
218
    statusMsg.Id = ( CAN_SNS<<CAN_SHIFT_CLASS )|( SNS_TYPE_RELAY_STATUS<<CAN_SHIFT_ACT_TYPE )|( NODE_ID<<CAN_SHIFT_SNS_SID );
216
   
219
   
217
    temperature = getTC1047temperature();
220
    temperature = getTC1047temperature();
218
    if( (int32_t)temperature >= FAILSAFE_TRESHOLD && !failsafe_flag ){
221
    if( (int32_t)temperature >= FAILSAFE_TRESHOLD && !failsafe_flag ){
219
        // Goto failsafe mode
222
        // Goto failsafe mode
220
        relayFailsafe();
223
        relayFailsafe();