src/objacces.c
author greg
Fri, 17 Jul 2009 11:48:41 +0200
changeset 566 365d555fc0c6
parent 539 187058b4a4b8
child 588 ee181b4f177b
permissions -rw-r--r--
fixed : unlock and terminate CanReceive loop thread when canclose is called.
0
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
     1
/*
208
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
     2
  This file is part of CanFestival, a library implementing CanOpen
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
     3
  Stack.
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
     4
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
     5
  Copyright (C): Edouard TISSERANT and Francis DUPIN
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
     6
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
     7
  See COPYING file for copyrights details.
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
     8
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
     9
  This library is free software; you can redistribute it and/or
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
    10
  modify it under the terms of the GNU Lesser General Public
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
    11
  License as published by the Free Software Foundation; either
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
    12
  version 2.1 of the License, or (at your option) any later version.
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
    13
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
    14
  This library is distributed in the hope that it will be useful,
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
    15
  but WITHOUT ANY WARRANTY; without even the implied warranty of
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
    16
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
    17
  Lesser General Public License for more details.
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
    18
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
    19
  You should have received a copy of the GNU Lesser General Public
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
    20
  License along with this library; if not, write to the Free Software
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
    21
  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
    22
  USA
0
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    23
*/
208
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
    24
/*!
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
    25
** @file   objacces.c
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
    26
** @author Edouard TISSERANT and Francis DUPIN
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
    27
** @date   Tue Jun  5 08:55:23 2007
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
    28
**
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
    29
** @brief
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
    30
**
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
    31
**
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
    32
*/
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
    33
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
    34
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
    35
0
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    36
71
95cd3376cc9f compilator compatitibility
frdupin
parents: 55
diff changeset
    37
/* #define DEBUG_WAR_CONSOLE_ON */
95cd3376cc9f compilator compatitibility
frdupin
parents: 55
diff changeset
    38
/* #define DEBUG_ERR_CONSOLE_ON */
11
64ed038bdc74 Bogue:big endian
dejoigny
parents: 10
diff changeset
    39
1
b3dc740b4b04 Commit some Fix from Francis on sdo.c and abjacces.c. Fix endianisation problems while accessing OD. Also fix SDO abord handling bug.
etisserant
parents: 0
diff changeset
    40
378
d2abf6c8c27b As requested long ago, added CoData* parameter to all this applications callback, let application designer use identical callback for multiple nodes, and reduce source code length.
etisserant
parents: 215
diff changeset
    41
#include "data.h"
0
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    42
8
eee2b0c89213 correction bogue pour BIG_ENDIAN
dejoigny
parents: 2
diff changeset
    43
208
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
    44
/*!
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
    45
**
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
    46
**
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
    47
** @param index
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
    48
** @param subIndex
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
    49
** @param sizeDataDict
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
    50
** @param sizeDataGiven
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
    51
** @param code
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
    52
**
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
    53
** @return
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
    54
**/
469
f2b07ea215b5 Applied edward's patch for OD acces macros (optimization) and boudaries check (safety).
etisserant
parents: 450
diff changeset
    55
#ifdef DEBUG_WAR_CONSOLE_ON
208
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
    56
UNS8 accessDictionaryError(UNS16 index, UNS8 subIndex,
539
187058b4a4b8 Changed OD size from UNS8 to UNS32, and repercuted change to PDO and SDO. Thanks to Jari Kuusisto for patch.
etisserant
parents: 469
diff changeset
    57
                           UNS32 sizeDataDict, UNS32 sizeDataGiven, UNS32 code)
0
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    58
{
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    59
  MSG_WAR(0x2B09,"Dictionary index : ", index);
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    60
  MSG_WAR(0X2B10,"           subindex : ", subIndex);
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    61
  switch (code) {
208
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
    62
  case  OD_NO_SUCH_OBJECT:
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
    63
    MSG_WAR(0x2B11,"Index not found ", index);
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
    64
    break;
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
    65
  case OD_NO_SUCH_SUBINDEX :
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
    66
    MSG_WAR(0x2B12,"SubIndex not found ", subIndex);
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
    67
    break;
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
    68
  case OD_WRITE_NOT_ALLOWED :
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
    69
    MSG_WAR(0x2B13,"Write not allowed, data is read only ", index);
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
    70
    break;
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
    71
  case OD_LENGTH_DATA_INVALID :
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
    72
    MSG_WAR(0x2B14,"Conflict size data. Should be (bytes)  : ", sizeDataDict);
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
    73
    MSG_WAR(0x2B15,"But you have given the size  : ", sizeDataGiven);
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
    74
    break;
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
    75
  case OD_NOT_MAPPABLE :
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
    76
    MSG_WAR(0x2B16,"Not mappable data in a PDO at index    : ", index);
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
    77
    break;
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
    78
  case OD_VALUE_TOO_LOW :
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
    79
    MSG_WAR(0x2B17,"Value range error : value too low. SDOabort : ", code);
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
    80
    break;
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
    81
  case OD_VALUE_TOO_HIGH :
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
    82
    MSG_WAR(0x2B18,"Value range error : value too high. SDOabort : ", code);
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
    83
    break;
0
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    84
  default :
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    85
    MSG_WAR(0x2B20, "Unknown error code : ", code);
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    86
  }
469
f2b07ea215b5 Applied edward's patch for OD acces macros (optimization) and boudaries check (safety).
etisserant
parents: 450
diff changeset
    87
  return 0;
f2b07ea215b5 Applied edward's patch for OD acces macros (optimization) and boudaries check (safety).
etisserant
parents: 450
diff changeset
    88
}
f2b07ea215b5 Applied edward's patch for OD acces macros (optimization) and boudaries check (safety).
etisserant
parents: 450
diff changeset
    89
#else
f2b07ea215b5 Applied edward's patch for OD acces macros (optimization) and boudaries check (safety).
etisserant
parents: 450
diff changeset
    90
#define accessDictionaryError(index, subIndex, sizeDataDict, sizeDataGiven, code)
75
debc68b124b7 compiler compatibility : accessDictionaryError contains nothing out of debogue mode
frdupin
parents: 71
diff changeset
    91
#endif
208
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
    92
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
    93
/*!
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
    94
**
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
    95
**
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
    96
** @param d
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
    97
** @param wIndex
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
    98
** @param bSubindex
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
    99
** @param pDestData
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
   100
** @param pExpectedSize
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
   101
** @param pDataType
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
   102
** @param checkAccess
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
   103
** @param endianize
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
   104
**
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
   105
** @return
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
   106
**/
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
   107
UNS32 _getODentry( CO_Data* d,
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
   108
                   UNS16 wIndex,
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
   109
                   UNS8 bSubindex,
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
   110
                   void * pDestData,
539
187058b4a4b8 Changed OD size from UNS8 to UNS32, and repercuted change to PDO and SDO. Thanks to Jari Kuusisto for patch.
etisserant
parents: 469
diff changeset
   111
                   UNS32 * pExpectedSize,
208
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
   112
                   UNS8 * pDataType,
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
   113
                   UNS8 checkAccess,
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
   114
                   UNS8 endianize)
215
f49e5a6b7804 Manual and Documentation finish
nico
parents: 208
diff changeset
   115
{ /* DO NOT USE MSG_ERR because the macro may send a PDO -> infinite
208
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
   116
    loop if it fails. */
0
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   117
  UNS32 errorCode;
539
187058b4a4b8 Changed OD size from UNS8 to UNS32, and repercuted change to PDO and SDO. Thanks to Jari Kuusisto for patch.
etisserant
parents: 469
diff changeset
   118
  UNS32 szData;
0
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   119
  const indextable *ptrTable;
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   120
  ODCallback_t *Callback;
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   121
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   122
  ptrTable = (*d->scanIndexOD)(wIndex, &errorCode, &Callback);
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   123
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   124
  if (errorCode != OD_SUCCESSFUL)
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   125
    return errorCode;
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   126
  if( ptrTable->bSubCount <= bSubindex ) {
71
95cd3376cc9f compilator compatitibility
frdupin
parents: 55
diff changeset
   127
    /* Subindex not found */
0
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   128
    accessDictionaryError(wIndex, bSubindex, 0, 0, OD_NO_SUCH_SUBINDEX);
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   129
    return OD_NO_SUCH_SUBINDEX;
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   130
  }
208
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
   131
402
77f875d45250 Fixed faulty read access checking on OD access. Added read acces s checking in SDO (was disabled)
etisserant
parents: 378
diff changeset
   132
  if (checkAccess && (ptrTable->pSubindex[bSubindex].bAccessType & WO)) {
208
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
   133
    MSG_WAR(0x2B30, "Access Type : ", ptrTable->pSubindex[bSubindex].bAccessType);
450
dff8cc600cba Fixed typo in objaccess.c. Thanks to James
etisserant
parents: 437
diff changeset
   134
    accessDictionaryError(wIndex, bSubindex, 0, 0, OD_READ_NOT_ALLOWED);
0
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   135
    return OD_READ_NOT_ALLOWED;
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   136
  }
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   137
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   138
  *pDataType = ptrTable->pSubindex[bSubindex].bDataType;
208
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
   139
  szData = ptrTable->pSubindex[bSubindex].size;
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
   140
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
   141
  if(*pExpectedSize == 0 ||
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
   142
     *pExpectedSize == szData ||
421
6221b4db8c42 Added support for null terminated strings as VISIBLE_STRING.
etisserant
parents: 419
diff changeset
   143
     /* allow to fetch a shorter string than expected */
6221b4db8c42 Added support for null terminated strings as VISIBLE_STRING.
etisserant
parents: 419
diff changeset
   144
     (*pDataType >= visible_string && *pExpectedSize < szData)) { 
208
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
   145
12
1d3b9ad366c8 CANOPEN_BIG_ENDIAN :
dejoigny
parents: 11
diff changeset
   146
#  ifdef CANOPEN_BIG_ENDIAN
430
61a24423589c Fixed typo in objacces.c bigendian side.
etisserant
parents: 429
diff changeset
   147
     if(endianize && *pDataType > boolean && !(
61a24423589c Fixed typo in objacces.c bigendian side.
etisserant
parents: 429
diff changeset
   148
            *pDataType >= visible_string && 
431
166037b8f2ed Fixed typo in objacces.c bigendian side.
etisserant
parents: 430
diff changeset
   149
            *pDataType <= domain)) {
215
f49e5a6b7804 Manual and Documentation finish
nico
parents: 208
diff changeset
   150
      /* data must be transmited with low byte first */
208
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
   151
      UNS8 i, j = 0;
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
   152
      MSG_WAR(boolean, "data type ", *pDataType);
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
   153
      MSG_WAR(visible_string, "data type ", *pDataType);
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
   154
      for ( i = szData ; i > 0 ; i--) {
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
   155
        MSG_WAR(i," ", j);
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
   156
        ((UNS8*)pDestData)[j++] =
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
   157
          ((UNS8*)ptrTable->pSubindex[bSubindex].pObject)[i-1];
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
   158
      }
431
166037b8f2ed Fixed typo in objacces.c bigendian side.
etisserant
parents: 430
diff changeset
   159
      *pExpectedSize = szData;
208
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
   160
    }
419
f63ce68a8239 Added support for null terminated strings as VISIBLE_STRING.
etisserant
parents: 402
diff changeset
   161
    else /* no endianisation change */
12
1d3b9ad366c8 CANOPEN_BIG_ENDIAN :
dejoigny
parents: 11
diff changeset
   162
#  endif
421
6221b4db8c42 Added support for null terminated strings as VISIBLE_STRING.
etisserant
parents: 419
diff changeset
   163
    if(*pDataType != visible_string) {
419
f63ce68a8239 Added support for null terminated strings as VISIBLE_STRING.
etisserant
parents: 402
diff changeset
   164
        memcpy(pDestData, ptrTable->pSubindex[bSubindex].pObject,szData);
f63ce68a8239 Added support for null terminated strings as VISIBLE_STRING.
etisserant
parents: 402
diff changeset
   165
        *pExpectedSize = szData;
f63ce68a8239 Added support for null terminated strings as VISIBLE_STRING.
etisserant
parents: 402
diff changeset
   166
    }else{
f63ce68a8239 Added support for null terminated strings as VISIBLE_STRING.
etisserant
parents: 402
diff changeset
   167
        /* TODO : CONFORM TO DS-301 : 
f63ce68a8239 Added support for null terminated strings as VISIBLE_STRING.
etisserant
parents: 402
diff changeset
   168
         *  - stop using NULL terminated strings
f63ce68a8239 Added support for null terminated strings as VISIBLE_STRING.
etisserant
parents: 402
diff changeset
   169
         *  - store string size in td_subindex 
f63ce68a8239 Added support for null terminated strings as VISIBLE_STRING.
etisserant
parents: 402
diff changeset
   170
         * */
f63ce68a8239 Added support for null terminated strings as VISIBLE_STRING.
etisserant
parents: 402
diff changeset
   171
        /* Copy null terminated string to user, and return discovered size */
f63ce68a8239 Added support for null terminated strings as VISIBLE_STRING.
etisserant
parents: 402
diff changeset
   172
        UNS8 *ptr = (UNS8*)ptrTable->pSubindex[bSubindex].pObject;
f63ce68a8239 Added support for null terminated strings as VISIBLE_STRING.
etisserant
parents: 402
diff changeset
   173
        UNS8 *ptr_start = ptr;
431
166037b8f2ed Fixed typo in objacces.c bigendian side.
etisserant
parents: 430
diff changeset
   174
        /* *pExpectedSize IS < szData . if null, use szData */
166037b8f2ed Fixed typo in objacces.c bigendian side.
etisserant
parents: 430
diff changeset
   175
        UNS8 *ptr_end = ptr + (*pExpectedSize ? *pExpectedSize : szData) ; 
429
7cba38279f98 Fixed not so ANSI code in objaccess.c
etisserant
parents: 421
diff changeset
   176
        UNS8 *ptr_dest = (UNS8*)pDestData;
419
f63ce68a8239 Added support for null terminated strings as VISIBLE_STRING.
etisserant
parents: 402
diff changeset
   177
        while( *ptr && ptr < ptr_end){
429
7cba38279f98 Fixed not so ANSI code in objaccess.c
etisserant
parents: 421
diff changeset
   178
            *(ptr_dest++) = *(ptr++);
419
f63ce68a8239 Added support for null terminated strings as VISIBLE_STRING.
etisserant
parents: 402
diff changeset
   179
        } 
421
6221b4db8c42 Added support for null terminated strings as VISIBLE_STRING.
etisserant
parents: 419
diff changeset
   180
         
6221b4db8c42 Added support for null terminated strings as VISIBLE_STRING.
etisserant
parents: 419
diff changeset
   181
        *pExpectedSize = ptr - ptr_start;
6221b4db8c42 Added support for null terminated strings as VISIBLE_STRING.
etisserant
parents: 419
diff changeset
   182
        /* terminate string if not maximum length */
6221b4db8c42 Added support for null terminated strings as VISIBLE_STRING.
etisserant
parents: 419
diff changeset
   183
        if (*pExpectedSize < szData) 
6221b4db8c42 Added support for null terminated strings as VISIBLE_STRING.
etisserant
parents: 419
diff changeset
   184
            *(ptr) = 0; 
419
f63ce68a8239 Added support for null terminated strings as VISIBLE_STRING.
etisserant
parents: 402
diff changeset
   185
    }
402
77f875d45250 Fixed faulty read access checking on OD access. Added read acces s checking in SDO (was disabled)
etisserant
parents: 378
diff changeset
   186
208
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
   187
    return OD_SUCCESSFUL;
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
   188
  }
215
f49e5a6b7804 Manual and Documentation finish
nico
parents: 208
diff changeset
   189
  else { /* Error ! */
208
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
   190
    *pExpectedSize = szData;
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
   191
    accessDictionaryError(wIndex, bSubindex, szData,
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
   192
                          *pExpectedSize, OD_LENGTH_DATA_INVALID);
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
   193
    return OD_LENGTH_DATA_INVALID;
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
   194
  }
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
   195
}
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
   196
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
   197
/*!
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
   198
**
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
   199
**
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
   200
** @param d
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
   201
** @param wIndex
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
   202
** @param bSubindex
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
   203
** @param pSourceData
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
   204
** @param pExpectedSize
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
   205
** @param checkAccess
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
   206
** @param endianize
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
   207
**
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
   208
** @return
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
   209
**/
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
   210
UNS32 _setODentry( CO_Data* d,
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
   211
                   UNS16 wIndex,
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
   212
                   UNS8 bSubindex,
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
   213
                   void * pSourceData,
539
187058b4a4b8 Changed OD size from UNS8 to UNS32, and repercuted change to PDO and SDO. Thanks to Jari Kuusisto for patch.
etisserant
parents: 469
diff changeset
   214
                   UNS32 * pExpectedSize,
208
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
   215
                   UNS8 checkAccess,
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
   216
                   UNS8 endianize)
0
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   217
{
539
187058b4a4b8 Changed OD size from UNS8 to UNS32, and repercuted change to PDO and SDO. Thanks to Jari Kuusisto for patch.
etisserant
parents: 469
diff changeset
   218
  UNS32 szData;
0
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   219
  UNS8 dataType;
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   220
  UNS32 errorCode;
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   221
  const indextable *ptrTable;
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   222
  ODCallback_t *Callback;
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   223
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   224
  ptrTable =(*d->scanIndexOD)(wIndex, &errorCode, &Callback);
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   225
  if (errorCode != OD_SUCCESSFUL)
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   226
    return errorCode;
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   227
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   228
  if( ptrTable->bSubCount <= bSubindex ) {
215
f49e5a6b7804 Manual and Documentation finish
nico
parents: 208
diff changeset
   229
    /* Subindex not found */
0
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   230
    accessDictionaryError(wIndex, bSubindex, 0, *pExpectedSize, OD_NO_SUCH_SUBINDEX);
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   231
    return OD_NO_SUCH_SUBINDEX;
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   232
  }
1
b3dc740b4b04 Commit some Fix from Francis on sdo.c and abjacces.c. Fix endianisation problems while accessing OD. Also fix SDO abord handling bug.
etisserant
parents: 0
diff changeset
   233
  if (checkAccess && (ptrTable->pSubindex[bSubindex].bAccessType == RO)) {
208
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
   234
    MSG_WAR(0x2B25, "Access Type : ", ptrTable->pSubindex[bSubindex].bAccessType);
0
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   235
    accessDictionaryError(wIndex, bSubindex, 0, *pExpectedSize, OD_WRITE_NOT_ALLOWED);
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   236
    return OD_WRITE_NOT_ALLOWED;
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   237
  }
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   238
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   239
208
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
   240
  dataType = ptrTable->pSubindex[bSubindex].bDataType;
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
   241
  szData = ptrTable->pSubindex[bSubindex].size;
0
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   242
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   243
  if( *pExpectedSize == 0 ||
208
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
   244
      *pExpectedSize == szData ||
421
6221b4db8c42 Added support for null terminated strings as VISIBLE_STRING.
etisserant
parents: 419
diff changeset
   245
      /* allow to store a shorter string than entry size */
6221b4db8c42 Added support for null terminated strings as VISIBLE_STRING.
etisserant
parents: 419
diff changeset
   246
      (dataType == visible_string && *pExpectedSize < szData))
208
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
   247
    {
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
   248
#ifdef CANOPEN_BIG_ENDIAN
421
6221b4db8c42 Added support for null terminated strings as VISIBLE_STRING.
etisserant
parents: 419
diff changeset
   249
      /* re-endianize do not occur for bool, strings time and domains */
6221b4db8c42 Added support for null terminated strings as VISIBLE_STRING.
etisserant
parents: 419
diff changeset
   250
      if(endianize && dataType > boolean && !(
6221b4db8c42 Added support for null terminated strings as VISIBLE_STRING.
etisserant
parents: 419
diff changeset
   251
            dataType >= visible_string && 
431
166037b8f2ed Fixed typo in objacces.c bigendian side.
etisserant
parents: 430
diff changeset
   252
            dataType <= domain))
208
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
   253
        {
215
f49e5a6b7804 Manual and Documentation finish
nico
parents: 208
diff changeset
   254
          /* we invert the data source directly. This let us do range
208
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
   255
            testing without */
215
f49e5a6b7804 Manual and Documentation finish
nico
parents: 208
diff changeset
   256
          /* additional temp variable */
208
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
   257
          UNS8 i;
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
   258
          for ( i = 0 ; i < ( ptrTable->pSubindex[bSubindex].size >> 1)  ; i++)
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
   259
            {
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
   260
              UNS8 tmp =((UNS8 *)pSourceData) [(ptrTable->pSubindex[bSubindex].size - 1) - i];
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
   261
              ((UNS8 *)pSourceData) [(ptrTable->pSubindex[bSubindex].size - 1) - i] = ((UNS8 *)pSourceData)[i];
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
   262
              ((UNS8 *)pSourceData)[i] = tmp;
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
   263
            }
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
   264
        }
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
   265
#endif
0
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   266
      errorCode = (*d->valueRangeTest)(dataType, pSourceData);
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   267
      if (errorCode) {
208
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
   268
        accessDictionaryError(wIndex, bSubindex, szData, *pExpectedSize, errorCode);
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
   269
        return errorCode;
0
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   270
      }
2
8d4a822f95e4 Fixed Endianisation/ValueRange order in SetODentry
etisserant
parents: 1
diff changeset
   271
      memcpy(ptrTable->pSubindex[bSubindex].pObject,pSourceData, *pExpectedSize);
421
6221b4db8c42 Added support for null terminated strings as VISIBLE_STRING.
etisserant
parents: 419
diff changeset
   272
     /* TODO : CONFORM TO DS-301 : 
6221b4db8c42 Added support for null terminated strings as VISIBLE_STRING.
etisserant
parents: 419
diff changeset
   273
      *  - stop using NULL terminated strings
6221b4db8c42 Added support for null terminated strings as VISIBLE_STRING.
etisserant
parents: 419
diff changeset
   274
      *  - store string size in td_subindex 
6221b4db8c42 Added support for null terminated strings as VISIBLE_STRING.
etisserant
parents: 419
diff changeset
   275
      * */
6221b4db8c42 Added support for null terminated strings as VISIBLE_STRING.
etisserant
parents: 419
diff changeset
   276
      /* terminate visible_string with '\0' */
6221b4db8c42 Added support for null terminated strings as VISIBLE_STRING.
etisserant
parents: 419
diff changeset
   277
      if(dataType == visible_string && *pExpectedSize < szData)
6221b4db8c42 Added support for null terminated strings as VISIBLE_STRING.
etisserant
parents: 419
diff changeset
   278
        ((UNS8*)ptrTable->pSubindex[bSubindex].pObject)[*pExpectedSize] = 0;
6221b4db8c42 Added support for null terminated strings as VISIBLE_STRING.
etisserant
parents: 419
diff changeset
   279
      
0
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   280
      *pExpectedSize = szData;
208
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
   281
215
f49e5a6b7804 Manual and Documentation finish
nico
parents: 208
diff changeset
   282
      /* Callbacks */
0
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   283
      if(Callback && Callback[bSubindex]){
437
129bbe0504e4 Now OD callback return val ahev influance on SDO transmission (if callback fall, SDO abord may be signaled)
etisserant
parents: 431
diff changeset
   284
        errorCode = (Callback[bSubindex])(d, ptrTable, bSubindex);
129bbe0504e4 Now OD callback return val ahev influance on SDO transmission (if callback fall, SDO abord may be signaled)
etisserant
parents: 431
diff changeset
   285
        if(errorCode != OD_SUCCESSFUL)
129bbe0504e4 Now OD callback return val ahev influance on SDO transmission (if callback fall, SDO abord may be signaled)
etisserant
parents: 431
diff changeset
   286
        {
129bbe0504e4 Now OD callback return val ahev influance on SDO transmission (if callback fall, SDO abord may be signaled)
etisserant
parents: 431
diff changeset
   287
            return errorCode;
129bbe0504e4 Now OD callback return val ahev influance on SDO transmission (if callback fall, SDO abord may be signaled)
etisserant
parents: 431
diff changeset
   288
        }
129bbe0504e4 Now OD callback return val ahev influance on SDO transmission (if callback fall, SDO abord may be signaled)
etisserant
parents: 431
diff changeset
   289
       }
208
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
   290
215
f49e5a6b7804 Manual and Documentation finish
nico
parents: 208
diff changeset
   291
      /* TODO : Store dans NVRAM */
161
c4908cc776a9 SetODEntry now call CO_data->storeODSubEntry(Index,SubIndex) for variables to be Stored (when column Save==True in GUI)
etisserant
parents: 75
diff changeset
   292
      if (ptrTable->pSubindex[bSubindex].bAccessType & TO_BE_SAVE){
378
d2abf6c8c27b As requested long ago, added CoData* parameter to all this applications callback, let application designer use identical callback for multiple nodes, and reduce source code length.
etisserant
parents: 215
diff changeset
   293
        (*d->storeODSubIndex)(d, wIndex, bSubindex);
161
c4908cc776a9 SetODEntry now call CO_data->storeODSubEntry(Index,SubIndex) for variables to be Stored (when column Save==True in GUI)
etisserant
parents: 75
diff changeset
   294
      }
0
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   295
      return OD_SUCCESSFUL;
208
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
   296
    }else{
0
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   297
      *pExpectedSize = szData;
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   298
      accessDictionaryError(wIndex, bSubindex, szData, *pExpectedSize, OD_LENGTH_DATA_INVALID);
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   299
      return OD_LENGTH_DATA_INVALID;
208
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
   300
    }
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
   301
}
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
   302
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
   303
/*!
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
   304
**
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
   305
**
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
   306
** @param d
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
   307
** @param wIndex
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
   308
** @param errorCode
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
   309
** @param Callback
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
   310
**
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
   311
** @return
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
   312
**/
0
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   313
const indextable * scanIndexOD (CO_Data* d, UNS16 wIndex, UNS32 *errorCode, ODCallback_t **Callback)
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   314
{
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   315
  return (*d->scanIndexOD)(wIndex, errorCode, Callback);
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   316
}
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   317
208
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
   318
/*!
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
   319
**
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
   320
**
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
   321
** @param d
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
   322
** @param wIndex
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
   323
** @param bSubindex
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
   324
** @param Callback
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
   325
**
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
   326
** @return
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
   327
**/
0
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   328
UNS32 RegisterSetODentryCallBack(CO_Data* d, UNS16 wIndex, UNS8 bSubindex, ODCallback_t Callback)
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   329
{
469
f2b07ea215b5 Applied edward's patch for OD acces macros (optimization) and boudaries check (safety).
etisserant
parents: 450
diff changeset
   330
UNS32 errorCode;
f2b07ea215b5 Applied edward's patch for OD acces macros (optimization) and boudaries check (safety).
etisserant
parents: 450
diff changeset
   331
ODCallback_t *CallbackList;
f2b07ea215b5 Applied edward's patch for OD acces macros (optimization) and boudaries check (safety).
etisserant
parents: 450
diff changeset
   332
const indextable *odentry;
f2b07ea215b5 Applied edward's patch for OD acces macros (optimization) and boudaries check (safety).
etisserant
parents: 450
diff changeset
   333
f2b07ea215b5 Applied edward's patch for OD acces macros (optimization) and boudaries check (safety).
etisserant
parents: 450
diff changeset
   334
  odentry = scanIndexOD (d, wIndex, &errorCode, &CallbackList);
f2b07ea215b5 Applied edward's patch for OD acces macros (optimization) and boudaries check (safety).
etisserant
parents: 450
diff changeset
   335
  if(errorCode == OD_SUCCESSFUL  &&  CallbackList  &&  bSubindex < odentry->bSubCount) 
208
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
   336
    CallbackList[bSubindex] = Callback;
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
   337
  return errorCode;
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
   338
}
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
   339
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
   340
/*!
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
   341
**
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
   342
**
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
   343
** @param wIndex
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
   344
** @param bSubindex
05d95c45b388 Manual convertion -> latex -> pdf
nico
parents: 175
diff changeset
   345
**/
378
d2abf6c8c27b As requested long ago, added CoData* parameter to all this applications callback, let application designer use identical callback for multiple nodes, and reduce source code length.
etisserant
parents: 215
diff changeset
   346
void _storeODSubIndex (CO_Data* d, UNS16 wIndex, UNS8 bSubindex){}