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

Dependencies:   mbed-os-wiegand

Committer:
goymame
Date:
Thu May 16 22:27:24 2019 +0000
Revision:
3:585d3996f715
Parent:
2:42f8f6b183ae
Update example to lates version of the library

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 3:585d3996f715 36 unsigned short int _bits;
goymame 2:42f8f6b183ae 37 void _onTag(Wiegand* wiegandReader){
goymame 2:42f8f6b183ae 38 long double rawInt = wiegandReader->getRawInt();
goymame 2:42f8f6b183ae 39 unsigned char id = wiegandReader->getId();
goymame 2:42f8f6b183ae 40 serial.printf("id: %d\r\n",id);
goymame 2:42f8f6b183ae 41 serial.printf("Integer: %.0Lf\r\n",rawInt);
goymame 2:42f8f6b183ae 42
goymame 2:42f8f6b183ae 43 unsigned char decDigits = wiegandReader->getDecDigits();
goymame 2:42f8f6b183ae 44 volatile char* decimalString = new volatile char [decDigits+1];
goymame 2:42f8f6b183ae 45 memset((char*)decimalString,'\0',decDigits+1);
goymame 2:42f8f6b183ae 46 wiegandReader->getDecString(decimalString);
goymame 2:42f8f6b183ae 47 serial.printf("Decimal String: %s\r\n",decimalString);
goymame 2:42f8f6b183ae 48 delete[] decimalString;
goymame 0:bf6b79d0e255 49
goymame 2:42f8f6b183ae 50 unsigned char hexDigits = wiegandReader->getHexDigits();
goymame 2:42f8f6b183ae 51 volatile char* hexadecimalString = new volatile char [hexDigits+1];
goymame 2:42f8f6b183ae 52 memset((char*)hexadecimalString,'\0',hexDigits+1);
goymame 2:42f8f6b183ae 53 wiegandReader->getHexString(hexadecimalString);
goymame 2:42f8f6b183ae 54 serial.printf("Hexadecimal String: %s\r\n\n",hexadecimalString);
goymame 2:42f8f6b183ae 55 delete[] hexadecimalString;
goymame 0:bf6b79d0e255 56
goymame 2:42f8f6b183ae 57 wiegandReader->reset();
goymame 2:42f8f6b183ae 58 }
goymame 2:42f8f6b183ae 59 public:
goymame 2:42f8f6b183ae 60 wiegandUserApp(EventQueue* eventQueue,PinName p1d0, PinName p1d1,PinName p2d0, PinName p2d1, PinName p3d0, PinName p3d1, PinName p4d0, PinName p4d1){
goymame 3:585d3996f715 61 w1 = new Wiegand (p1d0, p1d1, eventQueue,1);
goymame 3:585d3996f715 62 w2 = new Wiegand (p2d0, p2d1, eventQueue,2);
goymame 3:585d3996f715 63 w3 = new Wiegand (p3d0, p3d1, eventQueue,3);
goymame 3:585d3996f715 64 w4 = new Wiegand (p4d0, p4d1, eventQueue,4);
goymame 3:585d3996f715 65 };
goymame 3:585d3996f715 66 void init(){
goymame 3:585d3996f715 67 w1->setBits(_bits);
goymame 3:585d3996f715 68 w2->setBits(_bits);
goymame 3:585d3996f715 69 w3->setBits(_bits);
goymame 3:585d3996f715 70 w4->setBits(_bits);
goymame 2:42f8f6b183ae 71 w1->attach(callback(this,&wiegandUserApp::_onTag));
goymame 2:42f8f6b183ae 72 w2->attach(callback(this,&wiegandUserApp::_onTag));
goymame 2:42f8f6b183ae 73 w3->attach(callback(this,&wiegandUserApp::_onTag));
goymame 2:42f8f6b183ae 74 w4->attach(callback(this,&wiegandUserApp::_onTag));
goymame 3:585d3996f715 75 }
goymame 3:585d3996f715 76 void setBits(unsigned short int bits){
goymame 3:585d3996f715 77 _bits= bits;
goymame 3:585d3996f715 78 }
goymame 2:42f8f6b183ae 79 };
goymame 2:42f8f6b183ae 80
goymame 2:42f8f6b183ae 81 PinName P1D0 = PE_0;
goymame 2:42f8f6b183ae 82 PinName P1D1 = PE_2;
goymame 2:42f8f6b183ae 83 PinName P2D0 = D4;
goymame 2:42f8f6b183ae 84 PinName P2D1 = D5;
goymame 2:42f8f6b183ae 85 PinName P3D0 = D6;
goymame 2:42f8f6b183ae 86 PinName P3D1 = D7;
goymame 2:42f8f6b183ae 87 PinName P4D0 = D8;
goymame 2:42f8f6b183ae 88 PinName P4D1 = D9;
goymame 0:bf6b79d0e255 89
goymame 0:bf6b79d0e255 90 int main(){
goymame 2:42f8f6b183ae 91 serial.printf("\r\n******************* Wiegand reader example *******************\r\n\n");
goymame 2:42f8f6b183ae 92 wiegandThread.start(callback(queue,&EventQueue::dispatch_forever));
goymame 2:42f8f6b183ae 93 wiegandUserApp wiegandApp(queue,P1D0,P1D1,P2D0,P2D1,P3D0,P3D1,P4D0,P4D1);
goymame 3:585d3996f715 94 wiegandApp.setBits(32);
goymame 3:585d3996f715 95 wiegandApp.init();
goymame 2:42f8f6b183ae 96 }