1/*jslint node:true, vars:true, bitwise:true, unparam:true */
2/*jshint unused:true */
3/*global */
4/*
5* Author: Zion Orent <zorent@ics.com>
6* Copyright (c) 2014 Intel Corporation.
7*
8* Permission is hereby granted, free of charge, to any person obtaining
9* a copy of this software and associated documentation files (the
10* "Software"), to deal in the Software without restriction, including
11* without limitation the rights to use, copy, modify, merge, publish,
12* distribute, sublicense, and/or sell copies of the Software, and to
13* permit persons to whom the Software is furnished to do so, subject to
14* the following conditions:
15*
16* The above copyright notice and this permission notice shall be
17* included in all copies or substantial portions of the Software.
18*
19* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
20* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
21* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
22* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
23* LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
24* OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
25* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
26*/
27
28// Load alcohol sensor module
29var mq303a = require('jsupm_mq303a');
30
31// Instantiate an mq303a sensor on analog pin A0
32// This device uses a heater powered from an analog I/O pin.
33// If using A0 as the data pin, then you need to use A1, as the heater
34// pin (if using a grove mq303a).  For A1, we can use the D15 gpio,
35// setup as an output, and drive it low to power the heater.
36var myAlcoholObj = new mq303a.MQ303A(0, 15);
37
38console.log("Enabling heater and waiting 2 minutes for warmup.");
39
40// give time updates every 30 seconds until 2 minutes have passed
41// for the alcohol sensor to warm up
42statusMessage(1);
43statusMessage(2);
44statusMessage(3);
45
46function statusMessage(amt)
47{
48	setTimeout(function()
49	{
50		console.log((amt * 30) + " seconds have passed");
51	}, 30000 * amt);
52}
53
54// run the alcohol sensor in 2 minutes
55setTimeout(runAlcoholSensor, 120000);
56
57function runAlcoholSensor()
58{
59	var notice = "This sensor may need to warm " +
60				"until the value drops below about 450."
61	console.log(notice);
62
63    // Print the detected alcohol value every second
64	setInterval(function()
65	{
66		var val = myAlcoholObj.value();
67		var msg = "Alcohol detected ";
68		msg += "(higher means stronger alcohol): ";
69		console.log(msg + val);
70	}, 1000);
71}
72
73// Print message when exiting
74process.on('SIGINT', function()
75{
76	console.log("Exiting...");
77	process.exit(0);
78});
79