I am no longer actively working on the ppCANOpen library, however, I want to publish this project so that anyone who wants to pick up any of the pieces can have a good example. This is a a project I was working on using the ppCANOpen library. It has a pretty in deep use of the object dictionary structure. And a number of functions to control high voltage pinball drivers, if you're into that sort of thing.
Dependencies: CANnucleo mbed ppCANOpen
Application/include/Node_pin0808.h@10:ec59d628ebdc, 2016-03-19 (annotated)
- Committer:
- ptpaterson
- Date:
- Sat Mar 19 01:44:35 2016 +0000
- Revision:
- 10:ec59d628ebdc
Final Submission (probs)
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
ptpaterson | 10:ec59d628ebdc | 1 | /** |
ptpaterson | 10:ec59d628ebdc | 2 | ****************************************************************************** |
ptpaterson | 10:ec59d628ebdc | 3 | * @file |
ptpaterson | 10:ec59d628ebdc | 4 | * @author Paul Paterson |
ptpaterson | 10:ec59d628ebdc | 5 | * @version |
ptpaterson | 10:ec59d628ebdc | 6 | * @date 2015-12-14 |
ptpaterson | 10:ec59d628ebdc | 7 | * @brief CANOpen implementation library |
ptpaterson | 10:ec59d628ebdc | 8 | ****************************************************************************** |
ptpaterson | 10:ec59d628ebdc | 9 | * @attention |
ptpaterson | 10:ec59d628ebdc | 10 | * |
ptpaterson | 10:ec59d628ebdc | 11 | * <h2><center>© COPYRIGHT(c) 2015 Paul Paterson |
ptpaterson | 10:ec59d628ebdc | 12 | * |
ptpaterson | 10:ec59d628ebdc | 13 | * All rights reserved. |
ptpaterson | 10:ec59d628ebdc | 14 | |
ptpaterson | 10:ec59d628ebdc | 15 | This program is free software: you can redistribute it and/or modify |
ptpaterson | 10:ec59d628ebdc | 16 | it under the terms of the GNU General Public License as published by |
ptpaterson | 10:ec59d628ebdc | 17 | the Free Software Foundation, either version 3 of the License, or |
ptpaterson | 10:ec59d628ebdc | 18 | (at your option) any later version. |
ptpaterson | 10:ec59d628ebdc | 19 | |
ptpaterson | 10:ec59d628ebdc | 20 | This program is distributed in the hope that it will be useful, |
ptpaterson | 10:ec59d628ebdc | 21 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
ptpaterson | 10:ec59d628ebdc | 22 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
ptpaterson | 10:ec59d628ebdc | 23 | GNU General Public License for more details. |
ptpaterson | 10:ec59d628ebdc | 24 | |
ptpaterson | 10:ec59d628ebdc | 25 | You should have received a copy of the GNU General Public License |
ptpaterson | 10:ec59d628ebdc | 26 | along with this program. If not, see <http://www.gnu.org/licenses/>. |
ptpaterson | 10:ec59d628ebdc | 27 | */ |
ptpaterson | 10:ec59d628ebdc | 28 | |
ptpaterson | 10:ec59d628ebdc | 29 | #ifndef PPCAN_NODE_PIN0808_H |
ptpaterson | 10:ec59d628ebdc | 30 | #define PPCAN_NODE_PIN0808_H |
ptpaterson | 10:ec59d628ebdc | 31 | |
ptpaterson | 10:ec59d628ebdc | 32 | #include "Node.h" |
ptpaterson | 10:ec59d628ebdc | 33 | |
ptpaterson | 10:ec59d628ebdc | 34 | namespace ppCANOpen |
ptpaterson | 10:ec59d628ebdc | 35 | { |
ptpaterson | 10:ec59d628ebdc | 36 | |
ptpaterson | 10:ec59d628ebdc | 37 | /** Custom Object Dictionary for pinball io_0808 device. |
ptpaterson | 10:ec59d628ebdc | 38 | */ |
ptpaterson | 10:ec59d628ebdc | 39 | class Node_pin0808 : public Node |
ptpaterson | 10:ec59d628ebdc | 40 | { |
ptpaterson | 10:ec59d628ebdc | 41 | |
ptpaterson | 10:ec59d628ebdc | 42 | public: |
ptpaterson | 10:ec59d628ebdc | 43 | Node_pin0808(int id, ServiceProvider * provider, int bLoop = 0); |
ptpaterson | 10:ec59d628ebdc | 44 | virtual ~Node_pin0808(void); |
ptpaterson | 10:ec59d628ebdc | 45 | |
ptpaterson | 10:ec59d628ebdc | 46 | private: |
ptpaterson | 10:ec59d628ebdc | 47 | /* constants */ |
ptpaterson | 10:ec59d628ebdc | 48 | /** milliseconds necessary to debounce all input */ |
ptpaterson | 10:ec59d628ebdc | 49 | static const uint8_t DEBOUNCE_TIME = 3; |
ptpaterson | 10:ec59d628ebdc | 50 | |
ptpaterson | 10:ec59d628ebdc | 51 | /* IO details */ |
ptpaterson | 10:ec59d628ebdc | 52 | uint8_t prevInputBuffers[1]; |
ptpaterson | 10:ec59d628ebdc | 53 | uint8_t inputDebounce[8]; |
ptpaterson | 10:ec59d628ebdc | 54 | |
ptpaterson | 10:ec59d628ebdc | 55 | uint8_t prevOutputBuffers[1]; |
ptpaterson | 10:ec59d628ebdc | 56 | int scheduleIndexTime; |
ptpaterson | 10:ec59d628ebdc | 57 | |
ptpaterson | 10:ec59d628ebdc | 58 | /************************************************************************** |
ptpaterson | 10:ec59d628ebdc | 59 | * Implementation Overrides |
ptpaterson | 10:ec59d628ebdc | 60 | ************************************************************************** |
ptpaterson | 10:ec59d628ebdc | 61 | */ |
ptpaterson | 10:ec59d628ebdc | 62 | |
ptpaterson | 10:ec59d628ebdc | 63 | /* Application run */ |
ptpaterson | 10:ec59d628ebdc | 64 | virtual void OnFixedUpdate(void); |
ptpaterson | 10:ec59d628ebdc | 65 | virtual void OnUpdate(void); |
ptpaterson | 10:ec59d628ebdc | 66 | |
ptpaterson | 10:ec59d628ebdc | 67 | /* SYNC */ |
ptpaterson | 10:ec59d628ebdc | 68 | virtual void OnSync (uint8_t counter); |
ptpaterson | 10:ec59d628ebdc | 69 | |
ptpaterson | 10:ec59d628ebdc | 70 | /* NMT Control */ |
ptpaterson | 10:ec59d628ebdc | 71 | virtual void OnInitialize (void); |
ptpaterson | 10:ec59d628ebdc | 72 | virtual void OnPreoperational (void); |
ptpaterson | 10:ec59d628ebdc | 73 | virtual void OnOperational (void); |
ptpaterson | 10:ec59d628ebdc | 74 | virtual void OnStopped (void); |
ptpaterson | 10:ec59d628ebdc | 75 | |
ptpaterson | 10:ec59d628ebdc | 76 | |
ptpaterson | 10:ec59d628ebdc | 77 | /************************************************************************** |
ptpaterson | 10:ec59d628ebdc | 78 | * Object Dictionary |
ptpaterson | 10:ec59d628ebdc | 79 | ************************************************************************** |
ptpaterson | 10:ec59d628ebdc | 80 | */ |
ptpaterson | 10:ec59d628ebdc | 81 | |
ptpaterson | 10:ec59d628ebdc | 82 | /* Communication --------------------------------------------------------*/ |
ptpaterson | 10:ec59d628ebdc | 83 | /* index 0x1200 : SDO Server */ |
ptpaterson | 10:ec59d628ebdc | 84 | ObjectData Obj1200; |
ptpaterson | 10:ec59d628ebdc | 85 | SubIndexSize Obj1200_highestSubIndex; |
ptpaterson | 10:ec59d628ebdc | 86 | uint32_t Obj1200_ReceiveCobId; |
ptpaterson | 10:ec59d628ebdc | 87 | uint32_t Obj1200_TransmitCobId; |
ptpaterson | 10:ec59d628ebdc | 88 | EntryData Obj1200_entries[3]; |
ptpaterson | 10:ec59d628ebdc | 89 | |
ptpaterson | 10:ec59d628ebdc | 90 | /* index 0x1400 : Receive PDO 1 Parameter (Write Digital Output) */ |
ptpaterson | 10:ec59d628ebdc | 91 | ObjectData Obj1400; |
ptpaterson | 10:ec59d628ebdc | 92 | SubIndexSize Obj1400_highestSubIndex; |
ptpaterson | 10:ec59d628ebdc | 93 | uint32_t Obj1400_CobId; |
ptpaterson | 10:ec59d628ebdc | 94 | uint8_t Obj1400_TransmissionType; |
ptpaterson | 10:ec59d628ebdc | 95 | uint16_t Obj1400_InhibitTime; |
ptpaterson | 10:ec59d628ebdc | 96 | uint8_t Obj1400_CompatibilityEntry; |
ptpaterson | 10:ec59d628ebdc | 97 | uint16_t Obj1400_EventTimer; |
ptpaterson | 10:ec59d628ebdc | 98 | EntryData Obj1400_entries[6]; |
ptpaterson | 10:ec59d628ebdc | 99 | |
ptpaterson | 10:ec59d628ebdc | 100 | /* index 0x1401 : Receive PDO 2 Parameter (Write Output Configuration) */ |
ptpaterson | 10:ec59d628ebdc | 101 | ObjectData Obj1401; |
ptpaterson | 10:ec59d628ebdc | 102 | SubIndexSize Obj1401_highestSubIndex; |
ptpaterson | 10:ec59d628ebdc | 103 | uint32_t Obj1401_CobId; |
ptpaterson | 10:ec59d628ebdc | 104 | uint8_t Obj1401_TransmissionType; |
ptpaterson | 10:ec59d628ebdc | 105 | uint16_t Obj1401_InhibitTime; |
ptpaterson | 10:ec59d628ebdc | 106 | uint8_t Obj1401_CompatibilityEntry; |
ptpaterson | 10:ec59d628ebdc | 107 | uint16_t Obj1401_EventTimer; |
ptpaterson | 10:ec59d628ebdc | 108 | EntryData Obj1401_entries[6]; |
ptpaterson | 10:ec59d628ebdc | 109 | |
ptpaterson | 10:ec59d628ebdc | 110 | /* index 0x1402 : Receive PDO 3 Parameter (Write/Clear Autotrigger Rule) */ |
ptpaterson | 10:ec59d628ebdc | 111 | ObjectData Obj1402; |
ptpaterson | 10:ec59d628ebdc | 112 | SubIndexSize Obj1402_highestSubIndex; |
ptpaterson | 10:ec59d628ebdc | 113 | uint32_t Obj1402_CobId; |
ptpaterson | 10:ec59d628ebdc | 114 | uint8_t Obj1402_TransmissionType; |
ptpaterson | 10:ec59d628ebdc | 115 | uint16_t Obj1402_InhibitTime; |
ptpaterson | 10:ec59d628ebdc | 116 | uint8_t Obj1402_CompatibilityEntry; |
ptpaterson | 10:ec59d628ebdc | 117 | uint16_t Obj1402_EventTimer; |
ptpaterson | 10:ec59d628ebdc | 118 | EntryData Obj1402_entries[6]; |
ptpaterson | 10:ec59d628ebdc | 119 | |
ptpaterson | 10:ec59d628ebdc | 120 | /* index 0x1403 : Receive PDO 5 Parameter (input changes) */ |
ptpaterson | 10:ec59d628ebdc | 121 | ObjectData Obj1403; |
ptpaterson | 10:ec59d628ebdc | 122 | SubIndexSize Obj1403_highestSubIndex; |
ptpaterson | 10:ec59d628ebdc | 123 | uint32_t Obj1403_CobId; |
ptpaterson | 10:ec59d628ebdc | 124 | uint8_t Obj1403_TransmissionType; |
ptpaterson | 10:ec59d628ebdc | 125 | uint16_t Obj1403_InhibitTime; |
ptpaterson | 10:ec59d628ebdc | 126 | uint8_t Obj1403_CompatibilityEntry; |
ptpaterson | 10:ec59d628ebdc | 127 | uint16_t Obj1403_EventTimer; |
ptpaterson | 10:ec59d628ebdc | 128 | EntryData Obj1403_entries[6]; |
ptpaterson | 10:ec59d628ebdc | 129 | |
ptpaterson | 10:ec59d628ebdc | 130 | /* index 0x1600 : Receive PDO 1 Mapping */ |
ptpaterson | 10:ec59d628ebdc | 131 | ObjectData Obj1600; |
ptpaterson | 10:ec59d628ebdc | 132 | SubIndexSize Obj1600_highestSubIndex; |
ptpaterson | 10:ec59d628ebdc | 133 | uint32_t Obj1600_Map; |
ptpaterson | 10:ec59d628ebdc | 134 | EntryData Obj1600_entries[2]; |
ptpaterson | 10:ec59d628ebdc | 135 | |
ptpaterson | 10:ec59d628ebdc | 136 | /* index 0x1601 : Transmit PDO 1 Mapping */ |
ptpaterson | 10:ec59d628ebdc | 137 | ObjectData Obj1601; |
ptpaterson | 10:ec59d628ebdc | 138 | SubIndexSize Obj1601_highestSubIndex; |
ptpaterson | 10:ec59d628ebdc | 139 | uint32_t Obj1601_Map; |
ptpaterson | 10:ec59d628ebdc | 140 | EntryData Obj1601_entries[2]; |
ptpaterson | 10:ec59d628ebdc | 141 | |
ptpaterson | 10:ec59d628ebdc | 142 | /* index 0x1602 : Transmit PDO 1 Mapping */ |
ptpaterson | 10:ec59d628ebdc | 143 | ObjectData Obj1602; |
ptpaterson | 10:ec59d628ebdc | 144 | SubIndexSize Obj1602_highestSubIndex; |
ptpaterson | 10:ec59d628ebdc | 145 | uint32_t Obj1602_Map; |
ptpaterson | 10:ec59d628ebdc | 146 | EntryData Obj1602_entries[2]; |
ptpaterson | 10:ec59d628ebdc | 147 | |
ptpaterson | 10:ec59d628ebdc | 148 | /* index 0x1603 : Receive PDO 2 Mapping */ |
ptpaterson | 10:ec59d628ebdc | 149 | ObjectData Obj1603; |
ptpaterson | 10:ec59d628ebdc | 150 | SubIndexSize Obj1603_highestSubIndex; |
ptpaterson | 10:ec59d628ebdc | 151 | uint32_t Obj1603_Map; |
ptpaterson | 10:ec59d628ebdc | 152 | EntryData Obj1603_entries[2]; |
ptpaterson | 10:ec59d628ebdc | 153 | |
ptpaterson | 10:ec59d628ebdc | 154 | |
ptpaterson | 10:ec59d628ebdc | 155 | /* index 0x1800 : Transmit PDO 1 Parameter */ |
ptpaterson | 10:ec59d628ebdc | 156 | ObjectData Obj1800; |
ptpaterson | 10:ec59d628ebdc | 157 | SubIndexSize Obj1800_highestSubIndex; |
ptpaterson | 10:ec59d628ebdc | 158 | uint32_t Obj1800_CobId; |
ptpaterson | 10:ec59d628ebdc | 159 | uint8_t Obj1800_TransmissionType; |
ptpaterson | 10:ec59d628ebdc | 160 | uint16_t Obj1800_InhibitTime; |
ptpaterson | 10:ec59d628ebdc | 161 | uint8_t Obj1800_CompatibilityEntry; |
ptpaterson | 10:ec59d628ebdc | 162 | uint16_t Obj1800_EventTimer; |
ptpaterson | 10:ec59d628ebdc | 163 | EntryData Obj1800_entries[6]; |
ptpaterson | 10:ec59d628ebdc | 164 | |
ptpaterson | 10:ec59d628ebdc | 165 | /* index 0x1A00 : Transmit PDO 1 Mapping */ |
ptpaterson | 10:ec59d628ebdc | 166 | ObjectData Obj1A00; |
ptpaterson | 10:ec59d628ebdc | 167 | SubIndexSize Obj1A00_highestSubIndex; |
ptpaterson | 10:ec59d628ebdc | 168 | uint32_t Obj1A00_MapInput; |
ptpaterson | 10:ec59d628ebdc | 169 | uint32_t Obj1A00_MapVoid16; |
ptpaterson | 10:ec59d628ebdc | 170 | uint32_t Obj1A00_MapChange; |
ptpaterson | 10:ec59d628ebdc | 171 | uint32_t Obj1A00_MapSourceId; |
ptpaterson | 10:ec59d628ebdc | 172 | EntryData Obj1A00_entries[6]; |
ptpaterson | 10:ec59d628ebdc | 173 | |
ptpaterson | 10:ec59d628ebdc | 174 | |
ptpaterson | 10:ec59d628ebdc | 175 | /* Manufacturer Specific ------------------------------------------------*/ |
ptpaterson | 10:ec59d628ebdc | 176 | /* index 0x2001 : Pin Output Configurations */ |
ptpaterson | 10:ec59d628ebdc | 177 | struct OutputConfiguration { |
ptpaterson | 10:ec59d628ebdc | 178 | static const uint8_t PULSE = 0x01; |
ptpaterson | 10:ec59d628ebdc | 179 | static const uint8_t PATTER = 0x02; |
ptpaterson | 10:ec59d628ebdc | 180 | static const uint8_t PULSED_PATTER = 0x04; |
ptpaterson | 10:ec59d628ebdc | 181 | //static const uint8_t SCHEDULED = 0x08; |
ptpaterson | 10:ec59d628ebdc | 182 | |
ptpaterson | 10:ec59d628ebdc | 183 | uint8_t type; |
ptpaterson | 10:ec59d628ebdc | 184 | uint8_t pulse_ms; |
ptpaterson | 10:ec59d628ebdc | 185 | uint8_t pwm_on; |
ptpaterson | 10:ec59d628ebdc | 186 | uint8_t pwm_off; |
ptpaterson | 10:ec59d628ebdc | 187 | uint32_t writeData; |
ptpaterson | 10:ec59d628ebdc | 188 | }; |
ptpaterson | 10:ec59d628ebdc | 189 | |
ptpaterson | 10:ec59d628ebdc | 190 | ObjectData Obj2001; |
ptpaterson | 10:ec59d628ebdc | 191 | SubIndexSize Obj2001_highestSubIndex; |
ptpaterson | 10:ec59d628ebdc | 192 | OutputConfiguration writeOutputConfig; |
ptpaterson | 10:ec59d628ebdc | 193 | OutputConfiguration outputConfigs[8]; |
ptpaterson | 10:ec59d628ebdc | 194 | OutputConfiguration outputTimers[8]; /* not actually part of dictionary */ |
ptpaterson | 10:ec59d628ebdc | 195 | EntryData Obj2001_entries[10]; |
ptpaterson | 10:ec59d628ebdc | 196 | |
ptpaterson | 10:ec59d628ebdc | 197 | /* index 0x2002 : Output Schedule Configuration */ |
ptpaterson | 10:ec59d628ebdc | 198 | ObjectData Obj2002; |
ptpaterson | 10:ec59d628ebdc | 199 | SubIndexSize Obj2002_highestSubIndex; |
ptpaterson | 10:ec59d628ebdc | 200 | uint32_t scheduleConfig; |
ptpaterson | 10:ec59d628ebdc | 201 | uint32_t schedules[8]; |
ptpaterson | 10:ec59d628ebdc | 202 | EntryData Obj2002_entries[10]; |
ptpaterson | 10:ec59d628ebdc | 203 | |
ptpaterson | 10:ec59d628ebdc | 204 | /* index 0x2100 : Input change data */ |
ptpaterson | 10:ec59d628ebdc | 205 | ObjectData Obj2100; |
ptpaterson | 10:ec59d628ebdc | 206 | SubIndexSize Obj2100_highestSubIndex; |
ptpaterson | 10:ec59d628ebdc | 207 | uint8_t inputChangeMask[1]; |
ptpaterson | 10:ec59d628ebdc | 208 | /* uint8_t nodeId; */ |
ptpaterson | 10:ec59d628ebdc | 209 | EntryData Obj2100_entries[3]; |
ptpaterson | 10:ec59d628ebdc | 210 | |
ptpaterson | 10:ec59d628ebdc | 211 | /* index 0x2200 : Autotrigger Rules */ |
ptpaterson | 10:ec59d628ebdc | 212 | struct AutotriggerRule { |
ptpaterson | 10:ec59d628ebdc | 213 | uint8_t sourceId; |
ptpaterson | 10:ec59d628ebdc | 214 | uint8_t input; /* 0-4: inputNum (0-23) |
ptpaterson | 10:ec59d628ebdc | 215 | 5-7: 0 on inactive |
ptpaterson | 10:ec59d628ebdc | 216 | 1 on active |
ptpaterson | 10:ec59d628ebdc | 217 | 2 on any change |
ptpaterson | 10:ec59d628ebdc | 218 | 3 ??? |
ptpaterson | 10:ec59d628ebdc | 219 | */ |
ptpaterson | 10:ec59d628ebdc | 220 | uint8_t setMask[3]; |
ptpaterson | 10:ec59d628ebdc | 221 | uint8_t clearMask[3]; |
ptpaterson | 10:ec59d628ebdc | 222 | }; |
ptpaterson | 10:ec59d628ebdc | 223 | |
ptpaterson | 10:ec59d628ebdc | 224 | struct AutotriggerMessage { |
ptpaterson | 10:ec59d628ebdc | 225 | uint8_t input[3]; |
ptpaterson | 10:ec59d628ebdc | 226 | uint8_t change[3]; |
ptpaterson | 10:ec59d628ebdc | 227 | uint8_t sourceId; |
ptpaterson | 10:ec59d628ebdc | 228 | }; |
ptpaterson | 10:ec59d628ebdc | 229 | |
ptpaterson | 10:ec59d628ebdc | 230 | ObjectData Obj2200; |
ptpaterson | 10:ec59d628ebdc | 231 | SubIndexSize Obj2200_highestSubIndex; |
ptpaterson | 10:ec59d628ebdc | 232 | AutotriggerRule writeRule; |
ptpaterson | 10:ec59d628ebdc | 233 | AutotriggerMessage autotriggerMessage; |
ptpaterson | 10:ec59d628ebdc | 234 | AutotriggerRule rules[24]; |
ptpaterson | 10:ec59d628ebdc | 235 | EntryData Obj2200_entries[27]; |
ptpaterson | 10:ec59d628ebdc | 236 | |
ptpaterson | 10:ec59d628ebdc | 237 | |
ptpaterson | 10:ec59d628ebdc | 238 | /* Device Specific ------------------------------------------------------*/ |
ptpaterson | 10:ec59d628ebdc | 239 | /* index 0x6000 : Mapped variable "inputs" */ |
ptpaterson | 10:ec59d628ebdc | 240 | ObjectData Obj6000; |
ptpaterson | 10:ec59d628ebdc | 241 | SubIndexSize Obj6000_highestSubIndex; |
ptpaterson | 10:ec59d628ebdc | 242 | uint8_t readInputBuffers[1]; |
ptpaterson | 10:ec59d628ebdc | 243 | EntryData Obj6000_entries[2]; |
ptpaterson | 10:ec59d628ebdc | 244 | |
ptpaterson | 10:ec59d628ebdc | 245 | /* index 0x6005 : Global Input Interrupt Enable */ |
ptpaterson | 10:ec59d628ebdc | 246 | ObjectData Obj6005; |
ptpaterson | 10:ec59d628ebdc | 247 | SubIndexSize Obj6005_highestSubIndex; |
ptpaterson | 10:ec59d628ebdc | 248 | uint8_t bInputInterruptEnable; |
ptpaterson | 10:ec59d628ebdc | 249 | EntryData Obj6005_entries[2]; |
ptpaterson | 10:ec59d628ebdc | 250 | |
ptpaterson | 10:ec59d628ebdc | 251 | /* index 0x6006 : Any Change Interrupt Mask */ |
ptpaterson | 10:ec59d628ebdc | 252 | ObjectData Obj6006; |
ptpaterson | 10:ec59d628ebdc | 253 | SubIndexSize Obj6006_highestSubIndex; |
ptpaterson | 10:ec59d628ebdc | 254 | uint8_t inputInterruptMask[1]; |
ptpaterson | 10:ec59d628ebdc | 255 | EntryData Obj6006_entries[2]; |
ptpaterson | 10:ec59d628ebdc | 256 | |
ptpaterson | 10:ec59d628ebdc | 257 | /* index 0x6200 : Mapped variable "outputs" */ |
ptpaterson | 10:ec59d628ebdc | 258 | ObjectData Obj6200; |
ptpaterson | 10:ec59d628ebdc | 259 | SubIndexSize Obj6200_highestSubIndex; |
ptpaterson | 10:ec59d628ebdc | 260 | uint8_t writeOutputBuffers[1]; |
ptpaterson | 10:ec59d628ebdc | 261 | EntryData Obj6200_entries[2]; |
ptpaterson | 10:ec59d628ebdc | 262 | |
ptpaterson | 10:ec59d628ebdc | 263 | /* Scan Method */ |
ptpaterson | 10:ec59d628ebdc | 264 | virtual ObjectData * ScanIndex(IndexSize index); |
ptpaterson | 10:ec59d628ebdc | 265 | }; |
ptpaterson | 10:ec59d628ebdc | 266 | |
ptpaterson | 10:ec59d628ebdc | 267 | } /* namespace ppCANOpen */ |
ptpaterson | 10:ec59d628ebdc | 268 | |
ptpaterson | 10:ec59d628ebdc | 269 | #endif // PPCAN_NODE_PIN0808_H |