Leest de waarde van een sensor binnen een maakt deze beschikbaar via internet

Dependencies:   NTPClient_NetServices mbed

Committer:
hendrikvincent
Date:
Mon Dec 02 09:01:23 2013 +0000
Revision:
0:05ccbd4f84f1
eerste programma;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
hendrikvincent 0:05ccbd4f84f1 1
hendrikvincent 0:05ccbd4f84f1 2 /*
hendrikvincent 0:05ccbd4f84f1 3 Copyright (c) 2010 Donatien Garnier (donatiengar [at] gmail [dot] com)
hendrikvincent 0:05ccbd4f84f1 4
hendrikvincent 0:05ccbd4f84f1 5 Permission is hereby granted, free of charge, to any person obtaining a copy
hendrikvincent 0:05ccbd4f84f1 6 of this software and associated documentation files (the "Software"), to deal
hendrikvincent 0:05ccbd4f84f1 7 in the Software without restriction, including without limitation the rights
hendrikvincent 0:05ccbd4f84f1 8 to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
hendrikvincent 0:05ccbd4f84f1 9 copies of the Software, and to permit persons to whom the Software is
hendrikvincent 0:05ccbd4f84f1 10 furnished to do so, subject to the following conditions:
hendrikvincent 0:05ccbd4f84f1 11
hendrikvincent 0:05ccbd4f84f1 12 The above copyright notice and this permission notice shall be included in
hendrikvincent 0:05ccbd4f84f1 13 all copies or substantial portions of the Software.
hendrikvincent 0:05ccbd4f84f1 14
hendrikvincent 0:05ccbd4f84f1 15 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
hendrikvincent 0:05ccbd4f84f1 16 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
hendrikvincent 0:05ccbd4f84f1 17 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
hendrikvincent 0:05ccbd4f84f1 18 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
hendrikvincent 0:05ccbd4f84f1 19 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
hendrikvincent 0:05ccbd4f84f1 20 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
hendrikvincent 0:05ccbd4f84f1 21 THE SOFTWARE.
hendrikvincent 0:05ccbd4f84f1 22 */
hendrikvincent 0:05ccbd4f84f1 23
hendrikvincent 0:05ccbd4f84f1 24 #include "url.h"
hendrikvincent 0:05ccbd4f84f1 25
hendrikvincent 0:05ccbd4f84f1 26 Url::Url() : m_port(0)
hendrikvincent 0:05ccbd4f84f1 27 {
hendrikvincent 0:05ccbd4f84f1 28
hendrikvincent 0:05ccbd4f84f1 29 }
hendrikvincent 0:05ccbd4f84f1 30
hendrikvincent 0:05ccbd4f84f1 31 string Url::getProtocol()
hendrikvincent 0:05ccbd4f84f1 32 {
hendrikvincent 0:05ccbd4f84f1 33 return m_protocol;
hendrikvincent 0:05ccbd4f84f1 34 }
hendrikvincent 0:05ccbd4f84f1 35
hendrikvincent 0:05ccbd4f84f1 36 string Url::getHost()
hendrikvincent 0:05ccbd4f84f1 37 {
hendrikvincent 0:05ccbd4f84f1 38 return m_host;
hendrikvincent 0:05ccbd4f84f1 39 }
hendrikvincent 0:05ccbd4f84f1 40
hendrikvincent 0:05ccbd4f84f1 41 bool Url::getHostIp(IpAddr* ip)
hendrikvincent 0:05ccbd4f84f1 42 {
hendrikvincent 0:05ccbd4f84f1 43 unsigned int ipArr[4] = {0};
hendrikvincent 0:05ccbd4f84f1 44 if ( sscanf(m_host.c_str(), "%u.%u.%u.%u", &ipArr[0], &ipArr[1], &ipArr[2], &ipArr[3]) != 4 )
hendrikvincent 0:05ccbd4f84f1 45 {
hendrikvincent 0:05ccbd4f84f1 46 return false;
hendrikvincent 0:05ccbd4f84f1 47 }
hendrikvincent 0:05ccbd4f84f1 48 *ip = IpAddr(ipArr[0], ipArr[1], ipArr[2], ipArr[3]);
hendrikvincent 0:05ccbd4f84f1 49 return true;
hendrikvincent 0:05ccbd4f84f1 50 }
hendrikvincent 0:05ccbd4f84f1 51
hendrikvincent 0:05ccbd4f84f1 52 uint16_t Url::getPort()
hendrikvincent 0:05ccbd4f84f1 53 {
hendrikvincent 0:05ccbd4f84f1 54 return m_port;
hendrikvincent 0:05ccbd4f84f1 55 }
hendrikvincent 0:05ccbd4f84f1 56
hendrikvincent 0:05ccbd4f84f1 57 string Url::getPath()
hendrikvincent 0:05ccbd4f84f1 58 {
hendrikvincent 0:05ccbd4f84f1 59 return m_path;
hendrikvincent 0:05ccbd4f84f1 60 }
hendrikvincent 0:05ccbd4f84f1 61
hendrikvincent 0:05ccbd4f84f1 62 void Url::setProtocol(string protocol)
hendrikvincent 0:05ccbd4f84f1 63 {
hendrikvincent 0:05ccbd4f84f1 64 m_protocol = protocol;
hendrikvincent 0:05ccbd4f84f1 65 }
hendrikvincent 0:05ccbd4f84f1 66
hendrikvincent 0:05ccbd4f84f1 67 void Url::setHost(string host)
hendrikvincent 0:05ccbd4f84f1 68 {
hendrikvincent 0:05ccbd4f84f1 69 m_host = host;
hendrikvincent 0:05ccbd4f84f1 70 }
hendrikvincent 0:05ccbd4f84f1 71
hendrikvincent 0:05ccbd4f84f1 72 void Url::setPort(uint16_t port)
hendrikvincent 0:05ccbd4f84f1 73 {
hendrikvincent 0:05ccbd4f84f1 74 m_port = port;
hendrikvincent 0:05ccbd4f84f1 75 }
hendrikvincent 0:05ccbd4f84f1 76
hendrikvincent 0:05ccbd4f84f1 77 void Url::setPath(string path)
hendrikvincent 0:05ccbd4f84f1 78 {
hendrikvincent 0:05ccbd4f84f1 79 m_path = path;
hendrikvincent 0:05ccbd4f84f1 80 }
hendrikvincent 0:05ccbd4f84f1 81
hendrikvincent 0:05ccbd4f84f1 82 void Url::fromString(string str)
hendrikvincent 0:05ccbd4f84f1 83 {
hendrikvincent 0:05ccbd4f84f1 84 //URI form [protocol://]host[:port]/path
hendrikvincent 0:05ccbd4f84f1 85 int pos = 0;
hendrikvincent 0:05ccbd4f84f1 86 int len = str.find("://");
hendrikvincent 0:05ccbd4f84f1 87 if( len > 0)
hendrikvincent 0:05ccbd4f84f1 88 {
hendrikvincent 0:05ccbd4f84f1 89 m_protocol = str.substr(0, len);
hendrikvincent 0:05ccbd4f84f1 90 pos += len + 3;
hendrikvincent 0:05ccbd4f84f1 91 }
hendrikvincent 0:05ccbd4f84f1 92 else
hendrikvincent 0:05ccbd4f84f1 93 {
hendrikvincent 0:05ccbd4f84f1 94 m_protocol = "";
hendrikvincent 0:05ccbd4f84f1 95 }
hendrikvincent 0:05ccbd4f84f1 96
hendrikvincent 0:05ccbd4f84f1 97 bool isPort = false;
hendrikvincent 0:05ccbd4f84f1 98 int cln_pos = str.find(":", pos);
hendrikvincent 0:05ccbd4f84f1 99 int slash_pos = str.find("/", pos);
hendrikvincent 0:05ccbd4f84f1 100 if( slash_pos == -1 )
hendrikvincent 0:05ccbd4f84f1 101 {
hendrikvincent 0:05ccbd4f84f1 102 slash_pos = str.length();
hendrikvincent 0:05ccbd4f84f1 103 }
hendrikvincent 0:05ccbd4f84f1 104 if( (cln_pos != -1) && (cln_pos < slash_pos) )
hendrikvincent 0:05ccbd4f84f1 105 {
hendrikvincent 0:05ccbd4f84f1 106 isPort = true;
hendrikvincent 0:05ccbd4f84f1 107 len = cln_pos - pos;
hendrikvincent 0:05ccbd4f84f1 108 }
hendrikvincent 0:05ccbd4f84f1 109 else
hendrikvincent 0:05ccbd4f84f1 110 {
hendrikvincent 0:05ccbd4f84f1 111 len = slash_pos - pos;
hendrikvincent 0:05ccbd4f84f1 112 }
hendrikvincent 0:05ccbd4f84f1 113
hendrikvincent 0:05ccbd4f84f1 114 m_host = str.substr(pos, len);
hendrikvincent 0:05ccbd4f84f1 115
hendrikvincent 0:05ccbd4f84f1 116 pos += len;
hendrikvincent 0:05ccbd4f84f1 117 if( isPort )
hendrikvincent 0:05ccbd4f84f1 118 {
hendrikvincent 0:05ccbd4f84f1 119 pos+=1; //Do not keep :
hendrikvincent 0:05ccbd4f84f1 120 unsigned int port = 0;
hendrikvincent 0:05ccbd4f84f1 121 sscanf(str.substr(pos, cln_pos-pos).c_str(),"%u", &port);
hendrikvincent 0:05ccbd4f84f1 122 m_port = (uint16_t)port;
hendrikvincent 0:05ccbd4f84f1 123 pos = slash_pos;
hendrikvincent 0:05ccbd4f84f1 124 }
hendrikvincent 0:05ccbd4f84f1 125
hendrikvincent 0:05ccbd4f84f1 126 m_path = str.substr(pos);
hendrikvincent 0:05ccbd4f84f1 127 }
hendrikvincent 0:05ccbd4f84f1 128
hendrikvincent 0:05ccbd4f84f1 129 string Url::toString()
hendrikvincent 0:05ccbd4f84f1 130 {
hendrikvincent 0:05ccbd4f84f1 131 string url;
hendrikvincent 0:05ccbd4f84f1 132 if( !m_protocol.empty() )
hendrikvincent 0:05ccbd4f84f1 133 {
hendrikvincent 0:05ccbd4f84f1 134 url.append(m_protocol);
hendrikvincent 0:05ccbd4f84f1 135 url.append("://");
hendrikvincent 0:05ccbd4f84f1 136 }
hendrikvincent 0:05ccbd4f84f1 137 url.append(m_host);
hendrikvincent 0:05ccbd4f84f1 138 if( m_port )
hendrikvincent 0:05ccbd4f84f1 139 {
hendrikvincent 0:05ccbd4f84f1 140 char c_port[6] = {0};
hendrikvincent 0:05ccbd4f84f1 141 sprintf(c_port, "%d", m_port);
hendrikvincent 0:05ccbd4f84f1 142 url.append(":");
hendrikvincent 0:05ccbd4f84f1 143 url.append(c_port);
hendrikvincent 0:05ccbd4f84f1 144 }
hendrikvincent 0:05ccbd4f84f1 145 if(m_path[0]!='/')
hendrikvincent 0:05ccbd4f84f1 146 {
hendrikvincent 0:05ccbd4f84f1 147 url.append("/");
hendrikvincent 0:05ccbd4f84f1 148 }
hendrikvincent 0:05ccbd4f84f1 149 url.append(m_path);
hendrikvincent 0:05ccbd4f84f1 150 return url;
hendrikvincent 0:05ccbd4f84f1 151 }