diff -r 003cc3c63855 -r f49e5a6b7804 doc/doxygen/html/dcf_8c-source.html --- a/doc/doxygen/html/dcf_8c-source.html Fri Jun 08 09:02:43 2007 +0200 +++ b/doc/doxygen/html/dcf_8c-source.html Fri Jun 08 09:23:56 2007 +0200 @@ -1,6 +1,6 @@ -CanFestival: /home/epimerde/documents/tc11/CanFestival-3/src/dcf.c Source File +CanFestival: src/dcf.c Source File @@ -8,14 +8,18 @@
-

/home/epimerde/documents/tc11/CanFestival-3/src/dcf.c

Go to the documentation of this file.
00001 /*
+
+

dcf.c

Go to the documentation of this file.
00001 /*
 00002   This file is part of CanFestival, a library implementing CanOpen
 00003   Stack.
 00004 
@@ -40,91 +44,97 @@
 00023 */
 00024 
 00025 
-00035 #include "objacces.h"
-00036 #include "sdo.h"
-00037 #include "dcf.h"
-00038 #include "sysdep.h"
-00039 
-00040 
-00054 extern UNS8 _writeNetworkDict (CO_Data* d, UNS8 nodeId, UNS16 index,
-00055                                UNS8 subIndex, UNS8 count, UNS8 dataType, void *data, SDOCallback_t Callback, UNS8 endianize);
+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 const indextable *ptrTable;
-00058 
-00065 static void CheckSDOAndContinue(CO_Data* d, UNS8 nodeId)
-00066 {
-00067   UNS32 abortCode;
-00068 
-00069   if(getWriteResultNetworkDict (d, nodeId, &abortCode) != SDO_FINISHED)
-00070     {
-00071       MSG_ERR(0x1A01, "SDO error in consise DCF", abortCode);
-00072       MSG_WAR(0x2A02, "server node : ", nodeId);
-00073     }
-00074 
-00075   closeSDOtransfer(d, nodeId, SDO_CLIENT);
-00076   decompo_dcf(d,nodeId);
-00077 }
-00078 
-00087 UNS32 decompo_dcf(CO_Data* d,UNS8 nodeId)
-00088 {
-00089   UNS32 errorCode;
-00090   UNS16 target_Index;
-00091   UNS8 target_Subindex;
-00092   UNS32 target_Size;
-00093   UNS32 res;
-00094   ODCallback_t *Callback;
-00095 
-00096   ptrTable = (*d->scanIndexOD)(0x1F22, &errorCode, &Callback);
-00097   if (errorCode != OD_SUCCESSFUL)
-00098     {
-00099       return errorCode;
-00100     }
-00101 
-00103   while (nodeId < ptrTable->bSubCount){
-00104     UNS32 nb_targets;
-00105 
-00106     UNS8 szData = ptrTable->pSubindex[nodeId].size;
-00107     UNS8* dcfend;
-00108 
-00109     {
-00110       UNS8* dcf = *((UNS8**)ptrTable->pSubindex[nodeId].pObject);
-00111       dcfend = dcf + szData;
-00112       if (!d->dcf_cursor){
-00113         d->dcf_cursor = (UNS8*)dcf + 4;
-00114         d->dcf_count_targets = 0;
-00115       }
-00116       nb_targets = UNS32_LE(*((UNS32*)dcf));
-00117     }
-00118 
-00120     if((UNS8*)d->dcf_cursor + 7 < (UNS8*)dcfend && d->dcf_count_targets < nb_targets)
-00121       {
-00123         target_Index = UNS16_LE(*((UNS16*)(d->dcf_cursor))); d->dcf_cursor += 2;
-00124         target_Subindex = *((UNS8*)(((UNS8*)d->dcf_cursor)++));
-00125         target_Size = UNS32_LE(*((UNS32*)(d->dcf_cursor))); d->dcf_cursor += 4;
-00126 
-00127         /* printf("Master : ConfigureSlaveNode %2.2x (Concise
-00128           DCF)\n",nodeId);*/
-00129         res = _writeNetworkDict(d, 
-00130                                 nodeId, 
-00131                                 target_Index, 
-00132                                 target_Subindex, 
-00133                                 target_Size, 
-00134                                 0, 
-00135                                 d->dcf_cursor,
-00136                                 CheckSDOAndContinue,
-00138                                 0); 
-00141         d->dcf_cursor += target_Size;
-00142         d->dcf_count_targets++;
-00143 
-00144         return ;
-00145       }
-00146     nodeId++;
-00147     d->dcf_cursor = NULL;
-00148   }
-00150   (*d->preOperational)();
-00151 
-00152 }
-

Generated on Tue Jun 5 18:32:05 2007 for CanFestival by  +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 } +

Generated on Fri Jun 8 08:51:39 2007 for CanFestival by  doxygen 1.5.1