mirror of
				https://github.com/eclipse/upm.git
				synced 2025-10-31 07:04:14 +03:00 
			
		
		
		
	grovecircularled: Initial import/implementation
This code is based off ofthe my9221 driver. This modification was done by Jun Kato, but abandoned. This driver will not work correctly on Galileo. Signed-off-by: Jon Trulson <jtrulson@ics.com> Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
This commit is contained in:
		 Jon Trulson
					Jon Trulson
				
			
				
					committed by
					
						 Mihai Tudor Panu
						Mihai Tudor Panu
					
				
			
			
				
	
			
			
			 Mihai Tudor Panu
						Mihai Tudor Panu
					
				
			
						parent
						
							f2503c6167
						
					
				
				
					commit
					c313e3ae69
				
			| @@ -123,6 +123,7 @@ add_executable (h3lis331dl-example h3lis331dl.cxx) | |||||||
| add_executable (ad8232-example ad8232.cxx) | add_executable (ad8232-example ad8232.cxx) | ||||||
| add_executable (grovescam-example grovescam.cxx) | add_executable (grovescam-example grovescam.cxx) | ||||||
| add_executable (m24lr64e-example m24lr64e.cxx) | add_executable (m24lr64e-example m24lr64e.cxx) | ||||||
|  | add_executable (grovecircularled-example grovecircularled.cxx) | ||||||
|  |  | ||||||
| include_directories (${PROJECT_SOURCE_DIR}/src/hmc5883l) | include_directories (${PROJECT_SOURCE_DIR}/src/hmc5883l) | ||||||
| include_directories (${PROJECT_SOURCE_DIR}/src/grove) | include_directories (${PROJECT_SOURCE_DIR}/src/grove) | ||||||
| @@ -224,6 +225,7 @@ include_directories (${PROJECT_SOURCE_DIR}/src/h3lis331dl) | |||||||
| include_directories (${PROJECT_SOURCE_DIR}/src/ad8232) | include_directories (${PROJECT_SOURCE_DIR}/src/ad8232) | ||||||
| include_directories (${PROJECT_SOURCE_DIR}/src/grovescam) | include_directories (${PROJECT_SOURCE_DIR}/src/grovescam) | ||||||
| include_directories (${PROJECT_SOURCE_DIR}/src/m24lr64e) | include_directories (${PROJECT_SOURCE_DIR}/src/m24lr64e) | ||||||
|  | include_directories (${PROJECT_SOURCE_DIR}/src/grovecircularled) | ||||||
|  |  | ||||||
| target_link_libraries (hmc5883l-example hmc5883l ${CMAKE_THREAD_LIBS_INIT}) | target_link_libraries (hmc5883l-example hmc5883l ${CMAKE_THREAD_LIBS_INIT}) | ||||||
| target_link_libraries (groveled-example grove ${CMAKE_THREAD_LIBS_INIT}) | target_link_libraries (groveled-example grove ${CMAKE_THREAD_LIBS_INIT}) | ||||||
| @@ -348,3 +350,5 @@ target_link_libraries (h3lis331dl-example h3lis331dl ${CMAKE_THREAD_LIBS_INIT}) | |||||||
| target_link_libraries (ad8232-example ad8232 ${CMAKE_THREAD_LIBS_INIT}) | target_link_libraries (ad8232-example ad8232 ${CMAKE_THREAD_LIBS_INIT}) | ||||||
| target_link_libraries (grovescam-example grovescam ${CMAKE_THREAD_LIBS_INIT}) | target_link_libraries (grovescam-example grovescam ${CMAKE_THREAD_LIBS_INIT}) | ||||||
| target_link_libraries (m24lr64e-example m24lr64e ${CMAKE_THREAD_LIBS_INIT}) | target_link_libraries (m24lr64e-example m24lr64e ${CMAKE_THREAD_LIBS_INIT}) | ||||||
|  | target_link_libraries (grovecircularled-example grovecircularled ${CMAKE_THREAD_LIBS_INIT}) | ||||||
|  |  | ||||||
|   | |||||||
							
								
								
									
										63
									
								
								examples/c++/grovecircularled.cxx
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										63
									
								
								examples/c++/grovecircularled.cxx
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,63 @@ | |||||||
|  | /* | ||||||
|  |  * 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 <unistd.h> | ||||||
|  | #include <iostream> | ||||||
|  | #include <signal.h> | ||||||
|  | #include "grovecircularled.h" | ||||||
|  |  | ||||||
|  | using namespace std; | ||||||
|  |  | ||||||
|  | bool shouldRun = true; | ||||||
|  |  | ||||||
|  | void sig_handler(int signo) | ||||||
|  | { | ||||||
|  |   if (signo == SIGINT) | ||||||
|  |     shouldRun = false; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | int main() | ||||||
|  | { | ||||||
|  |   signal(SIGINT, sig_handler); | ||||||
|  |    | ||||||
|  | //! [Interesting] | ||||||
|  |    | ||||||
|  |   // Instantiate a Grove Circular LED on gpio pins 5 and 4 | ||||||
|  |    | ||||||
|  |   upm::GroveCircularLED *circle = new upm::GroveCircularLED(5, 4); | ||||||
|  |    | ||||||
|  |   int level = 0; | ||||||
|  |   while (shouldRun) | ||||||
|  |     { | ||||||
|  |       circle->setSpinner(level); | ||||||
|  |       level = (level + 1) % 24; | ||||||
|  |       usleep(100000); | ||||||
|  |     } | ||||||
|  | //! [Interesting] | ||||||
|  |  | ||||||
|  |   cout << "Exiting" << endl; | ||||||
|  |  | ||||||
|  |   delete circle; | ||||||
|  |   return 0; | ||||||
|  | } | ||||||
							
								
								
									
										49
									
								
								examples/javascript/grovecircularled.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										49
									
								
								examples/javascript/grovecircularled.js
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,49 @@ | |||||||
|  | /*jslint node:true, vars:true, bitwise:true, unparam:true */ | ||||||
|  | /*jshint unused:true */ | ||||||
|  | /* | ||||||
|  |  * Author: Jun Kato | ||||||
|  |  * Contributions: 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. | ||||||
|  |  */ | ||||||
|  |  | ||||||
|  | // Instantiate a Grove Circular LED on gpio pins 5 and 4 | ||||||
|  | var GCL = require("jsupm_grovecircularled"); | ||||||
|  | var circle = new GCL.GroveCircularLED(5, 4); | ||||||
|  | var level = 0; | ||||||
|  |  | ||||||
|  | // Show a spinner. | ||||||
|  | var myInterval = setInterval(function() | ||||||
|  | { | ||||||
|  |     circle.setSpinner(level); | ||||||
|  |     level = (level + 1) % 24; | ||||||
|  | }, 100); | ||||||
|  |  | ||||||
|  | // When exiting, clear interval and print message. | ||||||
|  | process.on('SIGINT', function() | ||||||
|  | { | ||||||
|  |     clearInterval(myInterval); | ||||||
|  |     circle.setLevel(0); | ||||||
|  |     circle = null; | ||||||
|  |     GCL.cleanUp(); | ||||||
|  |     console.log("Exiting..."); | ||||||
|  |     process.exit(0); | ||||||
|  | }); | ||||||
							
								
								
									
										50
									
								
								examples/python/grovecircularled.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										50
									
								
								examples/python/grovecircularled.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,50 @@ | |||||||
|  | #!/usr/bin/python | ||||||
|  | # | ||||||
|  | # 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. | ||||||
|  |  | ||||||
|  | import time, sys, signal, atexit | ||||||
|  | import pyupm_grovecircularled as upmGroveCircularLED | ||||||
|  |  | ||||||
|  | # Exit handlers | ||||||
|  | def SIGINTHandler(signum, frame): | ||||||
|  | 	raise SystemExit | ||||||
|  |  | ||||||
|  | def exitHandler(): | ||||||
|  | 	circle.setLevel(0, True) | ||||||
|  | 	print "Exiting" | ||||||
|  | 	sys.exit(0) | ||||||
|  |  | ||||||
|  | # This function lets you run code on exit | ||||||
|  | atexit.register(exitHandler) | ||||||
|  | # This function stops python from printing a stacktrace when you hit control-C | ||||||
|  | signal.signal(signal.SIGINT, SIGINTHandler) | ||||||
|  |  | ||||||
|  | # Instantiate a Grove Circular LED on gpio pins 5 and 4 | ||||||
|  | circle = upmGroveCircularLED.GroveCircularLED(5, 4) | ||||||
|  |  | ||||||
|  | level = 0 | ||||||
|  |  | ||||||
|  | while(1): | ||||||
|  |         circle.setSpinner(level) | ||||||
|  |         level = (level + 1) % 24 | ||||||
|  | 	time.sleep(.1) | ||||||
							
								
								
									
										5
									
								
								src/grovecircularled/CMakeLists.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								src/grovecircularled/CMakeLists.txt
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,5 @@ | |||||||
|  | set (libname "grovecircularled") | ||||||
|  | set (libdescription "upm grove circular led") | ||||||
|  | set (module_src ${libname}.cxx) | ||||||
|  | set (module_h ${libname}.h) | ||||||
|  | upm_module_init() | ||||||
							
								
								
									
										164
									
								
								src/grovecircularled/grovecircularled.cxx
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										164
									
								
								src/grovecircularled/grovecircularled.cxx
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,164 @@ | |||||||
|  | /* | ||||||
|  |  * Author: Jun Kato and Yevgeniy Kiveisha <yevgeniy.kiveisha@intel.com> | ||||||
|  |  * Contributions: Jon Trulson <jtrulson@ics.com> | ||||||
|  |  * Copyright (c) 2015 Intel Corporation. | ||||||
|  |  * | ||||||
|  |  * This module is based on the my9221 driver | ||||||
|  |  *  | ||||||
|  |  * 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 <unistd.h> | ||||||
|  | #include <stdlib.h> | ||||||
|  |  | ||||||
|  | #include "grovecircularled.h" | ||||||
|  |  | ||||||
|  | using namespace upm; | ||||||
|  |  | ||||||
|  | GroveCircularLED::GroveCircularLED (uint8_t di, uint8_t dcki) { | ||||||
|  |   mraa_result_t error = MRAA_SUCCESS; | ||||||
|  |    | ||||||
|  |   // init clock context | ||||||
|  |   m_clkPinCtx = mraa_gpio_init(dcki); | ||||||
|  |   if (m_clkPinCtx == NULL) { | ||||||
|  |     fprintf(stderr, "Are you sure that pin%d you requested is valid on your platform?", dcki); | ||||||
|  |     exit(1); | ||||||
|  |   } | ||||||
|  |   mraa_gpio_use_mmaped(m_clkPinCtx, 1); | ||||||
|  |  | ||||||
|  |   // init data context | ||||||
|  |   m_dataPinCtx = mraa_gpio_init(di); | ||||||
|  |   if (m_dataPinCtx == NULL) { | ||||||
|  |     fprintf(stderr, "Are you sure that pin%d you requested is valid on your platform?", di); | ||||||
|  |     exit(1); | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   mraa_gpio_use_mmaped(m_dataPinCtx, 1); | ||||||
|  |  | ||||||
|  |   // set direction (out) | ||||||
|  |   error = mraa_gpio_dir(m_clkPinCtx, MRAA_GPIO_OUT); | ||||||
|  |   if (error != MRAA_SUCCESS) { | ||||||
|  |     mraa_result_print(error); | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   // set direction (out) | ||||||
|  |   error = mraa_gpio_dir(m_dataPinCtx, MRAA_GPIO_OUT); | ||||||
|  |   if (error != MRAA_SUCCESS) { | ||||||
|  |     mraa_result_print(error); | ||||||
|  |   } | ||||||
|  | } | ||||||
|  |  | ||||||
|  | GroveCircularLED::~GroveCircularLED() { | ||||||
|  |   mraa_result_t error = MRAA_SUCCESS; | ||||||
|  |   error = mraa_gpio_close (m_dataPinCtx); | ||||||
|  |   if (error != MRAA_SUCCESS) { | ||||||
|  |     mraa_result_print(error); | ||||||
|  |   } | ||||||
|  |   error = mraa_gpio_close (m_clkPinCtx); | ||||||
|  |   if (error != MRAA_SUCCESS) { | ||||||
|  |     mraa_result_print(error); | ||||||
|  |   } | ||||||
|  | } | ||||||
|  |  | ||||||
|  | mraa_result_t | ||||||
|  | GroveCircularLED::setSpinner (uint8_t position) { | ||||||
|  |   if (position < 0 || position >= 24) { | ||||||
|  |     return MRAA_ERROR_INVALID_PARAMETER; | ||||||
|  |   } | ||||||
|  |     for(uint8_t block_idx = 0; block_idx < 24; block_idx++) { | ||||||
|  |       if (block_idx % 12 == 0) { | ||||||
|  |         send16bitBlock (CMDMODE); | ||||||
|  |       } | ||||||
|  |       uint32_t state = (block_idx == position) ? BIT_HIGH : BIT_LOW; | ||||||
|  |       send16bitBlock (state); | ||||||
|  |     } | ||||||
|  |     return lockData (); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | mraa_result_t | ||||||
|  | GroveCircularLED::setLevel (uint8_t level, bool direction) { | ||||||
|  |   if (level < 0 || level > 24) { | ||||||
|  |     return MRAA_ERROR_INVALID_PARAMETER; | ||||||
|  |   } | ||||||
|  |   if (direction) { | ||||||
|  |     for(uint8_t block_idx = 24; block_idx > 0; block_idx--) { | ||||||
|  |       if (block_idx % 12 == 0) { | ||||||
|  |         send16bitBlock (CMDMODE); | ||||||
|  |       } | ||||||
|  |       uint32_t state = (block_idx <= level) ? BIT_HIGH : BIT_LOW; | ||||||
|  |       send16bitBlock (state); | ||||||
|  |     } | ||||||
|  |   } else { | ||||||
|  |     for(uint8_t block_idx = 0; block_idx < 24; block_idx++) { | ||||||
|  |       if (block_idx % 12 == 0) { | ||||||
|  |         send16bitBlock (CMDMODE); | ||||||
|  |       } | ||||||
|  |       uint32_t state = (block_idx <= level - 1) ? BIT_HIGH : BIT_LOW; | ||||||
|  |       send16bitBlock (state); | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  |   return lockData (); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | mraa_result_t | ||||||
|  | GroveCircularLED::setStatus (bool status[24]) { | ||||||
|  |   for(uint8_t block_idx = 0; block_idx < 24; block_idx++) { | ||||||
|  |     if (block_idx % 12 == 0) { | ||||||
|  |       send16bitBlock (CMDMODE); | ||||||
|  |     } | ||||||
|  |     send16bitBlock (status[block_idx] ? BIT_HIGH : BIT_LOW); | ||||||
|  |   } | ||||||
|  |   return lockData (); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | mraa_result_t | ||||||
|  | GroveCircularLED::lockData () { | ||||||
|  |   mraa_result_t error = MRAA_SUCCESS; | ||||||
|  |   error = mraa_gpio_write (m_dataPinCtx, LOW); | ||||||
|  |   usleep(10); | ||||||
|  |  | ||||||
|  |   for(int idx = 0; idx < 4; idx++) { | ||||||
|  |     error = mraa_gpio_write (m_dataPinCtx, HIGH); | ||||||
|  |     error = mraa_gpio_write (m_dataPinCtx, LOW); | ||||||
|  |   } | ||||||
|  |   return error; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | mraa_result_t | ||||||
|  | GroveCircularLED::send16bitBlock (short data) { | ||||||
|  |   mraa_result_t error = MRAA_SUCCESS; | ||||||
|  |   for (uint8_t bit_idx = 0; bit_idx < MAX_BIT_PER_BLOCK; bit_idx++) { | ||||||
|  |     uint32_t state = (data & 0x8000) ? HIGH : LOW; | ||||||
|  |     error = mraa_gpio_write (m_dataPinCtx, state); | ||||||
|  |     state = mraa_gpio_read (m_clkPinCtx); | ||||||
|  |  | ||||||
|  |     if (state) { | ||||||
|  |       state = LOW; | ||||||
|  |     } else { | ||||||
|  |       state = HIGH; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     error = mraa_gpio_write (m_clkPinCtx, state); | ||||||
|  |  | ||||||
|  |     data <<= 1; | ||||||
|  |   } | ||||||
|  |   return error; | ||||||
|  | } | ||||||
							
								
								
									
										115
									
								
								src/grovecircularled/grovecircularled.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										115
									
								
								src/grovecircularled/grovecircularled.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,115 @@ | |||||||
|  | /* | ||||||
|  |  * Author: Jun Kato and Yevgeniy Kiveisha <yevgeniy.kiveisha@intel.com> | ||||||
|  |  * Contributions: Jon Trulson <jtrulson@ics.com> | ||||||
|  |  * Copyright (c) 2014 Intel Corporation. | ||||||
|  |  * | ||||||
|  |  * This module is based on the my9221 driver | ||||||
|  |  *  | ||||||
|  |  * 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/aio.h> | ||||||
|  | #include <mraa/gpio.h> | ||||||
|  |  | ||||||
|  | #define MAX_BIT_PER_BLOCK     16 | ||||||
|  | #define CMDMODE               0x0000 | ||||||
|  | #define BIT_HIGH              0x00ff | ||||||
|  | #define BIT_LOW               0x0000 | ||||||
|  |  | ||||||
|  | #define HIGH                  1 | ||||||
|  | #define LOW                   0 | ||||||
|  |  | ||||||
|  | namespace upm { | ||||||
|  |  | ||||||
|  |   /** | ||||||
|  |    * @brief Grove Circular LED library | ||||||
|  |    * @defgroup grovecircularled libupm-grovecircularled | ||||||
|  |    * @ingroup seeed display gpio | ||||||
|  |    */ | ||||||
|  |    | ||||||
|  |   /** | ||||||
|  |    * @library grovecircularled | ||||||
|  |    * @sensor grovecircularled | ||||||
|  |    * @comname Grove Circular LED | ||||||
|  |    * @type display | ||||||
|  |    * @man seeed | ||||||
|  |    * @web http://www.seeedstudio.com/wiki/Grove_-_Circular_LED | ||||||
|  |    * @con gpio | ||||||
|  |    * | ||||||
|  |    * @brief API for Grove Circular LED module | ||||||
|  |    * | ||||||
|  |    * @snippet grovecircularled.cxx Interesting | ||||||
|  |    */ | ||||||
|  |   class GroveCircularLED { | ||||||
|  |   public: | ||||||
|  |     /** | ||||||
|  |      * Instantiates a MY9221 object | ||||||
|  |      * | ||||||
|  |      * @param di data pin | ||||||
|  |      * @param dcki clock pin | ||||||
|  |      */ | ||||||
|  |     GroveCircularLED (uint8_t di, uint8_t dcki); | ||||||
|  |    | ||||||
|  |     /** | ||||||
|  |      * MY9221 object destructor | ||||||
|  |      */ | ||||||
|  |     ~GroveCircularLED (); | ||||||
|  |    | ||||||
|  |     /** | ||||||
|  |      * Set the lighting status | ||||||
|  |      * | ||||||
|  |      * @param level selected level for the circular led (0 - 24) | ||||||
|  |      * @param direction up or down, true is up and is the default | ||||||
|  |      */ | ||||||
|  |     mraa_result_t setLevel (uint8_t level, bool direction=true); | ||||||
|  |    | ||||||
|  |     /** | ||||||
|  |      * Set the spinner (light up one but all the other LEDs) | ||||||
|  |      * | ||||||
|  |      * @param position selected position for the spinner (0 - 23) | ||||||
|  |      */ | ||||||
|  |     mraa_result_t setSpinner (uint8_t position); | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * Set the lighting status | ||||||
|  |      * | ||||||
|  |      * @param status boolean array (24 elements) | ||||||
|  |      */ | ||||||
|  |     mraa_result_t setStatus (bool status[24]); | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * Return name of the component | ||||||
|  |      */ | ||||||
|  |     std::string name() | ||||||
|  |       { | ||||||
|  |         return m_name; | ||||||
|  |       } | ||||||
|  |   private: | ||||||
|  |     mraa_result_t lockData (); | ||||||
|  |     mraa_result_t send16bitBlock (short data); | ||||||
|  |    | ||||||
|  |     std::string m_name; | ||||||
|  |     mraa_gpio_context m_clkPinCtx; | ||||||
|  |     mraa_gpio_context m_dataPinCtx; | ||||||
|  |   }; | ||||||
|  |   | ||||||
|  | } | ||||||
							
								
								
									
										8
									
								
								src/grovecircularled/jsupm_grovecircularled.i
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								src/grovecircularled/jsupm_grovecircularled.i
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,8 @@ | |||||||
|  | %module jsupm_grovecircularled | ||||||
|  | %include "../upm.i" | ||||||
|  |  | ||||||
|  | %{ | ||||||
|  |     #include "grovecircularled.h" | ||||||
|  | %} | ||||||
|  |  | ||||||
|  | %include "grovecircularled.h" | ||||||
							
								
								
									
										9
									
								
								src/grovecircularled/pyupm_grovecircularled.i
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								src/grovecircularled/pyupm_grovecircularled.i
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,9 @@ | |||||||
|  | %module pyupm_grovecircularled | ||||||
|  | %include "../upm.i" | ||||||
|  |  | ||||||
|  | %feature("autodoc", "3"); | ||||||
|  |  | ||||||
|  | %include "grovecircularled.h" | ||||||
|  | %{ | ||||||
|  |     #include "grovecircularled.h" | ||||||
|  | %} | ||||||
		Reference in New Issue
	
	Block a user