cdms n bae

Dependencies:   SDFileSystem mbed-rtos mbed

Fork of CDMS_RTOS by Pradeep Kotipalli

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