cdms_i2c_hardware_test

Dependencies:   FreescaleIAP SimpleDMA mbed-rtos mbed

Fork of standaloneworkingi2c_cdms by Team Fox

Committer:
prasanthbj05
Date:
Wed Jul 06 10:17:44 2016 +0000
Revision:
160:25a01d8da5d4
Parent:
159:390ca9b41d0e
cdms_i2c_hardware;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
shreeshas95 8:fcd26c28411d 1 // TESTING PUSH PULL IN MAIN CPP
shreeshas95 8:fcd26c28411d 2
shreeshas95 0:f016e9e8d48b 3 #include "mbed.h"
ee12b079 95:fd99ddc0e0a1 4
ee12b079 131:d4a4461214ad 5 uint8_t rcv_isr = 0; // flag for interrupt
prasanthbj05 157:d99f525edc4c 6 extern uint8_t temp_flag =0;
ee12b079 131:d4a4461214ad 7
ee12b079 129:d5b53088270b 8 #define DEBUG 1
ee12b079 148:e6c7d4f87704 9 #define SDCARD 0
ee12b079 136:8074893cd24e 10 #define I2C_PL 0
prasanthbj05 157:d99f525edc4c 11 #define PRINT 1
ee12b079 136:8074893cd24e 12
ee12b079 95:fd99ddc0e0a1 13
shreeshas95 101:bece931236a2 14 #include "SimpleDMA.h"
shreeshas95 101:bece931236a2 15 #include "dmaSPIslave.h"
shreeshas95 0:f016e9e8d48b 16 #include "rtos.h"
shreeshas95 1:a0055b3280c8 17 #include "mbed_debug.h"
prasanthbj05 155:80e7c7ff8aaf 18 #include "cassert"
shreeshas95 0:f016e9e8d48b 19
shreeshas95 0:f016e9e8d48b 20 #include "Structures.h"
shreeshas95 104:b55559925dc1 21 #include "pinconfig.h"
shreeshas95 0:f016e9e8d48b 22 #include "DefinitionsAndGlobals.h"
shreeshas95 0:f016e9e8d48b 23 #include "crc.h"
ee12b079 129:d5b53088270b 24 #include "i2c.h"
shreeshas95 1:a0055b3280c8 25 #include "COM_SND_TM_functions.h"
shreeshas95 1:a0055b3280c8 26 #include "COM_SND_TM.h"
ee12b079 96:efde3df6cd94 27 #include "cdms_sd.h"
prasanthbj05 157:d99f525edc4c 28 #include "CDMS_HK.h"
ee12b079 83:a26f5f22631d 29 #include "OBSRS.h"
shreeshas95 1:a0055b3280c8 30 #include "adf.h"
shreeshas95 0:f016e9e8d48b 31 #include "COM_RCV_TC.h"
shreeshas95 0:f016e9e8d48b 32 #include "COM_MNG_TMTC.h"
shreeshas95 4:104dd82c99b8 33 #include "COM_POWER_ON_TX.h"
shreeshas95 4:104dd82c99b8 34 #include "COM_POWER_OFF_TX.h"
ee12b079 93:4ca92f9775e0 35 #include "Compression.h"
shreeshas95 0:f016e9e8d48b 36 #include "ThreadsAndFunctions.h"
prasanthbj05 157:d99f525edc4c 37 //#include <InterruptIn.h>
prasanthbj05 157:d99f525edc4c 38
prasanthbj05 157:d99f525edc4c 39 InterruptIn temp_irpt(PTC6);
prasanthbj05 157:d99f525edc4c 40 Mutex i2c_mutex;
prasanthbj05 157:d99f525edc4c 41
prasanthbj05 155:80e7c7ff8aaf 42 uint8_t TM[134];
prasanthbj05 157:d99f525edc4c 43 //uint8_t TC[11] = {0x01, 0x60, 0x81, 0x34, 0x01, 0x00, 0x00, 0x00, 0x00, 0xee, 0x0d};
prasanthbj05 157:d99f525edc4c 44 uint8_t TC[250];
prasanthbj05 157:d99f525edc4c 45
prasanthbj05 159:390ca9b41d0e 46
prasanthbj05 159:390ca9b41d0e 47 #define PL_TC(tm_ptr){\
prasanthbj05 159:390ca9b41d0e 48 Base_tc *beacon_tc = new Long_tc;\
prasanthbj05 159:390ca9b41d0e 49 beacon_tc->next_TC = NULL;\
prasanthbj05 159:390ca9b41d0e 50 PUTshort_or_long(beacon_tc,SHORT_TC_CODE);\
prasanthbj05 159:390ca9b41d0e 51 PUTcrc_pass(beacon_tc,0x1);\
prasanthbj05 159:390ca9b41d0e 52 PUTexec_status(beacon_tc,0);\
prasanthbj05 159:390ca9b41d0e 53 beacon_tc->TC_string[0] = 0x01;\
prasanthbj05 159:390ca9b41d0e 54 beacon_tc->TC_string[1] = 0x60;\
prasanthbj05 159:390ca9b41d0e 55 beacon_tc->TC_string[2] = 0x81;\
prasanthbj05 159:390ca9b41d0e 56 beacon_tc->TC_string[3] = 0x21;\
prasanthbj05 159:390ca9b41d0e 57 beacon_tc->TC_string[4] = 0x00;\
prasanthbj05 159:390ca9b41d0e 58 beacon_tc->TC_string[5] = 0;\
prasanthbj05 159:390ca9b41d0e 59 beacon_tc->TC_string[6] = 0;\
prasanthbj05 159:390ca9b41d0e 60 beacon_tc->TC_string[7] = 0;\
prasanthbj05 159:390ca9b41d0e 61 beacon_tc->TC_string[8] = 0;\
prasanthbj05 159:390ca9b41d0e 62 beacon_tc->TC_string[9] = 0x1d;\
prasanthbj05 159:390ca9b41d0e 63 beacon_tc->TC_string[10] = 0xd9;\
prasanthbj05 159:390ca9b41d0e 64 for(uint8_t z=11;z<135;z++){beacon_tc->TC_string[z] = 0;}\
prasanthbj05 159:390ca9b41d0e 65 tm_ptr = FCTN_CDMS_RLY_TMTC(beacon_tc);\
prasanthbj05 159:390ca9b41d0e 66 }
prasanthbj05 159:390ca9b41d0e 67
prasanthbj05 159:390ca9b41d0e 68
shreeshas95 106:5ce0337e7c15 69 //void set_sig(){gSCIENCE_THREAD->signal_set(SCIENCE_SIGNAL);}
ee12b079 131:d4a4461214ad 70
prasanthbj05 157:d99f525edc4c 71 /*void verifyHK_DATA()
prasanthbj05 155:80e7c7ff8aaf 72 {
prasanthbj05 155:80e7c7ff8aaf 73 /*hk_verify[0]=TM[26];
prasanthbj05 155:80e7c7ff8aaf 74 hk_verify[1]=TM[27];
prasanthbj05 155:80e7c7ff8aaf 75 hk_verify[2]=TM[28];
prasanthbj05 157:d99f525edc4c 76 hk_verify[3]=TM[29];
lakshya 156:741ab5dd826d 77
lakshya 156:741ab5dd826d 78 //float input=5.4332;
lakshya 156:741ab5dd826d 79 uint8_t output[4];
lakshya 156:741ab5dd826d 80 uint8_t output1[4];
lakshya 156:741ab5dd826d 81 // assert(sizeof(float) == sizeof(uint32_t));
lakshya 156:741ab5dd826d 82 // uint32_t* temp = reinterpret_cast<uint32_t*>(&input);
lakshya 156:741ab5dd826d 83
lakshya 156:741ab5dd826d 84 //float* output1 = reinterpret_cast<float*>(temp);
lakshya 156:741ab5dd826d 85
lakshya 156:741ab5dd826d 86 // printf("\n\r %f ", input);
lakshya 156:741ab5dd826d 87 // std::cout << "\n\r uint32 \t"<<*temp << std::endl;
lakshya 156:741ab5dd826d 88
lakshya 156:741ab5dd826d 89 /* output[0] =(uint8_t )(((*temp)>>24)&0xFF);
lakshya 156:741ab5dd826d 90 output[1] =(uint8_t ) (((*temp)>>16)&0xFF);
lakshya 156:741ab5dd826d 91 output[2] =(uint8_t ) (((*temp)>>8)&0xFF);
lakshya 156:741ab5dd826d 92 output[3] =(uint8_t ) ((*temp) & 0xFF); // verify the logic
lakshya 156:741ab5dd826d 93 */
lakshya 156:741ab5dd826d 94 //printf("\n\r inside %d %d %d %d", output[3],output[2],output[1],output[0]);
lakshya 156:741ab5dd826d 95 //std:: cout << "\n\r uint8 inside " << output[3] << '\t' << output[2] << '\t' << output[1] << '\t' << output[0] <<std::endl;
prasanthbj05 155:80e7c7ff8aaf 96
prasanthbj05 157:d99f525edc4c 97 /*convertion back or recheck code
lakshya 156:741ab5dd826d 98
lakshya 156:741ab5dd826d 99 output[0] =TM[42];
lakshya 156:741ab5dd826d 100 output[1] =TM[43];
lakshya 156:741ab5dd826d 101 output[2] =TM[44];
lakshya 156:741ab5dd826d 102 output[3] =TM[45]; // verify the logic
lakshya 156:741ab5dd826d 103
lakshya 156:741ab5dd826d 104 //printf("\n\rthe value is 26\t %x\n",TM[38]);
lakshya 156:741ab5dd826d 105 // printf("\n\rthe value is 27\t%x\n",TM[39]);
lakshya 156:741ab5dd826d 106 // printf("\n\rthe value is 28\t%x\n",TM[40]);
lakshya 156:741ab5dd826d 107 // printf("\n\rthe value is 29\t%x\n",TM[41]);
lakshya 156:741ab5dd826d 108
lakshya 156:741ab5dd826d 109
lakshya 156:741ab5dd826d 110
prasanthbj05 155:80e7c7ff8aaf 111 uint32_t input_stage1=0x00000000;
lakshya 156:741ab5dd826d 112 output1[0]=(uint32_t)(output[0]);
lakshya 156:741ab5dd826d 113 output1[1]=(uint32_t)(output[1]);
lakshya 156:741ab5dd826d 114 output1[2]=(uint32_t)(output[2]);
lakshya 156:741ab5dd826d 115 output1[3]=(uint32_t)(output[3]);
prasanthbj05 155:80e7c7ff8aaf 116
prasanthbj05 155:80e7c7ff8aaf 117 //input_stage1=output[3]+(output[2]*(0x100))+(output[1]*(0x10000))+(output[0]*(0x1000000));
prasanthbj05 155:80e7c7ff8aaf 118 input_stage1=(output1[0]<<24) | (output1[1]<<16) | (output1[2]<<8) | (output1[3]);
prasanthbj05 155:80e7c7ff8aaf 119
prasanthbj05 155:80e7c7ff8aaf 120
prasanthbj05 155:80e7c7ff8aaf 121 assert(sizeof(float) == sizeof(uint32_t));
prasanthbj05 157:d99f525edc4c 122 float* temp1 = reinterpret_cast<float*>(&input_stage1);
prasanthbj05 155:80e7c7ff8aaf 123 printf("\n\r the value is: %f \n",*temp1);
lakshya 156:741ab5dd826d 124
lakshya 156:741ab5dd826d 125
lakshya 156:741ab5dd826d 126 //___________________________________________________-
lakshya 156:741ab5dd826d 127 /*
lakshya 156:741ab5dd826d 128 float input =5.4367;
lakshya 156:741ab5dd826d 129 //uint32_t tem;
lakshya 156:741ab5dd826d 130 uint8_t Tmm[4];
lakshya 156:741ab5dd826d 131 assert(sizeof(float) == sizeof(uint32_t));
lakshya 156:741ab5dd826d 132 uint32_t* tem = reinterpret_cast<uint32_t*>(&input);
lakshya 156:741ab5dd826d 133
lakshya 156:741ab5dd826d 134 Tmm[0] =(uint8_t )(((*tem)>>24)&0xFF);
lakshya 156:741ab5dd826d 135 Tmm[2] =(uint8_t ) (((*tem)>>16)&0xFF);
lakshya 156:741ab5dd826d 136 Tmm[1] =(uint8_t ) (((*tem)>>8)&0xFF);
lakshya 156:741ab5dd826d 137 Tmm[3] =(uint8_t ) ((*tem) & 0xFF);
lakshya 156:741ab5dd826d 138
lakshya 156:741ab5dd826d 139
lakshya 156:741ab5dd826d 140 uint8_t output1[4];
lakshya 156:741ab5dd826d 141 //uint32_t input_stage1=0x00000000;
lakshya 156:741ab5dd826d 142 output1[0]=(uint32_t)(Tmm[0]);
lakshya 156:741ab5dd826d 143 output1[1]=(uint32_t)(Tmm[1]);
lakshya 156:741ab5dd826d 144 output1[2]=(uint32_t)(Tmm[2]);
lakshya 156:741ab5dd826d 145 output1[3]=(uint32_t)(Tmm[3]);
lakshya 156:741ab5dd826d 146
lakshya 156:741ab5dd826d 147
lakshya 156:741ab5dd826d 148 //input_stage1=output[3]+(output[2]*(0x100))+(output[1]*(0x10000))+(output[0]*(0x1000000));
lakshya 156:741ab5dd826d 149 uint32_t input_stage1=(output1[0]<<24) | (output1[1]<<16) | (output1[2]<<8) | (output1[3]);
lakshya 156:741ab5dd826d 150
lakshya 156:741ab5dd826d 151
lakshya 156:741ab5dd826d 152 //assert(sizeof(float) == sizeof(uint32_t));
lakshya 156:741ab5dd826d 153 float* value = reinterpret_cast<float*>(&input_stage1);
lakshya 156:741ab5dd826d 154 printf("\n\rthe actual value: %f\n",input);
lakshya 156:741ab5dd826d 155 printf("\n\r the value is: %f \n",&value);
prasanthbj05 157:d99f525edc4c 156
prasanthbj05 157:d99f525edc4c 157 }*/
prasanthbj05 157:d99f525edc4c 158
prasanthbj05 157:d99f525edc4c 159 uint8_t test[10] = {0};
prasanthbj05 157:d99f525edc4c 160 Thread *ptr_t_i2c;
prasanthbj05 157:d99f525edc4c 161 void test_thread(void const * args)
prasanthbj05 157:d99f525edc4c 162 {
prasanthbj05 157:d99f525edc4c 163 while(1)
prasanthbj05 157:d99f525edc4c 164 {
prasanthbj05 157:d99f525edc4c 165 //pc.printf("\n\n\rWaiting");
prasanthbj05 157:d99f525edc4c 166 Thread::signal_wait(0x4); //signalled by ISR when CDMS sends an interrupt
prasanthbj05 157:d99f525edc4c 167 gPC.printf("\n\rThread started");
prasanthbj05 157:d99f525edc4c 168 for(uint8_t z=0;z<10;z++)
prasanthbj05 157:d99f525edc4c 169 test[z] = 0x55;
prasanthbj05 157:d99f525edc4c 170 //while(i2c_mutex.trylock()==false)
prasanthbj05 157:d99f525edc4c 171 //{
prasanthbj05 157:d99f525edc4c 172 gPC.printf("\n\rThread 1 waiting for i2c_mutex");
prasanthbj05 157:d99f525edc4c 173 i2c_mutex.lock();
prasanthbj05 157:d99f525edc4c 174 //}
prasanthbj05 157:d99f525edc4c 175 gPC.printf("\n\rMutex locked by Thread 1");
prasanthbj05 157:d99f525edc4c 176 write_ack = FCTN_I2C_WRITE((char*)TC,930);
prasanthbj05 157:d99f525edc4c 177 wait(1); //should poll instead of wait
prasanthbj05 157:d99f525edc4c 178 if(write_ack==0)
prasanthbj05 157:d99f525edc4c 179 {
prasanthbj05 157:d99f525edc4c 180 if(BAE_I2C_GPIO == 1)
prasanthbj05 157:d99f525edc4c 181 {
prasanthbj05 157:d99f525edc4c 182 read_ack = FCTN_I2C_READ((char*)TM,135);
prasanthbj05 157:d99f525edc4c 183 //gPC.printf("\n\rExited read");
prasanthbj05 157:d99f525edc4c 184 //pdir2
prasanthbj05 157:d99f525edc4c 185 //if(read_ack==1)
prasanthbj05 157:d99f525edc4c 186 }
prasanthbj05 157:d99f525edc4c 187 else
prasanthbj05 157:d99f525edc4c 188 {
prasanthbj05 157:d99f525edc4c 189 #if PRINT
prasanthbj05 157:d99f525edc4c 190 gPC.printf("\nbae_INTR NOT HIGH");
prasanthbj05 157:d99f525edc4c 191 gPC.printf("\n\rPTE->DIR = 0x%08X",PTE->PDIR);
prasanthbj05 157:d99f525edc4c 192 #endif
prasanthbj05 157:d99f525edc4c 193 I2C_busreset();
prasanthbj05 157:d99f525edc4c 194 #if PRINT
prasanthbj05 157:d99f525edc4c 195 gPC.printf("\n\rPTE->DIR = 0x%08X",PTE->PDIR);
prasanthbj05 157:d99f525edc4c 196 #endif
prasanthbj05 157:d99f525edc4c 197 //I2C_reInit();
prasanthbj05 157:d99f525edc4c 198 //if(q==2)
prasanthbj05 157:d99f525edc4c 199 //debug();
prasanthbj05 157:d99f525edc4c 200 //else
prasanthbj05 157:d99f525edc4c 201 //debug3();
prasanthbj05 157:d99f525edc4c 202 }
prasanthbj05 157:d99f525edc4c 203 write_ack=1;
prasanthbj05 157:d99f525edc4c 204 }
prasanthbj05 157:d99f525edc4c 205 i2c_mutex.unlock();
prasanthbj05 157:d99f525edc4c 206 gPC.printf("\n\rMutex Unlocked by Thread 1");
prasanthbj05 157:d99f525edc4c 207 }
prasanthbj05 155:80e7c7ff8aaf 208 }
prasanthbj05 157:d99f525edc4c 209 //uint8_t buffer[512];
prasanthbj05 157:d99f525edc4c 210 void temp_isr()
prasanthbj05 157:d99f525edc4c 211 {
prasanthbj05 157:d99f525edc4c 212 //wait_us(300);
prasanthbj05 157:d99f525edc4c 213 if(temp_flag ==1)
prasanthbj05 157:d99f525edc4c 214 {
prasanthbj05 157:d99f525edc4c 215 temp_flag |= 0x08;
prasanthbj05 157:d99f525edc4c 216 temp_flag |= 0x04;
prasanthbj05 157:d99f525edc4c 217 temp_flag |= 0x02;
prasanthbj05 157:d99f525edc4c 218 temp_flag |= 0x01;
prasanthbj05 157:d99f525edc4c 219 }
prasanthbj05 157:d99f525edc4c 220 FCTN_CDMS_INIT_RTC();
prasanthbj05 157:d99f525edc4c 221 //for(int i=100;i<1000;i++){temp_flag ++;}
prasanthbj05 157:d99f525edc4c 222 ptr_t_i2c->signal_set(0x4);
prasanthbj05 157:d99f525edc4c 223 }
prasanthbj05 157:d99f525edc4c 224
prasanthbj05 160:25a01d8da5d4 225 void blink2(float delay)
prasanthbj05 160:25a01d8da5d4 226 {
prasanthbj05 160:25a01d8da5d4 227 for(uint8_t i=0;i<20;i++)
prasanthbj05 160:25a01d8da5d4 228 {
prasanthbj05 160:25a01d8da5d4 229 gLED2 = !gLED2;
prasanthbj05 160:25a01d8da5d4 230 wait(delay);
prasanthbj05 160:25a01d8da5d4 231 }
prasanthbj05 160:25a01d8da5d4 232 gLED2 = 0;
prasanthbj05 160:25a01d8da5d4 233 }
prasanthbj05 160:25a01d8da5d4 234 void blink3(float delay)
prasanthbj05 160:25a01d8da5d4 235 {
prasanthbj05 160:25a01d8da5d4 236 for(uint8_t i=0;i<20;i++)
prasanthbj05 160:25a01d8da5d4 237 {
prasanthbj05 160:25a01d8da5d4 238 gLED3 = !gLED3;
prasanthbj05 160:25a01d8da5d4 239 wait(delay);
prasanthbj05 160:25a01d8da5d4 240 }
prasanthbj05 160:25a01d8da5d4 241 gLED3 = 0;
prasanthbj05 160:25a01d8da5d4 242 }
prasanthbj05 160:25a01d8da5d4 243 void blink4(float delay)
prasanthbj05 160:25a01d8da5d4 244 {
prasanthbj05 160:25a01d8da5d4 245 for(uint8_t i=0;i<20;i++)
prasanthbj05 160:25a01d8da5d4 246 {
prasanthbj05 160:25a01d8da5d4 247 gLED4 = !gLED4;
prasanthbj05 160:25a01d8da5d4 248 wait(delay);
prasanthbj05 160:25a01d8da5d4 249 }
prasanthbj05 160:25a01d8da5d4 250 gLED4 = 0;
prasanthbj05 160:25a01d8da5d4 251 }
shreeshas95 0:f016e9e8d48b 252 int main()
shreeshas95 0:f016e9e8d48b 253 {
ee12b079 148:e6c7d4f87704 254 CDMS_I2C_GPIO = 0;
ee12b079 148:e6c7d4f87704 255
prasanthbj05 157:d99f525edc4c 256
ee12b079 94:717c7908c822 257 //gLEDR = 1;
ee12b079 93:4ca92f9775e0 258
shreeshas95 0:f016e9e8d48b 259 // ******************INITIALISATIONS START******************
shreeshas95 0:f016e9e8d48b 260 // COM RX
shreeshas95 0:f016e9e8d48b 261 RX1M.baud(1200);
shreeshas95 0:f016e9e8d48b 262 gRX_HEAD_DATA_NODE = new COM_RX_DATA_NODE;
shreeshas95 0:f016e9e8d48b 263 gRX_HEAD_DATA_NODE->next_node = NULL;
shreeshas95 0:f016e9e8d48b 264 gRX_CURRENT_DATA_NODE = gRX_HEAD_DATA_NODE;
shreeshas95 2:2caf2a9a13aa 265 gRX_COUNT = 0;
shreeshas95 2:2caf2a9a13aa 266 // gRX_CURRENT_PTR = gRX_CURRENT_DATA_NODE->values;
shreeshas95 0:f016e9e8d48b 267 RX1M.attach(&rx_read, Serial::RxIrq);
shreeshas95 0:f016e9e8d48b 268
prasanthbj05 157:d99f525edc4c 269 //#if I2c
ee12b079 129:d5b53088270b 270 //I2C to Payload (depends on pl interrupt design)
prasanthbj05 157:d99f525edc4c 271 //PYLD_I2C_Int.rise(&isr_pyldtm);
ee12b079 148:e6c7d4f87704 272
prasanthbj05 157:d99f525edc4c 273 //#endif
prasanthbj05 158:68502402270d 274 master.frequency(100000);
shreeshas95 0:f016e9e8d48b 275 // DEBUG
prasanthbj05 157:d99f525edc4c 276
prasanthbj05 155:80e7c7ff8aaf 277 gPC.baud(9600);
prasanthbj05 157:d99f525edc4c 278 gPC.puts("\n\rwelcome to mng_tm_tc\r\n");
shreeshas95 0:f016e9e8d48b 279 // COMMON SPI
ee12b079 149:8e4155426581 280 // spi.format(8,0);
ee12b079 149:8e4155426581 281 // spi.frequency(1000000);
ee12b079 149:8e4155426581 282 //
ee12b079 149:8e4155426581 283 // // SD CARD
prasanthbj05 157:d99f525edc4c 284 cs_sd = 1;
prasanthbj05 157:d99f525edc4c 285 gCS_RTC = 1;
prasanthbj05 157:d99f525edc4c 286 gCS_ADF = 1;
ee12b079 149:8e4155426581 287 //
ee12b079 149:8e4155426581 288 // //FCTN_CDMS_INIT_RTC();/* rtc initialization*/
ee12b079 149:8e4155426581 289 // #if SDCARD
prasanthbj05 157:d99f525edc4c 290
ee12b079 149:8e4155426581 291 // #endif
ee12b079 149:8e4155426581 292 //
ee12b079 149:8e4155426581 293 // #if DEBUG
ee12b079 149:8e4155426581 294 // gPC.puts("welcome to mng_tmtc\r\n");
ee12b079 149:8e4155426581 295 // #endif
ee12b079 149:8e4155426581 296 //
ee12b079 149:8e4155426581 297 // // COM_MNG_TMTC THREAD
ee12b079 149:8e4155426581 298 // gCOM_MNG_TMTC_THREAD = new Thread(COM_MNG_TMTC_FUN);
ee12b079 149:8e4155426581 299 // gCOM_MNG_TMTC_THREAD->set_priority(osPriorityAboveNormal);
ee12b079 149:8e4155426581 300 // #if DEBUG
ee12b079 149:8e4155426581 301 // gPC.puts("allocating threads\r\n");
ee12b079 149:8e4155426581 302 // #endif
ee12b079 149:8e4155426581 303 // #if SDCARD
ee12b079 149:8e4155426581 304 // gSCIENCE_THREAD = new Thread(SCIENCE_FUN);
ee12b079 149:8e4155426581 305 // // gPC.puts("step one complete\r\n");
ee12b079 149:8e4155426581 306 // gSCIENCE_THREAD->set_priority(osPriorityBelowNormal);
ee12b079 149:8e4155426581 307 // #endif
ee12b079 149:8e4155426581 308 //
ee12b079 149:8e4155426581 309 // #if DEBUG
ee12b079 149:8e4155426581 310 // gPC.puts("competed allocating threads\r\n");
ee12b079 149:8e4155426581 311 // #endif
ee12b079 149:8e4155426581 312 //
shreeshas95 0:f016e9e8d48b 313 // *******************INITIALISATIONS END********************
shreeshas95 0:f016e9e8d48b 314
ee12b079 112:b8991d9e3b6c 315 //RtosTimer gCDMS_HK_TIMER(FCTN_CDMS_HK_MAIN, osTimerPeriodic);
ee12b079 112:b8991d9e3b6c 316 //gCDMS_HK_TIMER.start(5000);
prasanthbj05 157:d99f525edc4c 317
prasanthbj05 157:d99f525edc4c 318 ptr_t_i2c = new Thread(test_thread);
prasanthbj05 157:d99f525edc4c 319 ptr_t_i2c->set_priority(osPriorityRealtime);
prasanthbj05 157:d99f525edc4c 320
prasanthbj05 157:d99f525edc4c 321 temp_irpt.enable_irq();
prasanthbj05 157:d99f525edc4c 322 temp_irpt.mode(PullUp);
prasanthbj05 157:d99f525edc4c 323 temp_irpt.fall(&temp_isr);
prasanthbj05 157:d99f525edc4c 324 uint8_t q=0;
prasanthbj05 158:68502402270d 325
prasanthbj05 158:68502402270d 326 uint8_t TC[135];
prasanthbj05 158:68502402270d 327 for(uint8_t z=0;z<135;z++)
prasanthbj05 158:68502402270d 328 TC[z] = 0x55;
prasanthbj05 158:68502402270d 329
prasanthbj05 158:68502402270d 330 /*int arr2[135][3];
prasanthbj05 158:68502402270d 331 for(uint8_t z=0;z<135;z++)
prasanthbj05 157:d99f525edc4c 332 {
prasanthbj05 158:68502402270d 333 arr2[z][0]= 135;
prasanthbj05 157:d99f525edc4c 334 arr2[z][1]=1;
prasanthbj05 157:d99f525edc4c 335 arr2[z][2]=135 ;
prasanthbj05 158:68502402270d 336 }*/
prasanthbj05 155:80e7c7ff8aaf 337 //uint8_t hk_verify[4];
prasanthbj05 157:d99f525edc4c 338 int arr1[44][3]={
prasanthbj05 158:68502402270d 339 {135,5,134},
prasanthbj05 158:68502402270d 340 {135 ,1,134},//11,137
prasanthbj05 158:68502402270d 341 {135 ,1,134},//14,200
prasanthbj05 158:68502402270d 342 {135 ,1,134},//1,142
prasanthbj05 158:68502402270d 343 {20 ,1,134},//1,135
prasanthbj05 157:d99f525edc4c 344 {20 ,1,135},//11,135
prasanthbj05 157:d99f525edc4c 345 {1 ,1,135},//1,135
prasanthbj05 157:d99f525edc4c 346 {14 ,1,200},//14,200
prasanthbj05 157:d99f525edc4c 347 {1 ,1,200},//1,200
prasanthbj05 158:68502402270d 348 {135 ,1,134},//0,135
prasanthbj05 157:d99f525edc4c 349 {1 ,1,128},//1,128
prasanthbj05 157:d99f525edc4c 350 {51 ,1,135},//51,135
prasanthbj05 158:68502402270d 351 {11 ,1,134},//11,135
prasanthbj05 157:d99f525edc4c 352 {0 ,1,215},//0,215
prasanthbj05 157:d99f525edc4c 353 {1 ,1,135},//1,135
prasanthbj05 157:d99f525edc4c 354 {1 ,1,35},//1,35
prasanthbj05 158:68502402270d 355 {11 ,1,134},
prasanthbj05 157:d99f525edc4c 356 {14 ,1,55},//14,55
prasanthbj05 158:68502402270d 357 {11 ,1,134},
prasanthbj05 158:68502402270d 358 {11 ,1,134},
prasanthbj05 157:d99f525edc4c 359 {11 ,1,135},
prasanthbj05 157:d99f525edc4c 360 {130 ,1,235},//130,235
prasanthbj05 157:d99f525edc4c 361 {130 ,1,35},//130,35
prasanthbj05 158:68502402270d 362 {1 ,1,134},//1,135
prasanthbj05 157:d99f525edc4c 363 {0 ,1,1},//0,1
prasanthbj05 157:d99f525edc4c 364 {11 ,1,135},
prasanthbj05 157:d99f525edc4c 365 {11 ,1,135},
prasanthbj05 157:d99f525edc4c 366 {11 ,1,135},
prasanthbj05 158:68502402270d 367 {0 ,1,134},//0,135
prasanthbj05 157:d99f525edc4c 368 {11 ,1,135},
prasanthbj05 157:d99f525edc4c 369 {11 ,1,135},
prasanthbj05 157:d99f525edc4c 370 {11 ,1,135},
prasanthbj05 158:68502402270d 371 {1 ,1,134},//1,135
prasanthbj05 157:d99f525edc4c 372 {0 ,1,145},//0,145
prasanthbj05 157:d99f525edc4c 373 {5 ,1,15},//5,15
prasanthbj05 158:68502402270d 374 {14 ,1,134},//14,135
prasanthbj05 158:68502402270d 375 {12 ,1,134},//2,135
prasanthbj05 157:d99f525edc4c 376 {86 ,1,165},//86,165
prasanthbj05 157:d99f525edc4c 377 {130 ,1,5},//130,5
prasanthbj05 157:d99f525edc4c 378 {230 ,1,1},//230,1
prasanthbj05 157:d99f525edc4c 379 {130 ,1,135},//130,135
prasanthbj05 158:68502402270d 380 {11 ,1,134},
prasanthbj05 157:d99f525edc4c 381 {11 ,1,155},
prasanthbj05 158:68502402270d 382 {11 ,1,134}
prasanthbj05 157:d99f525edc4c 383 };
prasanthbj05 157:d99f525edc4c 384 //gPC.printf("\n\n\rInitial values:\n");
prasanthbj05 157:d99f525edc4c 385 //debug();
prasanthbj05 157:d99f525edc4c 386 //debug2();
prasanthbj05 157:d99f525edc4c 387 //gPC.printf("\n\r SIM->SCGC4 = 0x%08X",SIM->SCGC4);
prasanthbj05 157:d99f525edc4c 388 Timer t;
prasanthbj05 157:d99f525edc4c 389 //gPC.printf("\n\n\rPTE->DIR = 0x%08X",PTE->PDIR);
prasanthbj05 157:d99f525edc4c 390 gPC.printf("\n\n\rSending tc");
prasanthbj05 159:390ca9b41d0e 391
prasanthbj05 159:390ca9b41d0e 392 Base_tm* tm_ptr = new Long_tm;
prasanthbj05 159:390ca9b41d0e 393 PL_TC(tm_ptr);
prasanthbj05 159:390ca9b41d0e 394
prasanthbj05 157:d99f525edc4c 395 //gPC.printf("\n\rPORTE->PCR[24] = 0x%08X",PORTE->PCR[24]);
prasanthbj05 157:d99f525edc4c 396 //gPC.printf("\n\rPORTE->PCR[25] = 0x%08X\n",PORTE->PCR[25]);
prasanthbj05 157:d99f525edc4c 397
prasanthbj05 157:d99f525edc4c 398 bool write_ack=1,read_ack=1;
prasanthbj05 157:d99f525edc4c 399 wait(5);
prasanthbj05 160:25a01d8da5d4 400 while(q<1)
prasanthbj05 157:d99f525edc4c 401 {
prasanthbj05 157:d99f525edc4c 402 //printf("\n\rSize:%d\t\tdelay:%d",arr[q][0],arr[q][1]);
prasanthbj05 158:68502402270d 403 wait(arr1[q][1]);
prasanthbj05 158:68502402270d 404 //gPC.printf("\n\rIndex = %d",q);
prasanthbj05 157:d99f525edc4c 405 //while(i2c_mutex.trylock()==false)
prasanthbj05 155:80e7c7ff8aaf 406 //{
prasanthbj05 158:68502402270d 407 //gPC.printf("\n\rMain waiting for mutex");
prasanthbj05 157:d99f525edc4c 408 i2c_mutex.lock();
prasanthbj05 155:80e7c7ff8aaf 409 //}
prasanthbj05 158:68502402270d 410 //gPC.printf("\n\n\rMutex locked by Main");
prasanthbj05 158:68502402270d 411 gPC.printf("\n\rGiven TC Size : %d",arr1[q][0]);
prasanthbj05 158:68502402270d 412 gPC.printf("\n\rGiven TM Size : %d",arr1[q][2]);
prasanthbj05 157:d99f525edc4c 413 //wait_ms(1200);
prasanthbj05 158:68502402270d 414 write_ack = FCTN_I2C_WRITE((char*)TC,arr1[q][0]);
prasanthbj05 157:d99f525edc4c 415 wait(1); //should poll instead of wait
prasanthbj05 157:d99f525edc4c 416 if(write_ack==0)
prasanthbj05 157:d99f525edc4c 417 {
prasanthbj05 160:25a01d8da5d4 418 blink2(1);
prasanthbj05 157:d99f525edc4c 419 if(BAE_I2C_GPIO == 1)
prasanthbj05 157:d99f525edc4c 420 {
prasanthbj05 158:68502402270d 421 read_ack = FCTN_I2C_READ((char*)TM,arr1[q][2]);
prasanthbj05 160:25a01d8da5d4 422 if(read_ack == 0)
prasanthbj05 160:25a01d8da5d4 423 blink3(1);
prasanthbj05 160:25a01d8da5d4 424 else if(read_ack ==1)
prasanthbj05 160:25a01d8da5d4 425 blink3(0.3);
prasanthbj05 157:d99f525edc4c 426 }
prasanthbj05 157:d99f525edc4c 427 else
prasanthbj05 157:d99f525edc4c 428 {
prasanthbj05 157:d99f525edc4c 429 #if PRINT
prasanthbj05 157:d99f525edc4c 430 gPC.printf("\nbae_INTR NOT HIGH");
prasanthbj05 157:d99f525edc4c 431 gPC.printf("\n\rPTE->DIR = 0x%08X",PTE->PDIR);
prasanthbj05 157:d99f525edc4c 432 #endif
prasanthbj05 157:d99f525edc4c 433 I2C_busreset();
prasanthbj05 157:d99f525edc4c 434 #if PRINT
prasanthbj05 157:d99f525edc4c 435 gPC.printf("\n\rPTE->DIR = 0x%08X",PTE->PDIR);
prasanthbj05 157:d99f525edc4c 436 #endif
prasanthbj05 157:d99f525edc4c 437 }
prasanthbj05 157:d99f525edc4c 438 write_ack=1;
prasanthbj05 157:d99f525edc4c 439 }
prasanthbj05 160:25a01d8da5d4 440 else if (write_ack ==1)
prasanthbj05 160:25a01d8da5d4 441 blink2(0.3);
prasanthbj05 157:d99f525edc4c 442 i2c_mutex.unlock();
prasanthbj05 158:68502402270d 443 //gPC.printf("\n\rMutex Unlocked by Main");
prasanthbj05 157:d99f525edc4c 444 //gPC.printf("\n\Flag = %d",temp_flag);
prasanthbj05 157:d99f525edc4c 445 temp_flag=0;
prasanthbj05 157:d99f525edc4c 446 q++;
prasanthbj05 157:d99f525edc4c 447 }
prasanthbj05 157:d99f525edc4c 448 //wait(5);
prasanthbj05 157:d99f525edc4c 449 /*while(1)
prasanthbj05 157:d99f525edc4c 450 {
prasanthbj05 157:d99f525edc4c 451 write_ack = FCTN_I2C_WRITE((char*)TC,arr1[0][0]);
prasanthbj05 157:d99f525edc4c 452 wait_us(1);
prasanthbj05 157:d99f525edc4c 453 }*/
prasanthbj05 157:d99f525edc4c 454
prasanthbj05 157:d99f525edc4c 455 //debug();
prasanthbj05 157:d99f525edc4c 456 //debug3();
prasanthbj05 157:d99f525edc4c 457 //debug();
prasanthbj05 157:d99f525edc4c 458 //master.stop();
prasanthbj05 157:d99f525edc4c 459 //wait_ms(2);
prasanthbj05 157:d99f525edc4c 460 //debug();
prasanthbj05 157:d99f525edc4c 461 /*while(q<5)
prasanthbj05 157:d99f525edc4c 462 {
prasanthbj05 157:d99f525edc4c 463 //printf("\n\rSize:%d\t\tdelay:%d",arr[q][0],arr[q][1]);
prasanthbj05 157:d99f525edc4c 464 wait(10);
prasanthbj05 157:d99f525edc4c 465 FCTN_I2C_WRITE((char*)TC,11);
prasanthbj05 157:d99f525edc4c 466 wait(0.2);
prasanthbj05 157:d99f525edc4c 467 if(BAE_I2C_GPIO == 1)
prasanthbj05 157:d99f525edc4c 468 {
prasanthbj05 157:d99f525edc4c 469 // printf("receiving...\r\n");
prasanthbj05 157:d99f525edc4c 470 FCTN_I2C_READ((char*)TM,arr1[q][2]);
prasanthbj05 157:d99f525edc4c 471 }
prasanthbj05 157:d99f525edc4c 472 else
prasanthbj05 157:d99f525edc4c 473 {
prasanthbj05 157:d99f525edc4c 474 gPC.printf("\nbae_INTR NOT HIGH");
prasanthbj05 157:d99f525edc4c 475 I2C_reInit();
prasanthbj05 157:d99f525edc4c 476 }
prasanthbj05 157:d99f525edc4c 477 q++;
prasanthbj05 157:d99f525edc4c 478 }
prasanthbj05 157:d99f525edc4c 479 */
shreeshas95 0:f016e9e8d48b 480 while(true){
ee12b079 94:717c7908c822 481 Thread::wait(osWaitForever);
ee12b079 93:4ca92f9775e0 482 //state = gCOM_MNG_TMTC_THREAD->get_state() + '0';
prasanthbj05 160:25a01d8da5d4 483 gLED1 = !gLED1;
prasanthbj05 160:25a01d8da5d4 484 //wait(1);
ee12b079 93:4ca92f9775e0 485 //gPC.putc(state);
shreeshas95 0:f016e9e8d48b 486 }
shreeshas95 0:f016e9e8d48b 487 }