Revision: 9130
          http://sourceforge.net/p/playerstage/svn/9130
Author:   jpgr87
Date:     2013-11-10 19:06:56 +0000 (Sun, 10 Nov 2013)
Log Message:
-----------
Phidget RFID driver now compatible with phidget 2.1.8 library

Modified Paths:
--------------
    code/player/trunk/cmake/internal/SearchForStuff.cmake
    code/player/trunk/server/drivers/rfid/CMakeLists.txt
    code/player/trunk/server/drivers/rfid/phidgetRFID.cc

Modified: code/player/trunk/cmake/internal/SearchForStuff.cmake
===================================================================
--- code/player/trunk/cmake/internal/SearchForStuff.cmake       2013-11-10 
18:28:48 UTC (rev 9129)
+++ code/player/trunk/cmake/internal/SearchForStuff.cmake       2013-11-10 
19:06:56 UTC (rev 9130)
@@ -277,6 +277,11 @@
     CPhidgetInterfaceKit_create(&ifk);
     CPhidgetInterfaceKit_getOutputCount(ifk, &phidget_num_outputs); return 0; 
}\n")
     CHECK_C_SOURCE_COMPILES ("${CHECK_PHIDGET_SOURCE_CODE}" HAVE_PHIDGET_2_1_7)
+
+    SET(CMAKE_REQUIRED_FLAGS "${phidgetCFlags} ${phidgetLinkFlags} 
-lphidget21")
+    SET(CHECK_PHIDGET_SOURCE_CODE_218 "#include <phidget21.h>\n int main ()
+    {CPhidgetRFIDHandle handle; CPhidgetRFID_set_OnTag2_Handler(handle,0,0);}")
+    CHECK_C_SOURCE_COMPILES("${CHECK_PHIDGET_SOURCE_CODE_218}" 
HAVE_PHIDGET_2_1_8) 
 ENDIF (HAVE_PHIDGET_H)
 
 IF (HAVE_PHIDGET_H)

Modified: code/player/trunk/server/drivers/rfid/CMakeLists.txt
===================================================================
--- code/player/trunk/server/drivers/rfid/CMakeLists.txt        2013-11-10 
18:28:48 UTC (rev 9129)
+++ code/player/trunk/server/drivers/rfid/CMakeLists.txt        2013-11-10 
19:06:56 UTC (rev 9130)
@@ -17,8 +17,12 @@
   PLAYERDRIVER_OPTION (phidgetAcc build_phidgetRFID OFF "Could not find 
libphidget")
 ENDIF (HAVE_PHIDGET)
 
+IF (HAVE_PHIDGET_2_1_8)
+  SET (phidgetRFIDCFlags "${phidgetCFlags} -DHAVE_PHIDGET_2_1_8")
+ENDIF (HAVE_PHIDGET_2_1_8)
+
 PLAYERDRIVER_ADD_DRIVER (phidgetRFID build_phidgetRFID
-    LINKFLAGS ${phidgetLinkFlags} CFLAGS "${phidgetCFlags}"
+    LINKFLAGS ${phidgetLinkFlags} CFLAGS "${phidgetRFIDCFlags}"
     SOURCES phidgetRFID.cc)
 
 PLAYERDRIVER_OPTION (acr120u build_acr120u ON)

Modified: code/player/trunk/server/drivers/rfid/phidgetRFID.cc
===================================================================
--- code/player/trunk/server/drivers/rfid/phidgetRFID.cc        2013-11-10 
18:28:48 UTC (rev 9129)
+++ code/player/trunk/server/drivers/rfid/phidgetRFID.cc        2013-11-10 
19:06:56 UTC (rev 9130)
@@ -109,8 +109,13 @@
     return(end.tv_sec*1000.0 + end.tv_usec/1000.0 - (start.tv_sec*1000.0 + 
start.tv_usec/1000.0));
 }
 
+#ifdef HAVE_PHIDGET_2_1_8
+int TagLost(CPhidgetRFIDHandle rfid, void *hola, char *usrchar, 
CPhidgetRFID_Protocol protocol);
+int TagFound(CPhidgetRFIDHandle rfid, void *hola, char *usrchar,  
CPhidgetRFID_Protocol protocol);
+#else
 int TagLost(CPhidgetRFIDHandle rfid,void *hola, unsigned char *usrchar);
 int TagFound(CPhidgetRFIDHandle rfid,void *hola, unsigned char *usrchar);
+#endif
 
 
 
@@ -220,8 +225,13 @@
         PLAYER_MSG0(1,"Connection granted to the PhidgetRFID Reader.");
     }
 
+#ifdef HAVE_PHIDGET_2_1_8
+    CPhidgetRFID_set_OnTagLost2_Handler(rfid,TagLost,NULL);
+    CPhidgetRFID_set_OnTag2_Handler(rfid,TagFound,NULL);
+#else
     CPhidgetRFID_set_OnTagLost_Handler(rfid,TagLost,NULL);
     CPhidgetRFID_set_OnTag_Handler(rfid,TagFound,NULL);
+#endif
     //Turning on the Antena.
     CPhidgetRFID_setAntennaOn(rfid,1);
     CPhidgetRFID_setLEDOn(rfid,1);
@@ -359,10 +369,13 @@
         // called on each message.
         ProcessMessages();
 
-
-
-        unsigned char tag[20];
+        char* tag = new char[20];
+#ifdef HAVE_PHIDGET_2_1_8
+        CPhidgetRFID_Protocol proto = PHIDGET_RFID_PROTOCOL_PHIDGETS;
+        CPhidgetRFID_getLastTag2(rfid,&tag,&proto);
+#else
         CPhidgetRFID_getLastTag(rfid,tag);
+#endif
         int ledstate;
         player_rfid_data_t data_rfid;
         data_rfid.tags = new player_rfid_tag_t[1];
@@ -397,8 +410,8 @@
             }
             CPhidgetRFID_setLEDOn(rfid,0);
         }
+        delete [] tag;
 
-
         //Publishing data.
         if (rfid_id.interf !=0) {
             Publish(rfid_id, PLAYER_MSGTYPE_DATA, PLAYER_RFID_DATA_TAGS, 
(unsigned char*)&data_rfid, sizeof(player_rfid_data_t), NULL);
@@ -439,13 +452,22 @@
 }
 
 //Handler functions to check if there is a new tag there. They are handlers as 
seen on the Phidget library.
+
+#ifdef HAVE_PHIDGET_2_1_8
+int TagLost(CPhidgetRFIDHandle rfid, void *dummy, char *usrchar, 
CPhidgetRFID_Protocol protocol) {
+#else
 int TagLost(CPhidgetRFIDHandle rfid,void *dummy, unsigned char *usrchar) {
+#endif
     tagControl.rfid_present=rfid;
     tagControl.tagPresent=0;
     return (0);
 }
 
+#ifdef HAVE_PHIDGET_2_1_8
+int TagFound(CPhidgetRFIDHandle rfid, void *dummy, char *usrchar, 
CPhidgetRFID_Protocol protocol) {
+#else
 int TagFound(CPhidgetRFIDHandle rfid,void *dummy, unsigned char *usrchar) {
+#endif
     tagControl.rfid_present=rfid;
     tagControl.tagPresent=1;
     return (0);

This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.


------------------------------------------------------------------------------
November Webinars for C, C++, Fortran Developers
Accelerate application performance with scalable programming models. Explore
techniques for threading, error checking, porting, and tuning. Get the most 
from the latest Intel processors and coprocessors. See abstracts and register
http://pubads.g.doubleclick.net/gampad/clk?id=60136231&iu=/4140/ostg.clktrk
_______________________________________________
Playerstage-commit mailing list
Playerstage-commit@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/playerstage-commit

Reply via email to