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

Dependencies:   mbed-os-wiegand

Revision:
2:42f8f6b183ae
Parent:
1:26991d042db7
Child:
3:585d3996f715
--- 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