Pierre David / CANopen_Node

Dependents:   SDC21XX_Motor SDC21XX_Motor

Revision:
0:0f99b1d63054
Child:
1:a5e0bd1f1c93
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/CANopen.cpp	Mon May 30 11:28:35 2016 +0000
@@ -0,0 +1,67 @@
+#include "CANopen.h"
+
+
+namespace mbed {
+    
+        CANopen::CANopen(short _id, CAN * _can)
+        {
+            can = _can;
+            node_id = _id;
+            
+        }
+        CANopen::CANopen(short _id, CAN * _can, int _baud)
+        {
+            can = _can;
+            node_id = _id;
+            can->frequency(_baud);
+            
+        }
+        int CANopen::Send_Initiate_SDO_Download(short index, short subindex, long data)
+        {
+            char _data[8];
+            _data[0] = 0x22;
+            _data[1] = index;
+            _data[2] = index >> 8;
+            _data[3] = subindex;
+            _data[4] = data >> 0;
+            _data[5] = data >> 8;
+            _data[6] = data >> 16;
+            _data[7] = data >> 24;
+            return can->write(CANMessage(0x600 + node_id, _data, 8));
+            
+        }
+        int32_t CANopen::Send_Initiate_SDO_Upload(short index, short subindex)
+        {
+            CANMessage _message;
+            char _data[8];
+            _data[0] = 0x60;
+            _data[1] = index;
+            _data[2] = index >> 8;
+            _data[3] = subindex;
+            _data[4] = 0;
+            _data[5] = 0;
+            _data[6] = 0;
+            _data[7] = 0;
+            &_message.data = _data;
+            message.len = 8;
+            message.id = 0x600 + node_id;
+            can->write(_message);
+            can->read(&_message);
+            return (_message.data[4] | _message.data[5] << 8 | _message.data[6] << 16 | _message.data[7] << 24);
+            
+        }
+        short CANopen::GetNodeID(void)
+        {
+            return node_id;
+            
+        }
+        void CANopen::SetNodeID(short _id)
+        {
+            node_id = _id;
+            
+        }
+
+
+
+    
+}//end namespace
\ No newline at end of file