Partially made code for adf7023

Dependencies:   mbed

Revision:
1:434b2062426b
Parent:
0:e80c23aacae6
Child:
2:599022fe2f99
--- a/main.cpp	Wed Oct 21 20:10:52 2015 +0000
+++ b/main.cpp	Wed Oct 21 20:26:08 2015 +0000
@@ -11,6 +11,8 @@
 #define THRS 20
 #define STATE_ERR_THRS 20
 #define PHY_OFF_EXEC_TIME 300
+#define PHY_ON_EXEC_TIME 300
+#define PHY_TX_EXEC_TIME 600
 /******DEFINING OMMANDS*********/
 
 #define CMD_HW_RESET 0xC8
@@ -386,7 +388,67 @@
             return assrt_phy_off(cmd_err_cnt+1,spi_err_cnt,state_err_cnt);
         }
 }
-        
+/*****************************/
+unsigned char assrt_phy_on(int cmd_err_cnt,int spi_err_cnt,int state_err_cnt){
+    status=check_status();
+        if(status==0xB2){
+            return 0;
+        }
+        else if(cmd_err_cnt>THRS||spi_err_cnt>THRS){
+            return 1;//You need to Reset the hardware
+        }
+        else if(state_err_cnt>STATE_ERR_THRS){
+            return 1;//Again reset the hardware
+        }
+        else if((status&0xA0)==0xA0){  //If Status' first three bit ore 0b1X1 =>SPI ready, Dont care interrupt and CMD Ready.
+            CS=0;
+            adf.write(0xB1);        //CMD_PHY_OFF
+            CS=1;
+            wait_us(PHY_ON_EXEC_TIME);// Typical = 24us  We are giving 300us 
+            return assrt_phy_on(cmd_err_cnt,spi_err_cnt,state_err_cnt+1);
+        }
+        else if(status&0x80==0x00){
+            wait_ms(5);
+            //Error: SPI=0 Not ready CMD= Dont care
+            return assrt_phy_on(cmd_err_cnt,spi_err_cnt+1,state_err_cnt);
+        }
+        else if(status&0xA0==0x80){
+            wait_ms(1);
+            //Error: Command Not ready SPI Ready cmd_err_cnt is a global variable
+            return assrt_phy_on(cmd_err_cnt+1,spi_err_cnt,state_err_cnt);
+        }
+}
+ /*****************************/
+ unsigned char assrt_phy_tx(int cmd_err_cnt,int spi_err_cnt,int state_err_cnt){
+    status=check_status();
+        if((status & 0x1F) == 0xB4){
+            return 0;
+        }
+        else if(cmd_err_cnt>THRS||spi_err_cnt>THRS){
+            return 1;//You need to Reset the hardware
+        }
+        else if(state_err_cnt>STATE_ERR_THRS){
+            return 1;//Again reset the hardware
+        }
+        else if((status&0xA0)==0xA0){  //If Status' first three bit ore 0b1X1 =>SPI ready, Dont care interrupt and CMD Ready.
+            CS=0;
+            adf.write(0xB1);        //CMD_PHY_OFF
+            CS=1;
+            wait_us(PHY_TX_EXEC_TIME);// Typical = 24us  We are giving 300us 
+            return assrt_phy_tx(cmd_err_cnt,spi_err_cnt,state_err_cnt+1);
+        }
+        else if(status&0x80==0x00){
+            wait_ms(1);
+            //Error: SPI=0 Not ready CMD= Dont care
+            return assrt_phy_tx(cmd_err_cnt,spi_err_cnt+1,state_err_cnt);
+        }
+        else if(status&0xA0==0x80){
+            wait_us(50);
+            //Error: Command Not ready SPI Ready cmd_err_cnt is a global variable
+            return assrt_phy_tx(cmd_err_cnt+1,spi_err_cnt,state_err_cnt);
+        }
+}
+
 /***************************/
 bool hardware_reset(int bcn_call){
     if (bcn_call>20){