]> rtime.felk.cvut.cz Git - CanFestival-3.git/commitdiff
Solved a small bug in emcy.c (errRegMask was always '1' in EMCY_setError.
authorluis <luis>
Mon, 1 Oct 2007 12:42:56 +0000 (12:42 +0000)
committerluis <luis>
Mon, 1 Oct 2007 12:42:56 +0000 (12:42 +0000)
EMCY_setError has a new parameter, addInfo, a 16-bit value that will be copied to 16 most significat bits in 1003h (but it is not sent in EMCY message).

examples/TestMasterSlave/Slave.c
include/emcy.h
src/emcy.c

index cec97a144f9c5f8d426f8a60f8eeba5894d27555..c8dcd40cfb34862888adae424ec4821543f65790 100644 (file)
@@ -90,7 +90,7 @@ void TestSlave_post_TPDO()
        /* send an error and recover inmediately every 12 cycles */
        if(SlaveMap13 % 12 == 0)
        {
-               EMCY_setError(&TestSlave_Data, 0x4200, 0x08);
+               EMCY_setError(&TestSlave_Data, 0x4200, 0x08, 0x0000);
                EMCY_errorRecovered(&TestSlave_Data, 0x4200);
        }
 }
index f3dacf2c1614b924f749d1eb0818c0bd597c4b3f..a6eb9ded23d3531ab0370c213d870bdf779ded8b 100644 (file)
@@ -61,7 +61,7 @@ void _post_emcy(UNS8 nodeID, UNS16 errCode, UNS8 errReg);
 
 /** Sets a new error with code errCode. Also sets corresponding bits in Error register (1001h)
  */
-UNS8 EMCY_setError(CO_Data* d, UNS16 errCode, UNS8 errRegMask);
+UNS8 EMCY_setError(CO_Data* d, UNS16 errCode, UNS8 errRegMask, UNS16 addInfo);
 
 /** Indicates it has recovered from error errCode. Also clears corresponding bits in Error register (1001h)
  */
index 24b18a1ca045f2c38c567e3c7e934ed88a45d4b1..369f91d1448a2c9796483cc829c938d5bfa07b63 100644 (file)
@@ -123,7 +123,7 @@ UNS8 sendEMCY(CO_Data* d, UNS32 cob_id, UNS16 errCode, UNS8 errRegister)
  ** @param errRegister Bits of Error register (1001h) to be set.
  ** @return 1 if error, 0 if successful
  */
-UNS8 EMCY_setError(CO_Data* d, UNS16 errCode, UNS8 errRegMask)
+UNS8 EMCY_setError(CO_Data* d, UNS16 errCode, UNS8 errRegMask, UNS16 addInfo)
 {
        UNS8 index;
        UNS8 errRegister_tmp;
@@ -151,7 +151,7 @@ UNS8 EMCY_setError(CO_Data* d, UNS16 errCode, UNS8 errRegMask)
        }
        
        d->error_data[index].errCode = errCode;
-       d->error_data[index].errRegMask = 1;
+       d->error_data[index].errRegMask = errRegMask;
        d->error_data[index].active = 1;
        
        /* set the new state in the error state machine */
@@ -165,7 +165,7 @@ UNS8 EMCY_setError(CO_Data* d, UNS16 errCode, UNS8 errRegMask)
        /* set Pre-defined Error Field (1003h) */
        for (index = d->error_history_size - 1; index > 0; --index)
                *(d->error_first_element + index) = *(d->error_first_element + index - 1);
-       *(d->error_first_element) = (UNS32)errCode;
+       *(d->error_first_element) = errCode | ((UNS32)addInfo << 16);
        if(*d->error_number < d->error_history_size) ++(*d->error_number);
        
        /* send EMCY message */