Changes: bbram Checking Function Registers Checking Funcrtion Indivisual Register checking Functions

Dependencies:   FreescaleIAP mbed-rtos mbed

Fork of COM_MNG_TMTC_SIMPLE by Shreesha S

Committer:
dheerajmpai23
Date:
Wed Jan 20 10:58:47 2016 +0000
Revision:
72:38012a7efba1
Parent:
71:9193fbdaa3e1
Adding The changes as follows:; 1.BBRAM_CHECKFUNCTION; 2.Register Checking Function; 3.Indivisual Register Checking Function;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
shreeshas95 1:a0055b3280c8 1 //without reset feature , with state checks.
dheerajmpai23 72:38012a7efba1 2 //have made the changes --> BBRAM_CHECK and REGISTER_CHECK
shreeshas95 2:2caf2a9a13aa 3 InterruptIn IRQ(ADF_IRQ);
aniruddhv 52:0bd68655c651 4 //Ticker ticker;
ee12b079 9:e9eaada136c6 5
shreeshas95 1:a0055b3280c8 6 bool sent_tmfrom_SDcard;
krishanprajapat 71:9193fbdaa3e1 7 //bool loop_on;
shreeshas95 1:a0055b3280c8 8 bool ADF_off;
shreeshas95 1:a0055b3280c8 9 bool buffer_state;
ee12b079 9:e9eaada136c6 10 bool finish_write_data;
shreeshas95 1:a0055b3280c8 11 uint8_t signal = 0x00;
shreeshas95 1:a0055b3280c8 12 unsigned char bbram_buffer[66]={0x19,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x33,0x00,0xF4,0xC2,0x10,0xC0,0x00,0x30,0x31,0x07,0x00,0x01,0x00,0x7F,0x00,0x0B,0x37,0x00,0x00,0x40,0x0C,0x00,0x05,0x00,0x00,0x18,0x12,0x34,0x56,0x10,0x10,0xC4,0x14,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00};
dheerajmpai23 72:38012a7efba1 13 unsigned char bbram_buffer_1[66]={0x19,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x33,0x00,0xF4,0xC2,0x10,0xC0,0x00,0x30,0x31,0x07,0x00,0x01,0x00,0x7F,0x00,0x0B,0x20/**24**/,0x00,0x00,0x40,0x0C,0x00,0x05,0x00,0x00,0x18,0x12,0x34,0x70,0xE0/*37**/,0x10,0xC4,0x14,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00}; //After Changes
shreeshas95 2:2caf2a9a13aa 14 //int initialise_card();
shreeshas95 2:2caf2a9a13aa 15 //int disk_initialize();
ee12b079 9:e9eaada136c6 16
shreeshas95 1:a0055b3280c8 17 #define bbram_write {\
shreeshas95 1:a0055b3280c8 18 SPI_mutex.lock();\
shreeshas95 1:a0055b3280c8 19 gCS_ADF=0;\
shreeshas95 1:a0055b3280c8 20 spi.write(0xB0);\
shreeshas95 1:a0055b3280c8 21 wait_us(300);\
shreeshas95 1:a0055b3280c8 22 gCS_ADF=1;\
shreeshas95 1:a0055b3280c8 23 gCS_ADF=0;\
shreeshas95 1:a0055b3280c8 24 for(int i=0;i<66;i++){\
shreeshas95 1:a0055b3280c8 25 spi.write(bbram_buffer[i]);\
shreeshas95 1:a0055b3280c8 26 }\
shreeshas95 1:a0055b3280c8 27 gCS_ADF=1;\
shreeshas95 1:a0055b3280c8 28 SPI_mutex.unlock();\
shreeshas95 1:a0055b3280c8 29 }
shreeshas95 1:a0055b3280c8 30 //------------------------------------------------------------------------
shreeshas95 1:a0055b3280c8 31 // state checking functions
shreeshas95 1:a0055b3280c8 32 //bool assrt_phy_off( int, int, int);
shreeshas95 1:a0055b3280c8 33 //bool assrt_phy_on( int,int,int);
shreeshas95 1:a0055b3280c8 34 //bool assrt_phy_tx(int,int,int);
ee12b079 9:e9eaada136c6 35
shreeshas95 1:a0055b3280c8 36 #define START_ADDRESS 0x020;
shreeshas95 1:a0055b3280c8 37 #define MISO_PIN PTE3
shreeshas95 1:a0055b3280c8 38 /**************Defining Counter Limits**************/
shreeshas95 1:a0055b3280c8 39 #define THRS 20
shreeshas95 1:a0055b3280c8 40 #define STATE_ERR_THRS 20
shreeshas95 1:a0055b3280c8 41 #define PHY_OFF_EXEC_TIME 300
shreeshas95 1:a0055b3280c8 42 #define PHY_ON_EXEC_TIME 300
shreeshas95 1:a0055b3280c8 43 #define PHY_TX_EXEC_TIME 600
shreeshas95 1:a0055b3280c8 44 /******DEFINING COMMANDS*********/
shreeshas95 1:a0055b3280c8 45 #define CMD_HW_RESET 0xC8
shreeshas95 1:a0055b3280c8 46 #define CMD_PHY_ON 0xB1
shreeshas95 1:a0055b3280c8 47 #define CMD_PHY_OFF 0xB0
shreeshas95 1:a0055b3280c8 48 #define CMD_PHY_TX 0xB5
shreeshas95 1:a0055b3280c8 49 #define CMD_CONFIG_DEV 0xBB
dheerajmpai23 72:38012a7efba1 50
dheerajmpai23 72:38012a7efba1 51 #define SPI_MEMR_RD 0x28
dheerajmpai23 72:38012a7efba1 52
ee12b079 9:e9eaada136c6 53
shreeshas95 1:a0055b3280c8 54 #define check_status {\
shreeshas95 1:a0055b3280c8 55 unsigned char stat=0;\
shreeshas95 1:a0055b3280c8 56 gCS_ADF=0;\
shreeshas95 1:a0055b3280c8 57 spi.write(0xFF);\
shreeshas95 1:a0055b3280c8 58 stat = spi.write(0xFF);\
shreeshas95 1:a0055b3280c8 59 gCS_ADF=1;\
shreeshas95 1:a0055b3280c8 60 status = stat;\
shreeshas95 1:a0055b3280c8 61 }
dheerajmpai23 72:38012a7efba1 62
dheerajmpai23 72:38012a7efba1 63 bool bbram_err=false;
dheerajmpai23 72:38012a7efba1 64 int err_idx=-1;
dheerajmpai23 72:38012a7efba1 65 #define bbram_check gCS_ADF=0;\
dheerajmpai23 72:38012a7efba1 66 spi.write(0x39);\
dheerajmpai23 72:38012a7efba1 67 spi.write(0x00);\
dheerajmpai23 72:38012a7efba1 68 for(int i=0;i<64;i++){\
dheerajmpai23 72:38012a7efba1 69 if(spi.write(0xFF)!=bbram_buffer_1[i+2]){\
dheerajmpai23 72:38012a7efba1 70 printf("bbram_err");\
dheerajmpai23 72:38012a7efba1 71 bbram_err=true;\
dheerajmpai23 72:38012a7efba1 72 err_idx=i;\
dheerajmpai23 72:38012a7efba1 73 break;\
dheerajmpai23 72:38012a7efba1 74 }\
dheerajmpai23 72:38012a7efba1 75 }\
dheerajmpai23 72:38012a7efba1 76 gCS_ADF=1;\
dheerajmpai23 72:38012a7efba1 77
dheerajmpai23 72:38012a7efba1 78
dheerajmpai23 72:38012a7efba1 79 bool reg_err=false;
dheerajmpai23 72:38012a7efba1 80 #define reg_check_ram(addr1,addr2,reg) reg_err=false;\
dheerajmpai23 72:38012a7efba1 81 gCS_ADF=0;\
dheerajmpai23 72:38012a7efba1 82 spi.write(addr1);\
dheerajmpai23 72:38012a7efba1 83 spi.write(addr2);\
dheerajmpai23 72:38012a7efba1 84 if(spi.write(0xFF)!=reg)\
dheerajmpai23 72:38012a7efba1 85 reg_err=true;\
dheerajmpai23 72:38012a7efba1 86 gCS_ADF=1;\
dheerajmpai23 72:38012a7efba1 87
dheerajmpai23 72:38012a7efba1 88 bool reg_wrt_err=false;
dheerajmpai23 72:38012a7efba1 89 #define reg_check\
dheerajmpai23 72:38012a7efba1 90 reg_wrt_err=false;\
dheerajmpai23 72:38012a7efba1 91 reg_check_ram(SPI_MEMR_RD,0x24,0x20)\
dheerajmpai23 72:38012a7efba1 92 reg_wrt_err=reg_err;\
dheerajmpai23 72:38012a7efba1 93 reg_check_ram(SPI_MEMR_RD,0x36,0x70)\
dheerajmpai23 72:38012a7efba1 94 reg_wrt_err=(reg_wrt_err || reg_err);\
dheerajmpai23 72:38012a7efba1 95 reg_check_ram(SPI_MEMR_RD,0x37,0xE0)\
dheerajmpai23 72:38012a7efba1 96 reg_wrt_err=(reg_wrt_err || reg_err);\
dheerajmpai23 72:38012a7efba1 97
dheerajmpai23 72:38012a7efba1 98
shreeshas95 1:a0055b3280c8 99 // all three arguments are int
shreeshas95 1:a0055b3280c8 100 #define assrt_phy_off(return_this) {\
shreeshas95 1:a0055b3280c8 101 int cmd_err_cnt = 0;\
shreeshas95 1:a0055b3280c8 102 int spi_err_cnt = 0;\
shreeshas95 1:a0055b3280c8 103 int state_err_cnt = 0;\
shreeshas95 1:a0055b3280c8 104 for(int i = 0 ; i < 40 ;i++){\
shreeshas95 1:a0055b3280c8 105 check_status;\
shreeshas95 1:a0055b3280c8 106 if(status == 0xB1){\
shreeshas95 1:a0055b3280c8 107 return_this = 0;\
shreeshas95 1:a0055b3280c8 108 break;\
shreeshas95 1:a0055b3280c8 109 }\
shreeshas95 1:a0055b3280c8 110 else if(cmd_err_cnt>THRS||spi_err_cnt>THRS){\
shreeshas95 1:a0055b3280c8 111 return_this = 1;\
shreeshas95 1:a0055b3280c8 112 break;\
shreeshas95 1:a0055b3280c8 113 }\
shreeshas95 1:a0055b3280c8 114 else if(state_err_cnt>STATE_ERR_THRS){\
shreeshas95 1:a0055b3280c8 115 return_this = 1;\
shreeshas95 1:a0055b3280c8 116 break;\
shreeshas95 1:a0055b3280c8 117 }\
shreeshas95 1:a0055b3280c8 118 else if( (status & 0xA0) == 0xA0 ){\
shreeshas95 1:a0055b3280c8 119 gCS_ADF=0;\
shreeshas95 1:a0055b3280c8 120 spi.write(CMD_PHY_OFF);\
shreeshas95 1:a0055b3280c8 121 gCS_ADF=1;\
shreeshas95 1:a0055b3280c8 122 wait_us(PHY_OFF_EXEC_TIME);\
shreeshas95 1:a0055b3280c8 123 state_err_cnt++;\
shreeshas95 1:a0055b3280c8 124 }\
shreeshas95 1:a0055b3280c8 125 else if(status&0x80==0x00){\
shreeshas95 1:a0055b3280c8 126 wait_ms(5);\
shreeshas95 1:a0055b3280c8 127 spi_err_cnt++;\
shreeshas95 1:a0055b3280c8 128 }\
shreeshas95 1:a0055b3280c8 129 else {\
shreeshas95 1:a0055b3280c8 130 wait_ms(1);\
shreeshas95 1:a0055b3280c8 131 cmd_err_cnt++;\
shreeshas95 1:a0055b3280c8 132 }\
shreeshas95 1:a0055b3280c8 133 }\
shreeshas95 1:a0055b3280c8 134 }
ee12b079 9:e9eaada136c6 135
ee12b079 9:e9eaada136c6 136
shreeshas95 1:a0055b3280c8 137 #define initial_adf_check {\
shreeshas95 1:a0055b3280c8 138 spi.write(CMD_PHY_OFF);\
shreeshas95 1:a0055b3280c8 139 int tempReturn = 0;\
shreeshas95 2:2caf2a9a13aa 140 bool flag = false;\
shreeshas95 1:a0055b3280c8 141 while( hw_reset_err_cnt < 2 ){\
shreeshas95 1:a0055b3280c8 142 assrt_phy_off( tempReturn);\
shreeshas95 1:a0055b3280c8 143 if( !tempReturn ){\
shreeshas95 1:a0055b3280c8 144 bbram_write;\
shreeshas95 1:a0055b3280c8 145 bbram_flag=1;\
shreeshas95 2:2caf2a9a13aa 146 flag = true;\
shreeshas95 1:a0055b3280c8 147 break;\
shreeshas95 1:a0055b3280c8 148 }\
shreeshas95 1:a0055b3280c8 149 else{\
shreeshas95 1:a0055b3280c8 150 hardware_reset(0);\
shreeshas95 1:a0055b3280c8 151 hw_reset_err_cnt++;\
shreeshas95 2:2caf2a9a13aa 152 gPC.puts("Resetting hardware\r\n");\
shreeshas95 1:a0055b3280c8 153 }\
shreeshas95 1:a0055b3280c8 154 }\
shreeshas95 2:2caf2a9a13aa 155 if( flag == false ){\
shreeshas95 2:2caf2a9a13aa 156 gPC.puts("Seems to be SPI problem\r\n");\
shreeshas95 2:2caf2a9a13aa 157 }\
shreeshas95 1:a0055b3280c8 158 assrt_phy_off(tempReturn);\
shreeshas95 1:a0055b3280c8 159 if(!bbram_flag){\
shreeshas95 1:a0055b3280c8 160 bcn_flag=1;\
shreeshas95 1:a0055b3280c8 161 }\
shreeshas95 1:a0055b3280c8 162 }
ee12b079 9:e9eaada136c6 163
shreeshas95 1:a0055b3280c8 164 unsigned char status =0;
shreeshas95 1:a0055b3280c8 165 unsigned int cmd_err_cnt=0;
shreeshas95 1:a0055b3280c8 166 unsigned int state_err_cnt=0;
shreeshas95 1:a0055b3280c8 167 unsigned int miso_err_cnt=0;
shreeshas95 1:a0055b3280c8 168 unsigned int hw_reset_err_cnt=0;
shreeshas95 1:a0055b3280c8 169 bool bcn_flag=0;
shreeshas95 1:a0055b3280c8 170 bool bbram_flag=0;
ee12b079 9:e9eaada136c6 171
shreeshas95 1:a0055b3280c8 172 bool hardware_reset(int bcn_call){
shreeshas95 1:a0055b3280c8 173 for(int i= 0; i < 20 ; i++){
shreeshas95 1:a0055b3280c8 174 gCS_ADF=0;
shreeshas95 1:a0055b3280c8 175 spi.write(CMD_HW_RESET);
shreeshas95 1:a0055b3280c8 176 gCS_ADF=1;
shreeshas95 1:a0055b3280c8 177 wait_ms(2);// Typically 1 ms
shreeshas95 1:a0055b3280c8 178 int count=0;
shreeshas95 1:a0055b3280c8 179 int temp_return = 0;
shreeshas95 1:a0055b3280c8 180 while(count<10 && miso_err_cnt<10){
shreeshas95 1:a0055b3280c8 181 if(MISO_PIN){
shreeshas95 1:a0055b3280c8 182 assrt_phy_off(temp_return);
shreeshas95 1:a0055b3280c8 183 if(!temp_return){
shreeshas95 1:a0055b3280c8 184 return 0;
shreeshas95 1:a0055b3280c8 185 }
shreeshas95 1:a0055b3280c8 186 count++;
shreeshas95 1:a0055b3280c8 187 }
shreeshas95 1:a0055b3280c8 188 else{
shreeshas95 1:a0055b3280c8 189 wait_us(50);
shreeshas95 1:a0055b3280c8 190 miso_err_cnt++;
shreeshas95 1:a0055b3280c8 191 }
shreeshas95 1:a0055b3280c8 192 }
shreeshas95 1:a0055b3280c8 193 }
shreeshas95 1:a0055b3280c8 194 return 1;
shreeshas95 1:a0055b3280c8 195 }
ee12b079 9:e9eaada136c6 196
shreeshas95 1:a0055b3280c8 197 //for reseting the transmission call assert function after b5 and b1. after b1 assert_phi_on and after b5 assert_phi_tx.
shreeshas95 1:a0055b3280c8 198 //----------------------------------------------------------------------------
dheerajmpai23 72:38012a7efba1 199 //Check_BBRAM Registers You are altering them here
shreeshas95 1:a0055b3280c8 200 # define initiate {\
shreeshas95 1:a0055b3280c8 201 SPI_mutex.lock();\
shreeshas95 1:a0055b3280c8 202 gCS_ADF=0;\
shreeshas95 1:a0055b3280c8 203 spi.write(0xFF);\
shreeshas95 1:a0055b3280c8 204 spi.write(0xFF);\
shreeshas95 1:a0055b3280c8 205 gCS_ADF=1;\
shreeshas95 1:a0055b3280c8 206 gCS_ADF=0;\
shreeshas95 1:a0055b3280c8 207 spi.write(0x08);\
shreeshas95 1:a0055b3280c8 208 spi.write(0x14);\
shreeshas95 1:a0055b3280c8 209 spi.write(0xFF);\
shreeshas95 1:a0055b3280c8 210 gCS_ADF=1;\
shreeshas95 1:a0055b3280c8 211 gCS_ADF=0;\
shreeshas95 1:a0055b3280c8 212 spi.write(0x08);\
shreeshas95 1:a0055b3280c8 213 spi.write(0x15);\
shreeshas95 1:a0055b3280c8 214 spi.write(0xFF);\
shreeshas95 1:a0055b3280c8 215 gCS_ADF=1;\
shreeshas95 1:a0055b3280c8 216 gCS_ADF=0;\
shreeshas95 1:a0055b3280c8 217 spi.write(0x09);\
shreeshas95 1:a0055b3280c8 218 spi.write(0x24);\
shreeshas95 1:a0055b3280c8 219 spi.write(0x20);\
shreeshas95 1:a0055b3280c8 220 gCS_ADF=1;\
shreeshas95 1:a0055b3280c8 221 gCS_ADF=0;\
shreeshas95 1:a0055b3280c8 222 spi.write(0x09);\
shreeshas95 1:a0055b3280c8 223 spi.write(0x37);\
shreeshas95 1:a0055b3280c8 224 spi.write(0xE0);\
shreeshas95 1:a0055b3280c8 225 gCS_ADF=1;\
shreeshas95 1:a0055b3280c8 226 gCS_ADF=0;\
shreeshas95 1:a0055b3280c8 227 spi.write(0x09);\
shreeshas95 1:a0055b3280c8 228 spi.write(0x36);\
shreeshas95 1:a0055b3280c8 229 spi.write(0x70);\
shreeshas95 1:a0055b3280c8 230 gCS_ADF=1;\
shreeshas95 1:a0055b3280c8 231 gCS_ADF=0;\
shreeshas95 1:a0055b3280c8 232 spi.write(0x09);\
shreeshas95 1:a0055b3280c8 233 spi.write(0x39);\
shreeshas95 1:a0055b3280c8 234 spi.write(0x10);\
shreeshas95 1:a0055b3280c8 235 gCS_ADF=1;\
ee12b079 9:e9eaada136c6 236 gCS_ADF=0;\
ee12b079 9:e9eaada136c6 237 spi.write(0xBB);\
ee12b079 9:e9eaada136c6 238 gCS_ADF=1;\
ee12b079 9:e9eaada136c6 239 gCS_ADF=0;\
ee12b079 9:e9eaada136c6 240 spi.write(0xFF);\
ee12b079 9:e9eaada136c6 241 spi.write(0xFF);\
ee12b079 9:e9eaada136c6 242 gCS_ADF=1;\
shreeshas95 1:a0055b3280c8 243 SPI_mutex.unlock();\
shreeshas95 1:a0055b3280c8 244 }
ee12b079 9:e9eaada136c6 245
shreeshas95 1:a0055b3280c8 246 #define write_data {\
shreeshas95 1:a0055b3280c8 247 SPI_mutex.lock();\
shreeshas95 1:a0055b3280c8 248 gCS_ADF=0;\
shreeshas95 1:a0055b3280c8 249 spi.write(0x0B);\
shreeshas95 1:a0055b3280c8 250 spi.write(0x36);\
shreeshas95 1:a0055b3280c8 251 spi.write(0xFF);\
shreeshas95 1:a0055b3280c8 252 gCS_ADF=1;\
shreeshas95 1:a0055b3280c8 253 gCS_ADF=0;\
shreeshas95 1:a0055b3280c8 254 if(buffer_state){\
shreeshas95 1:a0055b3280c8 255 spi.write(0x18);\
shreeshas95 1:a0055b3280c8 256 spi.write(0x20);\
shreeshas95 1:a0055b3280c8 257 for(unsigned char i=0; i<112;i++){\
shreeshas95 1:a0055b3280c8 258 spi.write(buffer_112[i]);\
ee12b079 53:18db568f1098 259 /*gPC.printf("0x%X,",spi.write(buffer_112[i]));*/\
shreeshas95 1:a0055b3280c8 260 }\
shreeshas95 1:a0055b3280c8 261 }\
shreeshas95 1:a0055b3280c8 262 else{\
shreeshas95 1:a0055b3280c8 263 spi.write(0x18);\
shreeshas95 1:a0055b3280c8 264 spi.write(0x90);\
shreeshas95 1:a0055b3280c8 265 for(unsigned char i=0; i<112;i++){\
shreeshas95 1:a0055b3280c8 266 spi.write(buffer_112[i]);\
ee12b079 53:18db568f1098 267 /*gPC.printf("0x%X,",spi.write(buffer_112[i]));*/\
shreeshas95 1:a0055b3280c8 268 }\
shreeshas95 1:a0055b3280c8 269 }\
shreeshas95 1:a0055b3280c8 270 gCS_ADF=1;\
shreeshas95 1:a0055b3280c8 271 SPI_mutex.unlock();\
shreeshas95 1:a0055b3280c8 272 buffer_state = !buffer_state;\
shreeshas95 1:a0055b3280c8 273 if(last_buffer){\
ee12b079 9:e9eaada136c6 274 finish_write_data = true;\
shreeshas95 1:a0055b3280c8 275 gPC.puts("adf_off\r\n");\
shreeshas95 1:a0055b3280c8 276 }\
shreeshas95 1:a0055b3280c8 277 }
shreeshas95 1:a0055b3280c8 278
aniruddhv 52:0bd68655c651 279 /*
shreeshas95 1:a0055b3280c8 280 void check(){
shreeshas95 1:a0055b3280c8 281 if(IRQ){
shreeshas95 1:a0055b3280c8 282 gCOM_MNG_TMTC_THREAD->signal_set(signal);
shreeshas95 1:a0055b3280c8 283 }
aniruddhv 52:0bd68655c651 284 }*/
shreeshas95 1:a0055b3280c8 285
ee12b079 9:e9eaada136c6 286
shreeshas95 1:a0055b3280c8 287 #define send_data {\
shreeshas95 1:a0055b3280c8 288 if(sent_tmfrom_SDcard){\
shreeshas95 1:a0055b3280c8 289 send_tm_from_SD_card();\
shreeshas95 1:a0055b3280c8 290 }else{\
shreeshas95 1:a0055b3280c8 291 snd_tm.transmit_data(buffer_112,&last_buffer);\
shreeshas95 1:a0055b3280c8 292 }\
shreeshas95 1:a0055b3280c8 293 write_data;\
shreeshas95 1:a0055b3280c8 294 if(sent_tmfrom_SDcard){\
shreeshas95 1:a0055b3280c8 295 send_tm_from_SD_card();\
shreeshas95 1:a0055b3280c8 296 }else{\
shreeshas95 1:a0055b3280c8 297 snd_tm.transmit_data(buffer_112,&last_buffer);\
shreeshas95 1:a0055b3280c8 298 }\
shreeshas95 1:a0055b3280c8 299 write_data;\
shreeshas95 1:a0055b3280c8 300 if(sent_tmfrom_SDcard){\
shreeshas95 1:a0055b3280c8 301 send_tm_from_SD_card();\
shreeshas95 1:a0055b3280c8 302 }else{\
shreeshas95 1:a0055b3280c8 303 snd_tm.transmit_data(buffer_112,&last_buffer);\
shreeshas95 1:a0055b3280c8 304 }\
shreeshas95 1:a0055b3280c8 305 SPI_mutex.lock();\
shreeshas95 1:a0055b3280c8 306 gCS_ADF=0;\
shreeshas95 1:a0055b3280c8 307 spi.write(0xB1);\
shreeshas95 1:a0055b3280c8 308 gCS_ADF=1;\
shreeshas95 1:a0055b3280c8 309 wait_us(300);\
shreeshas95 1:a0055b3280c8 310 gCS_ADF=0;\
shreeshas95 1:a0055b3280c8 311 spi.write(0xFF);\
shreeshas95 1:a0055b3280c8 312 spi.write(0xFF);\
shreeshas95 1:a0055b3280c8 313 gCS_ADF=1;\
shreeshas95 1:a0055b3280c8 314 gCS_ADF=0;\
shreeshas95 1:a0055b3280c8 315 spi.write(0xB5);\
shreeshas95 1:a0055b3280c8 316 gCS_ADF=1;\
shreeshas95 1:a0055b3280c8 317 wait_us(300);\
shreeshas95 1:a0055b3280c8 318 gCS_ADF=0;\
shreeshas95 1:a0055b3280c8 319 spi.write(0xFF);\
shreeshas95 1:a0055b3280c8 320 spi.write(0xFF);\
shreeshas95 1:a0055b3280c8 321 gCS_ADF=1;\
shreeshas95 1:a0055b3280c8 322 SPI_mutex.unlock();\
aniruddhv 52:0bd68655c651 323 /*ticker.attach_us(&check,32000);*/\
shreeshas95 1:a0055b3280c8 324 }
shreeshas95 1:a0055b3280c8 325
shreeshas95 1:a0055b3280c8 326
shreeshas95 1:a0055b3280c8 327
shreeshas95 1:a0055b3280c8 328 #define adf_SND_SDCard {\
shreeshas95 1:a0055b3280c8 329 sent_tmfrom_SDcard = true;\
krishanprajapat 71:9193fbdaa3e1 330 configure_adf;\
shreeshas95 1:a0055b3280c8 331 signal = COM_MNG_TMTC_SIGNAL_ADF_SD;\
shreeshas95 1:a0055b3280c8 332 send_data;\
shreeshas95 1:a0055b3280c8 333 while(loop_on){\
shreeshas95 2:2caf2a9a13aa 334 /*led2=!led2;*/\
krishanprajapat 71:9193fbdaa3e1 335 /*gCOM_MNG_TMTC_THREAD->signal_wait(COM_MNG_TMTC_SIGNAL_ADF_SD);*/\
krishanprajapat 71:9193fbdaa3e1 336 wait_ms(COM_TX_TICKER_LIMIT);\
krishanprajapat 71:9193fbdaa3e1 337 if(IRQ){\
krishanprajapat 71:9193fbdaa3e1 338 if(finish_write_data){\
krishanprajapat 71:9193fbdaa3e1 339 if(ADF_off){\
krishanprajapat 71:9193fbdaa3e1 340 SPI_mutex.lock();\
krishanprajapat 71:9193fbdaa3e1 341 gCS_ADF=0;\
krishanprajapat 71:9193fbdaa3e1 342 spi.write(0xB1);\
krishanprajapat 71:9193fbdaa3e1 343 gCS_ADF=1;\
krishanprajapat 71:9193fbdaa3e1 344 SPI_mutex.unlock();\
krishanprajapat 71:9193fbdaa3e1 345 loop_on = false;\
krishanprajapat 71:9193fbdaa3e1 346 gPC.puts("Transmission done\r\n");\
krishanprajapat 71:9193fbdaa3e1 347 }\
krishanprajapat 71:9193fbdaa3e1 348 else{\
krishanprajapat 71:9193fbdaa3e1 349 ADF_off = true;\
krishanprajapat 71:9193fbdaa3e1 350 }\
krishanprajapat 71:9193fbdaa3e1 351 }else{\
krishanprajapat 71:9193fbdaa3e1 352 write_data;\
krishanprajapat 71:9193fbdaa3e1 353 send_tm_from_SD_card();\
krishanprajapat 71:9193fbdaa3e1 354 }\
shreeshas95 1:a0055b3280c8 355 }\
shreeshas95 1:a0055b3280c8 356 }\
shreeshas95 1:a0055b3280c8 357 }
shreeshas95 1:a0055b3280c8 358
krishanprajapat 71:9193fbdaa3e1 359 //void read_TC(Base_tc* TC_ptr){
krishanprajapat 71:9193fbdaa3e1 360 // gPC.puts("Inside sd card sending\r\n");
krishanprajapat 71:9193fbdaa3e1 361 // unsigned char service_subtype = 0;
krishanprajapat 71:9193fbdaa3e1 362 // uint64_t starting_add = 0, ending_add = 0;
krishanprajapat 71:9193fbdaa3e1 363 // service_subtype = (TC_ptr->TC_string[2])&0x0f;
krishanprajapat 71:9193fbdaa3e1 364 // starting_add = (TC_ptr->TC_string[5]) + ( (TC_ptr->TC_string[4])<<8 ) + ( (TC_ptr->TC_string[3]) <<16);
krishanprajapat 71:9193fbdaa3e1 365 // ending_add = (TC_ptr->TC_string[8]) + ( (TC_ptr->TC_string[7])<<8 ) + ( (TC_ptr->TC_string[6]) <<16);
krishanprajapat 71:9193fbdaa3e1 366 // starting_add = 10; // for now
krishanprajapat 71:9193fbdaa3e1 367 // ending_add = 20;
krishanprajapat 71:9193fbdaa3e1 368 //// adf_SND_SDCard(starting_add , ending_add);
krishanprajapat 71:9193fbdaa3e1 369 // gPC.puts("sending from sd card\r\n");
krishanprajapat 71:9193fbdaa3e1 370 // adf_SND_SDCard;
krishanprajapat 71:9193fbdaa3e1 371 //}
ee12b079 9:e9eaada136c6 372
aniruddhv 52:0bd68655c651 373 #define configure_adf {\
aniruddhv 52:0bd68655c651 374 finish_write_data = false;\
aniruddhv 52:0bd68655c651 375 buffer_state = true;\
aniruddhv 52:0bd68655c651 376 last_buffer = false;\
aniruddhv 52:0bd68655c651 377 loop_on = true;\
aniruddhv 52:0bd68655c651 378 ADF_off = false;\
aniruddhv 52:0bd68655c651 379 initial_adf_check;\
aniruddhv 52:0bd68655c651 380 gPC.puts("initial adf check\r\n");\
aniruddhv 52:0bd68655c651 381 initiate;\
aniruddhv 52:0bd68655c651 382 gPC.puts("adf configured\r\n");\
aniruddhv 52:0bd68655c651 383 gLEDR = !gLEDR;\
ee12b079 9:e9eaada136c6 384 }
ee12b079 9:e9eaada136c6 385
aniruddhv 52:0bd68655c651 386 #define adf_not_SDcard {\
aniruddhv 52:0bd68655c651 387 sent_tmfrom_SDcard = false;\
aniruddhv 52:0bd68655c651 388 configure_adf;\
aniruddhv 52:0bd68655c651 389 signal = COM_MNG_TMTC_SIGNAL_ADF_NSD;\
aniruddhv 52:0bd68655c651 390 send_data;\
aniruddhv 52:0bd68655c651 391 while(loop_on){\
aniruddhv 52:0bd68655c651 392 wait_ms(COM_TX_TICKER_LIMIT);\
aniruddhv 52:0bd68655c651 393 if(IRQ){\
aniruddhv 52:0bd68655c651 394 if(finish_write_data){\
aniruddhv 52:0bd68655c651 395 if(ADF_off){\
aniruddhv 52:0bd68655c651 396 SPI_mutex.lock();\
aniruddhv 52:0bd68655c651 397 gCS_ADF=0;\
aniruddhv 52:0bd68655c651 398 spi.write(0xB1);\
aniruddhv 52:0bd68655c651 399 gCS_ADF=1;\
aniruddhv 52:0bd68655c651 400 SPI_mutex.unlock();\
aniruddhv 52:0bd68655c651 401 loop_on = false;\
aniruddhv 52:0bd68655c651 402 gPC.puts("Transmission done\r\n");\
aniruddhv 52:0bd68655c651 403 }\
aniruddhv 52:0bd68655c651 404 else{\
aniruddhv 52:0bd68655c651 405 ADF_off = true;\
aniruddhv 52:0bd68655c651 406 }\
aniruddhv 52:0bd68655c651 407 }else{\
aniruddhv 52:0bd68655c651 408 write_data;\
aniruddhv 52:0bd68655c651 409 snd_tm.transmit_data(buffer_112,&last_buffer);\
aniruddhv 52:0bd68655c651 410 }\
aniruddhv 52:0bd68655c651 411 }\
aniruddhv 52:0bd68655c651 412 }\
aniruddhv 52:0bd68655c651 413 gPC.puts("after while loop\r\n");\
dheerajmpai23 72:38012a7efba1 414 }
dheerajmpai23 72:38012a7efba1 415