To fix the hang problem

Dependencies:   FreescaleIAP SimpleDMA mbed-rtos mbed

Fork of CDMS_CODE by shubham c

Committer:
ee12b079
Date:
Thu Dec 08 07:12:16 2016 +0000
Revision:
317:31bb2e9eda85
Parent:
288:aa93d6652381
Child:
318:978d72f191f9
ADF temperature added,needs to be calibrated; reset functionality added, to be tested

Who changed what in which revision?

UserRevisionLine numberNew contents of line
shreeshas95 1:a0055b3280c8 1 //without reset feature , with state checks.
ee12b079 172:c508bbf7e89a 2 InterruptIn IRQ(ADF_IRQ);
aniruddhv 52:0bd68655c651 3 //Ticker ticker;
ee12b079 176:a5bfe3ca60b1 4
shreeshas95 1:a0055b3280c8 5 bool loop_on;
shreeshas95 1:a0055b3280c8 6 bool ADF_off;
shreeshas95 1:a0055b3280c8 7 bool buffer_state;
ee12b079 9:e9eaada136c6 8 bool finish_write_data;
shreeshas95 1:a0055b3280c8 9 uint8_t signal = 0x00;
ee12b079 288:aa93d6652381 10 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,/*PA Level Byte*/0x57/*PA Parameters*/,0x00,0x0B,0x37,0x00,0x00,0x40,0x0C,0x00,0x05,0x00,0x00,0x18,0x12,0x34,0x56,0x20,0x10,0xC4,0x14,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0xE0,0x00,0x10,0x04,0x00,0x00,0x00,0x00,0x00};
ee12b079 268:ded5306a1fd1 11 bool data_irq_err=0;
ee12b079 268:ded5306a1fd1 12 bool data_err= false;
ee12b079 268:ded5306a1fd1 13 unsigned char temp_byte=0x00;
ee12b079 268:ded5306a1fd1 14 unsigned char data_err1[112];
ee12b079 268:ded5306a1fd1 15 unsigned char data_err_cnt=0;
ee12b079 268:ded5306a1fd1 16 unsigned int byte_count =0;
ee12b079 268:ded5306a1fd1 17 #define DATA_ERR_THRS 20
ee12b079 268:ded5306a1fd1 18 bool rolling_buffer_settings_error=true;
ee12b079 268:ded5306a1fd1 19 bool bbram_write_success=true;
ee12b079 268:ded5306a1fd1 20 int bbram_err_cnt=0;
ee12b079 268:ded5306a1fd1 21 int rbp_err_cnt=0;
ee12b079 268:ded5306a1fd1 22 bool reset_flag=false;
ee12b079 268:ded5306a1fd1 23 #define RBP_THRS 4
ee12b079 268:ded5306a1fd1 24 bool quit_configuration=false;
ee12b079 268:ded5306a1fd1 25 bool power_reset_flag=false;
ee12b079 268:ded5306a1fd1 26 unsigned int power_reset_count=0;
ee12b079 268:ded5306a1fd1 27 bool Configuration_done=false;
ee12b079 268:ded5306a1fd1 28 #define HW_THRS 2
ee12b079 317:31bb2e9eda85 29 bool hw_reset_flag = false;
ee12b079 317:31bb2e9eda85 30 uint8_t firstbyte;
ee12b079 317:31bb2e9eda85 31 uint8_t secondbyte;
shreeshas95 2:2caf2a9a13aa 32 //int initialise_card();
shreeshas95 2:2caf2a9a13aa 33 //int disk_initialize();
shreeshas95 1:a0055b3280c8 34 //------------------------------------------------------------------------
shreeshas95 1:a0055b3280c8 35 // state checking functions
shreeshas95 1:a0055b3280c8 36 //bool assrt_phy_off( int, int, int);
shreeshas95 1:a0055b3280c8 37 //bool assrt_phy_on( int,int,int);
shreeshas95 1:a0055b3280c8 38 //bool assrt_phy_tx(int,int,int);
ee12b079 268:ded5306a1fd1 39
ee12b079 317:31bb2e9eda85 40 uint8_t adf_temp = 0x00;
ee12b079 317:31bb2e9eda85 41 //ADF temperature reading
ee12b079 317:31bb2e9eda85 42 #define temp_correction_value 0
ee12b079 317:31bb2e9eda85 43
ee12b079 268:ded5306a1fd1 44 #define TRANSMIT_LEN_1 0xFF
ee12b079 268:ded5306a1fd1 45 #define TRANSMIT_LEN_2 0xFF
ee12b079 268:ded5306a1fd1 46 /***/
ee12b079 268:ded5306a1fd1 47 Timer T;
ee12b079 9:e9eaada136c6 48
shreeshas95 1:a0055b3280c8 49 #define START_ADDRESS 0x020;
shreeshas95 1:a0055b3280c8 50 #define MISO_PIN PTE3
shreeshas95 1:a0055b3280c8 51 /**************Defining Counter Limits**************/
shreeshas95 1:a0055b3280c8 52 #define THRS 20
shreeshas95 1:a0055b3280c8 53 #define STATE_ERR_THRS 20
shreeshas95 1:a0055b3280c8 54 #define PHY_OFF_EXEC_TIME 300
shreeshas95 1:a0055b3280c8 55 #define PHY_ON_EXEC_TIME 300
shreeshas95 1:a0055b3280c8 56 #define PHY_TX_EXEC_TIME 600
shreeshas95 1:a0055b3280c8 57 /******DEFINING COMMANDS*********/
shreeshas95 1:a0055b3280c8 58 #define CMD_HW_RESET 0xC8
shreeshas95 1:a0055b3280c8 59 #define CMD_PHY_ON 0xB1
shreeshas95 1:a0055b3280c8 60 #define CMD_PHY_OFF 0xB0
shreeshas95 1:a0055b3280c8 61 #define CMD_PHY_TX 0xB5
shreeshas95 1:a0055b3280c8 62 #define CMD_CONFIG_DEV 0xBB
ee12b079 268:ded5306a1fd1 63 /**STATES**/
ee12b079 268:ded5306a1fd1 64 //=======================
ee12b079 268:ded5306a1fd1 65 #define PHY_OFF 0xB1
ee12b079 268:ded5306a1fd1 66 #define PHY_ON 0xB2
ee12b079 268:ded5306a1fd1 67 #define PHY_TX 0xB4
ee12b079 268:ded5306a1fd1 68 #define BUSY 0x00
ee12b079 268:ded5306a1fd1 69 //===================================================
ee12b079 268:ded5306a1fd1 70
ee12b079 317:31bb2e9eda85 71 #define POWER_RESET_THRS 2
ee12b079 317:31bb2e9eda85 72 #define HW_RESET_THRS 2
ee12b079 317:31bb2e9eda85 73
ee12b079 268:ded5306a1fd1 74 unsigned int Adf_data_counter=0;
ee12b079 268:ded5306a1fd1 75 unsigned char status =0;
ee12b079 268:ded5306a1fd1 76 unsigned int cmd_err_cnt=0;
ee12b079 268:ded5306a1fd1 77 unsigned int data_length;
ee12b079 268:ded5306a1fd1 78 unsigned int state_err_cnt=0;
ee12b079 268:ded5306a1fd1 79 unsigned int miso_err_cnt=0;
ee12b079 268:ded5306a1fd1 80 unsigned int hw_reset_err_cnt=0;
ee12b079 268:ded5306a1fd1 81 unsigned int counter =0;
ee12b079 268:ded5306a1fd1 82 bool temp_return = 0;
ee12b079 268:ded5306a1fd1 83 bool bcn_flag=0;
ee12b079 268:ded5306a1fd1 84 bool bbram_flag=0;
ee12b079 268:ded5306a1fd1 85
ee12b079 268:ded5306a1fd1 86 bool stop_transmission=false;
ee12b079 268:ded5306a1fd1 87
ee12b079 268:ded5306a1fd1 88 #define reset_flags {\
ee12b079 268:ded5306a1fd1 89 finish_write_data = false;\
ee12b079 268:ded5306a1fd1 90 buffer_state = true;\
ee12b079 268:ded5306a1fd1 91 last_buffer = false;\
ee12b079 268:ded5306a1fd1 92 loop_on = true;\
ee12b079 268:ded5306a1fd1 93 ADF_off = false;\
ee12b079 268:ded5306a1fd1 94 buffer_state = true;\
ee12b079 268:ded5306a1fd1 95 loop_on = true;\
ee12b079 268:ded5306a1fd1 96 ADF_off = false;\
ee12b079 271:72529b247333 97 /*sent_tmfrom_SDcard = false;*/\
ee12b079 268:ded5306a1fd1 98 Adf_data_counter=0;\
ee12b079 268:ded5306a1fd1 99 status =0;\
ee12b079 268:ded5306a1fd1 100 cmd_err_cnt=0;\
ee12b079 268:ded5306a1fd1 101 data_length;\
ee12b079 268:ded5306a1fd1 102 state_err_cnt=0;\
ee12b079 268:ded5306a1fd1 103 miso_err_cnt=0;\
ee12b079 268:ded5306a1fd1 104 hw_reset_err_cnt=0;\
ee12b079 268:ded5306a1fd1 105 counter =0;\
ee12b079 268:ded5306a1fd1 106 bcn_flag=0;\
ee12b079 268:ded5306a1fd1 107 bbram_flag=0;\
ee12b079 268:ded5306a1fd1 108 stop_transmission=false;\
ee12b079 268:ded5306a1fd1 109 }
ee12b079 268:ded5306a1fd1 110
ee12b079 268:ded5306a1fd1 111
ee12b079 268:ded5306a1fd1 112 int err_arr[64];
ee12b079 268:ded5306a1fd1 113 bool bbram_err=false;
ee12b079 268:ded5306a1fd1 114 int err_idx=-1;
ee12b079 268:ded5306a1fd1 115 int err[64];
ee12b079 268:ded5306a1fd1 116 #define bbram_check gCS_ADF=0;\
ee12b079 268:ded5306a1fd1 117 for(int i=0;i<64;i++){\
ee12b079 268:ded5306a1fd1 118 err_arr[i]=0;\
ee12b079 268:ded5306a1fd1 119 }\
ee12b079 268:ded5306a1fd1 120 for(int i=0;i<64;i++){\
ee12b079 268:ded5306a1fd1 121 err[i]=0;\
ee12b079 268:ded5306a1fd1 122 }\
ee12b079 268:ded5306a1fd1 123 bbram_err=false;\
ee12b079 268:ded5306a1fd1 124 gCS_ADF=0;\
ee12b079 268:ded5306a1fd1 125 spi.write(0x39);\
ee12b079 268:ded5306a1fd1 126 spi.write(0x00);\
ee12b079 268:ded5306a1fd1 127 spi.write(0xFF);\
ee12b079 268:ded5306a1fd1 128 for(int i=0;i<64;i++){\
ee12b079 268:ded5306a1fd1 129 err_arr[i]=spi.write(0xFF);\
ee12b079 268:ded5306a1fd1 130 if(err_arr[i]!=bbram_buffer[i+2]){\
ee12b079 268:ded5306a1fd1 131 err[i]=1;\
ee12b079 268:ded5306a1fd1 132 bbram_err=true;\
ee12b079 268:ded5306a1fd1 133 }\
ee12b079 268:ded5306a1fd1 134 }\
ee12b079 268:ded5306a1fd1 135 gCS_ADF=1;\
ee12b079 268:ded5306a1fd1 136 if(!bbram_err)\
ee12b079 268:ded5306a1fd1 137 gPC.printf("BBRAM verified \r\n");\
ee12b079 268:ded5306a1fd1 138 else\
ee12b079 268:ded5306a1fd1 139 gPC.printf("BBRAM error \r\n");\
ee12b079 176:a5bfe3ca60b1 140
ee12b079 268:ded5306a1fd1 141
ee12b079 268:ded5306a1fd1 142 bool tx_loop=1;
ee12b079 268:ded5306a1fd1 143
ee12b079 268:ded5306a1fd1 144 #define PRNT_ONCE {\
ee12b079 268:ded5306a1fd1 145 gPC.printf("%d %d lol_ what?\r\n",segment_len,EOS_len);\
ee12b079 268:ded5306a1fd1 146 }
ee12b079 268:ded5306a1fd1 147
ee12b079 268:ded5306a1fd1 148 #define bbram_write {\
ee12b079 268:ded5306a1fd1 149 gCS_ADF=0;\
ee12b079 268:ded5306a1fd1 150 spi.write(0xB0);\
ee12b079 268:ded5306a1fd1 151 wait_us(300);\
ee12b079 268:ded5306a1fd1 152 gCS_ADF=1;\
ee12b079 268:ded5306a1fd1 153 gCS_ADF=0;\
ee12b079 268:ded5306a1fd1 154 for(int i=0;i<66;i++){\
ee12b079 268:ded5306a1fd1 155 spi.write(bbram_buffer[i]);\
ee12b079 268:ded5306a1fd1 156 }\
ee12b079 268:ded5306a1fd1 157 gCS_ADF=1;\
ee12b079 268:ded5306a1fd1 158 }
ee12b079 268:ded5306a1fd1 159 //------------------------------------------------------------------------
ee12b079 268:ded5306a1fd1 160 // state checking functions
ee12b079 268:ded5306a1fd1 161 //bool assrt_phy_off( int, int, int);
ee12b079 268:ded5306a1fd1 162 //bool assrt_phy_on( int,int,int);
ee12b079 268:ded5306a1fd1 163 //bool assrt_phy_tx(int,int,int);
ee12b079 268:ded5306a1fd1 164
shreeshas95 1:a0055b3280c8 165 #define check_status {\
shreeshas95 1:a0055b3280c8 166 unsigned char stat=0;\
shreeshas95 1:a0055b3280c8 167 gCS_ADF=0;\
ee12b079 176:a5bfe3ca60b1 168 spi.write(0xFF);\
ee12b079 176:a5bfe3ca60b1 169 stat = spi.write(0xFF);\
shreeshas95 1:a0055b3280c8 170 gCS_ADF=1;\
ee12b079 176:a5bfe3ca60b1 171 status = stat;\
shreeshas95 1:a0055b3280c8 172 }
ee12b079 271:72529b247333 173 /***********************/
ee12b079 271:72529b247333 174 /**********Restart ADF**************/
ee12b079 271:72529b247333 175
ee12b079 271:72529b247333 176 /**************************/
ee12b079 268:ded5306a1fd1 177
ee12b079 268:ded5306a1fd1 178 /*CMD_VAR*/
ee12b079 268:ded5306a1fd1 179 bool cmd_bit=true;
ee12b079 268:ded5306a1fd1 180 bool cmd_err_flag=false;
ee12b079 268:ded5306a1fd1 181 unsigned char command = 0x00;
ee12b079 271:72529b247333 182 void CMD(uint8_t command) {
ee12b079 271:72529b247333 183 cmd_err_cnt=0;
ee12b079 271:72529b247333 184 cmd_err_flag=false;
ee12b079 271:72529b247333 185 while(cmd_err_cnt<3) {
ee12b079 271:72529b247333 186 check_status;
ee12b079 271:72529b247333 187 cmd_bit=status&0x20;
ee12b079 271:72529b247333 188 if(cmd_bit) {
ee12b079 271:72529b247333 189 gCS_ADF=0;
ee12b079 271:72529b247333 190 spi.write(command);
ee12b079 271:72529b247333 191 gCS_ADF=1;
ee12b079 271:72529b247333 192 break;
ee12b079 271:72529b247333 193 } else {
ee12b079 271:72529b247333 194 wait_us(5);
ee12b079 271:72529b247333 195 cmd_err_cnt++;
ee12b079 271:72529b247333 196 }
ee12b079 271:72529b247333 197 }
ee12b079 271:72529b247333 198 if(cmd_err_cnt==3) {
ee12b079 271:72529b247333 199 cmd_err_flag=true;
ee12b079 271:72529b247333 200 }
ee12b079 268:ded5306a1fd1 201 }
ee12b079 271:72529b247333 202
ee12b079 271:72529b247333 203 // all three arguments are int
ee12b079 268:ded5306a1fd1 204 #define assrt_phy_off {\
ee12b079 268:ded5306a1fd1 205 int state_err_cnt = 0;\
ee12b079 268:ded5306a1fd1 206 CMD(CMD_PHY_OFF);\
ee12b079 268:ded5306a1fd1 207 if(cmd_err_flag){\
ee12b079 268:ded5306a1fd1 208 temp_return=1;\
chaithanyarss 261:1e54415b34d3 209 }\
ee12b079 268:ded5306a1fd1 210 else{\
ee12b079 268:ded5306a1fd1 211 for(int i = 0 ; i < 40 ;i++){\
ee12b079 268:ded5306a1fd1 212 CMD(CMD_PHY_OFF);\
ee12b079 268:ded5306a1fd1 213 check_status;\
ee12b079 268:ded5306a1fd1 214 if(status == PHY_OFF){\
ee12b079 268:ded5306a1fd1 215 temp_return = 0;\
ee12b079 268:ded5306a1fd1 216 break;\
ee12b079 268:ded5306a1fd1 217 }\
ee12b079 268:ded5306a1fd1 218 else if(state_err_cnt>THRS){\
ee12b079 268:ded5306a1fd1 219 temp_return = 1;\
ee12b079 268:ded5306a1fd1 220 break;\
ee12b079 268:ded5306a1fd1 221 }\
ee12b079 268:ded5306a1fd1 222 else {\
ee12b079 268:ded5306a1fd1 223 wait_ms(1);\
ee12b079 268:ded5306a1fd1 224 }\
shreeshas95 1:a0055b3280c8 225 }\
ee12b079 245:da9d1bd999da 226 }\
ee12b079 245:da9d1bd999da 227 }
ee12b079 268:ded5306a1fd1 228
ee12b079 317:31bb2e9eda85 229 bool dummy_digitalOut_1=0;
ee12b079 317:31bb2e9eda85 230 #define power_reset{\
ee12b079 317:31bb2e9eda85 231 dummy_digitalOut_1=0;\
ee12b079 317:31bb2e9eda85 232 wait_ms(10);\
ee12b079 317:31bb2e9eda85 233 dummy_digitalOut_1=1;\
ee12b079 317:31bb2e9eda85 234 power_reset_flag=false;\
ee12b079 317:31bb2e9eda85 235 power_reset_count++;\
ee12b079 317:31bb2e9eda85 236 wait_ms(10);\
ee12b079 317:31bb2e9eda85 237 }\
ee12b079 317:31bb2e9eda85 238
ee12b079 317:31bb2e9eda85 239 void get_temp(){
ee12b079 317:31bb2e9eda85 240 /*ADF Temperature reading*/;
ee12b079 317:31bb2e9eda85 241 gCS_ADF=0;
ee12b079 317:31bb2e9eda85 242 spi.write(0x1B);
ee12b079 317:31bb2e9eda85 243 spi.write(0x24);
ee12b079 317:31bb2e9eda85 244 spi.write(0x10);
ee12b079 317:31bb2e9eda85 245 gCS_ADF=1;
ee12b079 317:31bb2e9eda85 246 gCS_ADF=0;
ee12b079 317:31bb2e9eda85 247 spi.write(0x1B);
ee12b079 317:31bb2e9eda85 248 spi.write(0x25);
ee12b079 317:31bb2e9eda85 249 spi.write(0x02);
ee12b079 317:31bb2e9eda85 250 gCS_ADF=1;
ee12b079 317:31bb2e9eda85 251 gCS_ADF=0;
ee12b079 317:31bb2e9eda85 252 spi.write(0x1B);
ee12b079 317:31bb2e9eda85 253 spi.write(0x59);
ee12b079 317:31bb2e9eda85 254 spi.write(0x08);
ee12b079 317:31bb2e9eda85 255 gCS_ADF=1;
ee12b079 317:31bb2e9eda85 256 uint16_t sum_temp = 0;
ee12b079 317:31bb2e9eda85 257 for(int i =0; i< 10;i++)
ee12b079 317:31bb2e9eda85 258 {
ee12b079 317:31bb2e9eda85 259 gCS_ADF=0;
ee12b079 317:31bb2e9eda85 260 spi.write(0x3B);
ee12b079 317:31bb2e9eda85 261 spi.write(0x27);
ee12b079 317:31bb2e9eda85 262 spi.write(0xFF);
ee12b079 317:31bb2e9eda85 263 secondbyte = spi.write(0xFF);
ee12b079 317:31bb2e9eda85 264 gCS_ADF=1;
ee12b079 317:31bb2e9eda85 265 gCS_ADF=0;
ee12b079 317:31bb2e9eda85 266 spi.write(0x3B);
ee12b079 317:31bb2e9eda85 267 spi.write(0x28);
ee12b079 317:31bb2e9eda85 268 spi.write(0xFF);
ee12b079 317:31bb2e9eda85 269 firstbyte = spi.write(0xFF);
ee12b079 317:31bb2e9eda85 270 gCS_ADF=1;
ee12b079 317:31bb2e9eda85 271 gCS_ADF=0;
ee12b079 317:31bb2e9eda85 272 spi.write(0x3B);
ee12b079 317:31bb2e9eda85 273 spi.write(0x27);
ee12b079 317:31bb2e9eda85 274 spi.write(0xFF);
ee12b079 317:31bb2e9eda85 275 secondbyte = spi.write(0xFF);
ee12b079 317:31bb2e9eda85 276 gCS_ADF=1;
ee12b079 317:31bb2e9eda85 277 adf_temp = firstbyte<<6;
ee12b079 317:31bb2e9eda85 278 adf_temp += secondbyte;
ee12b079 317:31bb2e9eda85 279 adf_temp = (adf_temp/1.83) - 118.43 + temp_correction_value;
ee12b079 317:31bb2e9eda85 280 sum_temp+=adf_temp;
ee12b079 317:31bb2e9eda85 281 }
ee12b079 317:31bb2e9eda85 282 adf_temp = sum_temp/10;
ee12b079 317:31bb2e9eda85 283 }
ee12b079 268:ded5306a1fd1 284
ee12b079 268:ded5306a1fd1 285 bool hardware_reset(int bcn_call)
ee12b079 268:ded5306a1fd1 286 {
ee12b079 317:31bb2e9eda85 287 if(hw_reset_err_cnt>HW_RESET_THRS){
ee12b079 317:31bb2e9eda85 288 power_reset_flag=true;
ee12b079 317:31bb2e9eda85 289 power_reset;
ee12b079 317:31bb2e9eda85 290 return 0;
ee12b079 317:31bb2e9eda85 291 }
ee12b079 317:31bb2e9eda85 292
ee12b079 268:ded5306a1fd1 293 for(int i= 0; i < 2 ; i++) {
shreeshas95 1:a0055b3280c8 294 gCS_ADF=0;
shreeshas95 1:a0055b3280c8 295 spi.write(CMD_HW_RESET);
shreeshas95 1:a0055b3280c8 296 gCS_ADF=1;
shreeshas95 1:a0055b3280c8 297 wait_ms(2);// Typically 1 ms
shreeshas95 1:a0055b3280c8 298 int count=0;
ee12b079 268:ded5306a1fd1 299 temp_return = 0;
ee12b079 268:ded5306a1fd1 300 while(count<10 && miso_err_cnt<10) {
ee12b079 268:ded5306a1fd1 301 if(MISO_PIN) {
ee12b079 268:ded5306a1fd1 302 // assrt_phy_off;
ee12b079 268:ded5306a1fd1 303 /*asseert_phyoff Starts**/
ee12b079 268:ded5306a1fd1 304 {\
ee12b079 268:ded5306a1fd1 305 int state_err_cnt = 0;\
ee12b079 268:ded5306a1fd1 306 CMD(CMD_PHY_OFF);\
ee12b079 268:ded5306a1fd1 307 if(cmd_err_flag){\
ee12b079 268:ded5306a1fd1 308 temp_return=1;\
ee12b079 268:ded5306a1fd1 309 }\
ee12b079 268:ded5306a1fd1 310 else{\
ee12b079 268:ded5306a1fd1 311 for(int i = 0 ; i < 40 ;i++){\
ee12b079 268:ded5306a1fd1 312 CMD(CMD_PHY_OFF);\
ee12b079 268:ded5306a1fd1 313 check_status;\
ee12b079 268:ded5306a1fd1 314 if(status == PHY_OFF){\
ee12b079 268:ded5306a1fd1 315 temp_return = 0;\
ee12b079 268:ded5306a1fd1 316 break;\
ee12b079 268:ded5306a1fd1 317 }\
ee12b079 268:ded5306a1fd1 318 else if(state_err_cnt>THRS){\
ee12b079 268:ded5306a1fd1 319 temp_return = 1;\
ee12b079 268:ded5306a1fd1 320 break;\
ee12b079 268:ded5306a1fd1 321 }\
ee12b079 268:ded5306a1fd1 322 else {\
ee12b079 268:ded5306a1fd1 323 wait_ms(1);\
ee12b079 268:ded5306a1fd1 324 }\
ee12b079 268:ded5306a1fd1 325 }\
ee12b079 268:ded5306a1fd1 326 }\
ee12b079 268:ded5306a1fd1 327 }\
ee12b079 268:ded5306a1fd1 328 /*Assert_phy_off_ends*/
ee12b079 268:ded5306a1fd1 329
ee12b079 268:ded5306a1fd1 330
ee12b079 268:ded5306a1fd1 331
ee12b079 268:ded5306a1fd1 332
ee12b079 268:ded5306a1fd1 333
shreeshas95 1:a0055b3280c8 334 if(!temp_return){
shreeshas95 1:a0055b3280c8 335 return 0;
shreeshas95 1:a0055b3280c8 336 }
shreeshas95 1:a0055b3280c8 337 count++;
ee12b079 268:ded5306a1fd1 338 } else {
shreeshas95 1:a0055b3280c8 339 wait_us(50);
shreeshas95 1:a0055b3280c8 340 miso_err_cnt++;
shreeshas95 1:a0055b3280c8 341 }
shreeshas95 1:a0055b3280c8 342 }
shreeshas95 1:a0055b3280c8 343 }
shreeshas95 1:a0055b3280c8 344 return 1;
shreeshas95 1:a0055b3280c8 345 }
ee12b079 268:ded5306a1fd1 346 //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 347 //----------------------------------------------------------------------------
ee12b079 268:ded5306a1fd1 348 unsigned char temp;
ee12b079 268:ded5306a1fd1 349 bool reg_err;
ee12b079 268:ded5306a1fd1 350 int reg_err_cnt;
ee12b079 268:ded5306a1fd1 351 #define REG_ERR_THRS 5
ee12b079 268:ded5306a1fd1 352 #define reg_check(addr1,addr2,reg_val){\
ee12b079 268:ded5306a1fd1 353 gCS_ADF=0;\
ee12b079 268:ded5306a1fd1 354 reg_err=false;\
ee12b079 268:ded5306a1fd1 355 spi.write(addr1);\
ee12b079 268:ded5306a1fd1 356 spi.write(addr2);\
ee12b079 268:ded5306a1fd1 357 spi.write(0xFF);\
ee12b079 268:ded5306a1fd1 358 temp = spi.write(0xFF);\
ee12b079 268:ded5306a1fd1 359 if(temp==reg_val)\
ee12b079 268:ded5306a1fd1 360 reg_err = false;\
ee12b079 268:ded5306a1fd1 361 else\
ee12b079 268:ded5306a1fd1 362 reg_err=true;\
ee12b079 268:ded5306a1fd1 363 gCS_ADF=1;\
ee12b079 268:ded5306a1fd1 364 }
ee12b079 268:ded5306a1fd1 365
ee12b079 268:ded5306a1fd1 366 #define initiate {\
shreeshas95 1:a0055b3280c8 367 gCS_ADF=0;\
shreeshas95 1:a0055b3280c8 368 spi.write(0xFF);\
shreeshas95 1:a0055b3280c8 369 spi.write(0xFF);\
shreeshas95 1:a0055b3280c8 370 gCS_ADF=1;\
ee12b079 268:ded5306a1fd1 371 reg_err=true;\
ee12b079 268:ded5306a1fd1 372 for(reg_err_cnt=0;reg_err_cnt<REG_ERR_THRS && reg_err;reg_err_cnt++){\
ee12b079 268:ded5306a1fd1 373 gCS_ADF=0;\
ee12b079 268:ded5306a1fd1 374 spi.write(0x08);\
ee12b079 268:ded5306a1fd1 375 spi.write(0x14);\
ee12b079 268:ded5306a1fd1 376 spi.write(TRANSMIT_LEN_1);\
ee12b079 268:ded5306a1fd1 377 gCS_ADF=1;\
ee12b079 268:ded5306a1fd1 378 reg_check(0x28,0x14,TRANSMIT_LEN_1);\
ee12b079 268:ded5306a1fd1 379 }\
ee12b079 268:ded5306a1fd1 380 if(reg_err)\
ee12b079 268:ded5306a1fd1 381 gPC.printf("Reg_err_ignored %x \r\n",(int)temp);\
ee12b079 268:ded5306a1fd1 382 else\
ee12b079 268:ded5306a1fd1 383 gPC.printf("reg written successful %x \r\n",(int)temp);\
ee12b079 268:ded5306a1fd1 384 reg_err=true;\
ee12b079 268:ded5306a1fd1 385 for(reg_err_cnt=0;reg_err_cnt<REG_ERR_THRS && reg_err;reg_err_cnt++){\
ee12b079 268:ded5306a1fd1 386 gCS_ADF=0;\
ee12b079 268:ded5306a1fd1 387 spi.write(0x08);\
ee12b079 268:ded5306a1fd1 388 spi.write(0x15);\
ee12b079 268:ded5306a1fd1 389 spi.write(TRANSMIT_LEN_2);\
ee12b079 268:ded5306a1fd1 390 gCS_ADF=1;\
ee12b079 268:ded5306a1fd1 391 reg_check(0x28,0x15,TRANSMIT_LEN_2);\
ee12b079 268:ded5306a1fd1 392 }\
ee12b079 268:ded5306a1fd1 393 if(reg_err)\
ee12b079 268:ded5306a1fd1 394 gPC.printf("Reg_err_ignored %x \r\n",(int)temp);\
ee12b079 268:ded5306a1fd1 395 else\
ee12b079 268:ded5306a1fd1 396 gPC.printf("reg written successful %x \r\n",(int)temp);\
ee12b079 268:ded5306a1fd1 397 }
ee12b079 268:ded5306a1fd1 398
ee12b079 268:ded5306a1fd1 399 #define write_data {\
ee12b079 268:ded5306a1fd1 400 counter++;\
ee12b079 271:72529b247333 401 if(counter==584){\
ee12b079 271:72529b247333 402 finish_write_data=true;\
ee12b079 271:72529b247333 403 restart_adf_flag=true;\
ee12b079 271:72529b247333 404 counter=0;\
ee12b079 271:72529b247333 405 }\
shreeshas95 1:a0055b3280c8 406 gCS_ADF=0;\
ee12b079 268:ded5306a1fd1 407 spi.write(0x0B);\
ee12b079 268:ded5306a1fd1 408 spi.write(0x36);\
ee12b079 268:ded5306a1fd1 409 spi.write(0xFF);\
shreeshas95 1:a0055b3280c8 410 gCS_ADF=1;\
ee12b079 268:ded5306a1fd1 411 data_err_cnt=0;\
ee12b079 268:ded5306a1fd1 412 data_err=true;\
ee12b079 268:ded5306a1fd1 413 while(data_err && (data_err_cnt<DATA_ERR_THRS)){\
ee12b079 268:ded5306a1fd1 414 gCS_ADF=0;\
ee12b079 268:ded5306a1fd1 415 if(buffer_state){\
ee12b079 268:ded5306a1fd1 416 spi.write(0x18);\
ee12b079 268:ded5306a1fd1 417 spi.write(0x20);\
ee12b079 268:ded5306a1fd1 418 for(unsigned char i=0; i<112;i++){\
ee12b079 268:ded5306a1fd1 419 spi.write(buffer_112[i]);\
ee12b079 268:ded5306a1fd1 420 /*gPC.printf("0x%X,",spi.write(buffer_112[i]));*/\
ee12b079 268:ded5306a1fd1 421 }\
ee12b079 268:ded5306a1fd1 422 }\
ee12b079 268:ded5306a1fd1 423 else{\
ee12b079 268:ded5306a1fd1 424 spi.write(0x18);\
ee12b079 268:ded5306a1fd1 425 spi.write(0x90);\
ee12b079 268:ded5306a1fd1 426 for(unsigned char i=0; i<112;i++){\
ee12b079 268:ded5306a1fd1 427 spi.write(buffer_112[i]);\
ee12b079 268:ded5306a1fd1 428 /*gPC.printf("0x%X,",spi.write(buffer_112[i]));*/\
ee12b079 268:ded5306a1fd1 429 }\
ee12b079 268:ded5306a1fd1 430 }\
ee12b079 268:ded5306a1fd1 431 gCS_ADF=1;\
ee12b079 268:ded5306a1fd1 432 wait_us(5);\
ee12b079 268:ded5306a1fd1 433 data_err=false;\
ee12b079 268:ded5306a1fd1 434 gCS_ADF=0;\
ee12b079 268:ded5306a1fd1 435 spi.write(0x38);\
ee12b079 268:ded5306a1fd1 436 if(buffer_state){\
ee12b079 268:ded5306a1fd1 437 spi.write(0x20);\
ee12b079 268:ded5306a1fd1 438 }\
ee12b079 268:ded5306a1fd1 439 else{\
ee12b079 268:ded5306a1fd1 440 spi.write(0x90);\
ee12b079 268:ded5306a1fd1 441 }\
ee12b079 268:ded5306a1fd1 442 spi.write(0xFF);\
ee12b079 268:ded5306a1fd1 443 for(unsigned char i=0; i<112;i++){\
ee12b079 268:ded5306a1fd1 444 temp_byte=spi.write(0xFF);\
ee12b079 268:ded5306a1fd1 445 if(buffer_112[i]!=temp_byte){\
ee12b079 268:ded5306a1fd1 446 data_err1[i]=1;\
ee12b079 268:ded5306a1fd1 447 data_err=true;\
ee12b079 268:ded5306a1fd1 448 }\
ee12b079 268:ded5306a1fd1 449 }\
shreeshas95 1:a0055b3280c8 450 gCS_ADF=1;\
ee12b079 268:ded5306a1fd1 451 /*SPI_mutex.unlock();*/\
ee12b079 268:ded5306a1fd1 452 if(data_err==false){\
ee12b079 268:ded5306a1fd1 453 buffer_state = !buffer_state;\
ee12b079 268:ded5306a1fd1 454 }\
ee12b079 268:ded5306a1fd1 455 data_err_cnt++;\
ee12b079 268:ded5306a1fd1 456 if(last_buffer){\
ee12b079 268:ded5306a1fd1 457 finish_write_data = true;\
ee12b079 268:ded5306a1fd1 458 /*gPC.puts("adf_off\r\n");*/\
ee12b079 268:ded5306a1fd1 459 }\
ee12b079 268:ded5306a1fd1 460 }\
ee12b079 268:ded5306a1fd1 461 }
ee12b079 268:ded5306a1fd1 462
ee12b079 268:ded5306a1fd1 463 #define check {\
ee12b079 268:ded5306a1fd1 464 check_status;\
ee12b079 268:ded5306a1fd1 465 /*gPC.printf("I 0x%X\r\n",(int)status);*/\
ee12b079 271:72529b247333 466 if(IRQ){\
ee12b079 268:ded5306a1fd1 467 /*gPC.printf("det\r\n");*/\
ee12b079 268:ded5306a1fd1 468 if(!ADF_off) {\
ee12b079 271:72529b247333 469 if(finish_write_data || restart_adf_flag) {\
ee12b079 268:ded5306a1fd1 470 write_data;\
ee12b079 268:ded5306a1fd1 471 ADF_off=true;\
ee12b079 317:31bb2e9eda85 472 T.stop();\
ee12b079 317:31bb2e9eda85 473 T.reset();\
ee12b079 317:31bb2e9eda85 474 T.start();\
ee12b079 317:31bb2e9eda85 475 /*ADF Temperature reading*/;\
ee12b079 317:31bb2e9eda85 476 get_temp();\
ee12b079 268:ded5306a1fd1 477 } else {\
ee12b079 317:31bb2e9eda85 478 T.stop();\
ee12b079 317:31bb2e9eda85 479 T.reset();\
ee12b079 317:31bb2e9eda85 480 T.start();\
ee12b079 268:ded5306a1fd1 481 write_data;\
ee12b079 268:ded5306a1fd1 482 if(sent_tmfrom_SDcard)\
ee12b079 268:ded5306a1fd1 483 send_tm_from_SD_card_fun();\
ee12b079 268:ded5306a1fd1 484 else snd_tm.transmit_data(buffer_112,&last_buffer);\
ee12b079 268:ded5306a1fd1 485 }\
ee12b079 268:ded5306a1fd1 486 } else {\
ee12b079 268:ded5306a1fd1 487 wait_ms(20);\
ee12b079 268:ded5306a1fd1 488 gCS_ADF=0;\
ee12b079 268:ded5306a1fd1 489 spi.write(0xB1);\
ee12b079 268:ded5306a1fd1 490 gCS_ADF=1;\
ee12b079 268:ded5306a1fd1 491 gPC.puts("transmission done\r\n");\
ee12b079 317:31bb2e9eda85 492 gPC.printf("Time taken by last write_data %f msecs\n", T.read_ms());\
ee12b079 317:31bb2e9eda85 493 T.stop();\
ee12b079 317:31bb2e9eda85 494 T.reset();\
ee12b079 268:ded5306a1fd1 495 loop_on=false;\
ee12b079 271:72529b247333 496 if(restart_adf_flag)\
ee12b079 271:72529b247333 497 {\
ee12b079 271:72529b247333 498 restart_adf_flag=false;\
ee12b079 271:72529b247333 499 ADF_off=false;\
ee12b079 271:72529b247333 500 send_data;\
ee12b079 271:72529b247333 501 loop_on=true;\
ee12b079 271:72529b247333 502 CMD(CMD_PHY_TX);\
ee12b079 271:72529b247333 503 wait_us(2000);\
ee12b079 271:72529b247333 504 }\
ee12b079 268:ded5306a1fd1 505 }\
ee12b079 268:ded5306a1fd1 506 }\
ee12b079 317:31bb2e9eda85 507 else{\
ee12b079 317:31bb2e9eda85 508 if(T.read_us()>98000){\
ee12b079 317:31bb2e9eda85 509 data_irq_err=true;\
ee12b079 317:31bb2e9eda85 510 CMD(CMD_PHY_ON);\
ee12b079 317:31bb2e9eda85 511 gPC.printf("Data_error_detected");\
ee12b079 317:31bb2e9eda85 512 T.stop();\
ee12b079 317:31bb2e9eda85 513 T.reset();\
ee12b079 317:31bb2e9eda85 514 }\
ee12b079 317:31bb2e9eda85 515 }\
ee12b079 268:ded5306a1fd1 516 }
ee12b079 268:ded5306a1fd1 517
ee12b079 268:ded5306a1fd1 518 #define send_data {\
ee12b079 9:e9eaada136c6 519 gCS_ADF=0;\
ee12b079 9:e9eaada136c6 520 spi.write(0xBB);\
ee12b079 9:e9eaada136c6 521 gCS_ADF=1;\
ee12b079 9:e9eaada136c6 522 gCS_ADF=0;\
ee12b079 9:e9eaada136c6 523 spi.write(0xFF);\
ee12b079 9:e9eaada136c6 524 spi.write(0xFF);\
ee12b079 9:e9eaada136c6 525 gCS_ADF=1;\
ee12b079 268:ded5306a1fd1 526 if(sent_tmfrom_SDcard){\
ee12b079 95:42d6747900cb 527 send_tm_from_SD_card_fun();\
shreeshas95 1:a0055b3280c8 528 }else{\
shreeshas95 1:a0055b3280c8 529 snd_tm.transmit_data(buffer_112,&last_buffer);\
shreeshas95 1:a0055b3280c8 530 }\
shreeshas95 1:a0055b3280c8 531 write_data;\
shreeshas95 1:a0055b3280c8 532 if(sent_tmfrom_SDcard){\
krishanprajapat 148:46763854fa83 533 send_tm_from_SD_card_fun();\
krishanprajapat 148:46763854fa83 534 }else{\
krishanprajapat 148:46763854fa83 535 snd_tm.transmit_data(buffer_112,&last_buffer);\
krishanprajapat 148:46763854fa83 536 }\
krishanprajapat 148:46763854fa83 537 write_data;\
krishanprajapat 148:46763854fa83 538 if(sent_tmfrom_SDcard){\
ee12b079 95:42d6747900cb 539 send_tm_from_SD_card_fun();\
shreeshas95 1:a0055b3280c8 540 }else{\
shreeshas95 1:a0055b3280c8 541 snd_tm.transmit_data(buffer_112,&last_buffer);\
shreeshas95 1:a0055b3280c8 542 }\
shreeshas95 1:a0055b3280c8 543 gCS_ADF=0;\
shreeshas95 1:a0055b3280c8 544 spi.write(0xB1);\
shreeshas95 1:a0055b3280c8 545 gCS_ADF=1;\
shreeshas95 1:a0055b3280c8 546 wait_us(300);\
shreeshas95 1:a0055b3280c8 547 gCS_ADF=0;\
shreeshas95 1:a0055b3280c8 548 spi.write(0xFF);\
shreeshas95 1:a0055b3280c8 549 spi.write(0xFF);\
shreeshas95 1:a0055b3280c8 550 gCS_ADF=1;\
shreeshas95 1:a0055b3280c8 551 gCS_ADF=0;\
shreeshas95 1:a0055b3280c8 552 spi.write(0xB5);\
shreeshas95 1:a0055b3280c8 553 gCS_ADF=1;\
shreeshas95 1:a0055b3280c8 554 wait_us(300);\
shreeshas95 1:a0055b3280c8 555 gCS_ADF=0;\
shreeshas95 1:a0055b3280c8 556 spi.write(0xFF);\
shreeshas95 1:a0055b3280c8 557 spi.write(0xFF);\
shreeshas95 1:a0055b3280c8 558 gCS_ADF=1;\
shreeshas95 1:a0055b3280c8 559 }
ee12b079 268:ded5306a1fd1 560
ee12b079 268:ded5306a1fd1 561 #define initial_adf_check {\
ee12b079 268:ded5306a1fd1 562 bool Configuration_Done=false;\
ee12b079 268:ded5306a1fd1 563 quit_configuration=false;\
ee12b079 268:ded5306a1fd1 564 bool reset_flag1 = 0;\
ee12b079 268:ded5306a1fd1 565 bool flag = false;\
ee12b079 268:ded5306a1fd1 566 while((hw_reset_err_cnt<HW_THRS)&&(quit_configuration==false)){\
ee12b079 268:ded5306a1fd1 567 while((bbram_err_cnt<2)&&(quit_configuration==false)){\
ee12b079 268:ded5306a1fd1 568 /*assrt_phy_off;*/\
ee12b079 268:ded5306a1fd1 569 /*Assrt_phy_off Begin*/\
ee12b079 268:ded5306a1fd1 570 {\
ee12b079 268:ded5306a1fd1 571 int state_err_cnt = 0;\
ee12b079 268:ded5306a1fd1 572 CMD(CMD_PHY_OFF);\
ee12b079 268:ded5306a1fd1 573 if(cmd_err_flag){\
ee12b079 268:ded5306a1fd1 574 temp_return=1;\
ee12b079 268:ded5306a1fd1 575 }\
ee12b079 268:ded5306a1fd1 576 else{\
ee12b079 268:ded5306a1fd1 577 for(int i = 0 ; i < 40 ;i++){\
ee12b079 268:ded5306a1fd1 578 CMD(CMD_PHY_OFF);\
ee12b079 268:ded5306a1fd1 579 check_status;\
ee12b079 268:ded5306a1fd1 580 if(status == PHY_OFF){\
ee12b079 268:ded5306a1fd1 581 temp_return = 0;\
ee12b079 268:ded5306a1fd1 582 break;\
ee12b079 268:ded5306a1fd1 583 }\
ee12b079 268:ded5306a1fd1 584 else if(state_err_cnt>THRS){\
ee12b079 268:ded5306a1fd1 585 temp_return = 1;\
ee12b079 268:ded5306a1fd1 586 break;\
ee12b079 268:ded5306a1fd1 587 }\
ee12b079 268:ded5306a1fd1 588 else {\
ee12b079 268:ded5306a1fd1 589 wait_ms(1);\
ee12b079 268:ded5306a1fd1 590 }\
ee12b079 268:ded5306a1fd1 591 }\
ee12b079 268:ded5306a1fd1 592 }\
ee12b079 268:ded5306a1fd1 593 }\
ee12b079 268:ded5306a1fd1 594 /*Assrt_phy_off end*/\
ee12b079 268:ded5306a1fd1 595 reset_flag1=temp_return;\
ee12b079 268:ded5306a1fd1 596 if(!reset_flag1){\
ee12b079 268:ded5306a1fd1 597 bbram_write;\
ee12b079 268:ded5306a1fd1 598 while((rbp_err_cnt<RBP_THRS)&&(quit_configuration==false)){\
ee12b079 268:ded5306a1fd1 599 bbram_check;\
ee12b079 268:ded5306a1fd1 600 if(bbram_err==0){\
ee12b079 268:ded5306a1fd1 601 bbram_write_success=true;\
ee12b079 268:ded5306a1fd1 602 bbram_err_cnt=0;\
ee12b079 268:ded5306a1fd1 603 initiate;\
ee12b079 268:ded5306a1fd1 604 if(reg_err){\
ee12b079 268:ded5306a1fd1 605 rbp_err_cnt++;\
ee12b079 268:ded5306a1fd1 606 }\
ee12b079 268:ded5306a1fd1 607 else{\
ee12b079 268:ded5306a1fd1 608 rbp_err_cnt=0;\
ee12b079 268:ded5306a1fd1 609 gPC.printf("NO Reg err\r\n");\
ee12b079 268:ded5306a1fd1 610 CMD(CMD_CONFIG_DEV);\
ee12b079 268:ded5306a1fd1 611 if(cmd_err_flag){\
ee12b079 268:ded5306a1fd1 612 reset_flag=1;\
ee12b079 268:ded5306a1fd1 613 gPC.printf("CMD ERR\r\n");\
ee12b079 268:ded5306a1fd1 614 }\
ee12b079 268:ded5306a1fd1 615 else{\
ee12b079 268:ded5306a1fd1 616 reset_flag=0;\
ee12b079 268:ded5306a1fd1 617 gPC.printf("NO CMD ERR CONFIG_DONE\r\n");\
ee12b079 268:ded5306a1fd1 618 quit_configuration=true;\
ee12b079 268:ded5306a1fd1 619 }\
ee12b079 268:ded5306a1fd1 620 }\
ee12b079 268:ded5306a1fd1 621 }\
ee12b079 268:ded5306a1fd1 622 else{\
ee12b079 268:ded5306a1fd1 623 bbram_write_success=false;\
ee12b079 268:ded5306a1fd1 624 bbram_err_cnt++;\
ee12b079 268:ded5306a1fd1 625 break;\
ee12b079 268:ded5306a1fd1 626 }\
ee12b079 268:ded5306a1fd1 627 }\
ee12b079 268:ded5306a1fd1 628 }\
ee12b079 268:ded5306a1fd1 629 else{\
ee12b079 268:ded5306a1fd1 630 break;\
ee12b079 268:ded5306a1fd1 631 }\
ee12b079 268:ded5306a1fd1 632 }\
ee12b079 268:ded5306a1fd1 633 if(reset_flag1){\
ee12b079 268:ded5306a1fd1 634 hardware_reset(0);\
ee12b079 268:ded5306a1fd1 635 hw_reset_err_cnt++;\
ee12b079 268:ded5306a1fd1 636 gPC.puts("Resetting hardware\r\n");\
ee12b079 268:ded5306a1fd1 637 }\
ee12b079 268:ded5306a1fd1 638 }\
ee12b079 268:ded5306a1fd1 639 if(hw_reset_err_cnt==HW_THRS){\
ee12b079 268:ded5306a1fd1 640 power_reset_flag=1;\
ee12b079 268:ded5306a1fd1 641 power_reset_count++;\
ee12b079 268:ded5306a1fd1 642 }\
ee12b079 268:ded5306a1fd1 643 else{\
ee12b079 268:ded5306a1fd1 644 Configuration_Done=true;\
ee12b079 268:ded5306a1fd1 645 gPC.printf("Configuration_Done\n");\
ee12b079 268:ded5306a1fd1 646 }\
ee12b079 268:ded5306a1fd1 647 }
ee12b079 268:ded5306a1fd1 648
aniruddhv 52:0bd68655c651 649 #define configure_adf {\
ee12b079 268:ded5306a1fd1 650 reset_flags;\
aniruddhv 52:0bd68655c651 651 initial_adf_check;\
ee12b079 268:ded5306a1fd1 652 gPC.puts("Config_part done\r\n");\
ee12b079 9:e9eaada136c6 653 }
ee12b079 9:e9eaada136c6 654
ee12b079 95:42d6747900cb 655 #define transmit_adf {\
ee12b079 317:31bb2e9eda85 656 while(power_reset_count<POWER_RESET_THRS){\
ee12b079 271:72529b247333 657 restart_adf_flag=false;\
ee12b079 271:72529b247333 658 bool tx_err=false;\
aniruddhv 52:0bd68655c651 659 configure_adf;\
aniruddhv 52:0bd68655c651 660 send_data;\
ee12b079 286:0f3a2a7ac295 661 /*PA MCR level*/;\
ee12b079 286:0f3a2a7ac295 662 gCS_ADF=0;\
ee12b079 286:0f3a2a7ac295 663 spi.write(0x1B);\
ee12b079 286:0f3a2a7ac295 664 spi.write(0x07);\
ee12b079 286:0f3a2a7ac295 665 spi.write(0x35);\
ee12b079 286:0f3a2a7ac295 666 gCS_ADF=1;\
ee12b079 317:31bb2e9eda85 667 CMD(CMD_PHY_TX);\
ee12b079 268:ded5306a1fd1 668 wait_us(2000);\
ee12b079 317:31bb2e9eda85 669 T.start();\
aniruddhv 52:0bd68655c651 670 while(loop_on){\
ee12b079 268:ded5306a1fd1 671 wait_us(20);\
ee12b079 268:ded5306a1fd1 672 check;\
ee12b079 271:72529b247333 673 if(data_irq_err||tx_err){\
ee12b079 317:31bb2e9eda85 674 hw_reset_err_cnt++;\
ee12b079 317:31bb2e9eda85 675 hw_reset_flag=true;\
ee12b079 268:ded5306a1fd1 676 break;\
aniruddhv 52:0bd68655c651 677 }\
aniruddhv 52:0bd68655c651 678 }\
ee12b079 317:31bb2e9eda85 679 if(hw_reset_flag==true){\
ee12b079 317:31bb2e9eda85 680 hardware_reset(0);\
ee12b079 317:31bb2e9eda85 681 }\
ee12b079 317:31bb2e9eda85 682 else{\
ee12b079 317:31bb2e9eda85 683 break;\
ee12b079 317:31bb2e9eda85 684 }\
ee12b079 317:31bb2e9eda85 685 gPC.puts("after while loop\r\n");\
ee12b079 317:31bb2e9eda85 686 }\
ee12b079 317:31bb2e9eda85 687 }