diff -r 6efc85c5493e -r 1c1e3599d66a doc/doxygen/html/dcf_8c-source.html --- a/doc/doxygen/html/dcf_8c-source.html Mon Feb 11 11:00:12 2008 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,141 +0,0 @@ - -
-00001 /* -00002 This file is part of CanFestival, a library implementing CanOpen -00003 Stack. -00004 -00005 Copyright (C): Edouard TISSERANT and Francis DUPIN -00006 -00007 See COPYING file for copyrights details. -00008 -00009 This library is free software; you can redistribute it and/or -00010 modify it under the terms of the GNU Lesser General Public -00011 License as published by the Free Software Foundation; either -00012 version 2.1 of the License, or (at your option) any later version. -00013 -00014 This library is distributed in the hope that it will be useful, -00015 but WITHOUT ANY WARRANTY; without even the implied warranty of -00016 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -00017 Lesser General Public License for more details. -00018 -00019 You should have received a copy of the GNU Lesser General Public -00020 License along with this library; if not, write to the Free Software -00021 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 -00022 USA -00023 */ -00024 -00025 -00037 #include "objacces.h" -00038 #include "sdo.h" -00039 #include "dcf.h" -00040 #include "sysdep.h" -00041 -00042 extern UNS8 _writeNetworkDict (CO_Data* d, UNS8 nodeId, UNS16 index, -00043 UNS8 subIndex, UNS8 count, UNS8 dataType, void *data, SDOCallback_t Callback, UNS8 endianize); -00044 -00045 const indextable *ptrTable; -00046 -00053 static void CheckSDOAndContinue(CO_Data* d, UNS8 nodeId) -00054 { -00055 UNS32 abortCode; -00056 -00057 if(getWriteResultNetworkDict (d, nodeId, &abortCode) != SDO_FINISHED) -00058 { -00059 MSG_ERR(0x1A01, "SDO error in consise DCF", abortCode); -00060 MSG_WAR(0x2A02, "server node : ", nodeId); -00061 } -00062 -00063 closeSDOtransfer(d, nodeId, SDO_CLIENT); -00064 decompo_dcf(d,nodeId); -00065 } -00066 -00075 UNS32 decompo_dcf(CO_Data* d,UNS8 nodeId) -00076 { -00077 UNS32 errorCode; -00078 UNS16 target_Index; -00079 UNS8 target_Subindex; -00080 UNS32 target_Size; -00081 UNS32 res; -00082 ODCallback_t *Callback; -00083 -00084 ptrTable = (*d->scanIndexOD)(0x1F22, &errorCode, &Callback); -00085 if (errorCode != OD_SUCCESSFUL) -00086 { -00087 return errorCode; -00088 } -00089 -00090 /* Loop on all Nodes supported in DCF subindexes*/ -00091 while (nodeId < ptrTable->bSubCount){ -00092 UNS32 nb_targets; -00093 -00094 UNS8 szData = ptrTable->pSubindex[nodeId].size; -00095 UNS8* dcfend; -00096 -00097 { -00098 UNS8* dcf = *((UNS8**)ptrTable->pSubindex[nodeId].pObject); -00099 dcfend = dcf + szData; -00100 if (!d->dcf_cursor){ -00101 d->dcf_cursor = (UNS8*)dcf + 4; -00102 d->dcf_count_targets = 0; -00103 } -00104 nb_targets = UNS32_LE(*((UNS32*)dcf)); -00105 } -00106 -00107 /* condition on consise DCF string for NodeID, if big enough */ -00108 if((UNS8*)d->dcf_cursor + 7 < (UNS8*)dcfend && d->dcf_count_targets < nb_targets) -00109 { -00110 /* pointer to the DCF string for NodeID */ -00111 target_Index = UNS16_LE(*((UNS16*)(d->dcf_cursor))); d->dcf_cursor += 2; -00112 target_Subindex = *((UNS8*)(((UNS8*)d->dcf_cursor)++)); -00113 target_Size = UNS32_LE(*((UNS32*)(d->dcf_cursor))); d->dcf_cursor += 4; -00114 -00115 /* printf("Master : ConfigureSlaveNode %2.2x (Concise -00116 DCF)\n",nodeId);*/ -00117 res = _writeNetworkDict(d, /* CO_Data* d*/ -00118 nodeId, /* UNS8 nodeId*/ -00119 target_Index, /* UNS16 index*/ -00120 target_Subindex, /* UNS8 subindex*/ -00121 target_Size, /* UNS8 count*/ -00122 0, /* UNS8 dataType*/ -00123 d->dcf_cursor,/* void *data*/ -00124 CheckSDOAndContinue,/* SDOCallback_t -00125 Callback*/ -00126 0); /* no endianize*/ -00127 /* Push d->dcf_cursor to the end of data*/ -00128 -00129 d->dcf_cursor += target_Size; -00130 d->dcf_count_targets++; -00131 -00132 return ; -00133 } -00134 nodeId++; -00135 d->dcf_cursor = NULL; -00136 } -00137 /* Switch Master to preOperational state */ -00138 (*d->preOperational)(); -00139 -00140 } -