Bank Account Security System

Dependencies:   FatFileSystemSD mbed

Revision:
0:7e4786a3584b
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Thu Oct 11 20:49:25 2012 +0000
@@ -0,0 +1,474 @@
+# include <mbed.h>
+#include <mpr121.h>
+#include <string>
+#include <list>
+#include <mpr121.h>
+#include "TextLCD.h"
+#include <stdio.h>
+#include <stdlib.h>
+#include <sstream>
+#include <iostream>
+#include "ID12RFID.h"
+#include "Camera_LS_Y201.h"
+#include "SDFileSystem.h"
+
+
+
+TextLCD lcd(p15, p16, p17, p18, p19, p20);
+//ID12RFID rfid(p14);
+DigitalOut led1(LED1);
+DigitalOut led2(LED2);
+DigitalOut led3(LED3);
+DigitalOut led4(LED4);
+bool test1 = false;
+bool test2 = false;
+//int a=0;
+int counter1=0;
+int Code[4]= {0,0,0,0};
+int Code2[4];
+int flag=0;
+int a=0;
+int b=0;
+int enter=0;
+int end=0;
+int c=0;
+int chk1=0;
+int a1=0;
+int r=0;
+InterruptIn interrupt(p26);
+// Setup the i2c bus on pins 9 and 10
+I2C i2c(p9, p10);
+// Setup the Mpr121:
+// constructor(i2c object, i2c address of the mpr121)
+Mpr121 mpr121(&i2c, Mpr121::ADD_VSS);
+ID12RFID rfid(p14); // uart rx
+
+
+
+ 
+#define USE_SDCARD 1
+ 
+#if USE_SDCARD
+#define FILENAME    "/sd/IMG_%04d.jpg"
+SDFileSystem fs(p5, p6, p7, p8, "sd");
+#else
+#define FILENAME    "/local/IMG_%04d.jpg"
+LocalFileSystem fs("local");
+#endif
+Camera_LS_Y201 cam1(p28, p27);
+typedef struct work {
+    FILE *fp;
+} work_t;
+ 
+work_t work;
+ 
+/**
+ * Callback function for readJpegFileContent.
+ *
+ * @param buf A pointer to a buffer.
+ * @param siz A size of the buffer.
+ */
+void callback_func(int done, int total, uint8_t *buf, size_t siz) {
+    fwrite(buf, siz, 1, work.fp);
+ 
+    static int n = 0;
+    int tmp = done * 100 / total;
+    if (n != tmp) {
+        n = tmp;
+        lcd.cls();
+        lcd.printf("Writing...: %3d%%", n);
+        //wait(3);
+ //       ////newline();
+    }
+}
+ 
+/**
+ * Capture.
+ *
+ * @param cam A pointer to a camera object.
+ * @param filename The file name.
+ *
+ * @return Return 0 if it succeed.
+ */
+int capture(Camera_LS_Y201 *cam, char *filename) {
+    /*
+     * Take a picture.
+     */
+    if (cam->takePicture() != 0) {
+        return -1;
+    }
+    lcd.cls();
+    lcd.printf("Captured.");
+    wait(3);
+   // //newline();
+ 
+    /*
+     * Open file.
+     */
+    
+    work.fp = fopen(filename, "wb");
+    if (work.fp == NULL) {
+        return -2;
+    }
+ 
+    /*
+     * Read the content.
+     */
+    lcd.printf("%s", filename);
+    wait(3);
+    ////newline();
+    if (cam->readJpegFileContent(callback_func) != 0) {
+        fclose(work.fp);
+        return -3;
+    }
+    fclose(work.fp);
+ 
+    /*
+     * Stop taking pictures.
+     */
+    cam->stopTakingPictures();
+ 
+    return 0;
+}
+//DigitalOut led1(LED1);
+
+//TextLCD lcd(p15, p16, p17, p18, p19, p20); // rs, e, d4-d7
+// Key hit/release interrupt routine
+void fallInterrupt() {
+  int key_code=0;
+  int i=0;
+  int value=mpr121.read(0x00);
+  value +=mpr121.read(0x01)<<8;
+  // LED demo mod
+  i=0;
+  // puts key number out to LEDs for demo
+  for (i=0; i<12; i++) {
+  if (((value>>i)&0x01)==1) 
+  {
+//  led4=0;
+  b=1;
+  
+  key_code=i+1;
+  if(key_code==12)
+  {
+  end=1;
+  c=0;
+  }
+  else if(key_code==11)
+  {
+  enter=1;
+  c=0;
+  }
+  else
+  {
+  //a=i;
+  if(counter1 < 4)
+            {
+                Code[counter1] = i;
+                counter1++;
+            }
+            if(counter1==4)
+            {
+            Code2[0]=Code[0];
+            Code2[1]=Code[1];
+            Code2[2]=Code[2];
+            Code2[3]=Code[3];
+            Code[0]=0;
+            Code[1]=0;
+            Code[2]=0;
+            Code[3]=0;
+            counter1=0;            }
+  c++;
+  }
+  
+ /* led4=key_code & 0x01;
+  led3=(key_code>>1) & 0x01;
+  led2=(key_code>>2) & 0x01;
+  led1=(key_code>>3) & 0x01;*/
+  led4=1;
+  
+}
+//if(led4)
+//led4=0;
+}
+}
+int main()
+{
+  interrupt.fall(&fallInterrupt);
+  interrupt.mode(PullUp);
+
+    while(1) {
+        //Code[4]={0,0,0,0};
+        lcd.cls();
+        lcd.printf("Welcome to Chase Bank");
+        wait(4);
+        lcd.cls();
+        lcd.printf("Please tap your card");
+        wait(3);
+        if(rfid.readable()) {
+            lcd.cls();
+            a=rfid.read();
+            a1=a;
+            lcd.printf("RFID Tag number : %d\n", a);
+            wait(3);
+            led1=1;
+        } else {
+            lcd.cls();
+            lcd.printf("card not read properly");
+            wait(3);
+            a=0;
+        }
+        if(a==36905538 || a==36910393) {
+            test1=true;
+            lcd.cls();
+            lcd.printf("Valid Card detected\n");
+            wait(3);
+            lcd.printf("Card ID:- %d",a);
+            wait(3);
+            lcd.cls();
+            lcd.printf("Level 1 cleared");
+            wait(2);
+            lcd.cls();
+            lcd.printf("test1--%d",test1);
+            wait(2);
+        }
+        if(test1 && a!=0) {
+            lcd.cls();
+            lcd.printf("Enter 4 digit pin code");
+            wait(10);
+            if(b==1) {
+            //lcd.cls();
+            if(c==1)
+            {
+            lcd.cls();
+            lcd.printf("one key pressed"); 
+            wait(2);        
+            }
+            else if(c==2)
+            {
+            lcd.cls();
+            lcd.printf("second key pressed"); 
+            wait(2);        
+            }
+            else if(c==3)
+            {
+            lcd.cls();
+            lcd.printf("third key pressed"); 
+            wait(2);        
+            }
+            else if(c==4)
+            {
+            lcd.cls();
+            lcd.printf("fourth key pressed"); 
+            wait(2);
+            lcd.cls();
+            lcd.printf("press enter to submit"); 
+            wait(3); 
+            }  
+            if(enter)
+            {
+            lcd.cls();
+            lcd.printf("checking");
+            wait(2);
+            /*lcd.printf("%d",Code2[3]);
+            wait(3);
+            lcd.printf("a=",a1);
+            wait(2);*/
+            if(a1==36905538)
+            chk1=40;
+            else if (a1==36910393)
+            chk1=41;
+            
+            if(chk1==40)
+             {
+            
+                    if(Code2[0]==1 && Code2[1]==2 && Code2[2]==3 && Code2[3]==4) {
+                        lcd.cls();
+                        lcd.printf("PINCODE ACCEPTED");
+                        wait(5);
+                        test2=true;
+                        lcd.cls();
+                        lcd.printf("LEVEL 2 Cleared");
+                        wait(3);
+                        lcd.cls();
+                        lcd.printf("Welcome MR. Db");
+                        wait(4);
+                        lcd.cls();
+                        lcd.printf("your amount is 125$");
+                        wait(3);
+                        //break;
+                    } else {
+                        lcd.cls();
+                        lcd.printf("Intruder Alert");
+                        wait(5);
+                        ////////////////////start of capture
+                        lcd.cls();
+                         lcd.printf("Camera module");
+                         wait(1);
+    //newline();
+    lcd.cls();
+    lcd.printf("Resetting...");
+    wait(1);
+    //newline();
+    wait(1);
+ 
+    if (cam1.reset() == 0) {
+        lcd.cls();
+        lcd.printf("Reset OK.");
+        wait(1);
+        //////newline();
+    } else {
+        lcd.cls();
+        lcd.printf("Reset fail.");
+        wait(2);
+        ////////newline();
+        error("Reset fail.");
+    }
+    wait(1);
+ 
+    int cnt = 0;
+   
+        char fname[64];
+        snprintf(fname, sizeof(fname) - 1, FILENAME, cnt);
+        int r = capture(&cam1, fname);
+        if (r == 0) {
+        lcd.cls();
+            lcd.printf("[%04d]:OK.", cnt);
+            ////newline();
+            led1=1;
+        } else {
+        lcd.cls();
+            lcd.printf("[%04d]:NG. (code=%d)", cnt, r);
+            ////newline();
+            error("Failure.");
+            led2=1;
+        }
+        cnt++;
+    ////////////////end of capture
+                       while(r!=10)
+                       { 
+                         if(r%2!=0)
+                         {
+                        led1=1;
+                        led2=0;
+                        led3=1;
+                        led4=0;
+                        }
+                        if(r%2==0)
+                        {
+                        led1=0;
+                        led2=1;
+                        led3=0;
+                        led4=1;
+                        }
+                        
+                        r++;
+                        wait(1);
+                        }
+                        if(r==10)
+                        r=0;
+            //          }  break;
+                    }
+               }
+               else if(chk1==41)
+                    {
+                    if(Code2[0]==5 && Code2[1]==6 && Code2[2]==7 && Code2[3]==8) {
+                        lcd.cls();
+                        lcd.printf("PINCODE ACCEPTED");
+                        wait(5);
+                        test2=true;
+                        lcd.printf("LEVEL 2 Cleared");
+                        wait(3);
+                        lcd.cls();
+                        lcd.printf("Welcome MR. Db");
+                        wait(4);
+                        lcd.printf("your amount is 125$");
+                        wait(3);
+                        //break;
+                    } else {
+                        lcd.cls();
+                        lcd.printf("Intruder Alert");
+                        wait(5);
+                        ////////start of capture
+                        lcd.cls();
+                        lcd.printf("Camera module");
+    //newline();
+    lcd.cls();
+    lcd.printf("Resetting...");
+    //newline();
+    wait(1);
+ 
+    if (cam1.reset() == 0) {
+        
+        lcd.cls();
+        lcd.printf("Reset OK.");
+        wait(2);////newline();
+    } else {
+        lcd.cls();
+        lcd.printf("Reset fail.");
+        wait(2);////newline();
+        error("Reset fail.");
+    }
+    wait(1);
+ 
+    int cnt = 0;
+            char fname[64];
+        snprintf(fname, sizeof(fname) - 1, FILENAME, cnt);
+        int r = capture(&cam1, fname);
+        if (r == 0) {
+        lcd.cls();
+            lcd.printf("[%04d]:OK.", cnt);
+            wait(2);////newline();
+            led1=1;
+        } else {
+            lcd.cls();
+            lcd.printf("[%04d]:NG. (code=%d)", cnt, r);
+            wait(2);////newline();
+            error("Failure.");
+            led2=1;
+        }
+        cnt++;
+    /////////////end of capture
+                        
+                        while(r!=10)
+                       { 
+                         if(r%2!=0)
+                         {
+                        led1=1;
+                        led2=0;
+                        led3=1;
+                        led4=0;
+                        }
+                        if(r%2==0)
+                        {
+                        led1=0;
+                        led2=1;
+                        led3=0;
+                        led4=1;
+                        }
+                        
+                        r++;
+                        wait(1);
+                        }
+                        if(r==10)
+                        r=0;
+                        //break;
+                    }
+                    }
+            
+            enter=0;
+            } //end of enter
+            else if(end)
+            {  
+            lcd.cls();
+            lcd.printf("ending");
+            wait(3);
+            end=0;
+            } //end of end
+  }//end of b==1
+            
+            
+            }
+        }
+
+    }
\ No newline at end of file