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