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: #ifdef USE_XENO etisserant@154: //#define eprintf(...) if(0){} etisserant@0: #define eprintf(...) greg@454: #elif defined USE_RTAI greg@454: #define eprintf(...) etisserant@0: #else etisserant@0: #define eprintf(...) printf (__VA_ARGS__) etisserant@0: #endif etisserant@0: etisserant@145: #include "canfestival.h" etisserant@145: etisserant@0: /* etisserant@0: #define CAN_FIFO_LENGTH 100 etisserant@0: etisserant@0: #define DECLARE_A_CAN_FIFO \ etisserant@0: static Message FIFO[CAN_FIFO_LENGTH];\ etisserant@0: static int FIFO_First = 0;\ etisserant@0: static int FIFO_Last = 0;\ etisserant@0: \ etisserant@0: static void PutInFIFO(Message *m)\ etisserant@0: {\ etisserant@0: FIFO[FIFO_Last++] = *m;\ etisserant@0: FIFO_Last %= CAN_FIFO_LENGTH;\ etisserant@0: }\ etisserant@0: \ etisserant@0: static void GetFromFIFO(Message *m)\ etisserant@0: {\ etisserant@0: *m = FIFO[FIFO_First++];\ etisserant@0: FIFO_First %= CAN_FIFO_LENGTH;\ etisserant@0: }\ etisserant@0: \ etisserant@0: static void TransmitMessage(CO_Data* d, UNS32 id)\ etisserant@0: {\ etisserant@0: Message m;\ etisserant@0: GetFromFIFO(&m);\ etisserant@0: canDispatch(d, &m);\ etisserant@0: } etisserant@0: */