Jose Marquez
/
mbed-os-wiegand-example
Example of the usage of the mbed-os-wiegand library.
main.cpp@3:585d3996f715, 2019-05-16 (annotated)
- 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?
User | Revision | Line number | New 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 | } |