Telos B port is now working, and the CC2420 driver is coming together.
[goodfet] / firmware / apps / radios / ccspi.c
index 74dde4f..dd86e8c 100644 (file)
@@ -46,10 +46,6 @@ app_t const ccspi_app = {
        "\tmust be moved into the client.\n"
 };
 
-
-#define RADIOACTIVE CLRCE
-#define RADIOPASSIVE SETCE
-
 //! Set up the pins for CCSPI mode.
 void ccspisetup(){
   SPIDIR&=~MISO;
@@ -57,13 +53,15 @@ void ccspisetup(){
   DIRSS;
   DIRCE;
   
-  //Telos B Radio VReg Enable
-  P4DIR|=BIT5+BIT2+BIT6+BIT7;
-  P4OUT|=BIT5+BIT7;
-  P4OUT&=~(BIT6+BIT2);
+  P4OUT|=BIT5; //activate CC2420 voltage regulator
+  msdelay(100);
+  
+  //Reset the CC2420.
+  P4OUT&=~BIT6;
+  P4OUT|=BIT6;
   
   //Begin a new transaction.
-  CLRSS; 
+  CLRSS;
   SETSS;
 }
 
@@ -124,32 +122,18 @@ void ccspi_handle_fn( uint8_t const app,
   //debugstr("Chipcon SPI handler.");
   
   switch(verb){
+  case PEEK:
+    cmddata[0]|=0x40; //Set the read bit.
+    //DO NOT BREAK HERE.
   case READ:
   case WRITE:
+  case POKE:
     CLRSS; //Drop !SS to begin transaction.
     for(i=0;i<len;i++)
       cmddata[i]=ccspitrans8(cmddata[i]);
     SETSS;  //Raise !SS to end transaction.
     txdata(app,verb,len);
     break;
-
-  case PEEK://Grab CCSPI Register
-    CLRSS; //Drop !SS to begin transaction.
-    cmddata[0]=ccspitrans8(/*CCSPI_R_REGISTER |*/ cmddata[0]); //000A AAAA
-    for(i=1;i<len;i++)
-      cmddata[i]=ccspitrans8(cmddata[i]);
-    SETSS;  //Raise !SS to end transaction.
-    txdata(app,verb,len);
-    break;
-    
-  case POKE://Poke CCSPI Register
-    CLRSS; //Drop !SS to begin transaction.
-    cmddata[0]=ccspitrans8(/* CCSPI_W_REGISTER |*/ 0x40 | cmddata[0]); //02AA AAAA
-    for(i=1;i<len;i++)
-      cmddata[i]=ccspitrans8(cmddata[i]);
-    SETSS;  //Raise !SS to end transaction.
-    txdata(app,verb,len);
-    break;
   case SETUP:
     ccspisetup();
     txdata(app,verb,0);