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.
Dependents: EM_Logger EM_Mission
Revision 0:89073e0112db, committed 2013-07-21
- 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
--- /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