Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: DataControl
Diff: ikarashiCAN.cpp
- Revision:
- 0:b9571508f055
- Child:
- 2:05d0790d0fc6
diff -r 000000000000 -r b9571508f055 ikarashiCAN.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/ikarashiCAN.cpp Tue Aug 23 16:59:47 2022 +0000
@@ -0,0 +1,115 @@
+
+#include "ikarashiCAN.h"
+
+ikarashiCAN::ikarashiCAN(PinName rd, PinName td, int msgID, int frequency):
+ can(rd, td, frequency), msg(msgID, reciever, 4)
+{
+ _msgID = msgID;
+ sended_msgID = 0;
+ can_s = 0;
+ can_r = 0;
+ _can_data = 0;
+}
+
+ikarashiCAN::ikarashiCAN(PinName rd, PinName td, int msgID):
+ can(rd, td, 50000), msg(msgID, reciever, 4)
+{
+ _msgID = msgID;
+ sended_msgID = 0;
+ can_s = 0;
+ can_r = 0;
+ _can_data = 0;
+}
+
+//----------------------bit controll------------------------
+int ikarashiCAN::getData()
+{
+ return dataCombine(msg.data, msg.len);
+}
+//--------------------------------------------------------//
+
+
+
+//---attach function---------------------------------------//
+void ikarashiCAN::send()
+{
+ if(can.write(CANMessage(_msgID, sender, separated_data_size))) {
+ can_s = 1;
+ } else {
+ can_s = 0;
+ }
+}
+
+void ikarashiCAN::recieve()
+{
+ if(can.read(msg)) {
+ can_r = 1;
+ }else{
+ can_r = 0;
+ }
+}
+//--------------------------------------------------------//
+
+
+
+//---attach-----------------------------------------------//
+void ikarashiCAN::startSend(float second)
+{
+ can_ticker.attach(this, &ikarashiCAN::send, second);
+}
+
+void ikarashiCAN::startRecieve()
+{
+ can_ticker.attach(this, &ikarashiCAN::recieve, CAN::TxIrq);
+}
+//--------------------------------------------------------//
+
+
+int ikarashiCAN::simpleGetData(int _id){
+ if(_id == msg.id && can_r){
+ _can_data = getData();
+ return getData();
+ }else{
+ return _can_data;
+ }
+}
+
+
+bool ikarashiCAN::checkSender()
+{
+ return can_s;
+}
+
+bool ikarashiCAN::checkReciever()
+{
+ return can_r;
+}
+
+int ikarashiCAN::recievedCanID(){
+ if(can_r){
+ return msg.id;
+ }else{
+ return -1;
+ }
+}
+
+int ikarashiCAN::myCanID(){
+ return _msgID;
+}
+
+int ikarashiCAN::CanLen(){
+ return msg.len;
+}
+
+void ikarashiCAN::sender_reset()
+{
+ for(int i=0; i<4; i++) sender[i] = 0;
+}
+
+void ikarashiCAN::reciever_reset()
+{
+ for(int i=0; i<4; i++) reciever[i] = 0;
+}
+
+
+