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: #ifndef __SYNC_h__ etisserant@0: #define __SYNC_h__ etisserant@0: etisserant@0: void startSYNC(CO_Data* d); etisserant@0: etisserant@0: void stopSYNC(CO_Data* d); etisserant@0: etisserant@0: typedef void (*post_sync_t)(void); etisserant@0: etisserant@0: typedef void (*post_TPDO_t)(void); etisserant@0: etisserant@0: /** transmit a SYNC message on the bus number bus_id etisserant@0: * bus_id is hardware dependant etisserant@0: * return canSend(bus_id,&m) etisserant@0: */ etisserant@0: UNS8 sendSYNC (CO_Data* d, UNS32 cob_id); etisserant@0: etisserant@0: /** This function is called when the node is receiving a SYNC etisserant@0: * message (cob-id = 0x80). etisserant@0: * What does the function : etisserant@0: * check if the node is in OERATIONAL mode. (other mode : return 0 but does nothing). etisserant@0: * Get the SYNC cobId by reading the dictionary index 1005. (Return -1 if it does not correspond etisserant@0: * to the cobId received). etisserant@0: * Scan the dictionary from index 0x1800 to the last PDO defined (dict_cstes.max_count_of_PDO_transmit) etisserant@0: * for each PDO whose transmission type is on synchro (transmission type < 241) and if the msg must etisserant@0: * be send at this SYNC. read the COBID. Verify that the nodeId inside the etisserant@0: * nodeId correspond to bDeviceNodeId. (Assume that the cobId of a PDO Transmit is made etisserant@0: * with the node id of the node who transmit), get the mapping, launch PDOmGR to send the PDO etisserant@0: * *m is a pointer to the message received etisserant@0: * bus_id is hardware dependant etisserant@0: * return 0 if OK, 0xFF if error etisserant@0: */ etisserant@0: UNS8 proceedSYNC (CO_Data* d, Message * m); etisserant@0: etisserant@0: #endif