etisserant@166: /* etisserant@166: This file is part of CanFestival, a library implementing CanOpen Stack. etisserant@166: etisserant@166: Copyright (C): Edouard TISSERANT and Francis DUPIN etisserant@166: etisserant@166: See COPYING file for copyrights details. etisserant@166: etisserant@166: This library is free software; you can redistribute it and/or etisserant@166: modify it under the terms of the GNU Lesser General Public etisserant@166: License as published by the Free Software Foundation; either etisserant@166: version 2.1 of the License, or (at your option) any later version. etisserant@166: etisserant@166: This library is distributed in the hope that it will be useful, etisserant@166: but WITHOUT ANY WARRANTY; without even the implied warranty of etisserant@166: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU etisserant@166: Lesser General Public License for more details. etisserant@166: etisserant@166: You should have received a copy of the GNU Lesser General Public etisserant@166: License along with this library; if not, write to the Free Software etisserant@166: Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA etisserant@166: */ etisserant@166: #ifdef USE_XENO etisserant@166: #define eprintf(...) etisserant@166: #else etisserant@166: #define eprintf(...) printf (__VA_ARGS__) etisserant@166: #endif etisserant@166: etisserant@166: #include "canfestival.h" etisserant@166: etisserant@166: /* etisserant@166: #define CAN_FIFO_LENGTH 100 etisserant@166: etisserant@166: #define DECLARE_A_CAN_FIFO \ etisserant@166: static Message FIFO[CAN_FIFO_LENGTH];\ etisserant@166: static int FIFO_First = 0;\ etisserant@166: static int FIFO_Last = 0;\ etisserant@166: \ etisserant@166: static void PutInFIFO(Message *m)\ etisserant@166: {\ etisserant@166: FIFO[FIFO_Last++] = *m;\ etisserant@166: FIFO_Last %= CAN_FIFO_LENGTH;\ etisserant@166: }\ etisserant@166: \ etisserant@166: static void GetFromFIFO(Message *m)\ etisserant@166: {\ etisserant@166: *m = FIFO[FIFO_First++];\ etisserant@166: FIFO_First %= CAN_FIFO_LENGTH;\ etisserant@166: }\ etisserant@166: \ etisserant@166: static void TransmitMessage(CO_Data* d, UNS32 id)\ etisserant@166: {\ etisserant@166: Message m;\ etisserant@166: GetFromFIFO(&m);\ etisserant@166: canDispatch(d, &m);\ etisserant@166: } etisserant@166: */