mirror of
				https://github.com/eclipse/upm.git
				synced 2025-10-31 07:04:14 +03:00 
			
		
		
		
	rfr359f: Initial implementation
This was tested on the Grove IR Distance Interrupter. Signed-off-by: Jon Trulson <jtrulson@ics.com> Signed-off-by: Zion Orent <zorent@ics.com> Signed-off-by: Sarah Knepper <sarah.knepper@intel.com>
This commit is contained in:
		 Jon Trulson
					Jon Trulson
				
			
				
					committed by
					
						 Sarah Knepper
						Sarah Knepper
					
				
			
			
				
	
			
			
			 Sarah Knepper
						Sarah Knepper
					
				
			
						parent
						
							db1ca3d08a
						
					
				
				
					commit
					6642ee9eef
				
			| @@ -72,6 +72,7 @@ add_executable (wt5001-example wt5001.cxx) | ||||
| add_executable (ppd42ns-example ppd42ns.cxx) | ||||
| add_executable (mq303a-example mq303a.cxx) | ||||
| add_executable (grovespeaker-example grovespeaker.cxx) | ||||
| add_executable (rfr359f-example rfr359f.cxx) | ||||
|  | ||||
| include_directories (${PROJECT_SOURCE_DIR}/src/hmc5883l) | ||||
| include_directories (${PROJECT_SOURCE_DIR}/src/grove) | ||||
| @@ -131,6 +132,7 @@ include_directories (${PROJECT_SOURCE_DIR}/src/wt5001) | ||||
| include_directories (${PROJECT_SOURCE_DIR}/src/ppd42ns) | ||||
| include_directories (${PROJECT_SOURCE_DIR}/src/mq303a) | ||||
| include_directories (${PROJECT_SOURCE_DIR}/src/grovespeaker) | ||||
| include_directories (${PROJECT_SOURCE_DIR}/src/rfr359f) | ||||
|  | ||||
| target_link_libraries (hmc5883l-example hmc5883l ${CMAKE_THREAD_LIBS_INIT}) | ||||
| target_link_libraries (groveled-example grove ${CMAKE_THREAD_LIBS_INIT}) | ||||
| @@ -206,3 +208,4 @@ target_link_libraries (wt5001-example wt5001 ${CMAKE_THREAD_LIBS_INIT}) | ||||
| target_link_libraries (ppd42ns-example ppd42ns ${CMAKE_THREAD_LIBS_INIT}) | ||||
| target_link_libraries (mq303a-example mq303a ${CMAKE_THREAD_LIBS_INIT}) | ||||
| target_link_libraries (grovespeaker-example grovespeaker ${CMAKE_THREAD_LIBS_INIT}) | ||||
| target_link_libraries (rfr359f-example rfr359f ${CMAKE_THREAD_LIBS_INIT}) | ||||
|   | ||||
							
								
								
									
										48
									
								
								examples/javascript/rfr359f.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										48
									
								
								examples/javascript/rfr359f.js
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,48 @@ | ||||
| /*jslint node:true, vars:true, bitwise:true, unparam:true */ | ||||
| /*jshint unused:true */ | ||||
| /* | ||||
| * Author: Zion Orent <zorent@ics.com> | ||||
| * Copyright (c) 2015 Intel Corporation. | ||||
| * | ||||
| * Permission is hereby granted, free of charge, to any person obtaining | ||||
| * a copy of this software and associated documentation files (the | ||||
| * "Software"), to deal in the Software without restriction, including | ||||
| * without limitation the rights to use, copy, modify, merge, publish, | ||||
| * distribute, sublicense, and/or sell copies of the Software, and to | ||||
| * permit persons to whom the Software is furnished to do so, subject to | ||||
| * the following conditions: | ||||
| * | ||||
| * The above copyright notice and this permission notice shall be | ||||
| * included in all copies or substantial portions of the Software. | ||||
| * | ||||
| * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, | ||||
| * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF | ||||
| * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND | ||||
| * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE | ||||
| * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION | ||||
| * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION | ||||
| * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | ||||
| */ | ||||
|  | ||||
| var distInterrupter = require("jsupm_rfr359f"); | ||||
|  | ||||
| // Instantiate an RFR359F digital pin D2 | ||||
| // This was tested on the Grove IR Distance Interrupter | ||||
| var myDistInterrupter = new distInterrupter.RFR359F(2); | ||||
|  | ||||
| // The range appears to be about 4 inches, depending on adjustment | ||||
| var myInterval = setInterval(function() | ||||
| { | ||||
| 	if (myDistInterrupter.objectDetected()) | ||||
| 		console.log("Object detected"); | ||||
| 	else | ||||
| 		console.log("Area is clear"); | ||||
| }, 100); | ||||
|  | ||||
| // When exiting: turn off LED, clear interval, and print message | ||||
| process.on('SIGINT', function() | ||||
| { | ||||
| 	clearInterval(myInterval); | ||||
| 	console.log("Exiting..."); | ||||
| 	process.exit(0); | ||||
| }); | ||||
							
								
								
									
										67
									
								
								examples/rfr359f.cxx
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										67
									
								
								examples/rfr359f.cxx
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,67 @@ | ||||
| /* | ||||
|  * Author: Jon Trulson <jtrulson@ics.com> | ||||
|  * Copyright (c) 2014 Intel Corporation. | ||||
|  * | ||||
|  * Permission is hereby granted, free of charge, to any person obtaining | ||||
|  * a copy of this software and associated documentation files (the | ||||
|  * "Software"), to deal in the Software without restriction, including | ||||
|  * without limitation the rights to use, copy, modify, merge, publish, | ||||
|  * distribute, sublicense, and/or sell copies of the Software, and to | ||||
|  * permit persons to whom the Software is furnished to do so, subject to | ||||
|  * the following conditions: | ||||
|  * | ||||
|  * The above copyright notice and this permission notice shall be | ||||
|  * included in all copies or substantial portions of the Software. | ||||
|  * | ||||
|  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, | ||||
|  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF | ||||
|  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND | ||||
|  * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE | ||||
|  * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION | ||||
|  * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION | ||||
|  * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | ||||
|  */ | ||||
|  | ||||
| #include <unistd.h> | ||||
| #include <iostream> | ||||
| #include <signal.h> | ||||
| #include "rfr359f.h" | ||||
|  | ||||
| using namespace std; | ||||
|  | ||||
| int shouldRun = true; | ||||
|  | ||||
| void sig_handler(int signo) | ||||
| { | ||||
|   if (signo == SIGINT) | ||||
|     shouldRun = false; | ||||
| } | ||||
|  | ||||
|  | ||||
| int main () | ||||
| { | ||||
|   signal(SIGINT, sig_handler); | ||||
|  | ||||
| //! [Interesting] | ||||
|   // Instantiate an RFR359F digital pin D2 | ||||
|   // This was tested on the Grove IR Distance Interrupter | ||||
|  | ||||
|   upm::RFR359F* dInterruptor = new upm::RFR359F(2); | ||||
|    | ||||
|   // The range appears to be about 4 inches, depending on adjustment | ||||
|   while (shouldRun) | ||||
|     { | ||||
|       if (dInterruptor->objectDetected()) | ||||
|         cout << "Object detected" << endl; | ||||
|       else | ||||
|         cout << "Area is clear" << endl; | ||||
|  | ||||
|       usleep(100000);           // 100ms | ||||
|     } | ||||
| //! [Interesting] | ||||
|  | ||||
|   cout << "Exiting..." << endl; | ||||
|  | ||||
|   delete dInterruptor; | ||||
|   return 0; | ||||
| } | ||||
							
								
								
									
										5
									
								
								src/rfr359f/CMakeLists.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								src/rfr359f/CMakeLists.txt
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,5 @@ | ||||
| set (libname "rfr359f") | ||||
| set (libdescription "upm rfr359f grove distance interrupter") | ||||
| set (module_src ${libname}.cxx) | ||||
| set (module_h ${libname}.h) | ||||
| upm_module_init() | ||||
							
								
								
									
										8
									
								
								src/rfr359f/jsupm_rfr359f.i
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								src/rfr359f/jsupm_rfr359f.i
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,8 @@ | ||||
| %module jsupm_rfr359f | ||||
| %include "../upm.i" | ||||
|  | ||||
| %{ | ||||
|     #include "rfr359f.h" | ||||
| %} | ||||
|  | ||||
| %include "rfr359f.h" | ||||
							
								
								
									
										9
									
								
								src/rfr359f/pyupm_rfr359f.i
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								src/rfr359f/pyupm_rfr359f.i
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,9 @@ | ||||
| %module pyupm_rfr359f | ||||
| %include "../upm.i" | ||||
|  | ||||
| %feature("autodoc", "3"); | ||||
|  | ||||
| %include "rfr359f.h" | ||||
| %{ | ||||
|     #include "rfr359f.h" | ||||
| %} | ||||
							
								
								
									
										51
									
								
								src/rfr359f/rfr359f.cxx
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										51
									
								
								src/rfr359f/rfr359f.cxx
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,51 @@ | ||||
| /* | ||||
|  * Author: Jon Trulson <jtrulson@ics.com> | ||||
|  * Copyright (c) 2015 Intel Corporation. | ||||
|  * | ||||
|  * Permission is hereby granted, free of charge, to any person obtaining | ||||
|  * a copy of this software and associated documentation files (the | ||||
|  * "Software"), to deal in the Software without restriction, including | ||||
|  * without limitation the rights to use, copy, modify, merge, publish, | ||||
|  * distribute, sublicense, and/or sell copies of the Software, and to | ||||
|  * permit persons to whom the Software is furnished to do so, subject to | ||||
|  * the following conditions: | ||||
|  * | ||||
|  * The above copyright notice and this permission notice shall be | ||||
|  * included in all copies or substantial portions of the Software. | ||||
|  * | ||||
|  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, | ||||
|  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF | ||||
|  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND | ||||
|  * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE | ||||
|  * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION | ||||
|  * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION | ||||
|  * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | ||||
|  */ | ||||
|  | ||||
| #include <iostream> | ||||
|  | ||||
| #include "rfr359f.h" | ||||
|  | ||||
| using namespace upm; | ||||
| using namespace std; | ||||
|  | ||||
| RFR359F::RFR359F(int pin) | ||||
| { | ||||
|   if ( !(m_gpio = mraa_gpio_init(pin)) ) | ||||
|    { | ||||
|       cerr << __FUNCTION__ << ": mraa_gpio_init() failed" << endl; | ||||
|       return; | ||||
|     } | ||||
|  | ||||
|   mraa_gpio_dir(m_gpio, MRAA_GPIO_IN); | ||||
| } | ||||
|  | ||||
| RFR359F::~RFR359F() | ||||
| { | ||||
|   mraa_gpio_close(m_gpio); | ||||
| } | ||||
|  | ||||
| bool RFR359F::objectDetected() | ||||
| { | ||||
|   return (!mraa_gpio_read(m_gpio) ? true : false); | ||||
| } | ||||
							
								
								
									
										67
									
								
								src/rfr359f/rfr359f.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										67
									
								
								src/rfr359f/rfr359f.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,67 @@ | ||||
| /* | ||||
|  * Author: Jon Trulson <jtrulson@ics.com> | ||||
|  * Copyright (c) 2015 Intel Corporation. | ||||
|  * | ||||
|  * Permission is hereby granted, free of charge, to any person obtaining | ||||
|  * a copy of this software and associated documentation files (the | ||||
|  * "Software"), to deal in the Software without restriction, including | ||||
|  * without limitation the rights to use, copy, modify, merge, publish, | ||||
|  * distribute, sublicense, and/or sell copies of the Software, and to | ||||
|  * permit persons to whom the Software is furnished to do so, subject to | ||||
|  * the following conditions: | ||||
|  * | ||||
|  * The above copyright notice and this permission notice shall be | ||||
|  * included in all copies or substantial portions of the Software. | ||||
|  * | ||||
|  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, | ||||
|  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF | ||||
|  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND | ||||
|  * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE | ||||
|  * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION | ||||
|  * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION | ||||
|  * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | ||||
|  */ | ||||
| #pragma once | ||||
|  | ||||
| #include <string> | ||||
| #include <mraa/gpio.h> | ||||
|  | ||||
| namespace upm { | ||||
|  | ||||
|   /** | ||||
|    * @brief C++ API for the RFR359F based Grove Distance Interrupter.  | ||||
|    * | ||||
|    * UPM module for the Grove Distance Interrupter.  The sensitivity | ||||
|    * can be adjusted with the potentiometer on the sensor module.  It | ||||
|    * has a range of approximately 4 inches and a fast response time. | ||||
|    * | ||||
|    * @ingroup grove gpio | ||||
|    * @snippet rfr359f.cxx Interesting | ||||
|    */ | ||||
|   class RFR359F { | ||||
|   public: | ||||
|     /** | ||||
|      * Grove Distance Interrupter constructor | ||||
|      * | ||||
|      * @param pin digital pin to use | ||||
|      */ | ||||
|     RFR359F(int pin); | ||||
|  | ||||
|     /** | ||||
|      * RFR359F Destructor | ||||
|      */ | ||||
|     ~RFR359F(); | ||||
|  | ||||
|     /** | ||||
|      * Get the status of the pin, true means object detected | ||||
|      * | ||||
|      * @return true if the sensor detected an object | ||||
|      */ | ||||
|     bool objectDetected(); | ||||
|  | ||||
|   private: | ||||
|     mraa_gpio_context m_gpio; | ||||
|   }; | ||||
| } | ||||
|  | ||||
|  | ||||
		Reference in New Issue
	
	Block a user