working version

Dependencies:   mbed mbed-rtos SimpleDMA FreescaleIAP eeprom

Fork of CDMS_CODE_FM_28JAN2017 by samp Srinivasan

Committer:
samp1234
Date:
Sat Feb 10 09:06:26 2018 +0000
Revision:
356:197c93dc2012
Parent:
354:eb6c863756a8
Child:
357:f3d48d62e00e
Version used in QM

Who changed what in which revision?

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