Lab5-03_create_satcode_step6_lite

Dependencies:   mbed HEPTA_CDH_lite HEPTA_COM_lite HEPTA_SENSOR_lite HEPTA_EPS_lite

Revision:
3:e5ae22e02335
Parent:
2:30f72f09756e
Child:
4:52de4bb3146f
diff -r 30f72f09756e -r e5ae22e02335 main.cpp
--- a/main.cpp	Tue Aug 17 11:01:44 2021 +0000
+++ b/main.cpp	Tue Aug 17 11:07:04 2021 +0000
@@ -7,27 +7,101 @@
 HEPTA_EPS eps(PA_0,PA_4);
 HEPTA_SENSOR sensor(PA_7,PB_7,PB_6,0xD0);
 HEPTA_COM com(PA_9,PA_10,9600);
-Serial sat(USBTX,USBRX,9600);
+DigitalOut condition(PB_1);
+Serial sat(USBTX,USBRX, 38400);
+Timer sattime;
 int main()
 {
-    sat.printf("Xbee Uplink Downlink Mode\r\n");
-    int rcmd=0,cmdflag=0;
-    float ax,ay,az;
-    for(int i=0;i<10;i++){
+    sat.printf("From Sat : Nominal Operation\r\n");
+    com.printf("From Sat : Nominal Operation\r\n");
+    int flag = 0; //condition flag
+    float batvol, temp; //voltage, temperature 
+    int rcmd=0,cmdflag=0;  //command variable
+    sattime.start();
+    eps.turn_on_regulator();//turn on 3.3V conveter    
+    for(int i=0;i<50;i++){
         com.xbee_receive(&rcmd,&cmdflag);
-        com.printf("num=%d\r\n",i);
-        if(cmdflag==1){
-            if(rcmd=='a'){
+        
+        //satellite condition led
+        condition = !condition;
+        
+        //senssing HK data
+        eps.vol(&batvol);
+        sensor.temp_sense(&temp);
+        
+        //Transmitting HK data to Ground Station(GS)
+        com.printf("HEPTASAT::Condition = %d, Time = %f [s], batvol = %2f [V], temp = %2f [deg C]\r\n",flag,sattime.read(),batvol,temp);
+        wait_ms(1000);
+        
+        //Power Saving Mode 
+        if((batvol <= 3.5)  | (temp > 35.0)){
+            eps.shut_down_regulator();
+            com.printf("Power saving mode ON\r\n"); 
+            flag = 1;
+        } else if((flag == 1) & (batvol > 3.7) & (temp <= 25.0)) {
+            eps.turn_on_regulator();
+            com.printf("Power saving mode OFF\r\n");
+            flag = 0;
+        }
+        
+        if(cmdflag == 1){
+            if(rcmd == 'a'){
+                sat.printf("rcmd=%c,cmdflag=%d\r\n",rcmd,cmdflag);
+                com.printf("Hepta-Sat Lite Uplink Ok\r\n");
+                for(int j=0;j<5;j++){
+                    com.printf("Hello World!\r\n");
+                    condition = 1;
+                    wait_ms(1000);
+                }
+            }else if(rcmd == 'b') {
                 sat.printf("rcmd=%c,cmdflag=%d\r\n",rcmd,cmdflag);
                 com.printf("Hepta-Sat Lite Uplink Ok\r\n");
-                for(int i=0;i<10;i++){
-                    sensor.sen_acc(&ax,&ay,&az);
-                    com.printf("%f,%f,%f\r\n",ax,ay,az);
+                char str[100];
+                mkdir("/sd/mydir", 0777);
+                FILE *fp = fopen("/sd/mydir/satdata.txt","w");
+                if(fp == NULL) {
+                    error("Could not open file for write\r\n");
+                }
+                for(int i = 0; i < 10; i++) {
+                    eps.vol(&batvol);
+                    fprintf(fp,"%f\r\n",batvol);
+                    condition = 1;
                     wait_ms(1000);
                 }
+                fclose(fp);
+                fp = fopen("/sd/mydir/satdata.txt","r");
+                for(int i = 0; i < 10; i++) {
+                    fgets(str,100,fp);
+                    com.puts(str);
+                }
+                fclose(fp);
+            }else if(rcmd == 'c'){
+                sat.printf("rcmd=%c,cmdflag=%d\r\n",rcmd,cmdflag);
+                com.printf("Hepta-Sat Lite Uplink Ok\r\n");
+                float ax,ay,az;
+                for(int i = 0; i < 10; i++) {
+                    sensor.sen_acc(&ax,&ay,&az);
+                    com.printf("%f,%f,%f\r\n",ax,ay,az);
+                    wait_ms(1000); 
+                }
+            }else if(rcmd == 'd'){
+                sat.printf("rcmd=%c,cmdflag=%d\r\n",rcmd,cmdflag);
+                com.printf("Hepta-Sat Lite Uplink Ok\r\n");
+                float gx,gy,gz;
+                for(int i = 0; i < 10; i++) {
+                    sensor.sen_gyro(&gx,&gy,&gz);
+                    com.printf("%f,%f,%f\r\n",gx,gy,gz); 
+                    wait_ms(1000);   
+                }            
+            }else if(rcmd == 'e'){
+                
+                
+                
             }
-            com.initialize();
+            com.initialize(); //initializing
         }
-        wait_ms(1000);
     }
+    sattime.stop();
+    sat.printf("From Sat : End of operation\r\n");
+    com.printf("From Sat : End of operation\r\n");
 }
\ No newline at end of file