Example of the usage of the mbed-os-wiegand library.

Dependencies:   mbed-os-wiegand

Committer:
goymame
Date:
Wed May 08 18:13:50 2019 +0000
Revision:
2:42f8f6b183ae
Parent:
1:26991d042db7
Child:
3:585d3996f715
Manage multiple Wiegand devices

Who changed what in which revision?

UserRevisionLine numberNew contents of line
goymame 1:26991d042db7 1 /* mbed Wiegand Library
goymame 1:26991d042db7 2 * Copyright (c) 2017-2019, Gregorio Marquez
goymame 1:26991d042db7 3 *
goymame 1:26991d042db7 4 * Permission is hereby granted, free of charge, to any person obtaining a copy
goymame 1:26991d042db7 5 * of this software and associated documentation files (the "Software"), to deal
goymame 1:26991d042db7 6 * in the Software without restriction, including without limitation the rights
goymame 1:26991d042db7 7 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
goymame 1:26991d042db7 8 * copies of the Software, and to permit persons to whom the Software is
goymame 1:26991d042db7 9 * furnished to do so, subject to the following conditions:
goymame 1:26991d042db7 10 *
goymame 1:26991d042db7 11 * The above copyright notice and this permission notice shall be included in
goymame 1:26991d042db7 12 * all copies or substantial portions of the Software.
goymame 1:26991d042db7 13 *
goymame 1:26991d042db7 14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
goymame 1:26991d042db7 15 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
goymame 1:26991d042db7 16 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
goymame 1:26991d042db7 17 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
goymame 1:26991d042db7 18 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
goymame 1:26991d042db7 19 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
goymame 1:26991d042db7 20 * THE SOFTWARE.
goymame 1:26991d042db7 21 */
goymame 1:26991d042db7 22
goymame 0:bf6b79d0e255 23 #include "mbed.h"
goymame 0:bf6b79d0e255 24 #include "wiegand.h"
goymame 0:bf6b79d0e255 25
goymame 2:42f8f6b183ae 26 Serial serial(USBTX, USBRX);
goymame 0:bf6b79d0e255 27 Thread wiegandThread;
goymame 2:42f8f6b183ae 28 EventQueue* queue = new EventQueue (16*EVENTS_EVENT_SIZE);
goymame 2:42f8f6b183ae 29
goymame 2:42f8f6b183ae 30 class wiegandUserApp{
goymame 2:42f8f6b183ae 31 private:
goymame 2:42f8f6b183ae 32 Wiegand* w1;
goymame 2:42f8f6b183ae 33 Wiegand* w2;
goymame 2:42f8f6b183ae 34 Wiegand* w3;
goymame 2:42f8f6b183ae 35 Wiegand* w4;
goymame 2:42f8f6b183ae 36 void _onTag(Wiegand* wiegandReader){
goymame 2:42f8f6b183ae 37 long double rawInt = wiegandReader->getRawInt();
goymame 2:42f8f6b183ae 38 unsigned char id = wiegandReader->getId();
goymame 2:42f8f6b183ae 39 serial.printf("id: %d\r\n",id);
goymame 2:42f8f6b183ae 40 serial.printf("Integer: %.0Lf\r\n",rawInt);
goymame 2:42f8f6b183ae 41
goymame 2:42f8f6b183ae 42 unsigned char decDigits = wiegandReader->getDecDigits();
goymame 2:42f8f6b183ae 43 volatile char* decimalString = new volatile char [decDigits+1];
goymame 2:42f8f6b183ae 44 memset((char*)decimalString,'\0',decDigits+1);
goymame 2:42f8f6b183ae 45 wiegandReader->getDecString(decimalString);
goymame 2:42f8f6b183ae 46 serial.printf("Decimal String: %s\r\n",decimalString);
goymame 2:42f8f6b183ae 47 delete[] decimalString;
goymame 0:bf6b79d0e255 48
goymame 2:42f8f6b183ae 49 unsigned char hexDigits = wiegandReader->getHexDigits();
goymame 2:42f8f6b183ae 50 volatile char* hexadecimalString = new volatile char [hexDigits+1];
goymame 2:42f8f6b183ae 51 memset((char*)hexadecimalString,'\0',hexDigits+1);
goymame 2:42f8f6b183ae 52 wiegandReader->getHexString(hexadecimalString);
goymame 2:42f8f6b183ae 53 serial.printf("Hexadecimal String: %s\r\n\n",hexadecimalString);
goymame 2:42f8f6b183ae 54 delete[] hexadecimalString;
goymame 0:bf6b79d0e255 55
goymame 2:42f8f6b183ae 56 wiegandReader->reset();
goymame 2:42f8f6b183ae 57 }
goymame 2:42f8f6b183ae 58 public:
goymame 2:42f8f6b183ae 59 wiegandUserApp(EventQueue* eventQueue,PinName p1d0, PinName p1d1,PinName p2d0, PinName p2d1, PinName p3d0, PinName p3d1, PinName p4d0, PinName p4d1){
goymame 2:42f8f6b183ae 60 w1 = new Wiegand (p1d0, p1d1, eventQueue, 32,1);
goymame 2:42f8f6b183ae 61 w2 = new Wiegand (p2d0, p2d1, eventQueue, 32,2);
goymame 2:42f8f6b183ae 62 w3 = new Wiegand (p3d0, p3d1, eventQueue, 32,3);
goymame 2:42f8f6b183ae 63 w4 = new Wiegand (p4d0, p4d1, eventQueue, 32,4);
goymame 2:42f8f6b183ae 64 w1->attach(callback(this,&wiegandUserApp::_onTag));
goymame 2:42f8f6b183ae 65 w2->attach(callback(this,&wiegandUserApp::_onTag));
goymame 2:42f8f6b183ae 66 w3->attach(callback(this,&wiegandUserApp::_onTag));
goymame 2:42f8f6b183ae 67 w4->attach(callback(this,&wiegandUserApp::_onTag));
goymame 2:42f8f6b183ae 68 };
goymame 2:42f8f6b183ae 69 };
goymame 2:42f8f6b183ae 70
goymame 2:42f8f6b183ae 71 PinName P1D0 = PE_0;
goymame 2:42f8f6b183ae 72 PinName P1D1 = PE_2;
goymame 2:42f8f6b183ae 73 PinName P2D0 = D4;
goymame 2:42f8f6b183ae 74 PinName P2D1 = D5;
goymame 2:42f8f6b183ae 75 PinName P3D0 = D6;
goymame 2:42f8f6b183ae 76 PinName P3D1 = D7;
goymame 2:42f8f6b183ae 77 PinName P4D0 = D8;
goymame 2:42f8f6b183ae 78 PinName P4D1 = D9;
goymame 0:bf6b79d0e255 79
goymame 0:bf6b79d0e255 80 int main(){
goymame 2:42f8f6b183ae 81 serial.printf("\r\n******************* Wiegand reader example *******************\r\n\n");
goymame 2:42f8f6b183ae 82 wiegandThread.start(callback(queue,&EventQueue::dispatch_forever));
goymame 2:42f8f6b183ae 83 wiegandUserApp wiegandApp(queue,P1D0,P1D1,P2D0,P2D1,P3D0,P3D1,P4D0,P4D1);
goymame 2:42f8f6b183ae 84 }