diff --git a/libraries/Temboo/README.adoc b/libraries/Temboo/README.adoc index 155b6f690..ec74a12d4 100644 --- a/libraries/Temboo/README.adoc +++ b/libraries/Temboo/README.adoc @@ -4,18 +4,16 @@ This library allows an Arduino Yun to connect to the Temboo service. == License == -Copyright (c) Arduino LLC. All right reserved. - -This library is free software; you can redistribute it and/or -modify it under the terms of the GNU Lesser General Public -License as published by the Free Software Foundation; either -version 2.1 of the License, or (at your option) any later version. - -This library is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -Lesser General Public License for more details. - -You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +Copyright 2015, Temboo Inc. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + +http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, +software distributed under the License is distributed on an +"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, +either express or implied. See the License for the specific +language governing permissions and limitations under the License. diff --git a/libraries/Temboo/library.properties b/libraries/Temboo/library.properties index 22515c6cd..9b743a33a 100644 --- a/libraries/Temboo/library.properties +++ b/libraries/Temboo/library.properties @@ -6,5 +6,5 @@ paragraph=Use this library to connect your Arduino board to Temboo, making it si category=Communication url=http://www.temboo.com/arduino architectures=* -version=1.1.1 +version=1.1.2 core-dependencies=arduino (>=1.5.0) diff --git a/libraries/Temboo/src/Temboo.cpp b/libraries/Temboo/src/Temboo.cpp index f7ddaf93e..f4eb85e7f 100644 --- a/libraries/Temboo/src/Temboo.cpp +++ b/libraries/Temboo/src/Temboo.cpp @@ -3,7 +3,7 @@ # # Temboo Arduino library # -# Copyright 2014, Temboo Inc. +# Copyright 2015, Temboo Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -92,6 +92,8 @@ void TembooChoreo::setSettingsFileToRead(const String& filePath) { #include "utility/TembooSession.h" static const char HTTP_CODE[] PROGMEM = "HTTP_CODE\x0A\x1F"; +static char HTTP_EOL[] = "\r\n"; +static char HTTP_EOH[] = "\r\n\r\n"; TembooChoreo::TembooChoreo(Client& client) : m_client(client) { m_accountName = NULL; @@ -171,7 +173,6 @@ void TembooChoreo::setProfile(const char* profileName) { } - void TembooChoreo::addInput(const String& inputName, const String& inputValue) { m_inputs.put(inputName.c_str(), inputValue.c_str()); } @@ -233,66 +234,76 @@ void TembooChoreo::addOutputFilter(const String& outputName, const String& filte int TembooChoreo::run() { - return run(INADDR_NONE, 80); + return run(INADDR_NONE, 80, TEMBOO_CHOREO_DEFAULT_TIMEOUT_SECS); } +int TembooChoreo::run(uint16_t timeoutSecs) { + return run(INADDR_NONE, 80, timeoutSecs); +} -int TembooChoreo::run(IPAddress addr, uint16_t port) { - +int TembooChoreo::run(IPAddress addr, uint16_t port, uint16_t timeoutSecs) { + m_nextChar = NULL; - + if (m_accountName == NULL || *m_accountName == '\0') { return TEMBOO_ERROR_ACCOUNT_MISSING; } - + if (m_path == NULL || *m_path == '\0') { return TEMBOO_ERROR_CHOREO_MISSING; } - + if (m_appKeyName == NULL || *m_appKeyName == '\0') { return TEMBOO_ERROR_APPKEY_NAME_MISSING; } - + if (m_appKeyValue == NULL || *m_appKeyValue == '\0') { return TEMBOO_ERROR_APPKEY_MISSING; } - - + TembooSession session(m_client, addr, port); uint16_t httpCode = 0; for (int i = 0; i < 2; i++) { + unsigned long timeoutBeginSecs = session.getTime(); if (0 != session.executeChoreo(m_accountName, m_appKeyName, m_appKeyValue, m_path, m_inputs, m_outputs, m_preset)) { httpCode = 0; break; } - + while(!m_client.available()) { + if((session.getTime() - timeoutBeginSecs) >= timeoutSecs) { + TEMBOO_TRACELN("Receive time out"); + m_client.stop(); + return TEMBOO_ERROR_STREAM_TIMEOUT; + } if (!m_client.connected()) { TEMBOO_TRACELN("Disconnected"); return TEMBOO_ERROR_HTTP_ERROR; } delay(10); } - - if (!m_client.find("HTTP/1.1 ")) { + if (!m_client.findUntil("HTTP/1.", HTTP_EOL)) { TEMBOO_TRACELN("No HTTP"); return TEMBOO_ERROR_HTTP_ERROR; } - + //Don't care if the next byte is a '1' or a '0' + m_client.read(); + + //Read the HTTP status code httpCode = (uint16_t)m_client.parseInt(); - - // We expect HTTP response codes to be <= 599, but + + // We expect HTTP response codes to be <= 599, but // we need to be prepared for anything. if (httpCode >= 600) { TEMBOO_TRACELN("Invalid HTTP"); httpCode = 0; } - + // if we get an auth error AND there was an x-temboo-time header, // update the session timeOffset if ((httpCode == 401) && (i == 0)) { - if (m_client.find("x-temboo-time:")) { + if (m_client.findUntil("x-temboo-time:", HTTP_EOH)) { TembooSession::setTime((unsigned long)m_client.parseInt()); while(m_client.available()) { m_client.read(); @@ -303,20 +314,20 @@ int TembooChoreo::run(IPAddress addr, uint16_t port) { break; } } - + uint16toa(httpCode, m_httpCodeStr); strcat_P(m_httpCodeStr, PSTR("\x0A\x1E")); m_nextState = START; m_nextChar = HTTP_CODE; - + if (httpCode < 200 || httpCode >= 300) { return TEMBOO_ERROR_HTTP_ERROR; } - - if (!m_client.find("\x0D\x0A\x0D\x0A")) { + + if (!m_client.find(HTTP_EOH)) { return TEMBOO_ERROR_HTTP_ERROR; } - + return TEMBOO_ERROR_OK; } diff --git a/libraries/Temboo/src/Temboo.h b/libraries/Temboo/src/Temboo.h index 3b1b7ec40..881fe484a 100644 --- a/libraries/Temboo/src/Temboo.h +++ b/libraries/Temboo/src/Temboo.h @@ -3,7 +3,7 @@ # # Temboo Arduino library # -# Copyright 2014, Temboo Inc. +# Copyright 2015, Temboo Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -69,6 +69,8 @@ class TembooChoreo : public Process { #define TEMBOO_ERROR_APPKEY_NAME_MISSING (205) #define TEMBOO_ERROR_APPKEY_MISSING (207) #define TEMBOO_ERROR_HTTP_ERROR (223) +#define TEMBOO_ERROR_STREAM_TIMEOUT (225) +#define TEMBOO_CHOREO_DEFAULT_TIMEOUT_SECS (901) //15 minutes and 1 second class TembooChoreo : public Stream { public: @@ -135,7 +137,8 @@ class TembooChoreo : public Stream { // run the choreo on the Temboo server at the given IP address and port // (used only when instructed by Temboo customer support.) - int run(IPAddress addr, uint16_t port); + int run(uint16_t timeoutSecs); + int run(IPAddress addr, uint16_t port, uint16_t timeoutSecs); void close(); diff --git a/libraries/Temboo/src/utility/BaseFormatter.cpp b/libraries/Temboo/src/utility/BaseFormatter.cpp index b9b77db67..1e575e217 100644 --- a/libraries/Temboo/src/utility/BaseFormatter.cpp +++ b/libraries/Temboo/src/utility/BaseFormatter.cpp @@ -3,7 +3,7 @@ # # Temboo Arduino library # -# Copyright 2014, Temboo Inc. +# Copyright 2015, Temboo Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/libraries/Temboo/src/utility/BaseFormatter.h b/libraries/Temboo/src/utility/BaseFormatter.h index d8886ad13..3d4443124 100644 --- a/libraries/Temboo/src/utility/BaseFormatter.h +++ b/libraries/Temboo/src/utility/BaseFormatter.h @@ -3,7 +3,7 @@ # # Temboo Arduino library # -# Copyright 2014, Temboo Inc. +# Copyright 2015, Temboo Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/libraries/Temboo/src/utility/ChoreoInput.cpp b/libraries/Temboo/src/utility/ChoreoInput.cpp index 00138b7a3..faf921d89 100644 --- a/libraries/Temboo/src/utility/ChoreoInput.cpp +++ b/libraries/Temboo/src/utility/ChoreoInput.cpp @@ -3,7 +3,7 @@ # # Temboo Arduino library # -# Copyright 2014, Temboo Inc. +# Copyright 2015, Temboo Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/libraries/Temboo/src/utility/ChoreoInput.h b/libraries/Temboo/src/utility/ChoreoInput.h index 3e2b8b83a..a23ca700c 100644 --- a/libraries/Temboo/src/utility/ChoreoInput.h +++ b/libraries/Temboo/src/utility/ChoreoInput.h @@ -3,7 +3,7 @@ # # Temboo Arduino library # -# Copyright 2014, Temboo Inc. +# Copyright 2015, Temboo Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/libraries/Temboo/src/utility/ChoreoInputFormatter.cpp b/libraries/Temboo/src/utility/ChoreoInputFormatter.cpp index e70bd8aab..a54c55375 100644 --- a/libraries/Temboo/src/utility/ChoreoInputFormatter.cpp +++ b/libraries/Temboo/src/utility/ChoreoInputFormatter.cpp @@ -3,7 +3,7 @@ # # Temboo Arduino library # -# Copyright 2014, Temboo Inc. +# Copyright 2015, Temboo Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/libraries/Temboo/src/utility/ChoreoInputFormatter.h b/libraries/Temboo/src/utility/ChoreoInputFormatter.h index 78b2f9776..8946c5d10 100644 --- a/libraries/Temboo/src/utility/ChoreoInputFormatter.h +++ b/libraries/Temboo/src/utility/ChoreoInputFormatter.h @@ -3,7 +3,7 @@ # # Temboo Arduino library # -# Copyright 2014, Temboo Inc. +# Copyright 2015, Temboo Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/libraries/Temboo/src/utility/ChoreoInputSet.cpp b/libraries/Temboo/src/utility/ChoreoInputSet.cpp index 5257a1695..09a9f1aac 100644 --- a/libraries/Temboo/src/utility/ChoreoInputSet.cpp +++ b/libraries/Temboo/src/utility/ChoreoInputSet.cpp @@ -3,7 +3,7 @@ # # Temboo Arduino library # -# Copyright 2014, Temboo Inc. +# Copyright 2015, Temboo Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/libraries/Temboo/src/utility/ChoreoInputSet.h b/libraries/Temboo/src/utility/ChoreoInputSet.h index 4349049c5..123a38a23 100644 --- a/libraries/Temboo/src/utility/ChoreoInputSet.h +++ b/libraries/Temboo/src/utility/ChoreoInputSet.h @@ -3,7 +3,7 @@ # # Temboo Arduino library # -# Copyright 2014, Temboo Inc. +# Copyright 2015, Temboo Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/libraries/Temboo/src/utility/ChoreoOutput.cpp b/libraries/Temboo/src/utility/ChoreoOutput.cpp index 63ede6bf5..63cdc5fda 100644 --- a/libraries/Temboo/src/utility/ChoreoOutput.cpp +++ b/libraries/Temboo/src/utility/ChoreoOutput.cpp @@ -3,7 +3,7 @@ # # Temboo Arduino library # -# Copyright 2014, Temboo Inc. +# Copyright 2015, Temboo Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/libraries/Temboo/src/utility/ChoreoOutput.h b/libraries/Temboo/src/utility/ChoreoOutput.h index a026d955d..844e8b5fb 100644 --- a/libraries/Temboo/src/utility/ChoreoOutput.h +++ b/libraries/Temboo/src/utility/ChoreoOutput.h @@ -3,7 +3,7 @@ # # Temboo Arduino library # -# Copyright 2014, Temboo Inc. +# Copyright 2015, Temboo Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/libraries/Temboo/src/utility/ChoreoOutputFormatter.cpp b/libraries/Temboo/src/utility/ChoreoOutputFormatter.cpp index a4b581bb1..53561ccd8 100644 --- a/libraries/Temboo/src/utility/ChoreoOutputFormatter.cpp +++ b/libraries/Temboo/src/utility/ChoreoOutputFormatter.cpp @@ -3,7 +3,7 @@ # # Temboo Arduino library # -# Copyright 2014, Temboo Inc. +# Copyright 2015, Temboo Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/libraries/Temboo/src/utility/ChoreoOutputFormatter.h b/libraries/Temboo/src/utility/ChoreoOutputFormatter.h index c1086fc57..52874a6ca 100644 --- a/libraries/Temboo/src/utility/ChoreoOutputFormatter.h +++ b/libraries/Temboo/src/utility/ChoreoOutputFormatter.h @@ -3,7 +3,7 @@ # # Temboo Arduino library # -# Copyright 2014, Temboo Inc. +# Copyright 2015, Temboo Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/libraries/Temboo/src/utility/ChoreoOutputSet.cpp b/libraries/Temboo/src/utility/ChoreoOutputSet.cpp index f61b83fd9..084fe625b 100644 --- a/libraries/Temboo/src/utility/ChoreoOutputSet.cpp +++ b/libraries/Temboo/src/utility/ChoreoOutputSet.cpp @@ -3,7 +3,7 @@ # # Temboo Arduino library # -# Copyright 2014, Temboo Inc. +# Copyright 2015, Temboo Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/libraries/Temboo/src/utility/ChoreoOutputSet.h b/libraries/Temboo/src/utility/ChoreoOutputSet.h index b15808980..2c0fc4b9c 100644 --- a/libraries/Temboo/src/utility/ChoreoOutputSet.h +++ b/libraries/Temboo/src/utility/ChoreoOutputSet.h @@ -3,7 +3,7 @@ # # Temboo Arduino library # -# Copyright 2014, Temboo Inc. +# Copyright 2015, Temboo Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/libraries/Temboo/src/utility/ChoreoPreset.cpp b/libraries/Temboo/src/utility/ChoreoPreset.cpp index 8b637001b..61a785026 100644 --- a/libraries/Temboo/src/utility/ChoreoPreset.cpp +++ b/libraries/Temboo/src/utility/ChoreoPreset.cpp @@ -3,7 +3,7 @@ # # Temboo Arduino library # -# Copyright 2014, Temboo Inc. +# Copyright 2015, Temboo Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/libraries/Temboo/src/utility/ChoreoPreset.h b/libraries/Temboo/src/utility/ChoreoPreset.h index b48b14262..2ba457b6d 100644 --- a/libraries/Temboo/src/utility/ChoreoPreset.h +++ b/libraries/Temboo/src/utility/ChoreoPreset.h @@ -3,7 +3,7 @@ # # Temboo Arduino library # -# Copyright 2014, Temboo Inc. +# Copyright 2015, Temboo Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/libraries/Temboo/src/utility/ChoreoPresetFormatter.cpp b/libraries/Temboo/src/utility/ChoreoPresetFormatter.cpp index a5b8e2891..f34d181a5 100644 --- a/libraries/Temboo/src/utility/ChoreoPresetFormatter.cpp +++ b/libraries/Temboo/src/utility/ChoreoPresetFormatter.cpp @@ -3,7 +3,7 @@ # # Temboo Arduino library # -# Copyright 2014, Temboo Inc. +# Copyright 2015, Temboo Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/libraries/Temboo/src/utility/ChoreoPresetFormatter.h b/libraries/Temboo/src/utility/ChoreoPresetFormatter.h index a0ffaf984..30e4a9b1f 100644 --- a/libraries/Temboo/src/utility/ChoreoPresetFormatter.h +++ b/libraries/Temboo/src/utility/ChoreoPresetFormatter.h @@ -3,7 +3,7 @@ # # Temboo Arduino library # -# Copyright 2014, Temboo Inc. +# Copyright 2015, Temboo Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/libraries/Temboo/src/utility/DataFormatter.cpp b/libraries/Temboo/src/utility/DataFormatter.cpp index 7291da94e..f5cdf989b 100644 --- a/libraries/Temboo/src/utility/DataFormatter.cpp +++ b/libraries/Temboo/src/utility/DataFormatter.cpp @@ -3,7 +3,7 @@ # # Temboo Arduino library # -# Copyright 2014, Temboo Inc. +# Copyright 2015, Temboo Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/libraries/Temboo/src/utility/DataFormatter.h b/libraries/Temboo/src/utility/DataFormatter.h index 0ee110f87..542c821d1 100644 --- a/libraries/Temboo/src/utility/DataFormatter.h +++ b/libraries/Temboo/src/utility/DataFormatter.h @@ -3,7 +3,7 @@ # # Temboo Arduino library # -# Copyright 2014, Temboo Inc. +# Copyright 2015, Temboo Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/libraries/Temboo/src/utility/TembooGlobal.c b/libraries/Temboo/src/utility/TembooGlobal.c index 256ea2ea9..63163c1af 100644 --- a/libraries/Temboo/src/utility/TembooGlobal.c +++ b/libraries/Temboo/src/utility/TembooGlobal.c @@ -3,7 +3,7 @@ # # Temboo Arduino library # -# Copyright 2014, Temboo Inc. +# Copyright 2015, Temboo Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/libraries/Temboo/src/utility/TembooGlobal.h b/libraries/Temboo/src/utility/TembooGlobal.h index 91d16585c..acb89437b 100644 --- a/libraries/Temboo/src/utility/TembooGlobal.h +++ b/libraries/Temboo/src/utility/TembooGlobal.h @@ -3,7 +3,7 @@ # # Temboo Arduino library # -# Copyright 2014, Temboo Inc. +# Copyright 2015, Temboo Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/libraries/Temboo/src/utility/TembooSession.cpp b/libraries/Temboo/src/utility/TembooSession.cpp index bdd7e229a..70dbb9e9e 100644 --- a/libraries/Temboo/src/utility/TembooSession.cpp +++ b/libraries/Temboo/src/utility/TembooSession.cpp @@ -3,7 +3,7 @@ # # Temboo Arduino library # -# Copyright 2014, Temboo Inc. +# Copyright 2015, Temboo Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/libraries/Temboo/src/utility/TembooSession.h b/libraries/Temboo/src/utility/TembooSession.h index 403ed8eb6..635467f6b 100644 --- a/libraries/Temboo/src/utility/TembooSession.h +++ b/libraries/Temboo/src/utility/TembooSession.h @@ -3,7 +3,7 @@ # # Temboo Arduino library # -# Copyright 2014, Temboo Inc. +# Copyright 2015, Temboo Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/libraries/Temboo/src/utility/tmbhmac.cpp b/libraries/Temboo/src/utility/tmbhmac.cpp index 736e60d44..9e23763aa 100644 --- a/libraries/Temboo/src/utility/tmbhmac.cpp +++ b/libraries/Temboo/src/utility/tmbhmac.cpp @@ -3,7 +3,7 @@ # # Temboo Arduino library # -# Copyright 2014, Temboo Inc. +# Copyright 2015, Temboo Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/libraries/Temboo/src/utility/tmbhmac.h b/libraries/Temboo/src/utility/tmbhmac.h index 6652dbf82..028b2bd97 100644 --- a/libraries/Temboo/src/utility/tmbhmac.h +++ b/libraries/Temboo/src/utility/tmbhmac.h @@ -3,7 +3,7 @@ # # Temboo Arduino library # -# Copyright 2014, Temboo Inc. +# Copyright 2015, Temboo Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/libraries/Temboo/src/utility/tmbmd5.cpp b/libraries/Temboo/src/utility/tmbmd5.cpp index e270c1c27..fe8d7a9d3 100644 --- a/libraries/Temboo/src/utility/tmbmd5.cpp +++ b/libraries/Temboo/src/utility/tmbmd5.cpp @@ -3,7 +3,7 @@ # # Temboo Arduino library # -# Copyright 2014, Temboo Inc. +# Copyright 2015, Temboo Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/libraries/Temboo/src/utility/tmbmd5.h b/libraries/Temboo/src/utility/tmbmd5.h index 3a0bcf0e6..9c22c4376 100644 --- a/libraries/Temboo/src/utility/tmbmd5.h +++ b/libraries/Temboo/src/utility/tmbmd5.h @@ -3,7 +3,7 @@ # # Temboo Arduino library # -# Copyright 2014, Temboo Inc. +# Copyright 2015, Temboo Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License.