Abe Takumi / myCAN_logger

Dependents:   EM_Logger EM_Mission

Files at this revision

API Documentation at this revision

Comitter:
YSB
Date:
Sun Jul 21 07:02:45 2013 +0000
Child:
1:0732a5dec208
Child:
3:3804d83c7377
Child:
4:ef1cc9f2945e
Commit message:
latest version

Changed in this revision

IDDATA.h Show annotated file Show diff for this revision Revisions of this file
myCAN.cpp Show annotated file Show diff for this revision Revisions of this file
myCAN.h Show annotated file Show diff for this revision Revisions of this file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/IDDATA.h	Sun Jul 21 07:02:45 2013 +0000
@@ -0,0 +1,15 @@
+#define CAN_BAUD 400000
+
+#define MISSION 0
+#define LOGGER 1
+
+#define GPS_TIME 0x01
+#define GPS_LAT_1 0x02
+#define GPS_LAT_2 0x03
+#define GPS_LON_1 0x04
+#define GPS_LON_2 0x05
+#define SCP1000_PRES_TEMP 0x06
+#define ADXL345_XYZ 0x07
+#define ITG3200_XYZ 0x08
+
+#define MISSION_STATUS 0x00
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/myCAN.cpp	Sun Jul 21 07:02:45 2013 +0000
@@ -0,0 +1,177 @@
+#include "myCAN.h"
+#include "IDDATA.h"
+
+myCAN::myCAN(PinName rd,PinName td) : CAN(rd,td)
+{
+    frequency(CAN_BAUD);
+    attach(this, &myCAN::rxHandler);
+    
+    time[0]='0';
+    time[1]='0';
+    time[2]=':';
+    time[3]='0';
+    time[4]='0';
+    time[5]=':';
+    time[6]='0';
+    time[7]='0';
+    time[8]='\0';
+    
+    latitude[0]='0';
+    latitude[1]='0';
+    latitude[2]='0';
+    latitude[3]='0';
+    latitude[4]=',';
+    latitude[5]='0';
+    latitude[6]='0';
+    latitude[7]='0';
+    latitude[8]='0';
+    latitude[9]='\0';
+    
+    longitude[0]='0';
+    longitude[1]='0';
+    longitude[2]='0';
+    longitude[3]='0';
+    longitude[4]='0';
+    longitude[5]=',';
+    longitude[6]='0';
+    longitude[7]='0';
+    longitude[8]='0';
+    longitude[9]='0';
+    longitude[10]='\0';
+}
+
+void myCAN::send(char user)
+{
+    if(user == MISSION) {
+        write(CANMessage(MISSION_STATUS,CANdata[MISSION_STATUS]));
+    } else if(user == LOGGER) {
+        write(CANMessage(GPS_TIME,CANdata[GPS_TIME]));
+        write(CANMessage(GPS_LAT_1,CANdata[GPS_LAT_1]));
+        write(CANMessage(GPS_LAT_2,CANdata[GPS_LAT_2]));
+        write(CANMessage(GPS_LON_1,CANdata[GPS_LON_1]));
+        write(CANMessage(GPS_LON_2,CANdata[GPS_LON_2]));
+        write(CANMessage(SCP1000_PRES_TEMP,CANdata[SCP1000_PRES_TEMP]));
+        write(CANMessage(ADXL345_XYZ,CANdata[ADXL345_XYZ]));
+        write(CANMessage(ITG3200_XYZ,CANdata[ITG3200_XYZ]));
+    } else {}
+}
+
+void myCAN::rxHandler(void)
+{
+    if(read(msg)){
+        for(int i=0; i<8; i++) {
+            CANdata[msg.id][i]=msg.data[i];
+        }
+    }
+}
+
+void myCAN::make_logger_senddata(char* time,int NoS,char* latitude,char* longitude,int a_z,int temp,int pres)
+{
+    for(int i=0; i<8; i++) {
+        CANdata[GPS_TIME][i] = time[i];
+    }
+    CANdata[GPS_LAT_2][1] = NoS;
+
+    for(int i=0; i<8; i++) {
+        CANdata[GPS_LAT_1][i] = latitude[i];
+    }
+    for(int i=0; i<1; i++) {
+        CANdata[GPS_LAT_2][i] = latitude[i+8];
+    }
+
+    for(int i=0; i<8; i++) {
+        CANdata[GPS_LON_1][i] = longitude[i];
+    }
+    for(int i=0; i<2; i++) {
+        CANdata[GPS_LON_2][i] = longitude[i+8];
+    }
+
+    CANdata[SCP1000_PRES_TEMP][0]=(char)((temp & 0xF0)>>4);
+    CANdata[SCP1000_PRES_TEMP][1]=(char)(temp & 0x0F);
+    CANdata[SCP1000_PRES_TEMP][2]=(char)((pres & 0xF0)>>4);
+    CANdata[SCP1000_PRES_TEMP][3]=(char)(pres & 0x0F);
+    
+    CANdata[GPS_LAT_2][2] = a_z;
+}
+
+char* myCAN::get_time(void)
+{
+    for(int i=0; i<8; i++) {
+        time[i] = CANdata[GPS_TIME][i];
+    }
+    return time;
+}
+
+char* myCAN::get_latitude(void)
+{
+    for(int i=0; i<8; i++) {
+        latitude[i] = CANdata[GPS_LAT_1][i];
+    }
+    for(int i=0; i<1; i++) {
+        latitude[i+8] = CANdata[GPS_LAT_2][i];
+    }
+    return latitude;
+}
+
+    char* myCAN::get_longitude(void)
+{
+    for(int i=0; i<8; i++) {
+        longitude[i] = CANdata[GPS_LON_1][i];
+    }
+    for(int i=0; i<1; i++) {
+        longitude[i+8] = CANdata[GPS_LON_2][i];
+    }
+    return longitude;
+}
+
+int myCAN::get_NoS(void)
+{
+    NoS = CANdata[GPS_LAT_2][1];
+    return NoS;
+}
+float myCAN::get_a_x(void)
+{
+
+    return acel[0];
+}
+float myCAN::get_a_y(void)
+{
+
+    return acel[1];
+}
+
+int myCAN::get_a_z(void)
+{  
+    acel[2] = CANdata[GPS_LAT_2][2];
+    return acel[2];
+}
+
+int myCAN::get_j_x(void)
+{
+
+    return jail[0];
+}
+
+int myCAN::get_j_y(void)
+{
+
+    return jail[1];
+}
+
+int myCAN::get_j_z(void)
+{
+
+    return jail[2];
+}
+
+float myCAN::get_temp(void)
+{
+    temp = (float)(((int)(CANdata[SCP1000_PRES_TEMP][0])<<4+(int)(CANdata[SCP1000_PRES_TEMP][1]))/20.0);
+    return temp;
+}
+
+int myCAN::get_pres(void)
+{
+    pres = (int)(CANdata[SCP1000_PRES_TEMP][2])<<4+(int)(CANdata[SCP1000_PRES_TEMP][3]);
+    return pres;
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/myCAN.h	Sun Jul 21 07:02:45 2013 +0000
@@ -0,0 +1,52 @@
+#ifndef MBED_MYCAN_H
+#define MBED_MYCAN_h
+
+#include "mbed.h"
+
+class myCAN: public CAN{
+
+public:
+
+    myCAN(PinName rd,PinName td);
+    
+    char* get_time(void);
+    char* get_latitude(void);
+    char* get_longitude(void);
+    int get_NoS(void);
+    
+    float get_temp(void);
+    int get_pres(void);
+    
+    float get_a_x(void);
+    float get_a_y(void);
+    int get_a_z(void);
+    int get_j_x(void);
+    int get_j_y(void);
+    int get_j_z(void);
+    
+    void make_logger_senddata(char* time,int NoS,char* latitude,char* longitude,int a_z,int temp,int pres);
+    void make_mission_senddata(void);
+    
+    void send(char user);
+
+private:
+
+    char CANdata[9][8];        
+    CANMessage msg;
+    
+    char time[9]; //= {'0','0',':','0','0',':','0','0','\0'};
+    int NoS;
+    char latitude[10];
+    char longitude[11];
+    
+    int acel[3];
+    int jail[3];
+    
+    int temp;
+    int pres;
+    
+        
+    void rxHandler(void);
+};
+
+#endif
\ No newline at end of file