Demo application for using the AT&T IoT Starter Kit Powered by AWS.

Dependencies:   SDFileSystem

Fork of ATT_AWS_IoT_demo by Anthony Phillips

IoT Starter Kit Powered by AWS Demo

This program demonstrates the AT&T IoT Starter Kit sending data directly into AWS IoT. It's explained and used in the Getting Started with the IoT Starter Kit Powered by AWS on starterkit.att.com.

What's required

  • AT&T IoT LTE Add-on (also known as the Cellular Shield)
  • NXP K64F - for programming
  • microSD card - used to store your AWS security credentials
  • AWS account
  • Python, locally installed

If you don't already have an IoT Starter Kit, you can purchase a kit here. The IoT Starter Kit Powered by AWS includes the LTE cellular shield, K64F, and a microSD card.

Committer:
rfinn
Date:
Tue Feb 07 16:18:57 2017 +0000
Revision:
27:2f486c766854
Parent:
15:6f2798e45099
changed SDFileSystem library

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ampembeng 15:6f2798e45099 1 /*
ampembeng 15:6f2798e45099 2 * Copyright 2010-2015 Amazon.com, Inc. or its affiliates. All Rights Reserved.
ampembeng 15:6f2798e45099 3 *
ampembeng 15:6f2798e45099 4 * Licensed under the Apache License, Version 2.0 (the "License").
ampembeng 15:6f2798e45099 5 * You may not use this file except in compliance with the License.
ampembeng 15:6f2798e45099 6 * A copy of the License is located at
ampembeng 15:6f2798e45099 7 *
ampembeng 15:6f2798e45099 8 * http://aws.amazon.com/apache2.0
ampembeng 15:6f2798e45099 9 *
ampembeng 15:6f2798e45099 10 * or in the "license" file accompanying this file. This file is distributed
ampembeng 15:6f2798e45099 11 * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
ampembeng 15:6f2798e45099 12 * express or implied. See the License for the specific language governing
ampembeng 15:6f2798e45099 13 * permissions and limitations under the License.
ampembeng 15:6f2798e45099 14 */
ampembeng 15:6f2798e45099 15
ampembeng 15:6f2798e45099 16 /**
ampembeng 15:6f2798e45099 17 * @file aws_json_utils.h
ampembeng 15:6f2798e45099 18 * @brief Utilities for manipulating JSON
ampembeng 15:6f2798e45099 19 *
ampembeng 15:6f2798e45099 20 * json_utils provides JSON parsing utilities for use with the IoT SDK.
ampembeng 15:6f2798e45099 21 * Underlying JSON parsing relies on the Jasmine JSON parser.
ampembeng 15:6f2798e45099 22 *
ampembeng 15:6f2798e45099 23 */
ampembeng 15:6f2798e45099 24
ampembeng 15:6f2798e45099 25 #ifndef AWS_IOT_SDK_SRC_JSON_UTILS_H_
ampembeng 15:6f2798e45099 26 #define AWS_IOT_SDK_SRC_JSON_UTILS_H_
ampembeng 15:6f2798e45099 27
ampembeng 15:6f2798e45099 28 #include <stdbool.h>
ampembeng 15:6f2798e45099 29 #include <stdint.h>
ampembeng 15:6f2798e45099 30
ampembeng 15:6f2798e45099 31 #include "aws_iot_error.h"
ampembeng 15:6f2798e45099 32 #include "jsmn.h"
ampembeng 15:6f2798e45099 33
ampembeng 15:6f2798e45099 34 // utility functions
ampembeng 15:6f2798e45099 35 /**
ampembeng 15:6f2798e45099 36 * @brief JSON Equality Check
ampembeng 15:6f2798e45099 37 *
ampembeng 15:6f2798e45099 38 * Given a token pointing to a particular JSON node and an
ampembeng 15:6f2798e45099 39 * input string, check to see if the key is equal to the string.
ampembeng 15:6f2798e45099 40 *
ampembeng 15:6f2798e45099 41 * @param json json string
ampembeng 15:6f2798e45099 42 * @param tok json token - pointer to key to test for equality
ampembeng 15:6f2798e45099 43 * @param s input string for key to test equality
ampembeng 15:6f2798e45099 44 *
ampembeng 15:6f2798e45099 45 * @return 0 if equal, 1 otherwise
ampembeng 15:6f2798e45099 46 */
ampembeng 15:6f2798e45099 47 int8_t jsoneq(const char *json, jsmntok_t *tok, const char *s);
ampembeng 15:6f2798e45099 48
ampembeng 15:6f2798e45099 49 /**
ampembeng 15:6f2798e45099 50 * @brief Parse a signed 32-bit integer value from a JSON node.
ampembeng 15:6f2798e45099 51 *
ampembeng 15:6f2798e45099 52 * Given a JSON node parse the integer value from the value.
ampembeng 15:6f2798e45099 53 *
ampembeng 15:6f2798e45099 54 * @param jsonString json string
ampembeng 15:6f2798e45099 55 * @param tok json token - pointer to JSON node
ampembeng 15:6f2798e45099 56 * @param i address of int32_t to be updated
ampembeng 15:6f2798e45099 57 *
ampembeng 15:6f2798e45099 58 * @return NONE_ERROR - success
ampembeng 15:6f2798e45099 59 * @return JSON_PARSE_ERROR - error parsing value
ampembeng 15:6f2798e45099 60 */
ampembeng 15:6f2798e45099 61 IoT_Error_t parseInteger32Value(int32_t *i, const char *jsonString, jsmntok_t *token);
ampembeng 15:6f2798e45099 62
ampembeng 15:6f2798e45099 63 /**
ampembeng 15:6f2798e45099 64 * @brief Parse a signed 16-bit integer value from a JSON node.
ampembeng 15:6f2798e45099 65 *
ampembeng 15:6f2798e45099 66 * Given a JSON node parse the integer value from the value.
ampembeng 15:6f2798e45099 67 *
ampembeng 15:6f2798e45099 68 * @param jsonString json string
ampembeng 15:6f2798e45099 69 * @param tok json token - pointer to JSON node
ampembeng 15:6f2798e45099 70 * @param i address of int16_t to be updated
ampembeng 15:6f2798e45099 71 *
ampembeng 15:6f2798e45099 72 * @return NONE_ERROR - success
ampembeng 15:6f2798e45099 73 * @return JSON_PARSE_ERROR - error parsing value
ampembeng 15:6f2798e45099 74 */
ampembeng 15:6f2798e45099 75 IoT_Error_t parseInteger16Value(int16_t *i, const char *jsonString, jsmntok_t *token);
ampembeng 15:6f2798e45099 76
ampembeng 15:6f2798e45099 77 /**
ampembeng 15:6f2798e45099 78 * @brief Parse a signed 8-bit integer value from a JSON node.
ampembeng 15:6f2798e45099 79 *
ampembeng 15:6f2798e45099 80 * Given a JSON node parse the integer value from the value.
ampembeng 15:6f2798e45099 81 *
ampembeng 15:6f2798e45099 82 * @param jsonString json string
ampembeng 15:6f2798e45099 83 * @param tok json token - pointer to JSON node
ampembeng 15:6f2798e45099 84 * @param i address of int8_t to be updated
ampembeng 15:6f2798e45099 85 *
ampembeng 15:6f2798e45099 86 * @return NONE_ERROR - success
ampembeng 15:6f2798e45099 87 * @return JSON_PARSE_ERROR - error parsing value
ampembeng 15:6f2798e45099 88 */
ampembeng 15:6f2798e45099 89 IoT_Error_t parseInteger8Value(int8_t *i, const char *jsonString, jsmntok_t *token);
ampembeng 15:6f2798e45099 90
ampembeng 15:6f2798e45099 91 /**
ampembeng 15:6f2798e45099 92 * @brief Parse an unsigned 32-bit integer value from a JSON node.
ampembeng 15:6f2798e45099 93 *
ampembeng 15:6f2798e45099 94 * Given a JSON node parse the integer value from the value.
ampembeng 15:6f2798e45099 95 *
ampembeng 15:6f2798e45099 96 * @param jsonString json string
ampembeng 15:6f2798e45099 97 * @param tok json token - pointer to JSON node
ampembeng 15:6f2798e45099 98 * @param i address of uint32_t to be updated
ampembeng 15:6f2798e45099 99 *
ampembeng 15:6f2798e45099 100 * @return NONE_ERROR - success
ampembeng 15:6f2798e45099 101 * @return JSON_PARSE_ERROR - error parsing value
ampembeng 15:6f2798e45099 102 */
ampembeng 15:6f2798e45099 103 IoT_Error_t parseUnsignedInteger32Value(uint32_t *i, const char *jsonString, jsmntok_t *token);
ampembeng 15:6f2798e45099 104
ampembeng 15:6f2798e45099 105 /**
ampembeng 15:6f2798e45099 106 * @brief Parse an unsigned 16-bit integer value from a JSON node.
ampembeng 15:6f2798e45099 107 *
ampembeng 15:6f2798e45099 108 * Given a JSON node parse the integer value from the value.
ampembeng 15:6f2798e45099 109 *
ampembeng 15:6f2798e45099 110 * @param jsonString json string
ampembeng 15:6f2798e45099 111 * @param tok json token - pointer to JSON node
ampembeng 15:6f2798e45099 112 * @param i address of uint16_t to be updated
ampembeng 15:6f2798e45099 113 *
ampembeng 15:6f2798e45099 114 * @return NONE_ERROR - success
ampembeng 15:6f2798e45099 115 * @return JSON_PARSE_ERROR - error parsing value
ampembeng 15:6f2798e45099 116 */
ampembeng 15:6f2798e45099 117 IoT_Error_t parseUnsignedInteger16Value(uint16_t *i, const char *jsonString, jsmntok_t *token);
ampembeng 15:6f2798e45099 118
ampembeng 15:6f2798e45099 119 /**
ampembeng 15:6f2798e45099 120 * @brief Parse an unsigned 8-bit integer value from a JSON node.
ampembeng 15:6f2798e45099 121 *
ampembeng 15:6f2798e45099 122 * Given a JSON node parse the integer value from the value.
ampembeng 15:6f2798e45099 123 *
ampembeng 15:6f2798e45099 124 * @param jsonString json string
ampembeng 15:6f2798e45099 125 * @param tok json token - pointer to JSON node
ampembeng 15:6f2798e45099 126 * @param i address of uint8_t to be updated
ampembeng 15:6f2798e45099 127 *
ampembeng 15:6f2798e45099 128 * @return NONE_ERROR - success
ampembeng 15:6f2798e45099 129 * @return JSON_PARSE_ERROR - error parsing value
ampembeng 15:6f2798e45099 130 */
ampembeng 15:6f2798e45099 131 IoT_Error_t parseUnsignedInteger8Value(uint8_t *i, const char *jsonString, jsmntok_t *token);
ampembeng 15:6f2798e45099 132
ampembeng 15:6f2798e45099 133 /**
ampembeng 15:6f2798e45099 134 * @brief Parse a float value from a JSON node.
ampembeng 15:6f2798e45099 135 *
ampembeng 15:6f2798e45099 136 * Given a JSON node parse the float value from the value.
ampembeng 15:6f2798e45099 137 *
ampembeng 15:6f2798e45099 138 * @param jsonString json string
ampembeng 15:6f2798e45099 139 * @param tok json token - pointer to JSON node
ampembeng 15:6f2798e45099 140 * @param f address of float to be updated
ampembeng 15:6f2798e45099 141 *
ampembeng 15:6f2798e45099 142 * @return NONE_ERROR - success
ampembeng 15:6f2798e45099 143 * @return JSON_PARSE_ERROR - error parsing value
ampembeng 15:6f2798e45099 144 */
ampembeng 15:6f2798e45099 145 IoT_Error_t parseFloatValue(float *f, const char *jsonString, jsmntok_t *token);
ampembeng 15:6f2798e45099 146
ampembeng 15:6f2798e45099 147 /**
ampembeng 15:6f2798e45099 148 * @brief Parse a double value from a JSON node.
ampembeng 15:6f2798e45099 149 *
ampembeng 15:6f2798e45099 150 * Given a JSON node parse the double value from the value.
ampembeng 15:6f2798e45099 151 *
ampembeng 15:6f2798e45099 152 * @param jsonString json string
ampembeng 15:6f2798e45099 153 * @param tok json token - pointer to JSON node
ampembeng 15:6f2798e45099 154 * @param d address of double to be updated
ampembeng 15:6f2798e45099 155 *
ampembeng 15:6f2798e45099 156 * @return NONE_ERROR - success
ampembeng 15:6f2798e45099 157 * @return JSON_PARSE_ERROR - error parsing value
ampembeng 15:6f2798e45099 158 */
ampembeng 15:6f2798e45099 159 IoT_Error_t parseDoubleValue(double *d, const char *jsonString, jsmntok_t *token);
ampembeng 15:6f2798e45099 160
ampembeng 15:6f2798e45099 161 /**
ampembeng 15:6f2798e45099 162 * @brief Parse a boolean value from a JSON node.
ampembeng 15:6f2798e45099 163 *
ampembeng 15:6f2798e45099 164 * Given a JSON node parse the boolean value from the value.
ampembeng 15:6f2798e45099 165 *
ampembeng 15:6f2798e45099 166 * @param jsonString json string
ampembeng 15:6f2798e45099 167 * @param tok json token - pointer to JSON node
ampembeng 15:6f2798e45099 168 * @param b address of boolean to be updated
ampembeng 15:6f2798e45099 169 *
ampembeng 15:6f2798e45099 170 * @return NONE_ERROR - success
ampembeng 15:6f2798e45099 171 * @return JSON_PARSE_ERROR - error parsing value
ampembeng 15:6f2798e45099 172 */
ampembeng 15:6f2798e45099 173 IoT_Error_t parseBooleanValue(bool *b, const char *jsonString, jsmntok_t *token);
ampembeng 15:6f2798e45099 174
ampembeng 15:6f2798e45099 175 /**
ampembeng 15:6f2798e45099 176 * @brief Parse a string value from a JSON node.
ampembeng 15:6f2798e45099 177 *
ampembeng 15:6f2798e45099 178 * Given a JSON node parse the string value from the value.
ampembeng 15:6f2798e45099 179 *
ampembeng 15:6f2798e45099 180 * @param jsonString json string
ampembeng 15:6f2798e45099 181 * @param tok json token - pointer to JSON node
ampembeng 15:6f2798e45099 182 * @param s address of string to be updated
ampembeng 15:6f2798e45099 183 *
ampembeng 15:6f2798e45099 184 * @return NONE_ERROR - success
ampembeng 15:6f2798e45099 185 * @return JSON_PARSE_ERROR - error parsing value
ampembeng 15:6f2798e45099 186 */
ampembeng 15:6f2798e45099 187 IoT_Error_t parseStringValue(char *buf, const char *jsonString, jsmntok_t *token);
ampembeng 15:6f2798e45099 188
ampembeng 15:6f2798e45099 189 #endif /* AWS_IOT_SDK_SRC_JSON_UTILS_H_ */
ampembeng 15:6f2798e45099 190