Jose Marquez
/
mbed-os-wiegand-example
Example of the usage of the mbed-os-wiegand library.
Diff: main.cpp
- Revision:
- 2:42f8f6b183ae
- Parent:
- 1:26991d042db7
- Child:
- 3:585d3996f715
diff -r 26991d042db7 -r 42f8f6b183ae main.cpp --- a/main.cpp Sun Apr 28 00:06:13 2019 +0000 +++ b/main.cpp Wed May 08 18:13:50 2019 +0000 @@ -23,35 +23,62 @@ #include "mbed.h" #include "wiegand.h" -RawSerial serial(USBTX, USBRX); +Serial serial(USBTX, USBRX); Thread wiegandThread; -EventQueue* wiegandQueue = new EventQueue (64 * EVENTS_EVENT_SIZE); +EventQueue* queue = new EventQueue (16*EVENTS_EVENT_SIZE); + +class wiegandUserApp{ +private: + Wiegand* w1; + Wiegand* w2; + Wiegand* w3; + Wiegand* w4; + void _onTag(Wiegand* wiegandReader){ + long double rawInt = wiegandReader->getRawInt(); + unsigned char id = wiegandReader->getId(); + serial.printf("id: %d\r\n",id); + serial.printf("Integer: %.0Lf\r\n",rawInt); + + unsigned char decDigits = wiegandReader->getDecDigits(); + volatile char* decimalString = new volatile char [decDigits+1]; + memset((char*)decimalString,'\0',decDigits+1); + wiegandReader->getDecString(decimalString); + serial.printf("Decimal String: %s\r\n",decimalString); + delete[] decimalString; -void onTag(void); + unsigned char hexDigits = wiegandReader->getHexDigits(); + volatile char* hexadecimalString = new volatile char [hexDigits+1]; + memset((char*)hexadecimalString,'\0',hexDigits+1); + wiegandReader->getHexString(hexadecimalString); + serial.printf("Hexadecimal String: %s\r\n\n",hexadecimalString); + delete[] hexadecimalString; -Wiegand wiegandReader(PE_13, PF_15, wiegandQueue, &onTag, 32); + wiegandReader->reset(); + } +public: + wiegandUserApp(EventQueue* eventQueue,PinName p1d0, PinName p1d1,PinName p2d0, PinName p2d1, PinName p3d0, PinName p3d1, PinName p4d0, PinName p4d1){ + w1 = new Wiegand (p1d0, p1d1, eventQueue, 32,1); + w2 = new Wiegand (p2d0, p2d1, eventQueue, 32,2); + w3 = new Wiegand (p3d0, p3d1, eventQueue, 32,3); + w4 = new Wiegand (p4d0, p4d1, eventQueue, 32,4); + w1->attach(callback(this,&wiegandUserApp::_onTag)); + w2->attach(callback(this,&wiegandUserApp::_onTag)); + w3->attach(callback(this,&wiegandUserApp::_onTag)); + w4->attach(callback(this,&wiegandUserApp::_onTag)); + }; +}; + +PinName P1D0 = PE_0; +PinName P1D1 = PE_2; +PinName P2D0 = D4; +PinName P2D1 = D5; +PinName P3D0 = D6; +PinName P3D1 = D7; +PinName P4D0 = D8; +PinName P4D1 = D9; int main(){ - serial.printf("\r\n******************* Wiegand reader example *******************\r\n"); - wiegandThread.start(callback( wiegandQueue, &EventQueue::dispatch_forever)); -} - -void onTag(void){ - long double rawInt = wiegandReader.getRawInt(); - serial.printf("Integer: %.0Lf\r\n",rawInt); - - unsigned char decDigits = wiegandReader.getDecDigits(); - volatile char* decimalString = new volatile char [decDigits+1]; - memset((char*)decimalString,'\0',decDigits+1); - wiegandReader.getDecString(decimalString); - serial.printf("Decimal String: %s\r\n",decimalString); - delete[] decimalString; - - unsigned char hexDigits = wiegandReader.getHexDigits(); - volatile char* hexadecimalString = new volatile char [hexDigits+1]; - memset((char*)hexadecimalString,'\0',hexDigits+1); - wiegandReader.getHexString(hexadecimalString); - serial.printf("Hexadecimal String: %s\r\n\n",hexadecimalString); - delete[] hexadecimalString; - wiegandReader.reset(); -} + serial.printf("\r\n******************* Wiegand reader example *******************\r\n\n"); + wiegandThread.start(callback(queue,&EventQueue::dispatch_forever)); + wiegandUserApp wiegandApp(queue,P1D0,P1D1,P2D0,P2D1,P3D0,P3D1,P4D0,P4D1); +} \ No newline at end of file