Daniel Krueger | 9d7164c | 2008-12-19 11:41:57 -0800 | [diff] [blame] | 1 | /**************************************************************************** |
| 2 | |
| 3 | (c) SYSTEC electronic GmbH, D-07973 Greiz, August-Bebel-Str. 29 |
| 4 | www.systec-electronic.com |
| 5 | |
| 6 | Project: openPOWERLINK |
| 7 | |
| 8 | Description: include file for api function of EplOBD-Module |
| 9 | |
| 10 | License: |
| 11 | |
| 12 | Redistribution and use in source and binary forms, with or without |
| 13 | modification, are permitted provided that the following conditions |
| 14 | are met: |
| 15 | |
| 16 | 1. Redistributions of source code must retain the above copyright |
| 17 | notice, this list of conditions and the following disclaimer. |
| 18 | |
| 19 | 2. Redistributions in binary form must reproduce the above copyright |
| 20 | notice, this list of conditions and the following disclaimer in the |
| 21 | documentation and/or other materials provided with the distribution. |
| 22 | |
| 23 | 3. Neither the name of SYSTEC electronic GmbH nor the names of its |
| 24 | contributors may be used to endorse or promote products derived |
| 25 | from this software without prior written permission. For written |
| 26 | permission, please contact info@systec-electronic.com. |
| 27 | |
| 28 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
| 29 | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
| 30 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS |
| 31 | FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE |
| 32 | COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, |
| 33 | INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, |
| 34 | BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; |
| 35 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER |
| 36 | CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT |
| 37 | LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN |
| 38 | ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
| 39 | POSSIBILITY OF SUCH DAMAGE. |
| 40 | |
| 41 | Severability Clause: |
| 42 | |
| 43 | If a provision of this License is or becomes illegal, invalid or |
| 44 | unenforceable in any jurisdiction, that shall not affect: |
| 45 | 1. the validity or enforceability in that jurisdiction of any other |
| 46 | provision of this License; or |
| 47 | 2. the validity or enforceability in other jurisdictions of that or |
| 48 | any other provision of this License. |
| 49 | |
| 50 | ------------------------------------------------------------------------- |
| 51 | |
| 52 | $RCSfile: EplObd.h,v $ |
| 53 | |
| 54 | $Author: D.Krueger $ |
| 55 | |
| 56 | $Revision: 1.5 $ $Date: 2008/04/17 21:36:32 $ |
| 57 | |
| 58 | $State: Exp $ |
| 59 | |
| 60 | Build Environment: |
| 61 | Microsoft VC7 |
| 62 | |
| 63 | ------------------------------------------------------------------------- |
| 64 | |
| 65 | Revision History: |
| 66 | |
| 67 | 2006/06/02 k.t.: start of the implementation, version 1.00 |
| 68 | |
Daniel Krueger | 9d7164c | 2008-12-19 11:41:57 -0800 | [diff] [blame] | 69 | ****************************************************************************/ |
| 70 | |
| 71 | #include "EplInc.h" |
| 72 | |
| 73 | #ifndef _EPLOBD_H_ |
| 74 | #define _EPLOBD_H_ |
| 75 | |
Daniel Krueger | 9d7164c | 2008-12-19 11:41:57 -0800 | [diff] [blame] | 76 | // ============================================================================ |
| 77 | // defines |
| 78 | // ============================================================================ |
| 79 | |
| 80 | #define EPL_OBD_TABLE_INDEX_END 0xFFFF |
| 81 | |
| 82 | // for the usage of BOOLEAN in OD |
| 83 | #define OBD_TRUE 0x01 |
| 84 | #define OBD_FALSE 0x00 |
| 85 | |
| 86 | // default OD index for Node id |
| 87 | #define EPL_OBD_NODE_ID_INDEX 0x1F93 |
| 88 | // default subindex for NodeId in OD |
| 89 | #define EPL_OBD_NODE_ID_SUBINDEX 0x01 |
| 90 | // default subindex for NodeIDByHW_BOOL |
| 91 | #define EPL_OBD_NODE_ID_HWBOOL_SUBINDEX 0x02 |
| 92 | |
| 93 | // ============================================================================ |
| 94 | // enums |
| 95 | // ============================================================================ |
| 96 | |
| 97 | // directions for access to object dictionary |
Greg Kroah-Hartman | e0ca059 | 2008-12-19 17:09:38 -0800 | [diff] [blame] | 98 | typedef enum { |
| 99 | kEplObdDirInit = 0x00, // initialising after power on |
| 100 | kEplObdDirStore = 0x01, // store all object values to non volatile memory |
| 101 | kEplObdDirLoad = 0x02, // load all object values from non volatile memory |
| 102 | kEplObdDirRestore = 0x03, // deletes non volatile memory (restore) |
| 103 | kEplObdDirOBKCheck = 0xFF // reserved |
| 104 | } tEplObdDir; |
Daniel Krueger | 9d7164c | 2008-12-19 11:41:57 -0800 | [diff] [blame] | 105 | |
| 106 | // commands for store |
Greg Kroah-Hartman | e0ca059 | 2008-12-19 17:09:38 -0800 | [diff] [blame] | 107 | typedef enum { |
| 108 | kEplObdCommNothing = 0x00, |
| 109 | kEplObdCommOpenWrite = 0x01, |
| 110 | kEplObdCommWriteObj = 0x02, |
| 111 | kEplObdCommCloseWrite = 0x03, |
| 112 | kEplObdCommOpenRead = 0x04, |
| 113 | kEplObdCommReadObj = 0x05, |
| 114 | kEplObdCommCloseRead = 0x06, |
| 115 | kEplObdCommClear = 0x07, |
| 116 | kEplObdCommUnknown = 0xFF |
| 117 | } tEplObdCommand; |
Daniel Krueger | 9d7164c | 2008-12-19 11:41:57 -0800 | [diff] [blame] | 118 | |
| 119 | //----------------------------------------------------------------------------------------------------------- |
| 120 | // events of object callback function |
Greg Kroah-Hartman | e0ca059 | 2008-12-19 17:09:38 -0800 | [diff] [blame] | 121 | typedef enum { |
Daniel Krueger | 9d7164c | 2008-12-19 11:41:57 -0800 | [diff] [blame] | 122 | // m_pArg points to |
| 123 | // --------------------- |
Greg Kroah-Hartman | e0ca059 | 2008-12-19 17:09:38 -0800 | [diff] [blame] | 124 | kEplObdEvCheckExist = 0x06, // checking if object does exist (reading and writing) NULL |
| 125 | kEplObdEvPreRead = 0x00, // before reading an object source data buffer in OD |
| 126 | kEplObdEvPostRead = 0x01, // after reading an object destination data buffer from caller |
| 127 | kEplObdEvWrStringDomain = 0x07, // event for changing string/domain data pointer or size struct tEplObdVStringDomain in RAM |
| 128 | kEplObdEvInitWrite = 0x04, // initializes writing an object (checking object size) size of object in OD (tEplObdSize) |
| 129 | kEplObdEvPreWrite = 0x02, // before writing an object source data buffer from caller |
| 130 | kEplObdEvPostWrite = 0x03, // after writing an object destination data buffer in OD |
Daniel Krueger | 9d7164c | 2008-12-19 11:41:57 -0800 | [diff] [blame] | 131 | // kEplObdEvAbortSdo = 0x05 // after an abort of an SDO transfer |
| 132 | |
| 133 | } tEplObdEvent; |
| 134 | |
| 135 | // part of OD (bit oriented) |
| 136 | typedef unsigned int tEplObdPart; |
| 137 | |
Greg Kroah-Hartman | e0ca059 | 2008-12-19 17:09:38 -0800 | [diff] [blame] | 138 | #define kEplObdPartNo 0x00 // nothing |
| 139 | #define kEplObdPartGen 0x01 // part (0x1000 - 0x1FFF) |
| 140 | #define kEplObdPartMan 0x02 // manufacturer part (0x2000 - 0x5FFF) |
| 141 | #define kEplObdPartDev 0x04 // device part (0x6000 - 0x9FFF) |
| 142 | #define kEplObdPartUsr 0x08 // dynamic part e.g. for ICE61131-3 |
Daniel Krueger | 9d7164c | 2008-12-19 11:41:57 -0800 | [diff] [blame] | 143 | |
| 144 | // combinations |
Greg Kroah-Hartman | e0ca059 | 2008-12-19 17:09:38 -0800 | [diff] [blame] | 145 | #define kEplObdPartApp ( kEplObdPartMan | kEplObdPartDev | kEplObdPartUsr) // manufacturer and device part (0x2000 - 0x9FFF) and user OD |
| 146 | #define kEplObdPartAll (kEplObdPartGen | kEplObdPartMan | kEplObdPartDev | kEplObdPartUsr) // whole OD |
Daniel Krueger | 9d7164c | 2008-12-19 11:41:57 -0800 | [diff] [blame] | 147 | |
| 148 | //----------------------------------------------------------------------------------------------------------- |
| 149 | // access types for objects |
| 150 | // must be a difine because bit-flags |
| 151 | typedef unsigned int tEplObdAccess; |
| 152 | |
Greg Kroah-Hartman | e0ca059 | 2008-12-19 17:09:38 -0800 | [diff] [blame] | 153 | #define kEplObdAccRead 0x01 // object can be read |
| 154 | #define kEplObdAccWrite 0x02 // object can be written |
| 155 | #define kEplObdAccConst 0x04 // object contains a constant value |
| 156 | #define kEplObdAccPdo 0x08 // object can be mapped in a PDO |
| 157 | #define kEplObdAccArray 0x10 // object contains an array of numerical values |
| 158 | #define kEplObdAccRange 0x20 // object contains lower and upper limit |
| 159 | #define kEplObdAccVar 0x40 // object data is placed in application |
| 160 | #define kEplObdAccStore 0x80 // object data can be stored to non volatile memory |
Daniel Krueger | 9d7164c | 2008-12-19 11:41:57 -0800 | [diff] [blame] | 161 | |
| 162 | // combinations (not all combinations are required) |
| 163 | #define kEplObdAccR (0 | 0 | 0 | 0 | 0 | 0 | kEplObdAccRead) |
| 164 | #define kEplObdAccW (0 | 0 | 0 | 0 | 0 | kEplObdAccWrite | 0 ) |
| 165 | #define kEplObdAccRW (0 | 0 | 0 | 0 | 0 | kEplObdAccWrite | kEplObdAccRead) |
| 166 | #define kEplObdAccCR (0 | 0 | 0 | 0 | kEplObdAccConst | 0 | kEplObdAccRead) |
| 167 | #define kEplObdAccGR (0 | 0 | kEplObdAccRange | 0 | 0 | 0 | kEplObdAccRead) |
| 168 | #define kEplObdAccGW (0 | 0 | kEplObdAccRange | 0 | 0 | kEplObdAccWrite | 0 ) |
| 169 | #define kEplObdAccGRW (0 | 0 | kEplObdAccRange | 0 | 0 | kEplObdAccWrite | kEplObdAccRead) |
| 170 | #define kEplObdAccVR (0 | kEplObdAccVar | 0 | 0 | 0 | 0 | kEplObdAccRead) |
| 171 | #define kEplObdAccVW (0 | kEplObdAccVar | 0 | 0 | 0 | kEplObdAccWrite | 0 ) |
| 172 | #define kEplObdAccVRW (0 | kEplObdAccVar | 0 | 0 | 0 | kEplObdAccWrite | kEplObdAccRead) |
| 173 | #define kEplObdAccVPR (0 | kEplObdAccVar | 0 | kEplObdAccPdo | 0 | 0 | kEplObdAccRead) |
| 174 | #define kEplObdAccVPW (0 | kEplObdAccVar | 0 | kEplObdAccPdo | 0 | kEplObdAccWrite | 0 ) |
| 175 | #define kEplObdAccVPRW (0 | kEplObdAccVar | 0 | kEplObdAccPdo | 0 | kEplObdAccWrite | kEplObdAccRead) |
| 176 | #define kEplObdAccVGR (0 | kEplObdAccVar | kEplObdAccRange | 0 | 0 | 0 | kEplObdAccRead) |
| 177 | #define kEplObdAccVGW (0 | kEplObdAccVar | kEplObdAccRange | 0 | 0 | kEplObdAccWrite | 0 ) |
| 178 | #define kEplObdAccVGRW (0 | kEplObdAccVar | kEplObdAccRange | 0 | 0 | kEplObdAccWrite | kEplObdAccRead) |
| 179 | #define kEplObdAccVGPR (0 | kEplObdAccVar | kEplObdAccRange | kEplObdAccPdo | 0 | 0 | kEplObdAccRead) |
| 180 | #define kEplObdAccVGPW (0 | kEplObdAccVar | kEplObdAccRange | kEplObdAccPdo | 0 | kEplObdAccWrite | 0 ) |
| 181 | #define kEplObdAccVGPRW (0 | kEplObdAccVar | kEplObdAccRange | kEplObdAccPdo | 0 | kEplObdAccWrite | kEplObdAccRead) |
| 182 | #define kEplObdAccSR (kEplObdAccStore | 0 | 0 | 0 | 0 | 0 | kEplObdAccRead) |
| 183 | #define kEplObdAccSW (kEplObdAccStore | 0 | 0 | 0 | 0 | kEplObdAccWrite | 0 ) |
| 184 | #define kEplObdAccSRW (kEplObdAccStore | 0 | 0 | 0 | 0 | kEplObdAccWrite | kEplObdAccRead) |
| 185 | #define kEplObdAccSCR (kEplObdAccStore | 0 | 0 | 0 | kEplObdAccConst | 0 | kEplObdAccRead) |
| 186 | #define kEplObdAccSGR (kEplObdAccStore | 0 | kEplObdAccRange | 0 | 0 | 0 | kEplObdAccRead) |
| 187 | #define kEplObdAccSGW (kEplObdAccStore | 0 | kEplObdAccRange | 0 | 0 | kEplObdAccWrite | 0 ) |
| 188 | #define kEplObdAccSGRW (kEplObdAccStore | 0 | kEplObdAccRange | 0 | 0 | kEplObdAccWrite | kEplObdAccRead) |
| 189 | #define kEplObdAccSVR (kEplObdAccStore | kEplObdAccVar | 0 | 0 | 0 | 0 | kEplObdAccRead) |
| 190 | #define kEplObdAccSVW (kEplObdAccStore | kEplObdAccVar | 0 | 0 | 0 | kEplObdAccWrite | 0 ) |
| 191 | #define kEplObdAccSVRW (kEplObdAccStore | kEplObdAccVar | 0 | 0 | 0 | kEplObdAccWrite | kEplObdAccRead) |
| 192 | #define kEplObdAccSVPR (kEplObdAccStore | kEplObdAccVar | 0 | kEplObdAccPdo | 0 | 0 | kEplObdAccRead) |
| 193 | #define kEplObdAccSVPW (kEplObdAccStore | kEplObdAccVar | 0 | kEplObdAccPdo | 0 | kEplObdAccWrite | 0 ) |
| 194 | #define kEplObdAccSVPRW (kEplObdAccStore | kEplObdAccVar | 0 | kEplObdAccPdo | 0 | kEplObdAccWrite | kEplObdAccRead) |
| 195 | #define kEplObdAccSVGR (kEplObdAccStore | kEplObdAccVar | kEplObdAccRange | 0 | 0 | 0 | kEplObdAccRead) |
| 196 | #define kEplObdAccSVGW (kEplObdAccStore | kEplObdAccVar | kEplObdAccRange | 0 | 0 | kEplObdAccWrite | 0 ) |
| 197 | #define kEplObdAccSVGRW (kEplObdAccStore | kEplObdAccVar | kEplObdAccRange | 0 | 0 | kEplObdAccWrite | kEplObdAccRead) |
| 198 | #define kEplObdAccSVGPR (kEplObdAccStore | kEplObdAccVar | kEplObdAccRange | kEplObdAccPdo | 0 | 0 | kEplObdAccRead) |
| 199 | #define kEplObdAccSVGPW (kEplObdAccStore | kEplObdAccVar | kEplObdAccRange | kEplObdAccPdo | 0 | kEplObdAccWrite | 0 ) |
| 200 | #define kEplObdAccSVGPRW (kEplObdAccStore | kEplObdAccVar | kEplObdAccRange | kEplObdAccPdo | 0 | kEplObdAccWrite | kEplObdAccRead) |
| 201 | |
Greg Kroah-Hartman | e0ca059 | 2008-12-19 17:09:38 -0800 | [diff] [blame] | 202 | typedef unsigned int tEplObdSize; // For all objects as objects size are used an unsigned int. |
Daniel Krueger | 9d7164c | 2008-12-19 11:41:57 -0800 | [diff] [blame] | 203 | |
| 204 | // ------------------------------------------------------------------------- |
| 205 | // types for data types defined in DS301 |
| 206 | // ------------------------------------------------------------------------- |
| 207 | |
| 208 | // types of objects in object dictionary |
| 209 | // DS-301 defines these types as WORD |
Greg Kroah-Hartman | e0ca059 | 2008-12-19 17:09:38 -0800 | [diff] [blame] | 210 | typedef enum { |
Daniel Krueger | 9d7164c | 2008-12-19 11:41:57 -0800 | [diff] [blame] | 211 | // types which are always supported |
Greg Kroah-Hartman | e0ca059 | 2008-12-19 17:09:38 -0800 | [diff] [blame] | 212 | kEplObdTypBool = 0x0001, |
Daniel Krueger | 9d7164c | 2008-12-19 11:41:57 -0800 | [diff] [blame] | 213 | |
Greg Kroah-Hartman | e0ca059 | 2008-12-19 17:09:38 -0800 | [diff] [blame] | 214 | kEplObdTypInt8 = 0x0002, |
| 215 | kEplObdTypInt16 = 0x0003, |
| 216 | kEplObdTypInt32 = 0x0004, |
| 217 | kEplObdTypUInt8 = 0x0005, |
| 218 | kEplObdTypUInt16 = 0x0006, |
| 219 | kEplObdTypUInt32 = 0x0007, |
| 220 | kEplObdTypReal32 = 0x0008, |
| 221 | kEplObdTypVString = 0x0009, |
| 222 | kEplObdTypOString = 0x000A, |
| 223 | kEplObdTypDomain = 0x000F, |
Daniel Krueger | 9d7164c | 2008-12-19 11:41:57 -0800 | [diff] [blame] | 224 | |
Greg Kroah-Hartman | e0ca059 | 2008-12-19 17:09:38 -0800 | [diff] [blame] | 225 | kEplObdTypInt24 = 0x0010, |
| 226 | kEplObdTypUInt24 = 0x0016, |
Daniel Krueger | 9d7164c | 2008-12-19 11:41:57 -0800 | [diff] [blame] | 227 | |
Greg Kroah-Hartman | e0ca059 | 2008-12-19 17:09:38 -0800 | [diff] [blame] | 228 | kEplObdTypReal64 = 0x0011, |
| 229 | kEplObdTypInt40 = 0x0012, |
| 230 | kEplObdTypInt48 = 0x0013, |
| 231 | kEplObdTypInt56 = 0x0014, |
| 232 | kEplObdTypInt64 = 0x0015, |
| 233 | kEplObdTypUInt40 = 0x0018, |
| 234 | kEplObdTypUInt48 = 0x0019, |
| 235 | kEplObdTypUInt56 = 0x001A, |
| 236 | kEplObdTypUInt64 = 0x001B, |
| 237 | kEplObdTypTimeOfDay = 0x000C, |
| 238 | kEplObdTypTimeDiff = 0x000D |
| 239 | } tEplObdType; |
Daniel Krueger | 9d7164c | 2008-12-19 11:41:57 -0800 | [diff] [blame] | 240 | // other types are not supported in this version |
| 241 | |
Daniel Krueger | 9d7164c | 2008-12-19 11:41:57 -0800 | [diff] [blame] | 242 | // ------------------------------------------------------------------------- |
| 243 | // types for data types defined in DS301 |
| 244 | // ------------------------------------------------------------------------- |
| 245 | |
Greg Kroah-Hartman | e0ca059 | 2008-12-19 17:09:38 -0800 | [diff] [blame] | 246 | typedef unsigned char tEplObdBoolean; // 0001 |
| 247 | typedef signed char tEplObdInteger8; // 0002 |
| 248 | typedef signed short int tEplObdInteger16; // 0003 |
| 249 | typedef signed long tEplObdInteger32; // 0004 |
| 250 | typedef unsigned char tEplObdUnsigned8; // 0005 |
| 251 | typedef unsigned short int tEplObdUnsigned16; // 0006 |
| 252 | typedef unsigned long tEplObdUnsigned32; // 0007 |
| 253 | typedef float tEplObdReal32; // 0008 |
| 254 | typedef unsigned char tEplObdDomain; // 000F |
| 255 | typedef signed long tEplObdInteger24; // 0010 |
| 256 | typedef unsigned long tEplObdUnsigned24; // 0016 |
Daniel Krueger | 9d7164c | 2008-12-19 11:41:57 -0800 | [diff] [blame] | 257 | |
Greg Kroah-Hartman | e0ca059 | 2008-12-19 17:09:38 -0800 | [diff] [blame] | 258 | typedef signed QWORD tEplObdInteger40; // 0012 |
| 259 | typedef signed QWORD tEplObdInteger48; // 0013 |
| 260 | typedef signed QWORD tEplObdInteger56; // 0014 |
| 261 | typedef signed QWORD tEplObdInteger64; // 0015 |
Daniel Krueger | 9d7164c | 2008-12-19 11:41:57 -0800 | [diff] [blame] | 262 | |
Greg Kroah-Hartman | e0ca059 | 2008-12-19 17:09:38 -0800 | [diff] [blame] | 263 | typedef unsigned QWORD tEplObdUnsigned40; // 0018 |
| 264 | typedef unsigned QWORD tEplObdUnsigned48; // 0019 |
| 265 | typedef unsigned QWORD tEplObdUnsigned56; // 001A |
| 266 | typedef unsigned QWORD tEplObdUnsigned64; // 001B |
Daniel Krueger | 9d7164c | 2008-12-19 11:41:57 -0800 | [diff] [blame] | 267 | |
Greg Kroah-Hartman | e0ca059 | 2008-12-19 17:09:38 -0800 | [diff] [blame] | 268 | typedef double tEplObdReal64; // 0011 |
Daniel Krueger | 9d7164c | 2008-12-19 11:41:57 -0800 | [diff] [blame] | 269 | |
Greg Kroah-Hartman | e0ca059 | 2008-12-19 17:09:38 -0800 | [diff] [blame] | 270 | typedef tTimeOfDay tEplObdTimeOfDay; // 000C |
| 271 | typedef tTimeOfDay tEplObdTimeDifference; // 000D |
Daniel Krueger | 9d7164c | 2008-12-19 11:41:57 -0800 | [diff] [blame] | 272 | |
| 273 | // ------------------------------------------------------------------------- |
| 274 | // structur for defining a variable |
| 275 | // ------------------------------------------------------------------------- |
| 276 | // ------------------------------------------------------------------------- |
Greg Kroah-Hartman | e0ca059 | 2008-12-19 17:09:38 -0800 | [diff] [blame] | 277 | typedef enum { |
| 278 | kVarValidSize = 0x01, |
| 279 | kVarValidData = 0x02, |
Daniel Krueger | 9d7164c | 2008-12-19 11:41:57 -0800 | [diff] [blame] | 280 | // kVarValidCallback = 0x04, |
| 281 | // kVarValidArg = 0x08, |
| 282 | |
Greg Kroah-Hartman | e0ca059 | 2008-12-19 17:09:38 -0800 | [diff] [blame] | 283 | kVarValidAll = 0x03 // currently only size and data are implemented and used |
| 284 | } tEplVarParamValid; |
Daniel Krueger | 9d7164c | 2008-12-19 11:41:57 -0800 | [diff] [blame] | 285 | |
Greg Kroah-Hartman | e0ca059 | 2008-12-19 17:09:38 -0800 | [diff] [blame] | 286 | typedef tEplKernel(PUBLIC ROM * tEplVarCallback) (CCM_DECL_INSTANCE_HDL_ |
| 287 | void *pParam_p); |
Daniel Krueger | 9d7164c | 2008-12-19 11:41:57 -0800 | [diff] [blame] | 288 | |
Greg Kroah-Hartman | e0ca059 | 2008-12-19 17:09:38 -0800 | [diff] [blame] | 289 | typedef struct { |
| 290 | tEplVarParamValid m_ValidFlag; |
| 291 | unsigned int m_uiIndex; |
| 292 | unsigned int m_uiSubindex; |
| 293 | tEplObdSize m_Size; |
| 294 | void MEM *m_pData; |
Daniel Krueger | 9d7164c | 2008-12-19 11:41:57 -0800 | [diff] [blame] | 295 | // tEplVarCallback m_fpCallback; |
| 296 | // void * m_pArg; |
| 297 | |
| 298 | } tEplVarParam; |
| 299 | |
Greg Kroah-Hartman | e0ca059 | 2008-12-19 17:09:38 -0800 | [diff] [blame] | 300 | typedef struct { |
| 301 | void MEM *m_pData; |
| 302 | tEplObdSize m_Size; |
Daniel Krueger | 9d7164c | 2008-12-19 11:41:57 -0800 | [diff] [blame] | 303 | /* |
| 304 | #if (EPL_PDO_USE_STATIC_MAPPING == FALSE) |
| 305 | tEplVarCallback m_fpCallback; |
| 306 | void * m_pArg; |
| 307 | #endif |
| 308 | */ |
| 309 | } tEplObdVarEntry; |
| 310 | |
Greg Kroah-Hartman | e0ca059 | 2008-12-19 17:09:38 -0800 | [diff] [blame] | 311 | typedef struct { |
| 312 | tEplObdSize m_Size; |
| 313 | BYTE *m_pString; |
Daniel Krueger | 9d7164c | 2008-12-19 11:41:57 -0800 | [diff] [blame] | 314 | |
Greg Kroah-Hartman | e0ca059 | 2008-12-19 17:09:38 -0800 | [diff] [blame] | 315 | } tEplObdOString; // 000C |
Daniel Krueger | 9d7164c | 2008-12-19 11:41:57 -0800 | [diff] [blame] | 316 | |
Greg Kroah-Hartman | e0ca059 | 2008-12-19 17:09:38 -0800 | [diff] [blame] | 317 | typedef struct { |
| 318 | tEplObdSize m_Size; |
| 319 | char *m_pString; |
| 320 | } tEplObdVString; // 000D |
Daniel Krueger | 9d7164c | 2008-12-19 11:41:57 -0800 | [diff] [blame] | 321 | |
Greg Kroah-Hartman | e0ca059 | 2008-12-19 17:09:38 -0800 | [diff] [blame] | 322 | typedef struct { |
| 323 | tEplObdSize m_Size; |
| 324 | char *m_pDefString; // $$$ d.k. it is unused, so we could delete it |
| 325 | char *m_pString; |
Daniel Krueger | 9d7164c | 2008-12-19 11:41:57 -0800 | [diff] [blame] | 326 | |
| 327 | } tEplObdVStringDef; |
| 328 | |
Greg Kroah-Hartman | e0ca059 | 2008-12-19 17:09:38 -0800 | [diff] [blame] | 329 | typedef struct { |
| 330 | tEplObdSize m_Size; |
| 331 | BYTE *m_pDefString; // $$$ d.k. it is unused, so we could delete it |
| 332 | BYTE *m_pString; |
Daniel Krueger | 9d7164c | 2008-12-19 11:41:57 -0800 | [diff] [blame] | 333 | |
| 334 | } tEplObdOStringDef; |
| 335 | |
| 336 | //r.d. parameter struct for changing object size and/or pointer to data of Strings or Domains |
Greg Kroah-Hartman | e0ca059 | 2008-12-19 17:09:38 -0800 | [diff] [blame] | 337 | typedef struct { |
| 338 | tEplObdSize m_DownloadSize; // download size from SDO or APP |
| 339 | tEplObdSize m_ObjSize; // current object size from OD - should be changed from callback function |
| 340 | void *m_pData; // current object ptr from OD - should be changed from callback function |
Daniel Krueger | 9d7164c | 2008-12-19 11:41:57 -0800 | [diff] [blame] | 341 | |
Greg Kroah-Hartman | e0ca059 | 2008-12-19 17:09:38 -0800 | [diff] [blame] | 342 | } tEplObdVStringDomain; // 000D |
Daniel Krueger | 9d7164c | 2008-12-19 11:41:57 -0800 | [diff] [blame] | 343 | |
| 344 | // ============================================================================ |
| 345 | // types |
| 346 | // ============================================================================ |
| 347 | // ------------------------------------------------------------------------- |
| 348 | // subindexstruct |
| 349 | // ------------------------------------------------------------------------- |
| 350 | |
| 351 | // Change not the order for this struct!!! |
Greg Kroah-Hartman | e0ca059 | 2008-12-19 17:09:38 -0800 | [diff] [blame] | 352 | typedef struct { |
| 353 | unsigned int m_uiSubIndex; |
| 354 | tEplObdType m_Type; |
| 355 | tEplObdAccess m_Access; |
| 356 | void *m_pDefault; |
| 357 | void MEM *m_pCurrent; // points always to RAM |
Daniel Krueger | 9d7164c | 2008-12-19 11:41:57 -0800 | [diff] [blame] | 358 | |
| 359 | } tEplObdSubEntry; |
| 360 | |
| 361 | // r.d.: has always to be because new OBD-Macros for arrays |
Greg Kroah-Hartman | e0ca059 | 2008-12-19 17:09:38 -0800 | [diff] [blame] | 362 | typedef tEplObdSubEntry *tEplObdSubEntryPtr; |
Daniel Krueger | 9d7164c | 2008-12-19 11:41:57 -0800 | [diff] [blame] | 363 | |
| 364 | // ------------------------------------------------------------------------- |
| 365 | // callback function for objdictionary modul |
| 366 | // ------------------------------------------------------------------------- |
| 367 | |
| 368 | // parameters for callback function |
Greg Kroah-Hartman | e0ca059 | 2008-12-19 17:09:38 -0800 | [diff] [blame] | 369 | typedef struct { |
| 370 | tEplObdEvent m_ObdEvent; |
| 371 | unsigned int m_uiIndex; |
| 372 | unsigned int m_uiSubIndex; |
| 373 | void *m_pArg; |
| 374 | DWORD m_dwAbortCode; |
Daniel Krueger | 9d7164c | 2008-12-19 11:41:57 -0800 | [diff] [blame] | 375 | |
| 376 | } tEplObdCbParam; |
| 377 | |
| 378 | // define type for callback function: pParam_p points to tEplObdCbParam |
Greg Kroah-Hartman | e0ca059 | 2008-12-19 17:09:38 -0800 | [diff] [blame] | 379 | typedef tEplKernel(PUBLIC ROM * tEplObdCallback) (CCM_DECL_INSTANCE_HDL_ |
| 380 | tEplObdCbParam MEM * |
| 381 | pParam_p); |
Daniel Krueger | 9d7164c | 2008-12-19 11:41:57 -0800 | [diff] [blame] | 382 | |
| 383 | // do not change the order for this struct!!! |
| 384 | |
Greg Kroah-Hartman | e0ca059 | 2008-12-19 17:09:38 -0800 | [diff] [blame] | 385 | typedef struct { |
| 386 | unsigned int m_uiIndex; |
| 387 | tEplObdSubEntryPtr m_pSubIndex; |
| 388 | unsigned int m_uiCount; |
| 389 | tEplObdCallback m_fpCallback; // function is called back if object access |
Daniel Krueger | 9d7164c | 2008-12-19 11:41:57 -0800 | [diff] [blame] | 390 | |
| 391 | } tEplObdEntry; |
| 392 | |
Daniel Krueger | 9d7164c | 2008-12-19 11:41:57 -0800 | [diff] [blame] | 393 | // allways pointer |
Greg Kroah-Hartman | e0ca059 | 2008-12-19 17:09:38 -0800 | [diff] [blame] | 394 | typedef tEplObdEntry *tEplObdEntryPtr; |
Daniel Krueger | 9d7164c | 2008-12-19 11:41:57 -0800 | [diff] [blame] | 395 | |
| 396 | // ------------------------------------------------------------------------- |
| 397 | // structur to initialize OBD module |
| 398 | // ------------------------------------------------------------------------- |
| 399 | |
Greg Kroah-Hartman | e0ca059 | 2008-12-19 17:09:38 -0800 | [diff] [blame] | 400 | typedef struct { |
| 401 | tEplObdEntryPtr m_pPart; |
| 402 | tEplObdEntryPtr m_pManufacturerPart; |
| 403 | tEplObdEntryPtr m_pDevicePart; |
Daniel Krueger | 9d7164c | 2008-12-19 11:41:57 -0800 | [diff] [blame] | 404 | |
Greg Kroah-Hartman | e0ca059 | 2008-12-19 17:09:38 -0800 | [diff] [blame] | 405 | #if (defined (EPL_OBD_USER_OD) && (EPL_OBD_USER_OD != FALSE)) |
Daniel Krueger | 9d7164c | 2008-12-19 11:41:57 -0800 | [diff] [blame] | 406 | |
Greg Kroah-Hartman | e0ca059 | 2008-12-19 17:09:38 -0800 | [diff] [blame] | 407 | tEplObdEntryPtr m_pUserPart; |
Daniel Krueger | 9d7164c | 2008-12-19 11:41:57 -0800 | [diff] [blame] | 408 | |
Greg Kroah-Hartman | e0ca059 | 2008-12-19 17:09:38 -0800 | [diff] [blame] | 409 | #endif |
Daniel Krueger | 9d7164c | 2008-12-19 11:41:57 -0800 | [diff] [blame] | 410 | |
| 411 | } tEplObdInitParam; |
| 412 | |
Daniel Krueger | 9d7164c | 2008-12-19 11:41:57 -0800 | [diff] [blame] | 413 | // ------------------------------------------------------------------------- |
| 414 | // structur for parameters of STORE RESTORE command |
| 415 | // ------------------------------------------------------------------------- |
| 416 | |
Greg Kroah-Hartman | e0ca059 | 2008-12-19 17:09:38 -0800 | [diff] [blame] | 417 | typedef struct { |
| 418 | tEplObdCommand m_bCommand; |
| 419 | tEplObdPart m_bCurrentOdPart; |
| 420 | void MEM *m_pData; |
| 421 | tEplObdSize m_ObjSize; |
Daniel Krueger | 9d7164c | 2008-12-19 11:41:57 -0800 | [diff] [blame] | 422 | |
| 423 | } tEplObdCbStoreParam; |
| 424 | |
Greg Kroah-Hartman | e0ca059 | 2008-12-19 17:09:38 -0800 | [diff] [blame] | 425 | typedef tEplKernel(PUBLIC ROM * tInitTabEntryCallback) (void MEM * pTabEntry_p, |
| 426 | unsigned int |
| 427 | uiObjIndex_p); |
Daniel Krueger | 9d7164c | 2008-12-19 11:41:57 -0800 | [diff] [blame] | 428 | |
Greg Kroah-Hartman | e0ca059 | 2008-12-19 17:09:38 -0800 | [diff] [blame] | 429 | typedef tEplKernel(PUBLIC ROM * |
| 430 | tEplObdStoreLoadObjCallback) (CCM_DECL_INSTANCE_HDL_ |
| 431 | tEplObdCbStoreParam MEM * |
| 432 | pCbStoreParam_p); |
Daniel Krueger | 9d7164c | 2008-12-19 11:41:57 -0800 | [diff] [blame] | 433 | |
| 434 | // ------------------------------------------------------------------------- |
| 435 | // this stucture is used for parameters for function ObdInitModuleTab() |
| 436 | // ------------------------------------------------------------------------- |
Greg Kroah-Hartman | e0ca059 | 2008-12-19 17:09:38 -0800 | [diff] [blame] | 437 | typedef struct { |
| 438 | unsigned int m_uiLowerObjIndex; // lower limit of ObjIndex |
| 439 | unsigned int m_uiUpperObjIndex; // upper limit of ObjIndex |
| 440 | tInitTabEntryCallback m_fpInitTabEntry; // will be called if ObjIndex was found |
| 441 | void MEM *m_pTabBase; // base address of table |
| 442 | unsigned int m_uiEntrySize; // size of table entry // 25-feb-2005 r.d.: expansion from BYTE to WORD necessary for PDO bit mapping |
| 443 | unsigned int m_uiMaxEntries; // max. tabel entries |
Daniel Krueger | 9d7164c | 2008-12-19 11:41:57 -0800 | [diff] [blame] | 444 | |
| 445 | } tEplObdModulTabParam; |
| 446 | |
| 447 | //------------------------------------------------------------------- |
| 448 | // enum for function EplObdSetNodeId |
| 449 | //------------------------------------------------------------------- |
Greg Kroah-Hartman | e0ca059 | 2008-12-19 17:09:38 -0800 | [diff] [blame] | 450 | typedef enum { |
| 451 | kEplObdNodeIdUnknown = 0x00, // unknown how the node id was set |
| 452 | kEplObdNodeIdSoftware = 0x01, // node id set by software |
| 453 | kEplObdNodeIdHardware = 0x02 // node id set by hardware |
| 454 | } tEplObdNodeIdType; |
Daniel Krueger | 9d7164c | 2008-12-19 11:41:57 -0800 | [diff] [blame] | 455 | |
| 456 | // ============================================================================ |
| 457 | // global variables |
| 458 | // ============================================================================ |
| 459 | |
Daniel Krueger | 9d7164c | 2008-12-19 11:41:57 -0800 | [diff] [blame] | 460 | // ============================================================================ |
| 461 | // public functions |
| 462 | // ============================================================================ |
| 463 | |
Greg Kroah-Hartman | e0ca059 | 2008-12-19 17:09:38 -0800 | [diff] [blame] | 464 | #endif // #ifndef _EPLOBD_H_ |