Some doodles toward a smart card app. Nothing works.
authortravisutk <travisutk@12e2690d-a6be-4b82-a7b7-67c4a43b65c8>
Mon, 22 Feb 2010 20:15:45 +0000 (20:15 +0000)
committertravisutk <travisutk@12e2690d-a6be-4b82-a7b7-67c4a43b65c8>
Mon, 22 Feb 2010 20:15:45 +0000 (20:15 +0000)
git-svn-id: https://svn.code.sf.net/p/goodfet/code/trunk@342 12e2690d-a6be-4b82-a7b7-67c4a43b65c8

firmware/apps/jtag/jtag430.c
firmware/apps/smartcard/smartcard.c

index 22687da..95e91a6 100644 (file)
@@ -322,7 +322,8 @@ void jtag430handle(unsigned char app,
     P1OUT^=1;
   }
   P1OUT&=~1;
-    
+  
+  
   switch(verb){
   case START:
     //Enter JTAG mode.
index e984f24..d8b8539 100644 (file)
@@ -9,16 +9,65 @@
 #include "command.h"
 #include "jtag.h"
 
+//TDO/P5.2 is Data
+
+//Read a bit.
+#define SCIN (P5IN&BIT2)
+//Set I/O direction.
+#define SCINPUT (P5DIR&=~BIT2)
+#define SCOUTPUT (P5DIR|=BIT2)
+//Set data value.
+#define SCH (P5OUT|=BIT2)
+#define SCL (P5OUT&=~BIT2)
+
+//Clock.
+#define SCTICK (P5OUT|=BIT3)
+#define SCTOCK (P5OUT&=~BIT3)
+
+
+//! Setup the smart card mode.
+void smartcardsetup(){
+  P5DIR|=BIT3;
+  P2DIR|=RST;
+  msdelay(100);
+}
+
+u16 sctime=0, foo=0;
+
 //! Handles a monitor command.
 int smartcardhandle(unsigned char app,
              unsigned char verb,
              unsigned int len){
   switch(verb){
   case SETUP:
-    debugstr("Unable to setup smart card.");
+    smartcardsetup();
     break;
   case START:
-    debugstr("Unable to start smart card.");
+    smartcardsetup();
+    debugstr("Reseting card");
+    SCINPUT;
+    
+    CLRRST;
+    SCTICK;
+    SCTOCK;
+    SCTICK;
+    SCTOCK;
+    delay(500);
+    SETRST;
+    
+    while(1){
+      sctime++;
+      SCTICK;
+      delay(5);
+      SCTOCK;
+      
+      P1OUT^=1;
+      if(SCIN!=foo){
+       foo=SCIN;
+      }
+      if(sctime%0x1000==0)
+       debughex(foo);
+    }
     break;
   case STOP:
   default: