11th feb i2c checking chaitu's code

Dependencies:   SimpleDMA eeprom mbed-rtos mbed

Fork of CDMS_CODE_FM_28JAN2017 by samp Srinivasan

Revision:
307:6654e7908e57
Parent:
306:82b7d137db31
--- a/adf.h	Sat Oct 29 11:39:30 2016 +0000
+++ b/adf.h	Tue Nov 22 08:43:13 2016 +0000
@@ -99,7 +99,18 @@
 stop_transmission=false;\
     }
 
+/*Added on 29th October 2016**/
 
+bool dummy_digitalOut_1=0;
+#define power_reset{\
+    dummy_digitalOut_1=0;\
+    wait_ms(10);\
+    dummy_digitalOut_1=1;\
+    power_reset_flag=false;\
+    power_reset_count++;\
+    wait_ms(10);\
+    }\
+/**********************/
 int err_arr[64];
 bool bbram_err=false;
 int err_idx=-1;
@@ -217,9 +228,14 @@
     }\
 }
 
-
+#define HW_RESET_THRS 5
 bool hardware_reset(int bcn_call)
-{
+{   
+    if(hw_reset_err_cnt>HW_RESET_THRS){
+        power_reset_flag=true;
+        power_reset;
+        return 0;
+    }
     for(int i= 0; i < 2 ; i++) {
         gCS_ADF=0;
         spi.write(CMD_HW_RESET);
@@ -395,7 +411,7 @@
     /*gPC.printf("I 0x%X\r\n",(int)status);*/\
     if(IRQ){\
         /*Reset the timer*/\
-        /*T.reset();*/\
+        T.reset();\
         /*gPC.printf("det\r\n");*/\
         if(!ADF_off) {\
             if(finish_write_data || restart_adf_flag) {\
@@ -424,16 +440,16 @@
                 wait_us(2000);\
                 }\
             /*Stop_the_Timer*/\
-            /*T.stop();*/\
+            T.stop();\
         }\
     }\
-    /*else{*/\
-        /*if(T.read_us()>98000){*/\
-                /*data_irq_err=true;*/\
-                /*CMD(CMD_PHY_ON);*/\
-                /*gPC.printf("Data_error_detected");*/\
-                /*}*/\        
-        /*}*/\
+    else{\
+        if(T.read_us()>98000){\
+                data_irq_err=true;\
+                CMD(CMD_PHY_ON);\
+                gPC.printf("Data_error_detected");\
+                }\        
+        }\
 }
 
 #define send_data {\
@@ -572,8 +588,12 @@
     initial_adf_check;\
     gPC.puts("Config_part done\r\n");\
 }
- 
+
+//int power_reset_count=0;
+#define POWER_RESET_THRS 2
+ bool hw_reset_flag=false;
 #define transmit_adf {\
+while(power_reset_count<POWER_RESET_THRS){\
     restart_adf_flag=false;\
     bool tx_err=false;\
     configure_adf;\
@@ -590,8 +610,17 @@
         wait_us(20);\
         check;\
         if(data_irq_err||tx_err){\
+            hw_reset_err_cnt++;\
+            hw_reset_flag=true;\
         break;\
         }\
     }\
-    /*gPC.puts("after while loop\r\n");*/\
+    if(hw_reset_flag==true){\
+        hardware_reset(0);\
+        }\
+    else{\
+        break;\
+    }\
+    gPC.puts("after while loop\r\n");\
+}\
 }