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.
Dependencies: FreescaleIAP mbed-rtos mbed
Fork of QM_BAE_review_1 by
Diff: main.cpp
- Revision:
- 3:07e15677a75c
- Parent:
- 1:446a959e36ce
- Child:
- 4:39a4ae8c7ecd
diff -r c823d84b4cb0 -r 07e15677a75c main.cpp
--- a/main.cpp Fri Dec 25 15:25:44 2015 +0000
+++ b/main.cpp Tue Dec 29 05:14:39 2015 +0000
@@ -59,7 +59,7 @@
bool write_ack = 1;
bool read_ack = 1;
char telecommand[tc_len];
-char telemetry[tm_len];
+char* telemetry;
char data_send_flag = 'h';
//*****************************************************Assigning pins******************************************************//
@@ -77,19 +77,20 @@
/*****************************************************************Threads USed***********************************************************************************/
-Thread *ptr_t_acs;
-Thread *ptr_t_eps;
-Thread *ptr_t_bcn;
+
Thread *ptr_t_i2c;
/*********************************************************FCTN HEADERS***********************************************************************************/
void FCTN_ISR_I2C();
void FCTN_TM();
+void F_ACS();
+void F_EPS();
+void F_BCN();
//*******************************************ACS THREAD**************************************************//
-void T_ACS(void const *args)
+void F_ACS()
{
float b1[3]={-23.376,-37.56,14.739}, omega1[3]={-1.52,2.746,0.7629}, moment1[3]= {1.0498,-1.0535,1.3246};
//b1[3] = {22, 22,10};
@@ -97,10 +98,9 @@
// gpo1 = 0; // att sens2 switch is disabled
// gpo2 = 0; // att sens switch is disabled
- while(1)
- {
+
- Thread::signal_wait(0x1);
+ //Thread::signal_wait(0x1);
ACS_MAIN_STATUS = 's'; //set ACS_MAIN_STATUS flag
PWM1 = 0; //clear pwm pins
PWM2 = 0; //clear pwm pins
@@ -231,21 +231,34 @@
ACS_MAIN_STATUS = 'c'; //clear ACS_MAIN_STATUS flag
- }//while ends
-
-
+
}
//***************************************************EPS THREAD***********************************************//
-void T_EPS(void const *args)
+void F_EPS()
{
- while(1)
- {
- Thread::signal_wait(0x2);
+
pc.printf("\n\rEntered EPS %f\n",t_start.read());
EPS_MAIN_STATUS = 's'; // Set EPS main status
- //FCTN_READ_HK();
- //FCTN_APPEND_HKDATA();
+ FCTN_BATT_TEMP_SENSOR_MAIN(actual_data.Batt_temp_actual);
+ pc.printf("\n\r Battery temperature %f %f" ,actual_data.Batt_temp_actual[0], actual_data.Batt_temp_actual[1]);
+ EPS_BATTERY_TEMP_STATUS = 's'; //set EPS_BATTERY_TEMP_STATUS
+ if(EPS_BATTERY_HEAT_ENABLE == 'e')
+ {
+ if((actual_data.Batt_temp_actual[0] < batt_heat_low) & (actual_data.Batt_temp_actual[1] < batt_heat_low)) // to confirm
+ {
+ batt_heat = 1; //turn on battery heater
+ }
+ else
+ {
+ batt_heat = 0; //turn off battery heater
+ }
+
+ }
+ else if(EPS_BATTERY_HEAT_ENABLE == 'd')
+ {
+ EPS_STATUS = 1;//EPS_STATUS = EPS_BATTERY_HEATER_DISABLED
+ }
FCTN_BATTERYGAUGE_MAIN(actual_data.Batt_gauge_actual);
if (actual_data.Batt_gauge_actual[1] == 200) //data not received
{
@@ -258,52 +271,33 @@
FCTN_EPS_POWERMODE(actual_data.Batt_gauge_actual[1]); //updating power level
EPS_BATTERY_GAUGE_STATUS = 's'; //set EPS_BATTERY_GAUGE_STATUS
}
- /* if( Temperature data received)
- {
- FCTN_BATT_TEMP_SENSOR_MAIN();
- EPS_BATTERY_TEMP_STATUS = 's'; //set EPS_BATTERY_TEMP_STATUS
- if(EPS_BATTERY_HEAT_ENABLE = 'e')
- {
- if(actual_data.Batt_temp_actual[0] < batt_heat_low)
- {
- batt_heat = 1; //turn on battery heater
- }
- else
- {
- batt_heat = 0; //turn off battery heater
- }
-
- }
- else if(EPS_BATTERY_HEAT_ENABLE = 'd)
- {
- EPS_STATUS = EPS_BATTERY_HEATER_DISABLED;
- }
+ // if( Temperature data received)
+ //{
+
- }
- else
- {
- Set battery temp to XX
- EPS_BATTERY_TEMP_STATUS = 'c'; //clear EPS_BATTERY_TEMP_STATUS
- EPS_STATUS = EPS_ERR_BATTERY_TEMP;
- }
+ // }
+// else
+// {
+// Set battery temp to XX
+// EPS_BATTERY_TEMP_STATUS = 'c'; //clear EPS_BATTERY_TEMP_STATUS
+// EPS_STATUS = EPS_ERR_BATTERY_TEMP;
+// }
+ FCTN_HK_MAIN();
+ //FCTN_APPEND_HKDATA();
+ //minMaxHkData();
- EPS_MAIN_STATUS = 'c'; // clear EPS main status */
-
- }
-
+ EPS_MAIN_STATUS = 'c'; // clear EPS main status
+
}
//**************************************************BCN THREAD*******************************************************************//
-void T_BCN(void const *args)
+void F_BCN()
{
- while(1)
- {
- Thread::signal_wait(0x3);
+
pc.printf("\n\rEntered BCN %f\n",t_start.read());
P_BCN_TX_MAIN();
- }
}
@@ -319,15 +313,19 @@
slave.stop();
else if( slave.receive() == 1) // slave writes to master
{
- write_ack=slave.write(telemetry,tm_len);
+ write_ack=slave.write((char*)telemetry,tm_len);
}
else if( slave.receive()==3 || slave.receive()==2) // slave read
{
read_ack=slave.read(telecommand,tc_len);
pc.printf("\n\rTELECOMMAND received from CDMS is %s \n",telecommand);
pc.printf("\n\r Executing Telecommand \n");
- FCTN_TC_DECODE((uint8_t*) telecommand);
+ // FCTN_TC_DECODE((uint8_t*) telecommand);
+ uint8_t* temp = FCTN_BAE_TM_TC((uint8_t*) telecommand);
+ telemetry = (char*)temp;
FCTN_TM();
+ // for(int i = 0; i<134; i++)
+ //pc.printf("%c", telemetry[i]);
}
}
@@ -363,17 +361,16 @@
}
if(schedcount%1==0)
{
- //ptr_t_acs -> signal_set(0x1);
+ F_ACS();
}
if(schedcount%2==0)
{
- ptr_t_eps -> signal_set(0x2);
-
+ F_EPS();
}
if(schedcount%3==0)
{
- //ptr_t_bcn -> signal_set(0x3);
+ // F_BCN();
}
schedcount++;
printf("\n\r exited scheduler");
@@ -446,6 +443,8 @@
BAE_STATUS &= 0xFFFDFFFF; //clear EPS_BATTERY_GAUGE_STATUS
else if(EPS_BATTERY_GAUGE_STATUS == 's')
BAE_STATUS |= 0x00020000; //set EPS_BATTERY_GAUGE_STATUS
+
+
pc.printf("\n\r BAE status %x BAE ENABLE %x ",BAE_STATUS,BAE_ENABLE);
@@ -454,9 +453,17 @@
void FCTN_BAE_INIT()
{
printf("\n\r Initialising BAE ");
- // FCTN_ACS_INIT();
+ //..........intial status....//
+ ACS_STATE = '4';
+ ACS_ATS_ENABLE = 'e';
+ ACS_DATA_ACQ_ENABLE = 'e';
+ EPS_BATTERY_HEAT_ENABLE = 'e';
+ //............................//
+ FCTN_ACS_INIT();
FCTN_EPS_INIT();
//P_BCN_INIT();
+
+
FLAG();
}
@@ -472,28 +479,21 @@
while(t_rfsilence.read() < RF_SILENCE_TIME);
}
*/
- ACS_STATE = '4';
+
//ACS_INIT_STATUS = 'c';
//ACS_DATA_ACQ_STATUS = 'c';
gpo1 = 0;
FLAG();
FCTN_BAE_INIT();
- ACS_ATS_ENABLE = 'e';
- ACS_DATA_ACQ_ENABLE = 'e';
+
//...i2c..
- strcpy(telemetry,"This is telemetry THis is sample telemetry. ffffffffffffffffffffffffffffff end");
+ //strcpy(telemetry,"This is telemetry THis is sample telemetry. ffffffffffffffffffffffffffffff end");
slave.address(addr);
irpt_2_mstr = 0;
ptr_t_i2c = new Thread(T_TC);
ptr_t_i2c->set_priority(osPriorityHigh);
- ptr_t_acs = new Thread(T_ACS);
- ptr_t_acs->set_priority(osPriorityAboveNormal);
- ptr_t_eps = new Thread(T_EPS);
- ptr_t_eps->set_priority(osPriorityAboveNormal);
- ptr_t_bcn = new Thread(T_BCN);
- ptr_t_bcn->set_priority(osPriorityAboveNormal);
irpt_4m_mstr.enable_irq();
irpt_4m_mstr.rise(&FCTN_I2C_ISR);
@@ -505,4 +505,5 @@
gpo1 = 0; // att sens2 switch is enabled
//FCTN_BAE_INIT();
while(1); //required to prevent main from terminating
-}
\ No newline at end of file
+}
+
