Albin Sebastian / FPC_R306

Dependents:   Wiz750SR_fingerR306_WITH_MQTT

Fork of GT511C3 by WIZnet

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers FPC_R306.cpp Source File

FPC_R306.cpp

00001 
00002 
00003 
00004 //......Created by the CDI KENGERI TEAM(Christ(Deemed to be University)) Bangalore, Karnataka, India.......//
00005 
00006 #include "mbed.h"
00007 #include "FPC_R306.hpp"
00008 Serial FPC(PA_13,PA_14);
00009 Serial lib(USBTX,USBRX);
00010 #define SET_AND_SUMADD(idx,val) sendbuf[idx]=((unsigned char)(val));//sum += sendbuf[idx]
00011 
00012 /*int FPC_R306::Init(void)
00013 {
00014     baud(57600);
00015     ClearLine();
00016     return 0;
00017 }*/
00018 
00019 int FPC_R306::CMD_GETIMG()
00020 {
00021     FPC.baud(57600);
00022     FPC.putc(0xEF);     //start_code
00023     FPC.putc(0x01);     //start_code
00024     FPC.putc(0xFF);     //address
00025     FPC.putc(0xFF);     //address
00026     FPC.putc(0xFF);     //address
00027     FPC.putc(0xFF);     //address
00028     FPC.putc(0x01);     //type 
00029     FPC.putc(0x00);     //length
00030     FPC.putc(0x03);     //length
00031     FPC.putc(0x01);     //command
00032     FPC.putc(0x00);     //Checksum
00033     FPC.putc(0x05);     //Checksum
00034     uint8_t resp = RecvResponse();
00035     return resp;
00036 }
00037 
00038 
00039 int FPC_R306::CMD_IMG2Tz1()
00040 {
00041     FPC.baud(57600);
00042     FPC.putc(0xEF);     //start_code
00043     FPC.putc(0x01);     //start_code
00044     FPC.putc(0xFF);     //address
00045     FPC.putc(0xFF);     //address
00046     FPC.putc(0xFF);     //address
00047     FPC.putc(0xFF);     //address
00048     FPC.putc(0x01);     //type (package identifier)
00049     FPC.putc(0x00);     //datalength
00050     FPC.putc(0x04);     //datalength
00051     FPC.putc(0x02);     //command
00052     FPC.putc(0x01);     //slot number
00053     FPC.putc(0x00);     //Checksum
00054     FPC.putc(0x08);     //Checksum
00055     uint8_t resp = RecvResponse();
00056     return resp;
00057     }
00058     
00059 int FPC_R306::CMD_IMG2Tz2()
00060 {
00061     FPC.baud(57600);
00062     FPC.putc(0xEF);     //start_code
00063     FPC.putc(0x01);     //start_code
00064     FPC.putc(0xFF);     //address
00065     FPC.putc(0xFF);     //address
00066     FPC.putc(0xFF);     //address
00067     FPC.putc(0xFF);     //address
00068     FPC.putc(0x01);     //type (package identifier)
00069     FPC.putc(0x00);     //datalength
00070     FPC.putc(0x04);     //datalength
00071     FPC.putc(0x02);     //command
00072     FPC.putc(0x02);     //slot number
00073     FPC.putc(0x00);     //Checksum
00074     FPC.putc(0x09);     //Checksum
00075     uint8_t resp = RecvResponse();
00076     return resp;
00077     }
00078     
00079     
00080 int FPC_R306::createModel()
00081 {
00082     FPC.baud(57600);
00083     FPC.putc(0xEF);     //start_code
00084     FPC.putc(0x01);     //start_code
00085     FPC.putc(0xFF);     //address
00086     FPC.putc(0xFF);     //address
00087     FPC.putc(0xFF);     //address
00088     FPC.putc(0xFF);     //address
00089     FPC.putc(0x01);     //type (package identifier)
00090     FPC.putc(0x00);     //datalength
00091     FPC.putc(0x03);     //datalength
00092     FPC.putc(0x05);     //command
00093     FPC.putc(0x00);     //Checksum
00094     FPC.putc(0x09);     //Checksum
00095     uint8_t resp = RecvResponse();
00096     return resp;
00097     }
00098     
00099     
00100 int FPC_R306:: STORE_MODEL(uint16_t id)
00101 {
00102     FPC.baud(57600);
00103     FPC.putc(0xEF);     //start_code
00104     FPC.putc(0x01);     //start_code
00105     FPC.putc(0xFF);     //address
00106     FPC.putc(0xFF);     //address
00107     FPC.putc(0xFF);     //address
00108     FPC.putc(0xFF);     //address
00109     FPC.putc(0x01);     //type (package identifier)
00110     FPC.putc(0x00);     //datalength
00111     FPC.putc(0x06);     //datalength
00112     FPC.putc(0x06);     //command
00113     FPC.putc(0x01);     //bufferID
00114     uint8_t sum = 0x0E; //type + datalength + command + BufferID
00115     FPC.putc((uint8_t)(id >> 8));
00116     FPC.putc((uint8_t)(id & 0xFF));
00117     uint16_t checksum = ((uint8_t)(sum & 0xFF) + (uint8_t)(id >> 8) + (uint8_t)(id & 0xFF)); //checkssum = type + datalength + command + BufferID + ID
00118     FPC.putc((uint8_t)(checksum >> 8));     //Checksum
00119     FPC.putc((uint8_t) (checksum & 0xFF));     //Checksum
00120     uint8_t resp = RecvResponse();
00121     return resp;
00122     }
00123 
00124 uint8_t FPC_R306::RecvResponse()
00125 {
00126     FPC.baud(57600);
00127     //lib.printf("Waiting for response\n");
00128     uint8_t byte[12];
00129     int i=0;
00130        for(i=0;i<12;i++)
00131        {
00132         byte[i] = FPC.getc();
00133         }
00134         return byte[9];
00135            
00136 }
00137 
00138 uint8_t FPC_R306 :: FAST_SEARCH()
00139 {
00140     FPC.baud(57600);
00141     FPC.putc(0xEF);     //start_code
00142     FPC.putc(0x01);     //start_code
00143     FPC.putc(0xFF);     //address
00144     FPC.putc(0xFF);     //address
00145     FPC.putc(0xFF);     //address
00146     FPC.putc(0xFF);     //address
00147     FPC.putc(0x01);     //type (package identifier)
00148     FPC.putc(0x00);     //datalength
00149     FPC.putc(0x08);     //datalength
00150     FPC.putc(0x1B);     //command
00151     FPC.putc(0x01);     //CharBuffer
00152     FPC.putc(0x00);     //Start Page
00153     FPC.putc(0x00);     //Start Page
00154     FPC.putc(0x00);     //Page Num
00155     FPC.putc(0xA3);     //Page Num
00156     FPC.putc(0x00);     //Checksum
00157     FPC.putc(0xC8);     //Checksum
00158     uint8_t resp = Recv_FAST_SEARCH();
00159     return resp;
00160     } 
00161 
00162 uint8_t FPC_R306 :: TMPL_COUNT()
00163 {
00164     FPC.baud(57600);
00165     FPC.putc(0xEF);     //start_code
00166     FPC.putc(0x01);     //start_code
00167     FPC.putc(0xFF);     //address
00168     FPC.putc(0xFF);     //address
00169     FPC.putc(0xFF);     //address
00170     FPC.putc(0xFF);     //address
00171     FPC.putc(0x01);     //type (package identifier)
00172     FPC.putc(0x00);     //datalength
00173     FPC.putc(0x03);     //datalength
00174     FPC.putc(0x1D);     //command
00175     FPC.putc(0x00);     //Checksum
00176     FPC.putc(0x21);     //Checksum
00177     uint8_t resp = Recv_TMPL_COUNT();
00178     return resp;
00179     }
00180     
00181 
00182 uint8_t FPC_R306 :: DELETE_ID(uint16_t id)
00183 {
00184     FPC.baud(57600);
00185     FPC.putc(0xEF);     //start_code
00186     FPC.putc(0x01);     //start_code
00187     FPC.putc(0xFF);     //address
00188     FPC.putc(0xFF);     //address
00189     FPC.putc(0xFF);     //address
00190     FPC.putc(0xFF);     //address
00191     FPC.putc(0x01);     //type (package identifier)
00192     FPC.putc(0x00);     //datalength
00193     FPC.putc(0x07);     //datalength
00194     FPC.putc(0x0C);     //command
00195     FPC.putc((uint8_t) id >>8 );     //ID num (Page Num)
00196     FPC.putc((uint8_t) id & 0xFF);     //ID num (Page Num)
00197     FPC.putc(0x00);     //Number of templates
00198     FPC.putc(0x01);     //Number of templates
00199     uint8_t sum = 0x15; // sum = type + datalength + command + no. of templates
00200     uint16_t checksum = ((uint8_t)(sum & 0xFF) + (uint8_t)(id >> 8) + (uint8_t)(id & 0xFF));
00201     FPC.putc((uint8_t)(checksum >> 8));     //Checksum
00202     FPC.putc((uint8_t)(checksum & 0xFF));     //Checksum
00203     uint8_t resp = RecvResponse();
00204     return resp;
00205     }     
00206     
00207     
00208 uint8_t FPC_R306 :: EMPTY_LIB()
00209 {
00210     FPC.baud(57600);
00211     FPC.putc(0xEF);     //start_code
00212     FPC.putc(0x01);     //start_code
00213     FPC.putc(0xFF);     //address
00214     FPC.putc(0xFF);     //address
00215     FPC.putc(0xFF);     //address
00216     FPC.putc(0xFF);     //address
00217     FPC.putc(0x01);     //type (package identifier)
00218     FPC.putc(0x00);     //datalength
00219     FPC.putc(0x03);     //datalength
00220     FPC.putc(0x0D);     //command
00221     FPC.putc(0x00);     //Checksum
00222     FPC.putc(0x11);     //Checksum
00223     uint8_t resp = RecvResponse();
00224     return resp;
00225     }
00226     
00227         
00228 uint8_t FPC_R306 :: Recv_TMPL_COUNT()
00229 {
00230     FPC.baud(57600);
00231     uint8_t byte[14];
00232     int i=0;
00233        for(i=0;i<14;i++)
00234        {
00235         byte[i] = FPC.getc();
00236         }
00237         templatecount = byte[10];
00238         templatecount <<=8;
00239         templatecount |= byte[11];
00240         
00241         return byte[9];
00242     }
00243     
00244     
00245 uint8_t FPC_R306:: Recv_FAST_SEARCH()
00246 {
00247     FPC.baud(57600);
00248     uint8_t byte[16];
00249     int i=0;
00250        for(i=0;i<16;i++)
00251        {
00252         byte[i] = FPC.getc();
00253         }
00254         fingerID = byte[10];
00255         fingerID <<=8;       
00256         fingerID |= byte[11];
00257         
00258         MatchScore = byte[12];
00259         MatchScore <<=8;
00260         MatchScore |= byte[13];
00261         
00262         return byte[9];
00263     }
00264