Demo starter application to connect WiGo to NSP and expose on-board sensors

Dependencies:   NVIC_set_all_priorities cc3000_hostdriver_mbedsocket mbed nsdl_lib TEMT6200 TSI Wi-Go_eCompass_Lib_V3 WiGo_BattCharger

This is the mbed project for the IoT World Hackathon event, June 17th and 18th in Palo Also.

The setup instructions for participants are at the Setup page of this wiki:

http://mbed.org/teams/MBED_DEMOS/code/IoT_World_Hackathon_WiGo_NSP_Demo/wiki/Setup-Guide-for-the-IoT-World-Hackathon

Committer:
michaeljkoster
Date:
Wed Jul 09 04:35:49 2014 +0000
Revision:
18:11b9d98ecae2
Parent:
0:07581223f90c
Checkpoint

Who changed what in which revision?

UserRevisionLine numberNew contents of line
michaeljkoster 0:07581223f90c 1 /*****************************************************************************
michaeljkoster 0:07581223f90c 2 *
michaeljkoster 0:07581223f90c 3 * strlib.c - String Library functions implementation
michaeljkoster 0:07581223f90c 4 * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
michaeljkoster 0:07581223f90c 5 *
michaeljkoster 0:07581223f90c 6 * Redistribution and use in source and binary forms, with or without
michaeljkoster 0:07581223f90c 7 * modification, are permitted provided that the following conditions
michaeljkoster 0:07581223f90c 8 * are met:
michaeljkoster 0:07581223f90c 9 *
michaeljkoster 0:07581223f90c 10 * Redistributions of source code must retain the above copyright
michaeljkoster 0:07581223f90c 11 * notice, this list of conditions and the following disclaimer.
michaeljkoster 0:07581223f90c 12 *
michaeljkoster 0:07581223f90c 13 * Redistributions in binary form must reproduce the above copyright
michaeljkoster 0:07581223f90c 14 * notice, this list of conditions and the following disclaimer in the
michaeljkoster 0:07581223f90c 15 * documentation and/or other materials provided with the
michaeljkoster 0:07581223f90c 16 * distribution.
michaeljkoster 0:07581223f90c 17 *
michaeljkoster 0:07581223f90c 18 * Neither the name of Texas Instruments Incorporated nor the names of
michaeljkoster 0:07581223f90c 19 * its contributors may be used to endorse or promote products derived
michaeljkoster 0:07581223f90c 20 * from this software without specific prior written permission.
michaeljkoster 0:07581223f90c 21 *
michaeljkoster 0:07581223f90c 22 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
michaeljkoster 0:07581223f90c 23 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
michaeljkoster 0:07581223f90c 24 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
michaeljkoster 0:07581223f90c 25 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
michaeljkoster 0:07581223f90c 26 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
michaeljkoster 0:07581223f90c 27 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
michaeljkoster 0:07581223f90c 28 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
michaeljkoster 0:07581223f90c 29 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
michaeljkoster 0:07581223f90c 30 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
michaeljkoster 0:07581223f90c 31 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
michaeljkoster 0:07581223f90c 32 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
michaeljkoster 0:07581223f90c 33 *
michaeljkoster 0:07581223f90c 34 *****************************************************************************/
michaeljkoster 0:07581223f90c 35
michaeljkoster 0:07581223f90c 36 /*#include <stdlib.h>
michaeljkoster 0:07581223f90c 37 #include <stdio.h>
michaeljkoster 0:07581223f90c 38 #include <string.h>*/
michaeljkoster 0:07581223f90c 39 #include "mbed.h"
michaeljkoster 0:07581223f90c 40 #include "strlib.h"
michaeljkoster 0:07581223f90c 41
michaeljkoster 0:07581223f90c 42 //*****************************************************************************
michaeljkoster 0:07581223f90c 43 //
michaeljkoster 0:07581223f90c 44 //! \brief Integer to ASCII
michaeljkoster 0:07581223f90c 45 //!
michaeljkoster 0:07581223f90c 46 //! \param n is the number to be converted to ASCII
michaeljkoster 0:07581223f90c 47 //! \param s is a pointer to an array where the ASCII string will be placed
michaeljkoster 0:07581223f90c 48 //! \param b is the base (10 for decimal)
michaeljkoster 0:07581223f90c 49 //!
michaeljkoster 0:07581223f90c 50 //! \return none
michaeljkoster 0:07581223f90c 51 //
michaeljkoster 0:07581223f90c 52 //*****************************************************************************
michaeljkoster 0:07581223f90c 53 char *itoa(int n, char *s, int b)
michaeljkoster 0:07581223f90c 54 {
michaeljkoster 0:07581223f90c 55 const char digits[] = "0123456789abcdefghijklmnopqrstuvwxyz";
michaeljkoster 0:07581223f90c 56 unsigned int i = 0;
michaeljkoster 0:07581223f90c 57 int sign;
michaeljkoster 0:07581223f90c 58
michaeljkoster 0:07581223f90c 59 if ((sign = n) < 0)
michaeljkoster 0:07581223f90c 60 n = -n;
michaeljkoster 0:07581223f90c 61
michaeljkoster 0:07581223f90c 62 do {
michaeljkoster 0:07581223f90c 63 s[i++] = digits[n % b];
michaeljkoster 0:07581223f90c 64 } while ((n /= b) > 0);
michaeljkoster 0:07581223f90c 65
michaeljkoster 0:07581223f90c 66 if (sign < 0)
michaeljkoster 0:07581223f90c 67 s[i++] = '-';
michaeljkoster 0:07581223f90c 68 s[i] = '\0';
michaeljkoster 0:07581223f90c 69
michaeljkoster 0:07581223f90c 70 return strrev(s);
michaeljkoster 0:07581223f90c 71 }
michaeljkoster 0:07581223f90c 72
michaeljkoster 0:07581223f90c 73 //*****************************************************************************
michaeljkoster 0:07581223f90c 74 //
michaeljkoster 0:07581223f90c 75 //! \brief Reverses a string
michaeljkoster 0:07581223f90c 76 //!
michaeljkoster 0:07581223f90c 77 //! \param str is a pointer to the string to be reversed
michaeljkoster 0:07581223f90c 78 //!
michaeljkoster 0:07581223f90c 79 //! \return none
michaeljkoster 0:07581223f90c 80 //
michaeljkoster 0:07581223f90c 81 //*****************************************************************************
michaeljkoster 0:07581223f90c 82 char *strrev(char *str)
michaeljkoster 0:07581223f90c 83 {
michaeljkoster 0:07581223f90c 84 char *p1, *p2;
michaeljkoster 0:07581223f90c 85
michaeljkoster 0:07581223f90c 86 if (!str || !*str)
michaeljkoster 0:07581223f90c 87 return str;
michaeljkoster 0:07581223f90c 88
michaeljkoster 0:07581223f90c 89 for (p1 = str, p2 = str + strlen(str) - 1; p2 > p1; ++p1, --p2) {
michaeljkoster 0:07581223f90c 90 *p1 ^= *p2;
michaeljkoster 0:07581223f90c 91 *p2 ^= *p1;
michaeljkoster 0:07581223f90c 92 *p1 ^= *p2;
michaeljkoster 0:07581223f90c 93 }
michaeljkoster 0:07581223f90c 94
michaeljkoster 0:07581223f90c 95 return str;
michaeljkoster 0:07581223f90c 96 }
michaeljkoster 0:07581223f90c 97
michaeljkoster 0:07581223f90c 98 //*****************************************************************************
michaeljkoster 0:07581223f90c 99 //
michaeljkoster 0:07581223f90c 100 //! atoc
michaeljkoster 0:07581223f90c 101 //!
michaeljkoster 0:07581223f90c 102 //! \param none
michaeljkoster 0:07581223f90c 103 //!
michaeljkoster 0:07581223f90c 104 //! \return none
michaeljkoster 0:07581223f90c 105 //!
michaeljkoster 0:07581223f90c 106 //! \brief Convert nibble to hexdecimal from ASCII
michaeljkoster 0:07581223f90c 107 //
michaeljkoster 0:07581223f90c 108 //*****************************************************************************
michaeljkoster 0:07581223f90c 109 unsigned char
michaeljkoster 0:07581223f90c 110 atoc(char data)
michaeljkoster 0:07581223f90c 111 {
michaeljkoster 0:07581223f90c 112 unsigned char ucRes = 0;
michaeljkoster 0:07581223f90c 113
michaeljkoster 0:07581223f90c 114 if ((data >= 0x30) && (data <= 0x39))
michaeljkoster 0:07581223f90c 115 {
michaeljkoster 0:07581223f90c 116 ucRes = data - 0x30;
michaeljkoster 0:07581223f90c 117 }
michaeljkoster 0:07581223f90c 118 else
michaeljkoster 0:07581223f90c 119 {
michaeljkoster 0:07581223f90c 120 if (data == 'a')
michaeljkoster 0:07581223f90c 121 {
michaeljkoster 0:07581223f90c 122 ucRes = 0x0a;;
michaeljkoster 0:07581223f90c 123 }
michaeljkoster 0:07581223f90c 124 else if (data == 'b')
michaeljkoster 0:07581223f90c 125 {
michaeljkoster 0:07581223f90c 126 ucRes = 0x0b;
michaeljkoster 0:07581223f90c 127 }
michaeljkoster 0:07581223f90c 128 else if (data == 'c')
michaeljkoster 0:07581223f90c 129 {
michaeljkoster 0:07581223f90c 130 ucRes = 0x0c;
michaeljkoster 0:07581223f90c 131 }
michaeljkoster 0:07581223f90c 132 else if (data == 'd')
michaeljkoster 0:07581223f90c 133 {
michaeljkoster 0:07581223f90c 134 ucRes = 0x0d;
michaeljkoster 0:07581223f90c 135 }
michaeljkoster 0:07581223f90c 136 else if (data == 'e')
michaeljkoster 0:07581223f90c 137 {
michaeljkoster 0:07581223f90c 138 ucRes = 0x0e;
michaeljkoster 0:07581223f90c 139 }
michaeljkoster 0:07581223f90c 140 else if (data == 'f')
michaeljkoster 0:07581223f90c 141 {
michaeljkoster 0:07581223f90c 142 ucRes = 0x0f;
michaeljkoster 0:07581223f90c 143 }
michaeljkoster 0:07581223f90c 144 }
michaeljkoster 0:07581223f90c 145
michaeljkoster 0:07581223f90c 146
michaeljkoster 0:07581223f90c 147 return ucRes;
michaeljkoster 0:07581223f90c 148 }
michaeljkoster 0:07581223f90c 149
michaeljkoster 0:07581223f90c 150
michaeljkoster 0:07581223f90c 151 //*****************************************************************************
michaeljkoster 0:07581223f90c 152 //
michaeljkoster 0:07581223f90c 153 //! atoshort
michaeljkoster 0:07581223f90c 154 //!
michaeljkoster 0:07581223f90c 155 //! \param none
michaeljkoster 0:07581223f90c 156 //!
michaeljkoster 0:07581223f90c 157 //! \return none
michaeljkoster 0:07581223f90c 158 //!
michaeljkoster 0:07581223f90c 159 //! \brief Convert 2 nibbles in ASCII into a short number
michaeljkoster 0:07581223f90c 160 //
michaeljkoster 0:07581223f90c 161 //*****************************************************************************
michaeljkoster 0:07581223f90c 162
michaeljkoster 0:07581223f90c 163 unsigned short
michaeljkoster 0:07581223f90c 164 atoshort(char b1, char b2)
michaeljkoster 0:07581223f90c 165 {
michaeljkoster 0:07581223f90c 166 unsigned short usRes;
michaeljkoster 0:07581223f90c 167
michaeljkoster 0:07581223f90c 168 usRes = (atoc(b1)) * 16 | atoc(b2);
michaeljkoster 0:07581223f90c 169
michaeljkoster 0:07581223f90c 170 return usRes;
michaeljkoster 0:07581223f90c 171 }
michaeljkoster 0:07581223f90c 172
michaeljkoster 0:07581223f90c 173 //*****************************************************************************
michaeljkoster 0:07581223f90c 174 //
michaeljkoster 0:07581223f90c 175 //! ascii_to_char
michaeljkoster 0:07581223f90c 176 //!
michaeljkoster 0:07581223f90c 177 //! \param none
michaeljkoster 0:07581223f90c 178 //!
michaeljkoster 0:07581223f90c 179 //! \return none
michaeljkoster 0:07581223f90c 180 //!
michaeljkoster 0:07581223f90c 181 //! \brief Convert 2 bytes in ASCII into one character
michaeljkoster 0:07581223f90c 182 //
michaeljkoster 0:07581223f90c 183 //*****************************************************************************
michaeljkoster 0:07581223f90c 184
michaeljkoster 0:07581223f90c 185 unsigned char
michaeljkoster 0:07581223f90c 186 ascii_to_char(char b1, char b2)
michaeljkoster 0:07581223f90c 187 {
michaeljkoster 0:07581223f90c 188 unsigned char ucRes;
michaeljkoster 0:07581223f90c 189
michaeljkoster 0:07581223f90c 190 ucRes = (atoc(b1)) << 4 | (atoc(b2));
michaeljkoster 0:07581223f90c 191
michaeljkoster 0:07581223f90c 192 return ucRes;
michaeljkoster 0:07581223f90c 193 }