include/objacces.h
author greg
Thu, 16 Jul 2009 11:53:07 +0200
changeset 563 394440e3b6e4
parent 561 f9be4262c68d
child 588 ee181b4f177b
permissions -rwxr-xr-x
update canReceive_driver to match with Peak new read function (event)
0
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
     1
/*
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
     2
This file is part of CanFestival, a library implementing CanOpen Stack. 
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
     3
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
     4
Copyright (C): Edouard TISSERANT and Francis DUPIN
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
     5
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
     6
See COPYING file for copyrights details.
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
     7
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
     8
This library is free software; you can redistribute it and/or
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
     9
modify it under the terms of the GNU Lesser General Public
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    10
License as published by the Free Software Foundation; either
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    11
version 2.1 of the License, or (at your option) any later version.
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    12
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    13
This library is distributed in the hope that it will be useful,
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    14
but WITHOUT ANY WARRANTY; without even the implied warranty of
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    15
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    16
Lesser General Public License for more details.
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    17
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    18
You should have received a copy of the GNU Lesser General Public
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    19
License along with this library; if not, write to the Free Software
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    20
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    21
*/
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    22
528
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 469
diff changeset
    23
/** @file
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 469
diff changeset
    24
 *  @brief Responsible for accessing the object dictionary.
0
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    25
 *
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    26
 *  This file contains functions for accessing the object dictionary and
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    27
 *  variables that are contained by the object dictionary.
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    28
 *  Accessing the object dictionary contains setting local variables
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    29
 *  as PDOs and accessing (read/write) all entries of the object dictionary
528
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 469
diff changeset
    30
 *  @warning Only the basic entries of an object dictionary are included
0
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    31
 *           at the moment.
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    32
 */
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    33
528
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 469
diff changeset
    34
/** @defgroup od Object Dictionary Management
529
c171e11707c5 Second time, Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 528
diff changeset
    35
 *  @brief The Object Dictionary is the heart of each CANopen device containing all communication and application objects.
528
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 469
diff changeset
    36
 *  @ingroup userapi
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 469
diff changeset
    37
 */
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 469
diff changeset
    38
 
0
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    39
#ifndef __objacces_h__
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    40
#define __objacces_h__
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    41
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    42
#include <applicfg.h>
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    43
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    44
typedef UNS32 (*valueRangeTest_t)(UNS8 typeValue, void *Value);
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: 175
diff changeset
    45
typedef void (* storeODSubIndex_t)(CO_Data* d, UNS16 wIndex, UNS8 bSubindex);
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: 175
diff changeset
    46
void _storeODSubIndex (CO_Data* d, UNS16 wIndex, UNS8 bSubindex);
0
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    47
528
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 469
diff changeset
    48
/**
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 469
diff changeset
    49
 * @brief Print MSG_WAR (s) if error to the access to the object dictionary occurs.
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 469
diff changeset
    50
 * 
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 469
diff changeset
    51
 * You must uncomment the lines in the file objaccess.c :\n
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 469
diff changeset
    52
 * //#define DEBUG_CAN\n
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 469
diff changeset
    53
 * //#define DEBUG_WAR_CONSOLE_ON\n
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 469
diff changeset
    54
 * //#define DEBUG_ERR_CONSOLE_ON\n\n
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 469
diff changeset
    55
 * Beware that sometimes, we force the sizeDataDict or sizeDataGiven to 0, when we wants to use
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 469
diff changeset
    56
 * this function but we do not have the access to the right value. One example is
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 469
diff changeset
    57
 * getSDOerror(). So do not take attention to these variables if they are null.
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 469
diff changeset
    58
 * @param index
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 469
diff changeset
    59
 * @param subIndex
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 469
diff changeset
    60
 * @param sizeDataDict Size of the data defined in the dictionary
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 469
diff changeset
    61
 * @param sizeDataGiven Size data given by the user.
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 469
diff changeset
    62
 * @param code error code to print. (SDO abort code. See file def.h)
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 469
diff changeset
    63
 * @return
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 469
diff changeset
    64
 */ 
0
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    65
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: 529
diff changeset
    66
			   UNS32 sizeDataDict, UNS32 sizeDataGiven, UNS32 code);
75
debc68b124b7 compiler compatibility : accessDictionaryError contains nothing out of debogue mode
frdupin
parents: 71
diff changeset
    67
0
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    68
469
f2b07ea215b5 Applied edward's patch for OD acces macros (optimization) and boudaries check (safety).
etisserant
parents: 378
diff changeset
    69
/* _getODentry() Reads an entry from the object dictionary.\n
f2b07ea215b5 Applied edward's patch for OD acces macros (optimization) and boudaries check (safety).
etisserant
parents: 378
diff changeset
    70
 * 
f2b07ea215b5 Applied edward's patch for OD acces macros (optimization) and boudaries check (safety).
etisserant
parents: 378
diff changeset
    71
 *    use getODentry() macro to read from object and endianize
f2b07ea215b5 Applied edward's patch for OD acces macros (optimization) and boudaries check (safety).
etisserant
parents: 378
diff changeset
    72
 *    use readLocalDict() macro to read from object and not endianize   
f2b07ea215b5 Applied edward's patch for OD acces macros (optimization) and boudaries check (safety).
etisserant
parents: 378
diff changeset
    73
 *
528
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 469
diff changeset
    74
 * @code
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 469
diff changeset
    75
 * // Example usage:
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 469
diff changeset
    76
 * UNS8  *pbData;
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 469
diff changeset
    77
 * UNS8 length;
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 469
diff changeset
    78
 * UNS32 returnValue;
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 469
diff changeset
    79
 *
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 469
diff changeset
    80
 * returnValue = getODentry( (UNS16)0x100B, (UNS8)1, 
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 469
diff changeset
    81
 * (void * *)&pbData, (UNS8 *)&length );
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 469
diff changeset
    82
 * if( returnValue != SUCCESSFUL )
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 469
diff changeset
    83
 * {
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 469
diff changeset
    84
 *     // error handling
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 469
diff changeset
    85
 * }
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 469
diff changeset
    86
 * @endcode 
561
f9be4262c68d Add doxygen comments in headers file
greg
parents: 539
diff changeset
    87
 * @param *d Pointer to a CAN object data structure
528
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 469
diff changeset
    88
 * @param wIndex The index in the object dictionary where you want to read
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 469
diff changeset
    89
 *               an entry
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 469
diff changeset
    90
 * @param bSubindex The subindex of the Index. e.g. mostly subindex 0 is
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 469
diff changeset
    91
 *                  used to tell you how many valid entries you can find
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 469
diff changeset
    92
 *                  in this index. Look at the canopen standard for further
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 469
diff changeset
    93
 *                  information
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 469
diff changeset
    94
 * @param *pDestData Pointer to the pointer which points to the variable where
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 469
diff changeset
    95
 *                   the value of this object dictionary entry should be copied
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 469
diff changeset
    96
 * @param pExpectedSize This function writes the size of the copied value (in Byte)
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 469
diff changeset
    97
 *                      into this variable.
561
f9be4262c68d Add doxygen comments in headers file
greg
parents: 539
diff changeset
    98
 * @param *pDataType Pointer to the type of the data. See objdictdef.h
528
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 469
diff changeset
    99
 * @param CheckAccess if other than 0, do not read if the data is Write Only
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 469
diff changeset
   100
 *                    [Not used today. Put always 0].
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 469
diff changeset
   101
 * @param Endianize  When not 0, data is endianized into network byte order
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 469
diff changeset
   102
 *                   when 0, data is not endianized and copied in machine native
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 469
diff changeset
   103
 *                   endianness 
561
f9be4262c68d Add doxygen comments in headers file
greg
parents: 539
diff changeset
   104
 * @return 
f9be4262c68d Add doxygen comments in headers file
greg
parents: 539
diff changeset
   105
 * - OD_SUCCESSFUL is returned upon success. 
f9be4262c68d Add doxygen comments in headers file
greg
parents: 539
diff changeset
   106
 * - SDO abort code is returned if error occurs . (See file def.h)
0
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   107
 */
469
f2b07ea215b5 Applied edward's patch for OD acces macros (optimization) and boudaries check (safety).
etisserant
parents: 378
diff changeset
   108
UNS32 _getODentry( CO_Data* d, 
f2b07ea215b5 Applied edward's patch for OD acces macros (optimization) and boudaries check (safety).
etisserant
parents: 378
diff changeset
   109
		  UNS16 wIndex,
0
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   110
		  UNS8 bSubindex,
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   111
		  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: 529
diff changeset
   112
		  UNS32 * pExpectedSize,
0
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   113
		  UNS8 * pDataType,
469
f2b07ea215b5 Applied edward's patch for OD acces macros (optimization) and boudaries check (safety).
etisserant
parents: 378
diff changeset
   114
		  UNS8 checkAccess,
f2b07ea215b5 Applied edward's patch for OD acces macros (optimization) and boudaries check (safety).
etisserant
parents: 378
diff changeset
   115
		  UNS8 endianize);
0
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   116
528
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 469
diff changeset
   117
/** 
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 469
diff changeset
   118
 * @ingroup od
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 469
diff changeset
   119
 * @brief getODentry() to read from object and endianize
561
f9be4262c68d Add doxygen comments in headers file
greg
parents: 539
diff changeset
   120
 * @param OD Pointer to a CAN object data structure
528
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 469
diff changeset
   121
 * @param wIndex The index in the object dictionary where you want to read
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 469
diff changeset
   122
 *                an entry
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 469
diff changeset
   123
 * @param bSubindex The subindex of the Index. e.g. mostly subindex 0 is
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 469
diff changeset
   124
 *                  used to tell you how many valid entries you can find
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 469
diff changeset
   125
 *                  in this index. Look at the canopen standard for further
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 469
diff changeset
   126
 *                  information
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 469
diff changeset
   127
 * @param *pDestData Pointer to the pointer which points to the variable where
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 469
diff changeset
   128
 *                   the value of this object dictionary entry should be copied
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 469
diff changeset
   129
 * @param pExpectedSize This function writes the size of the copied value (in Byte)
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 469
diff changeset
   130
 *                      into this variable.
561
f9be4262c68d Add doxygen comments in headers file
greg
parents: 539
diff changeset
   131
 * @param *pDataType Pointer to the type of the data. See objdictdef.h
f9be4262c68d Add doxygen comments in headers file
greg
parents: 539
diff changeset
   132
 * @param checkAccess Flag that indicate if a check rights must be perfomed (0 : no , other than 0 : yes)
528
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 469
diff changeset
   133
 * @param endianize  Set to 1 : endianized into network byte order 
561
f9be4262c68d Add doxygen comments in headers file
greg
parents: 539
diff changeset
   134
 * @return 
f9be4262c68d Add doxygen comments in headers file
greg
parents: 539
diff changeset
   135
 * - OD_SUCCESSFUL is returned upon success. 
f9be4262c68d Add doxygen comments in headers file
greg
parents: 539
diff changeset
   136
 * - SDO abort code is returned if error occurs . (See file def.h)
528
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 469
diff changeset
   137
 */
469
f2b07ea215b5 Applied edward's patch for OD acces macros (optimization) and boudaries check (safety).
etisserant
parents: 378
diff changeset
   138
#define getODentry( OD, wIndex, bSubindex, pDestData, pExpectedSize, \
f2b07ea215b5 Applied edward's patch for OD acces macros (optimization) and boudaries check (safety).
etisserant
parents: 378
diff changeset
   139
		          pDataType,  checkAccess)                         \
f2b07ea215b5 Applied edward's patch for OD acces macros (optimization) and boudaries check (safety).
etisserant
parents: 378
diff changeset
   140
       _getODentry( OD, wIndex, bSubindex, pDestData, pExpectedSize, \
f2b07ea215b5 Applied edward's patch for OD acces macros (optimization) and boudaries check (safety).
etisserant
parents: 378
diff changeset
   141
		          pDataType,  checkAccess, 1)            
f2b07ea215b5 Applied edward's patch for OD acces macros (optimization) and boudaries check (safety).
etisserant
parents: 378
diff changeset
   142
528
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 469
diff changeset
   143
/** 
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 469
diff changeset
   144
 * @ingroup od
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 469
diff changeset
   145
 * @brief readLocalDict() reads an entry from the object dictionary, but in 
469
f2b07ea215b5 Applied edward's patch for OD acces macros (optimization) and boudaries check (safety).
etisserant
parents: 378
diff changeset
   146
 * contrast to getODentry(), readLocalDict() doesn't endianize entry and reads
528
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 469
diff changeset
   147
 * entry in machine native endianness. 
561
f9be4262c68d Add doxygen comments in headers file
greg
parents: 539
diff changeset
   148
 * @param OD Pointer to a CAN object data structure
528
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 469
diff changeset
   149
 * @param wIndex The index in the object dictionary where you want to read
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 469
diff changeset
   150
 *                an entry
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 469
diff changeset
   151
 * @param bSubindex The subindex of the Index. e.g. mostly subindex 0 is
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 469
diff changeset
   152
 *                  used to tell you how many valid entries you can find
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 469
diff changeset
   153
 *                  in this index. Look at the canopen standard for further
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 469
diff changeset
   154
 *                  information
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 469
diff changeset
   155
 * @param *pDestData Pointer to the pointer which points to the variable where
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 469
diff changeset
   156
 *                   the value of this object dictionary entry should be copied
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 469
diff changeset
   157
 * @param pExpectedSize This function writes the size of the copied value (in Byte)
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 469
diff changeset
   158
 *                      into this variable.
561
f9be4262c68d Add doxygen comments in headers file
greg
parents: 539
diff changeset
   159
 * @param *pDataType Pointer to the type of the data. See objdictdef.h
528
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 469
diff changeset
   160
 * @param checkAccess if other than 0, do not read if the data is Write Only
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 469
diff changeset
   161
 *                    [Not used today. Put always 0].
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 469
diff changeset
   162
 * @param endianize Set to 0, data is not endianized and copied in machine native
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 469
diff changeset
   163
 *                  endianness 
561
f9be4262c68d Add doxygen comments in headers file
greg
parents: 539
diff changeset
   164
 * @return 
f9be4262c68d Add doxygen comments in headers file
greg
parents: 539
diff changeset
   165
 * - OD_SUCCESSFUL is returned upon success. 
f9be4262c68d Add doxygen comments in headers file
greg
parents: 539
diff changeset
   166
 * - SDO abort code is returned if error occurs . (See file def.h)
469
f2b07ea215b5 Applied edward's patch for OD acces macros (optimization) and boudaries check (safety).
etisserant
parents: 378
diff changeset
   167
 */
f2b07ea215b5 Applied edward's patch for OD acces macros (optimization) and boudaries check (safety).
etisserant
parents: 378
diff changeset
   168
#define readLocalDict( OD, wIndex, bSubindex, pDestData, pExpectedSize, \
f2b07ea215b5 Applied edward's patch for OD acces macros (optimization) and boudaries check (safety).
etisserant
parents: 378
diff changeset
   169
		          pDataType,  checkAccess)                         \
f2b07ea215b5 Applied edward's patch for OD acces macros (optimization) and boudaries check (safety).
etisserant
parents: 378
diff changeset
   170
       _getODentry( OD, wIndex, bSubindex, pDestData, pExpectedSize, \
f2b07ea215b5 Applied edward's patch for OD acces macros (optimization) and boudaries check (safety).
etisserant
parents: 378
diff changeset
   171
		          pDataType,  checkAccess, 0)
0
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   172
561
f9be4262c68d Add doxygen comments in headers file
greg
parents: 539
diff changeset
   173
/* By this function you can write an entry into the object dictionary
f9be4262c68d Add doxygen comments in headers file
greg
parents: 539
diff changeset
   174
 * @param *d Pointer to a CAN object data structure
528
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 469
diff changeset
   175
 * @param wIndex The index in the object dictionary where you want to write
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 469
diff changeset
   176
 *               an entry
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 469
diff changeset
   177
 * @param bSubindex The subindex of the Index. e.g. mostly subindex 0 is
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 469
diff changeset
   178
 *                  used to tell you how many valid entries you can find
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 469
diff changeset
   179
 *                  in this index. Look at the canopen standard for further
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 469
diff changeset
   180
 *                  information
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 469
diff changeset
   181
 * @param *pSourceData Pointer to the variable that holds the value that should
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 469
diff changeset
   182
 *                     be copied into the object dictionary
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 469
diff changeset
   183
 * @param *pExpectedSize The size of the value (in Byte).
561
f9be4262c68d Add doxygen comments in headers file
greg
parents: 539
diff changeset
   184
 * @param checkAccess Flag that indicate if a check rights must be perfomed (0 : no , other than 0 : yes)
528
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 469
diff changeset
   185
 * @param endianize When not 0, data is endianized into network byte order
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 469
diff changeset
   186
 *                  when 0, data is not endianized and copied in machine native
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 469
diff changeset
   187
 *                  endianness   
561
f9be4262c68d Add doxygen comments in headers file
greg
parents: 539
diff changeset
   188
 * @return 
f9be4262c68d Add doxygen comments in headers file
greg
parents: 539
diff changeset
   189
 * - OD_SUCCESSFUL is returned upon success. 
f9be4262c68d Add doxygen comments in headers file
greg
parents: 539
diff changeset
   190
 * - SDO abort code is returned if error occurs . (See file def.h)
0
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   191
 */
469
f2b07ea215b5 Applied edward's patch for OD acces macros (optimization) and boudaries check (safety).
etisserant
parents: 378
diff changeset
   192
UNS32 _setODentry( CO_Data* d,
f2b07ea215b5 Applied edward's patch for OD acces macros (optimization) and boudaries check (safety).
etisserant
parents: 378
diff changeset
   193
                   UNS16 wIndex,
f2b07ea215b5 Applied edward's patch for OD acces macros (optimization) and boudaries check (safety).
etisserant
parents: 378
diff changeset
   194
                   UNS8 bSubindex,
f2b07ea215b5 Applied edward's patch for OD acces macros (optimization) and boudaries check (safety).
etisserant
parents: 378
diff changeset
   195
                   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: 529
diff changeset
   196
                   UNS32 * pExpectedSize,
469
f2b07ea215b5 Applied edward's patch for OD acces macros (optimization) and boudaries check (safety).
etisserant
parents: 378
diff changeset
   197
                   UNS8 checkAccess,
f2b07ea215b5 Applied edward's patch for OD acces macros (optimization) and boudaries check (safety).
etisserant
parents: 378
diff changeset
   198
                   UNS8 endianize);
0
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   199
528
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 469
diff changeset
   200
/**
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 469
diff changeset
   201
 * @ingroup od
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 469
diff changeset
   202
 * @brief setODentry converts SourceData from network byte order to machine native 
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 469
diff changeset
   203
 * format, and writes that to OD.
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 469
diff changeset
   204
 * @code
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 469
diff changeset
   205
 * // Example usage:
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 469
diff changeset
   206
 * UNS8 B;
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 469
diff changeset
   207
 * B = 0xFF; // set transmission type
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 469
diff changeset
   208
 *
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 469
diff changeset
   209
 * retcode = setODentry( (UNS16)0x1800, (UNS8)2, &B, sizeof(UNS8), 1 );
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 469
diff changeset
   210
 * @endcode
561
f9be4262c68d Add doxygen comments in headers file
greg
parents: 539
diff changeset
   211
 * @param d Pointer to a CAN object data structure
528
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 469
diff changeset
   212
 * @param wIndex The index in the object dictionary where you want to write
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 469
diff changeset
   213
 *               an entry
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 469
diff changeset
   214
 * @param bSubindex The subindex of the Index. e.g. mostly subindex 0 is
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 469
diff changeset
   215
 *                  used to tell you how many valid entries you can find
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 469
diff changeset
   216
 *                  in this index. Look at the canopen standard for further
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 469
diff changeset
   217
 *                  information
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 469
diff changeset
   218
 * @param *pSourceData Pointer to the variable that holds the value that should
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 469
diff changeset
   219
 *                     be copied into the object dictionary
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 469
diff changeset
   220
 * @param *pExpectedSize The size of the value (in Byte).
561
f9be4262c68d Add doxygen comments in headers file
greg
parents: 539
diff changeset
   221
 * @param checkAccess Flag that indicate if a check rights must be perfomed (0 : no , other than 0 : yes)
528
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 469
diff changeset
   222
 * @param endianize Set to 1 : endianized into network byte order
561
f9be4262c68d Add doxygen comments in headers file
greg
parents: 539
diff changeset
   223
 * @return 
f9be4262c68d Add doxygen comments in headers file
greg
parents: 539
diff changeset
   224
 * - OD_SUCCESSFUL is returned upon success. 
f9be4262c68d Add doxygen comments in headers file
greg
parents: 539
diff changeset
   225
 * - SDO abort code is returned if error occurs . (See file def.h)
f9be4262c68d Add doxygen comments in headers file
greg
parents: 539
diff changeset
   226
 */
f9be4262c68d Add doxygen comments in headers file
greg
parents: 539
diff changeset
   227
#define setODentry( d, wIndex, bSubindex, pSourceData, pExpectedSize, \
f9be4262c68d Add doxygen comments in headers file
greg
parents: 539
diff changeset
   228
                  checkAccess) \
f9be4262c68d Add doxygen comments in headers file
greg
parents: 539
diff changeset
   229
       _setODentry( d, wIndex, bSubindex, pSourceData, pExpectedSize, \
f9be4262c68d Add doxygen comments in headers file
greg
parents: 539
diff changeset
   230
                  checkAccess, 1)
f9be4262c68d Add doxygen comments in headers file
greg
parents: 539
diff changeset
   231
f9be4262c68d Add doxygen comments in headers file
greg
parents: 539
diff changeset
   232
/** @fn UNS32 writeLocalDict(d, wIndex, bSubindex, pSourceData, pExpectedSize, checkAccess)
f9be4262c68d Add doxygen comments in headers file
greg
parents: 539
diff changeset
   233
 * @ingroup od
f9be4262c68d Add doxygen comments in headers file
greg
parents: 539
diff changeset
   234
 * @hideinitializer
528
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 469
diff changeset
   235
 * @brief Writes machine native SourceData to OD.
561
f9be4262c68d Add doxygen comments in headers file
greg
parents: 539
diff changeset
   236
 * @param d Pointer to a CAN object data structure
f9be4262c68d Add doxygen comments in headers file
greg
parents: 539
diff changeset
   237
 * @param wIndex The index in the object dictionary where you want to write
f9be4262c68d Add doxygen comments in headers file
greg
parents: 539
diff changeset
   238
 *               an entry
f9be4262c68d Add doxygen comments in headers file
greg
parents: 539
diff changeset
   239
 * @param bSubindex The subindex of the Index. e.g. mostly subindex 0 is
f9be4262c68d Add doxygen comments in headers file
greg
parents: 539
diff changeset
   240
 *                  used to tell you how many valid entries you can find
f9be4262c68d Add doxygen comments in headers file
greg
parents: 539
diff changeset
   241
 *                  in this index. Look at the canopen standard for further
f9be4262c68d Add doxygen comments in headers file
greg
parents: 539
diff changeset
   242
 *                  information
f9be4262c68d Add doxygen comments in headers file
greg
parents: 539
diff changeset
   243
 * @param *pSourceData Pointer to the variable that holds the value that should
f9be4262c68d Add doxygen comments in headers file
greg
parents: 539
diff changeset
   244
 *                     be copied into the object dictionary
f9be4262c68d Add doxygen comments in headers file
greg
parents: 539
diff changeset
   245
 * @param *pExpectedSize The size of the value (in Byte).
f9be4262c68d Add doxygen comments in headers file
greg
parents: 539
diff changeset
   246
 * @param checkAccess Flag that indicate if a check rights must be perfomed (0 : no , other than 0 : yes)
f9be4262c68d Add doxygen comments in headers file
greg
parents: 539
diff changeset
   247
 * @param endianize Data is not endianized and copied in machine native endianness 
f9be4262c68d Add doxygen comments in headers file
greg
parents: 539
diff changeset
   248
 * @return 
f9be4262c68d Add doxygen comments in headers file
greg
parents: 539
diff changeset
   249
 * - OD_SUCCESSFUL is returned upon success. 
f9be4262c68d Add doxygen comments in headers file
greg
parents: 539
diff changeset
   250
 * - SDO abort code is returned if error occurs . (See file def.h)
f9be4262c68d Add doxygen comments in headers file
greg
parents: 539
diff changeset
   251
 * \n\n
528
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 469
diff changeset
   252
 * @code
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 469
diff changeset
   253
 * // Example usage:
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 469
diff changeset
   254
 * UNS8 B;
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 469
diff changeset
   255
 * B = 0xFF; // set transmission type
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 469
diff changeset
   256
 *
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 469
diff changeset
   257
 * retcode = writeLocalDict( (UNS16)0x1800, (UNS8)2, &B, sizeof(UNS8), 1 );
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 469
diff changeset
   258
 * @endcode
469
f2b07ea215b5 Applied edward's patch for OD acces macros (optimization) and boudaries check (safety).
etisserant
parents: 378
diff changeset
   259
 */
f2b07ea215b5 Applied edward's patch for OD acces macros (optimization) and boudaries check (safety).
etisserant
parents: 378
diff changeset
   260
#define writeLocalDict( d, wIndex, bSubindex, pSourceData, pExpectedSize, checkAccess) \
f2b07ea215b5 Applied edward's patch for OD acces macros (optimization) and boudaries check (safety).
etisserant
parents: 378
diff changeset
   261
       _setODentry( d, wIndex, bSubindex, pSourceData, pExpectedSize, checkAccess, 0)
f2b07ea215b5 Applied edward's patch for OD acces macros (optimization) and boudaries check (safety).
etisserant
parents: 378
diff changeset
   262
175
e255529b6f7d Added writeLocalDict and readLocalDict, that have to be called from application instead of getODEntry and setODEntry. Fix potential endianization problem.
etisserant
parents: 161
diff changeset
   263
0
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   264
528
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 469
diff changeset
   265
/**
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 469
diff changeset
   266
 * @brief Scan the index of object dictionary. Used only by setODentry and getODentry.
561
f9be4262c68d Add doxygen comments in headers file
greg
parents: 539
diff changeset
   267
 * @param *d Pointer to a CAN object data structure
528
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 469
diff changeset
   268
 * @param wIndex
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 469
diff changeset
   269
 * @param *errorCode :  OD_SUCCESSFUL if index foundor SDO abort code. (See file def.h)
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 469
diff changeset
   270
 * @param **Callback
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 469
diff changeset
   271
 * @return NULL if index not found. Else : return the table part of the object dictionary.
0
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   272
 */
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   273
 const indextable * scanIndexOD (CO_Data* d, UNS16 wIndex, UNS32 *errorCode, ODCallback_t **Callback);
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   274
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   275
UNS32 RegisterSetODentryCallBack(CO_Data* d, UNS16 wIndex, UNS8 bSubindex, ODCallback_t Callback);
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   276
71
95cd3376cc9f compilator compatitibility
frdupin
parents: 13
diff changeset
   277
#endif /* __objacces_h__ */