etisserant@0: /* etisserant@0: This file is part of CanFestival, a library implementing CanOpen Stack. etisserant@0: etisserant@0: Copyright (C): Edouard TISSERANT and Francis DUPIN etisserant@0: etisserant@0: See COPYING file for copyrights details. etisserant@0: etisserant@0: This library is free software; you can redistribute it and/or etisserant@0: modify it under the terms of the GNU Lesser General Public etisserant@0: License as published by the Free Software Foundation; either etisserant@0: version 2.1 of the License, or (at your option) any later version. etisserant@0: etisserant@0: This library is distributed in the hope that it will be useful, etisserant@0: but WITHOUT ANY WARRANTY; without even the implied warranty of etisserant@0: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU etisserant@0: Lesser General Public License for more details. etisserant@0: etisserant@0: You should have received a copy of the GNU Lesser General Public etisserant@0: License along with this library; if not, write to the Free Software etisserant@0: Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA etisserant@0: */ etisserant@0: etisserant@0: #include "Slave.h" etisserant@0: #include "Master.h" etisserant@0: #include "TestMasterSlave.h" etisserant@0: etisserant@343: extern s_BOARD SlaveBoard; etisserant@0: /*****************************************************************************/ etisserant@378: void TestSlave_heartbeatError(CO_Data* d, UNS8 heartbeatID) etisserant@0: { etisserant@0: eprintf("TestSlave_heartbeatError %d\n", heartbeatID); etisserant@0: } etisserant@0: etisserant@378: void TestSlave_initialisation(CO_Data* d) etisserant@0: { etisserant@0: eprintf("TestSlave_initialisation\n"); etisserant@0: } etisserant@0: etisserant@378: void TestSlave_preOperational(CO_Data* d) etisserant@0: { etisserant@0: eprintf("TestSlave_preOperational\n"); etisserant@0: } etisserant@0: etisserant@378: void TestSlave_operational(CO_Data* d) etisserant@0: { etisserant@0: eprintf("TestSlave_operational\n"); etisserant@0: } etisserant@0: etisserant@378: void TestSlave_stopped(CO_Data* d) etisserant@0: { etisserant@0: eprintf("TestSlave_stopped\n"); etisserant@0: } etisserant@0: etisserant@378: void TestSlave_post_sync(CO_Data* d) etisserant@0: { etisserant@0: eprintf("TestSlave_post_sync\n"); greg@201: greg@201: SlaveMap1=1; greg@201: SlaveMap2=1; greg@201: SlaveMap3=0; greg@201: SlaveMap4=0; greg@201: SlaveMap5=1; greg@201: SlaveMap6=0; greg@201: SlaveMap7=1; greg@201: SlaveMap8=0; greg@201: SlaveMap9=16; greg@201: SlaveMap10 = 0xff00ff00; greg@201: SlaveMap11 = 0xabcd; etisserant@236: SlaveMap12 += SlaveMap12 > 0x80 ? 0 : 1; etisserant@236: eprintf("Slave: %d %d %d %d %d %d %d %d %d %x %x %d %d \n", etisserant@236: SlaveMap1, etisserant@236: SlaveMap2, etisserant@236: SlaveMap3, etisserant@236: SlaveMap4, etisserant@236: SlaveMap5, etisserant@236: SlaveMap6, etisserant@236: SlaveMap7, etisserant@236: SlaveMap8, etisserant@236: SlaveMap9, etisserant@236: SlaveMap10, etisserant@236: SlaveMap11, etisserant@236: SlaveMap12, etisserant@236: SlaveMap13); etisserant@0: } etisserant@0: etisserant@378: void TestSlave_post_TPDO(CO_Data* d) etisserant@0: { etisserant@236: SlaveMap13 += 1; etisserant@0: eprintf("TestSlave_post_TPDO\n"); luis@284: luis@284: /* send an error and recover inmediately every 12 cycles */ luis@284: if(SlaveMap13 % 12 == 0) luis@284: { luis@296: EMCY_setError(&TestSlave_Data, 0x4200, 0x08, 0x0000); luis@284: EMCY_errorRecovered(&TestSlave_Data, 0x4200); luis@284: } etisserant@0: } etisserant@161: etisserant@378: void TestSlave_storeODSubIndex(CO_Data* d, UNS16 wIndex, UNS8 bSubindex) etisserant@161: { etisserant@161: /*TODO : etisserant@161: * - call getODEntry for index and subindex, etisserant@161: * - save content to file, database, flash, nvram, ... etisserant@161: * etisserant@161: * To ease flash organisation, index of variable to store etisserant@161: * can be established by scanning d->objdict[d->ObjdictSize] etisserant@161: * for variables to store. etisserant@161: * etisserant@161: * */ etisserant@161: eprintf("TestSlave_storeODSubIndex : %4.4x %2.2x\n", wIndex, bSubindex); etisserant@161: } luis@284: etisserant@378: void TestSlave_post_emcy(CO_Data* d, UNS8 nodeID, UNS16 errCode, UNS8 errReg) luis@284: { luis@284: eprintf("Slave received EMCY message. Node: %2.2x ErrorCode: %4.4x ErrorRegister: %2.2x\n", nodeID, errCode, errReg); luis@284: }