diff -r 6787754b251b -r b6572d0336c3 doc/doxygen/html/nmtSlave_8c-source.html --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/doc/doxygen/html/nmtSlave_8c-source.html Mon Jun 04 17:59:50 2007 +0200 @@ -0,0 +1,112 @@ + +
+00001 /* +00002 This file is part of CanFestival, a library implementing CanOpen Stack. +00003 +00004 Copyright (C): Edouard TISSERANT and Francis DUPIN +00005 +00006 See COPYING file for copyrights details. +00007 +00008 This library is free software; you can redistribute it and/or +00009 modify it under the terms of the GNU Lesser General Public +00010 License as published by the Free Software Foundation; either +00011 version 2.1 of the License, or (at your option) any later version. +00012 +00013 This library is distributed in the hope that it will be useful, +00014 but WITHOUT ANY WARRANTY; without even the implied warranty of +00015 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +00016 Lesser General Public License for more details. +00017 +00018 You should have received a copy of the GNU Lesser General Public +00019 License along with this library; if not, write to the Free Software +00020 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +00021 */ +00022 +00023 #include "nmtSlave.h" +00024 #include "states.h" +00025 #include "canfestival.h" +00026 +00027 /*******************************************************************)*********/ +00028 /* put the slave in the state wanted by the master */ +00029 void proceedNMTstateChange(CO_Data* d, Message *m) +00030 { +00031 if( d->nodeState == Pre_operational || +00032 d->nodeState == Operational || +00033 d->nodeState == Stopped ) { +00034 +00035 MSG_WAR(0x3400, "NMT received. for node : ", (*m).data[1]); +00036 +00037 /* Check if this NMT-message is for this node */ +00038 /* byte 1 = 0 : all the nodes are concerned (broadcast) */ +00039 +00040 if( ( (*m).data[1] == 0 ) || ( (*m).data[1] == *d->bDeviceNodeId ) ){ +00041 +00042 switch( (*m).data[0]){ /* command specifier (cs) */ +00043 case NMT_Start_Node: +00044 if ( (d->nodeState == Pre_operational) || (d->nodeState == Stopped) ) +00045 setState(d,Operational); +00046 break; +00047 +00048 case NMT_Stop_Node: +00049 if ( d->nodeState == Pre_operational || +00050 d->nodeState == Operational ) +00051 setState(d,Stopped); +00052 break; +00053 +00054 case NMT_Enter_PreOperational: +00055 if ( d->nodeState == Operational || +00056 d->nodeState == Stopped ) +00057 setState(d,Pre_operational); +00058 break; +00059 +00060 case NMT_Reset_Node: +00061 setState(d,Initialisation); +00062 break; +00063 +00064 case NMT_Reset_Comunication: +00065 setState(d,Initialisation); +00066 break; +00067 +00068 }/* end switch */ +00069 +00070 }/* end if( ( (*m).data[1] == 0 ) || ( (*m).data[1] == bDeviceNodeId ) ) */ +00071 } +00072 } +00073 +00074 +00075 /*****************************************************************************/ +00076 UNS8 slaveSendBootUp(CO_Data* d) +00077 { +00078 Message m; +00079 +00080 MSG_WAR(0x3407, "Send a Boot-Up msg ", 0); +00081 +00082 /* message configuration */ +00083 m.cob_id.w = NODE_GUARD << 7 | *d->bDeviceNodeId; +00084 m.rtr = NOT_A_REQUEST; +00085 m.len = 1; +00086 m.data[0] = 0x00; +00087 +00088 return canSend(d->canHandle,&m); +00089 } +00090 +