CANopen library
Fork of CANopen_Node by
CANopen_Node.cpp@9:822973c25f99, 2016-07-11 (annotated)
- Committer:
- kkoichy
- Date:
- Mon Jul 11 11:02:12 2016 +0000
- Revision:
- 9:822973c25f99
- Parent:
- 5:e3ca883a96e7
Added comments and example programm
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
kkoichy | 4:edb55099ea3b | 1 | #include "CANopen_Node.h" |
kkoichy | 0:0f99b1d63054 | 2 | |
kkoichy | 0:0f99b1d63054 | 3 | |
kkoichy | 0:0f99b1d63054 | 4 | namespace mbed { |
kkoichy | 0:0f99b1d63054 | 5 | |
kkoichy | 9:822973c25f99 | 6 | CANopen_Node::CANopen_Node(uint8_t _id, CAN * _can): node_id(_id), can(_can) |
kkoichy | 0:0f99b1d63054 | 7 | { |
kkoichy | 0:0f99b1d63054 | 8 | |
kkoichy | 0:0f99b1d63054 | 9 | } |
kkoichy | 9:822973c25f99 | 10 | CANopen_Node::CANopen_Node(uint8_t _id, CAN * _can, int _baud): node_id(_id), can(_can) |
kkoichy | 0:0f99b1d63054 | 11 | { |
kkoichy | 0:0f99b1d63054 | 12 | can->frequency(_baud); |
kkoichy | 0:0f99b1d63054 | 13 | |
kkoichy | 0:0f99b1d63054 | 14 | } |
kkoichy | 5:e3ca883a96e7 | 15 | int CANopen_Node::Send_Initiate_SDO_Download(short index, short subindex, long data) |
kkoichy | 0:0f99b1d63054 | 16 | { |
kkoichy | 0:0f99b1d63054 | 17 | char _data[8]; |
kkoichy | 0:0f99b1d63054 | 18 | _data[0] = 0x22; |
kkoichy | 0:0f99b1d63054 | 19 | _data[1] = index; |
kkoichy | 0:0f99b1d63054 | 20 | _data[2] = index >> 8; |
kkoichy | 0:0f99b1d63054 | 21 | _data[3] = subindex; |
kkoichy | 0:0f99b1d63054 | 22 | _data[4] = data >> 0; |
kkoichy | 0:0f99b1d63054 | 23 | _data[5] = data >> 8; |
kkoichy | 0:0f99b1d63054 | 24 | _data[6] = data >> 16; |
kkoichy | 0:0f99b1d63054 | 25 | _data[7] = data >> 24; |
kkoichy | 0:0f99b1d63054 | 26 | return can->write(CANMessage(0x600 + node_id, _data, 8)); |
kkoichy | 0:0f99b1d63054 | 27 | |
kkoichy | 0:0f99b1d63054 | 28 | } |
kkoichy | 5:e3ca883a96e7 | 29 | int32_t CANopen_Node::Send_Initiate_SDO_Upload(short index, short subindex) |
kkoichy | 0:0f99b1d63054 | 30 | { |
kkoichy | 0:0f99b1d63054 | 31 | char _data[8]; |
kkoichy | 0:0f99b1d63054 | 32 | _data[0] = 0x60; |
kkoichy | 0:0f99b1d63054 | 33 | _data[1] = index; |
kkoichy | 0:0f99b1d63054 | 34 | _data[2] = index >> 8; |
kkoichy | 0:0f99b1d63054 | 35 | _data[3] = subindex; |
kkoichy | 0:0f99b1d63054 | 36 | _data[4] = 0; |
kkoichy | 0:0f99b1d63054 | 37 | _data[5] = 0; |
kkoichy | 0:0f99b1d63054 | 38 | _data[6] = 0; |
kkoichy | 0:0f99b1d63054 | 39 | _data[7] = 0; |
kkoichy | 1:a5e0bd1f1c93 | 40 | CANMessage _message(0x600 + node_id, _data, 8); |
kkoichy | 0:0f99b1d63054 | 41 | can->write(_message); |
kkoichy | 1:a5e0bd1f1c93 | 42 | can->read(_message); |
kkoichy | 0:0f99b1d63054 | 43 | return (_message.data[4] | _message.data[5] << 8 | _message.data[6] << 16 | _message.data[7] << 24); |
kkoichy | 0:0f99b1d63054 | 44 | |
kkoichy | 0:0f99b1d63054 | 45 | } |
kkoichy | 5:e3ca883a96e7 | 46 | short CANopen_Node::GetNodeID(void) |
kkoichy | 0:0f99b1d63054 | 47 | { |
kkoichy | 0:0f99b1d63054 | 48 | return node_id; |
kkoichy | 0:0f99b1d63054 | 49 | |
kkoichy | 0:0f99b1d63054 | 50 | } |
kkoichy | 5:e3ca883a96e7 | 51 | void CANopen_Node::SetNodeID(uint8_t _id) |
kkoichy | 0:0f99b1d63054 | 52 | { |
kkoichy | 0:0f99b1d63054 | 53 | node_id = _id; |
kkoichy | 0:0f99b1d63054 | 54 | |
kkoichy | 0:0f99b1d63054 | 55 | } |
kkoichy | 5:e3ca883a96e7 | 56 | |
kkoichy | 5:e3ca883a96e7 | 57 | void CANopen_Node::SetCan(CAN * _can) |
kkoichy | 5:e3ca883a96e7 | 58 | { |
kkoichy | 5:e3ca883a96e7 | 59 | can = _can; |
kkoichy | 5:e3ca883a96e7 | 60 | } |
kkoichy | 5:e3ca883a96e7 | 61 | |
kkoichy | 5:e3ca883a96e7 | 62 | CAN* CANopen_Node::GetCan(void) |
kkoichy | 5:e3ca883a96e7 | 63 | { |
kkoichy | 5:e3ca883a96e7 | 64 | return can; |
kkoichy | 5:e3ca883a96e7 | 65 | } |
kkoichy | 0:0f99b1d63054 | 66 | |
kkoichy | 0:0f99b1d63054 | 67 | |
kkoichy | 0:0f99b1d63054 | 68 | |
kkoichy | 0:0f99b1d63054 | 69 | |
kkoichy | 0:0f99b1d63054 | 70 | }//end namespace |