From b7faba556fe03c3cbd4a3b1a5872f07c212c178a Mon Sep 17 00:00:00 2001 From: Noel Eck Date: Tue, 21 Feb 2017 13:54:21 -0800 Subject: [PATCH] sensortemplate: Added a template sensor The purpose of the templatesensor is to get contributors up and running faster when adding a new sensor. * Created library named 'sensortemplate' * Added C++ source * Added swig interface files for java, javascript, and python * Added sensortemplate image file * Added examples for c++, java, javascript, and python * Updated contributions.md with steps to create a new sensor from the sensortemplate library. Signed-off-by: Noel Eck --- docs/contributions.md | 37 ++++++++ docs/images/sensortemplate.png | Bin 0 -> 23943 bytes doxy/samples.mapping.txt | 1 + examples/c++/CMakeLists.txt | 1 + examples/c++/sensortemplate.cxx | 50 ++++++++++ examples/java/CMakeLists.txt | 1 + examples/java/SensorTemplateSample.java | 44 +++++++++ examples/javascript/sensortemplate.js | 43 +++++++++ examples/python/sensortemplate.py | 42 +++++++++ src/sensortemplate/CMakeLists.txt | 5 + src/sensortemplate/common.i | 14 +++ src/sensortemplate/javaupm_sensortemplate.i | 17 ++++ src/sensortemplate/jsupm_sensortemplate.i | 5 + src/sensortemplate/pyupm_sensortemplate.i | 9 ++ src/sensortemplate/sensortemplate.cxx | 35 +++++++ src/sensortemplate/sensortemplate.hpp | 98 ++++++++++++++++++++ 16 files changed, 402 insertions(+) create mode 100644 docs/images/sensortemplate.png create mode 100644 examples/c++/sensortemplate.cxx create mode 100644 examples/java/SensorTemplateSample.java create mode 100644 examples/javascript/sensortemplate.js create mode 100755 examples/python/sensortemplate.py create mode 100644 src/sensortemplate/CMakeLists.txt create mode 100644 src/sensortemplate/common.i create mode 100644 src/sensortemplate/javaupm_sensortemplate.i create mode 100644 src/sensortemplate/jsupm_sensortemplate.i create mode 100644 src/sensortemplate/pyupm_sensortemplate.i create mode 100644 src/sensortemplate/sensortemplate.cxx create mode 100644 src/sensortemplate/sensortemplate.hpp diff --git a/docs/contributions.md b/docs/contributions.md index d362c9a3..ba43b608 100644 --- a/docs/contributions.md +++ b/docs/contributions.md @@ -94,3 +94,40 @@ then you just add a line to each of your commits with `--signoff` saying using your real name (sorry, no pseudonyms or anonymous contributions.) Unsigned commits will not be accepted. + + +Creating a new sensor library using the sensortemplate +======================================= + +A stubbed-out sensor library is available which can be leveraged to get +up-and-running quickly when writing a new sensor library. Use the shell +commands below to generate collateral files for your new sensor library. + + +```shell +# Set SensorName to your new library name, example: 'MyNewSensor1234' +export SensorName=MyNewSensor1234 + +# Copy/paste the below commands into a bash shell... +# Get a lowercase version of the string +export sensorname=${SensorName,,} +# Copy sensortemplate files to ${sensorname} +find docs/ examples/ src/ -name '*sensortemplate*' -exec bash -c 'cp -r $0 ${0/sensortemplate/${sensorname}}' {} \; +# Copy SensorTemplate files to ${SensorName} +find examples/ src/ -name '*SensorTemplate*' -exec bash -c 'cp -r $0 ${0/SensorTemplate/${SensorName}}' {} \; +# Rename sernsortemplate src files +rename "s/sensortemplate/${sensorname}/" src/${sensorname}/* +# Search/replace the new files, replacing all instances of sensortemplate +perl -p -i -e "s/SensorTemplate/${SensorName}/g" src/${sensorname}/* examples/*/*${sensorname}* examples/*/*${SensorName}* +perl -p -i -e "s/sensortemplate/${sensorname}/g" src/${sensorname}/* examples/*/*${sensorname}* examples/*/*${SensorName}* +# Add mynewmodule example target for c++ +perl -p -i -e "s/^((.*)sensortemplate(.*))/\1\n\2${sensorname}\3/g" examples/c++/CMakeLists.txt +# Add mynewmodule example target for java +perl -p -i -e "s/^((.*)SensorTemplateSample sensortemplate(.*))/\1\n\2${SensorName}Sample ${sensorname}\3/g" examples/java/CMakeLists.txt +# Add mynewmodule example mappings for doxygen +perl -p -i -e "s/^(.*SensorTemplateSample.*)$/\1\n${sensorname}.cxx\t${SensorName}Sample.java\t${sensorname}.js\t${sensorname}.py/g" doxy/samples.mapping.txt +``` + +Once all files have been created, they can be used as a starting-point for your +new library. They will need additional customization (your name/email address, +documentation, sensor images, etc). diff --git a/docs/images/sensortemplate.png b/docs/images/sensortemplate.png new file mode 100644 index 0000000000000000000000000000000000000000..9fdaac84d945e9f0d82e3baf2f57637ca48f51de GIT binary patch literal 23943 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 X8Q=S~H7_6V$#gbzV=!BnZbtnd?T|#S literal 0 HcmV?d00001 diff --git a/doxy/samples.mapping.txt b/doxy/samples.mapping.txt index 492c9673..e6026fa2 100644 --- a/doxy/samples.mapping.txt +++ b/doxy/samples.mapping.txt @@ -71,3 +71,4 @@ vdiv.cxx VDivSample.java vdiv.js vdiv.py water.cxx WaterSample.java water.js water.py wt5001.cxx WT5001Sample.java wt5001.js wt5001.py yg1006.cxx YG1006Sample.java yg1006.js yg1006.py +sensortemplate.cxx SensorTemplateSample.java sensortemplate.js sensortemplate.py diff --git a/examples/c++/CMakeLists.txt b/examples/c++/CMakeLists.txt index e19b67c0..8e10b8d6 100644 --- a/examples/c++/CMakeLists.txt +++ b/examples/c++/CMakeLists.txt @@ -329,6 +329,7 @@ add_example (rf22-server) add_example (rf22-client) add_example (mcp2515) add_example (max30100) +add_example (sensortemplate) # These are special cases where you specify example binary, source file and module(s) include_directories (${PROJECT_SOURCE_DIR}/src) diff --git a/examples/c++/sensortemplate.cxx b/examples/c++/sensortemplate.cxx new file mode 100644 index 00000000..98ba3a97 --- /dev/null +++ b/examples/c++/sensortemplate.cxx @@ -0,0 +1,50 @@ +/* + * The MIT License (MIT) + * + * Author: Your Full Name + * Copyright (c) + * + * Author: + * Copyright (c) + * + * 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 +#include + +#include "sensortemplate.hpp" + +int main () +{ + //! [Interesting] + // Create an instance of SensorTemplate + upm::SensorTemplate sensor(0); + + while(true) + { + std::cout << "SensorTemplate says: " + << sensor.helloWorld() << std::endl; + + // Repeat every 2 seconds + usleep(2000000); + } + //! [Interesting] + return 0; +} diff --git a/examples/java/CMakeLists.txt b/examples/java/CMakeLists.txt index 484850aa..f3a239c4 100644 --- a/examples/java/CMakeLists.txt +++ b/examples/java/CMakeLists.txt @@ -164,6 +164,7 @@ add_example(MCP2515_Example mcp2515) add_example(Ads1015Sample ads1x15) add_example(MAX30100_Example max30100) add_example(Ads1115Sample ads1x15) +add_example(SensorTemplateSample sensortemplate) add_example_with_path(Jhd1313m1_lcdSample lcd i2clcd) add_example_with_path(Jhd1313m1Sample lcd i2clcd) diff --git a/examples/java/SensorTemplateSample.java b/examples/java/SensorTemplateSample.java new file mode 100644 index 00000000..050eef9e --- /dev/null +++ b/examples/java/SensorTemplateSample.java @@ -0,0 +1,44 @@ +/* + * The MIT License (MIT) + * + * Author: Your Full Name + * Copyright (c) + * + * Author: + * Copyright (c) + * + * 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. + */ + + +public class SensorTemplateSample { + public static void main (String args[]) throws InterruptedException { + //! [Interesting] + // Instantiate new sensor instance + upm_sensortemplate.SensorTemplate sensor = new upm_sensortemplate.SensorTemplate(0); + + while (true) { + + System.out.println("SensorTemplate says: " + sensor.helloWorld()); + + // Repeate every 2 seconds + Thread.sleep(2000); + } + //! [Interesting] + } +} diff --git a/examples/javascript/sensortemplate.js b/examples/javascript/sensortemplate.js new file mode 100644 index 00000000..67fa0bcb --- /dev/null +++ b/examples/javascript/sensortemplate.js @@ -0,0 +1,43 @@ +/* + * The MIT License (MIT) + * + * Author: Your Full Name + * Copyright (c) + * + * Author: + * Copyright (c) + * + * 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 jsupm_sensortemplate = require('jsupm_sensortemplate'); + +// Create an instance of the sensor +var sensor = new upm_sensortemplate.SensorTemplate(0); + +loop(); + +function loop() +{ + // Call a method from the sensortemplate + console.log("SensorTemplate says: " + sensor.helloWorld()); + + // Call loop every 2 seconds + setTimeout(loop, 2000); +} diff --git a/examples/python/sensortemplate.py b/examples/python/sensortemplate.py new file mode 100755 index 00000000..237f8977 --- /dev/null +++ b/examples/python/sensortemplate.py @@ -0,0 +1,42 @@ +# The MIT License (MIT) +# +# Author: Your Full Name +# Copyright (c) +# +# Author: +# Copyright (c) +# +# 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. + + +from __future__ import print_function +import time +from upm import pyupm_sensortemplate + +def main(): + # Create an instance of SensorTemplate + sensor = pyupm_sensortemplate.SensorTemplate(0) + + while True: + print("SensorTemplate says: %s" % sensor.helloWorld) + + # Repeat every 2 seconds + sleep(2) + +if __name__ == '__main__': + main() diff --git a/src/sensortemplate/CMakeLists.txt b/src/sensortemplate/CMakeLists.txt new file mode 100644 index 00000000..b6f97540 --- /dev/null +++ b/src/sensortemplate/CMakeLists.txt @@ -0,0 +1,5 @@ +upm_mixed_module_init (NAME sensortemplate + DESCRIPTION "Short, Title-Case Description from the SensorTemplate Datasheet" + CPP_HDR sensortemplate.hpp + CPP_SRC sensortemplate.cxx + REQUIRES mraa) diff --git a/src/sensortemplate/common.i b/src/sensortemplate/common.i new file mode 100644 index 00000000..7fa4b099 --- /dev/null +++ b/src/sensortemplate/common.i @@ -0,0 +1,14 @@ +/* Include global UPM interface file */ +%include "../upm.i" + +/* Required for python documentation, ignored for others */ +%feature("autodoc", "3"); + +%{ + /* SWIG preprocessor copies this directly to the output wrapper*/ + #include "sensortemplate.hpp" +%} + +/* %include is a SWIG directive. SWIG will wrap types exposed in this + * header to the target language. */ +%include "sensortemplate.hpp" diff --git a/src/sensortemplate/javaupm_sensortemplate.i b/src/sensortemplate/javaupm_sensortemplate.i new file mode 100644 index 00000000..8f23abf0 --- /dev/null +++ b/src/sensortemplate/javaupm_sensortemplate.i @@ -0,0 +1,17 @@ +/* Specify the name of the target JAVA module */ +%module javaupm_sensortemplate + +/* Include the base sensor interface file */ +%include "common.i" + +/* Add the JAVA code to load the module */ +%pragma(java) jniclasscode=%{ + static { + try { + System.loadLibrary("javaupm_sensortemplate"); + } catch (UnsatisfiedLinkError e) { + System.err.println("Native code library failed to load. \n" + e); + System.exit(1); + } + } +%} diff --git a/src/sensortemplate/jsupm_sensortemplate.i b/src/sensortemplate/jsupm_sensortemplate.i new file mode 100644 index 00000000..3f505167 --- /dev/null +++ b/src/sensortemplate/jsupm_sensortemplate.i @@ -0,0 +1,5 @@ +/* Specify the name of the target JavaScript module */ +%module jsupm_sensortemplate + +/* Include the base sensor interface file */ +%include "common.i" diff --git a/src/sensortemplate/pyupm_sensortemplate.i b/src/sensortemplate/pyupm_sensortemplate.i new file mode 100644 index 00000000..af557b4e --- /dev/null +++ b/src/sensortemplate/pyupm_sensortemplate.i @@ -0,0 +1,9 @@ +/* Specify the name of the target JAVA module */ +%module pyupm_sensortemplate + +/* If documentation is enabled, a full "pyupm_doxy2swig.i file will be + * generated and used... Otherwise, use a stub */ +%include "pyupm_doxy2swig.i" + +/* Include the base sensor interface file */ +%include "common.i" diff --git a/src/sensortemplate/sensortemplate.cxx b/src/sensortemplate/sensortemplate.cxx new file mode 100644 index 00000000..6c9f9cb4 --- /dev/null +++ b/src/sensortemplate/sensortemplate.cxx @@ -0,0 +1,35 @@ +/* + * The MIT License (MIT) + * + * Author: Your Full Name + * Copyright (c) + * + * Author: + * Copyright (c) + * + * 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 "sensortemplate.hpp" + +using namespace upm; + +SensorTemplate::SensorTemplate(int i2c_bus): _i2c(i2c_bus) {} + +std::string SensorTemplate::helloWorld() { return "Hello World";} diff --git a/src/sensortemplate/sensortemplate.hpp b/src/sensortemplate/sensortemplate.hpp new file mode 100644 index 00000000..8d466633 --- /dev/null +++ b/src/sensortemplate/sensortemplate.hpp @@ -0,0 +1,98 @@ +/* + * The MIT License (MIT) + * + * Author: Your Full Name + * Copyright (c) + * + * Author: + * Copyright (c) + * + * 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 + +#include "mraa/i2c.hpp" + +namespace upm +{ +/** + * @brief Library block provides a short library description + * @defgroup sensortemplate libupm-sensortemplate + * @ingroup (: eak,gsk,hak,robok,tsk) + */ + +/** + * @library sensortemplate + * @sensor Usually the chip number used by the sensor. When this is not + * available or relevant, use a unique descriptor that makes sense. + * Must match class name. *Mandatory* + * @comname Short, Title-Case Description from Datasheet. *Manditory* + * @altname Alternative names that your sensor driver might have. This may + * include manufacturer's name. *Optional* + * @altid Alternative chip-ids that your sensor driver supports. *Optional* + * @type One or more of: accelerometer,ainput,button,color,compass,digipot, + * display,electric,flexfor,gaseous,gps,led,light,liquid,medical,motor,other,pressure,relay,rfid,serial,servos,sound,temp,time,touch,video,wifi *Manditory* + * @man One or more of: Sensor manufacturer. Can be 'generic'. *Mandatory* + * @web Links to vendors or data-sheets. *Optional* + * @con One or more of: analog,gpio,i2c,pwm,spi,uart *Manditory* + * @kit One of: gsk, hak, eak, tsk, robok *Optional* + * + * @brief Short class/sensor description + * + * Then add a much more detailed description here. Include items such as + * board-specifics, testing, etc... + * + * @image html sensortemplate.png + * @snippet Interesting + */ + +class SensorTemplate +{ + public: + /** + * @brief Default constructor for SensorTemplate + * + * This creates an instance of SensorTemplate given an I2C bus + * number. + * + * @param i2c_bus Target I2C bus + * @return sensor context pointer + * @throws std::runtime_error on failure to initialize I2C + */ + SensorTemplate(int i2c_bus); + + /** + * SensorTemplate destructor + */ + virtual ~SensorTemplate() {}; + + /** + * @brief Hello world method + * + * Provides an example method which returns 'Hello world' + */ + std::string helloWorld(); + private: + /* Private I2c instance */ + mraa::I2c _i2c; +}; +}