diff -r 55be5b85501c -r 44ce74232ccb src/dcf.c --- a/src/dcf.c Fri May 25 15:48:34 2007 +0200 +++ b/src/dcf.c Fri May 25 23:57:17 2007 +0200 @@ -25,6 +25,10 @@ #include "dcf.h" #include "sysdep.h" + +extern UNS8 _writeNetworkDict (CO_Data* d, UNS8 nodeId, UNS16 index, + UNS8 subIndex, UNS8 count, UNS8 dataType, void *data, SDOCallback_t Callback, UNS8 endianize); + const indextable *ptrTable; static void CheckSDOAndContinue(CO_Data* d, UNS8 nodeId) @@ -61,24 +65,24 @@ UNS32 nb_targets; UNS8 szData = ptrTable->pSubindex[nodeId].size; - void* dcfend; + UNS8* dcfend; { - void* dcf = *((void**)ptrTable->pSubindex[nodeId].pObject); + UNS8* dcf = *((UNS8**)ptrTable->pSubindex[nodeId].pObject); dcfend = dcf + szData; if (!d->dcf_cursor) { - d->dcf_cursor = dcf + 4; + d->dcf_cursor = (UNS8*)dcf + 4; d->dcf_count_targets = 0; } nb_targets = UNS32_LE(*((UNS32*)dcf)); } // condition on consise DCF string for NodeID, if big enough - if(d->dcf_cursor + 7 < dcfend && d->dcf_count_targets < nb_targets) + if((UNS8*)d->dcf_cursor + 7 < (UNS8*)dcfend && d->dcf_count_targets < nb_targets) { // pointer to the DCF string for NodeID target_Index = UNS16_LE(*((UNS16*)(d->dcf_cursor))); d->dcf_cursor += 2; - target_Subindex = *((UNS8*)(d->dcf_cursor++)); + target_Subindex = *((UNS8*)(((UNS8*)d->dcf_cursor)++)); target_Size = UNS32_LE(*((UNS32*)(d->dcf_cursor))); d->dcf_cursor += 4; /*printf("Master : ConfigureSlaveNode %2.2x (Concise DCF)\n",nodeId);*/