cdms n bae
Dependencies: SDFileSystem mbed-rtos mbed
Fork of CDMS_RTOS by
Diff: hk.cpp
- Revision:
- 6:ee97f01e6b7d
- Child:
- 7:60e940b7a36b
diff -r 3979ca24777a -r ee97f01e6b7d hk.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/hk.cpp Thu Feb 05 22:32:29 2015 +0000 @@ -0,0 +1,131 @@ +#include "hk.h" +SPI spi(PTD6, PTD7, PTD5); +DigitalOut cs(D6); + +SDFileSystem sd(PTD6, PTD7, PTD5, D7,"sd"); + +Timer t1; +DigitalOut interrupt(D9); +const int addr = 0x20; +bool ack0; +I2C master (D14,D15); + + void spiwrite(int a) + { + cs=1; + cs=0; + spi.write(a); + spi.write(0x01); + } + + int spiread(int a) + { + cs=1; + cs=0; + spi.write(a); + return(spi.write(0x00)); + } + char* getname(int year1,int month1,int date1,int day1,int hours1,int minutes1,int seconds1) +{ + year1= hexint(year1); + month1=hexint(month1); + date1=hexint(date1); + day1=hexint(day1); + hours1=hexint(hours1); + minutes1=hexint(minutes1); + seconds1=hexint(seconds1); + char time[15]; + sprintf(time,"%02d%02d%02d%02d%02d%02d%02d",year1,month1,date1,day1,hours1,minutes1,seconds1); + + return(time); + +} + +int hexint(int a) +{ + a=(a/16)*10+(a%16); + return a; +} +//storedata stores the dummy structure in the file with timestamp as the filename in HK directory +void init_rtc(void) +{ + spi.format(8,3); + spi.frequency(1000000); + spiwrite(0x80); //write seconds to 01 + spiwrite(0x81); //write minutes t0 01 + spiwrite(0x82); //write hours to 01 + spiwrite(0x83); //write day of week to 01 + spiwrite(0x84); //write day of month to 01 + spiwrite(0x85); //write month to 01 + spiwrite(0x86); //write year to 01 +} +void storedata(char * data,int length) +{ + + ack0 =true; + + interrupt = 1; + t1.start(); + //wait_ms(20); + ack0 = master.read(addr|1,data,length); + t1.stop(); + + + if(!ack0) + { + printf("\n master has read %s from slave\n\r",data); + + } + //master.stop(); + printf("\n%d\n\r",t1.read_us()); + t1.reset(); + + interrupt=0; + spi.format(8,3); + spi.frequency(1000000); + + int seconds=spiread(0x00); //read seconds + int minutes =spiread(0x01); //read minutes + int hours =spiread(0x02); //read hours + int day =spi.write(0x03); //read day of the week + int date =spiread(0x04); //read day of the month + int month =spiread(0x05); //read month + int year =spiread(0x06); //read year + cs = 1; + + //Assigning dummy values to the structure + + /* SensorData Sensor; + + printf("Writing dummy values\n"); + strcpy( Sensor.Voltage, "49"); + strcpy( Sensor.Current, "83"); + Sensor.Temperature ='5'; + strcpy( Sensor.PanelTemperature, "4"); + Sensor.Vcell_soc='9'; + Sensor.alerts= '4'; + Sensor.crate='7'; + Sensor.BatteryTemperature='6'; + Sensor.faultpoll='4'; + Sensor.faultir='g'; + Sensor.power_mode='k'; + strcpy( Sensor.AngularSpeed, "9"); + strcpy(Sensor.Bnewvalue,"6"); + printf("Done writing dummy values\n"); */ + mkdir("/sd/hk", 0777); + char date2[100]="/sd/hk/"; + strcat(date2,getname(year,month,date,day,hours,minutes,seconds)); + strcat(date2,".txt"); + FILE *fp ; + fp= fopen(date2, "w"); + if(fp == NULL) + { + error("Could not open file for write\n"); + } + else + { + fprintf(fp, "%s ", data); + fclose(fp); + printf("%s",getname(year,month,date,day,hours,minutes,seconds)); + } +} \ No newline at end of file