ID12 RFID library for reading 125KHz RFID tags

Dependents:   ID12RFID_HelloWorld MyFinalDerbot RFID_CatDoor TweetRFID ... more

Committer:
simon
Date:
Thu Jun 03 13:24:04 2010 +0000
Revision:
0:049d572aefe1
Child:
1:f04afa911cf5

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
simon 0:049d572aefe1 1 /* mbed ID12 RFID Library
simon 0:049d572aefe1 2 * Copyright (c) 2007-2010, sford
simon 0:049d572aefe1 3 *
simon 0:049d572aefe1 4 * Permission is hereby granted, free of charge, to any person obtaining a copy
simon 0:049d572aefe1 5 * of this software and associated documentation files (the "Software"), to deal
simon 0:049d572aefe1 6 * in the Software without restriction, including without limitation the rights
simon 0:049d572aefe1 7 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
simon 0:049d572aefe1 8 * copies of the Software, and to permit persons to whom the Software is
simon 0:049d572aefe1 9 * furnished to do so, subject to the following conditions:
simon 0:049d572aefe1 10 *
simon 0:049d572aefe1 11 * The above copyright notice and this permission notice shall be included in
simon 0:049d572aefe1 12 * all copies or substantial portions of the Software.
simon 0:049d572aefe1 13 *
simon 0:049d572aefe1 14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
simon 0:049d572aefe1 15 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
simon 0:049d572aefe1 16 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
simon 0:049d572aefe1 17 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
simon 0:049d572aefe1 18 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
simon 0:049d572aefe1 19 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
simon 0:049d572aefe1 20 * THE SOFTWARE.
simon 0:049d572aefe1 21 */
simon 0:049d572aefe1 22
simon 0:049d572aefe1 23 #include "ID12RFID.h"
simon 0:049d572aefe1 24
simon 0:049d572aefe1 25 #include "mbed.h"
simon 0:049d572aefe1 26
simon 0:049d572aefe1 27 ID12RFID::ID12RFID(PinName rx)
simon 0:049d572aefe1 28 : _rfid(NC, rx) {
simon 0:049d572aefe1 29 }
simon 0:049d572aefe1 30
simon 0:049d572aefe1 31 int ID12RFID::readable() {
simon 0:049d572aefe1 32 return _rfid.readable();
simon 0:049d572aefe1 33 }
simon 0:049d572aefe1 34
simon 0:049d572aefe1 35 int ID12RFID::read() {
simon 0:049d572aefe1 36 while (_rfid.getc() != 2);
simon 0:049d572aefe1 37
simon 0:049d572aefe1 38 int v = 0;
simon 0:049d572aefe1 39 _rfid.getc(); // drop 1st 2
simon 0:049d572aefe1 40 _rfid.getc();
simon 0:049d572aefe1 41
simon 0:049d572aefe1 42 for (int i=7; i>=0; i--) {
simon 0:049d572aefe1 43 char c = _rfid.getc(); // a ascii hex char
simon 0:049d572aefe1 44 int part = c - '0';
simon 0:049d572aefe1 45 v |= part << (i * 4);
simon 0:049d572aefe1 46 }
simon 0:049d572aefe1 47
simon 0:049d572aefe1 48 for (int i=0; i<5; i++) {
simon 0:049d572aefe1 49 _rfid.getc();
simon 0:049d572aefe1 50 }
simon 0:049d572aefe1 51
simon 0:049d572aefe1 52 return v;
simon 0:049d572aefe1 53 }