DIYmall 0.96" Inch I2c IIC Serial 128x64 Oled LCD LED White Display Module
Dependencies: Adafruit_GFX SDFileSystem
Fork of ATT_AWS_IoT_demo by
AWS_openssl/aws_iot_src/shadow/aws_iot_shadow.cpp@28:4650c541b029, 2018-10-09 (annotated)
- Committer:
- afmiee
- Date:
- Tue Oct 09 20:57:34 2018 +0000
- Revision:
- 28:4650c541b029
- Parent:
- 15:6f2798e45099
DIYmall 0.96" Inch I2c IIC Serial 128x64 Oled LCD LED White Display Module
Who changed what in which revision?
User | Revision | Line number | New 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 | #include "aws_iot_error.h" |
ampembeng | 15:6f2798e45099 | 17 | #include "aws_iot_log.h" |
ampembeng | 15:6f2798e45099 | 18 | #include "aws_iot_shadow_actions.h" |
ampembeng | 15:6f2798e45099 | 19 | #include "aws_iot_shadow_json.h" |
ampembeng | 15:6f2798e45099 | 20 | #include "aws_iot_shadow_key.h" |
ampembeng | 15:6f2798e45099 | 21 | #include "aws_iot_shadow_records.h" |
ampembeng | 15:6f2798e45099 | 22 | |
ampembeng | 15:6f2798e45099 | 23 | const ShadowParameters_t ShadowParametersDefault = { |
ampembeng | 15:6f2798e45099 | 24 | .pMyThingName = AWS_IOT_MY_THING_NAME, |
ampembeng | 15:6f2798e45099 | 25 | .pMqttClientId = AWS_IOT_MQTT_CLIENT_ID, |
ampembeng | 15:6f2798e45099 | 26 | .pHost = AWS_IOT_MQTT_HOST, |
ampembeng | 15:6f2798e45099 | 27 | .port = AWS_IOT_MQTT_PORT, |
ampembeng | 15:6f2798e45099 | 28 | .pRootCA = NULL, |
ampembeng | 15:6f2798e45099 | 29 | .pClientCRT = NULL, |
ampembeng | 15:6f2798e45099 | 30 | .pClientKey = NULL |
ampembeng | 15:6f2798e45099 | 31 | }; |
ampembeng | 15:6f2798e45099 | 32 | |
ampembeng | 15:6f2798e45099 | 33 | void aws_iot_shadow_reset_last_received_version(void) { |
ampembeng | 15:6f2798e45099 | 34 | shadowJsonVersionNum = 0; |
ampembeng | 15:6f2798e45099 | 35 | } |
ampembeng | 15:6f2798e45099 | 36 | |
ampembeng | 15:6f2798e45099 | 37 | uint32_t aws_iot_shadow_get_last_received_version(void) { |
ampembeng | 15:6f2798e45099 | 38 | return shadowJsonVersionNum; |
ampembeng | 15:6f2798e45099 | 39 | } |
ampembeng | 15:6f2798e45099 | 40 | |
ampembeng | 15:6f2798e45099 | 41 | void aws_iot_shadow_enable_discard_old_delta_msgs(void) { |
ampembeng | 15:6f2798e45099 | 42 | shadowDiscardOldDeltaFlag = true; |
ampembeng | 15:6f2798e45099 | 43 | } |
ampembeng | 15:6f2798e45099 | 44 | |
ampembeng | 15:6f2798e45099 | 45 | void aws_iot_shadow_disable_discard_old_delta_msgs(void) { |
ampembeng | 15:6f2798e45099 | 46 | shadowDiscardOldDeltaFlag = false; |
ampembeng | 15:6f2798e45099 | 47 | } |
ampembeng | 15:6f2798e45099 | 48 | |
ampembeng | 15:6f2798e45099 | 49 | IoT_Error_t aws_iot_shadow_init(MQTTClient_t *pClient) { |
ampembeng | 15:6f2798e45099 | 50 | |
ampembeng | 15:6f2798e45099 | 51 | IoT_Error_t rc = NONE_ERROR; |
ampembeng | 15:6f2798e45099 | 52 | |
ampembeng | 15:6f2798e45099 | 53 | if (pClient == NULL) { |
ampembeng | 15:6f2798e45099 | 54 | return NULL_VALUE_ERROR; |
ampembeng | 15:6f2798e45099 | 55 | } |
ampembeng | 15:6f2798e45099 | 56 | |
ampembeng | 15:6f2798e45099 | 57 | resetClientTokenSequenceNum(); |
ampembeng | 15:6f2798e45099 | 58 | aws_iot_shadow_reset_last_received_version(); |
ampembeng | 15:6f2798e45099 | 59 | initDeltaTokens(); |
ampembeng | 15:6f2798e45099 | 60 | return NONE_ERROR; |
ampembeng | 15:6f2798e45099 | 61 | } |
ampembeng | 15:6f2798e45099 | 62 | |
ampembeng | 15:6f2798e45099 | 63 | IoT_Error_t aws_iot_shadow_connect(MQTTClient_t *pClient, ShadowParameters_t *pParams) { |
ampembeng | 15:6f2798e45099 | 64 | IoT_Error_t rc = NONE_ERROR; |
ampembeng | 15:6f2798e45099 | 65 | |
ampembeng | 15:6f2798e45099 | 66 | MQTTConnectParams ConnectParams = MQTTConnectParamsDefault; |
ampembeng | 15:6f2798e45099 | 67 | if (pClient == NULL) { |
ampembeng | 15:6f2798e45099 | 68 | return NULL_VALUE_ERROR; |
ampembeng | 15:6f2798e45099 | 69 | } |
ampembeng | 15:6f2798e45099 | 70 | |
ampembeng | 15:6f2798e45099 | 71 | if (pClient->connect == NULL) { |
ampembeng | 15:6f2798e45099 | 72 | return NULL_VALUE_ERROR; |
ampembeng | 15:6f2798e45099 | 73 | } |
ampembeng | 15:6f2798e45099 | 74 | |
ampembeng | 15:6f2798e45099 | 75 | snprintf(myThingName, MAX_SIZE_OF_THING_NAME, "%s", pParams->pMyThingName ); |
ampembeng | 15:6f2798e45099 | 76 | snprintf(mqttClientID, MAX_SIZE_OF_UNIQUE_CLIENT_ID_BYTES, "%s", pParams->pMqttClientId ); |
ampembeng | 15:6f2798e45099 | 77 | |
ampembeng | 15:6f2798e45099 | 78 | INFO("...Thing Name %s", myThingName); |
ampembeng | 15:6f2798e45099 | 79 | INFO("...MQTT Client ID %s", mqttClientID); |
ampembeng | 15:6f2798e45099 | 80 | |
ampembeng | 15:6f2798e45099 | 81 | ConnectParams.KeepAliveInterval_sec = 10; |
ampembeng | 15:6f2798e45099 | 82 | ConnectParams.MQTTVersion = MQTT_3_1_1; |
ampembeng | 15:6f2798e45099 | 83 | ConnectParams.mqttCommandTimeout_ms = 10000;//2000; |
ampembeng | 15:6f2798e45099 | 84 | ConnectParams.tlsHandshakeTimeout_ms = 10000; |
ampembeng | 15:6f2798e45099 | 85 | ConnectParams.isCleansession = true; |
ampembeng | 15:6f2798e45099 | 86 | ConnectParams.isSSLHostnameVerify = true; |
ampembeng | 15:6f2798e45099 | 87 | ConnectParams.isWillMsgPresent = false; |
ampembeng | 15:6f2798e45099 | 88 | ConnectParams.pClientID = pParams->pMqttClientId; |
ampembeng | 15:6f2798e45099 | 89 | ConnectParams.pDeviceCertLocation = pParams->pClientCRT; |
ampembeng | 15:6f2798e45099 | 90 | ConnectParams.pDevicePrivateKeyLocation = pParams->pClientKey; |
ampembeng | 15:6f2798e45099 | 91 | ConnectParams.pRootCALocation = pParams->pRootCA; |
ampembeng | 15:6f2798e45099 | 92 | ConnectParams.pPassword = NULL; |
ampembeng | 15:6f2798e45099 | 93 | ConnectParams.pUserName = NULL; |
ampembeng | 15:6f2798e45099 | 94 | ConnectParams.pHostURL = pParams->pHost; |
ampembeng | 15:6f2798e45099 | 95 | ConnectParams.port = pParams->port; |
ampembeng | 15:6f2798e45099 | 96 | ConnectParams.disconnectHandler = NULL; |
ampembeng | 15:6f2798e45099 | 97 | |
ampembeng | 15:6f2798e45099 | 98 | rc = pClient->connect(&ConnectParams); |
ampembeng | 15:6f2798e45099 | 99 | |
ampembeng | 15:6f2798e45099 | 100 | if(rc == NONE_ERROR){ |
ampembeng | 15:6f2798e45099 | 101 | initializeRecords(pClient); |
ampembeng | 15:6f2798e45099 | 102 | } |
ampembeng | 15:6f2798e45099 | 103 | |
ampembeng | 15:6f2798e45099 | 104 | return rc; |
ampembeng | 15:6f2798e45099 | 105 | } |
ampembeng | 15:6f2798e45099 | 106 | |
ampembeng | 15:6f2798e45099 | 107 | IoT_Error_t aws_iot_shadow_register_delta(MQTTClient_t *pClient, jsonStruct_t *pStruct) { |
ampembeng | 15:6f2798e45099 | 108 | IoT_Error_t rc = NONE_ERROR; |
ampembeng | 15:6f2798e45099 | 109 | |
ampembeng | 15:6f2798e45099 | 110 | if (!(pClient->isConnected())) { |
ampembeng | 15:6f2798e45099 | 111 | return CONNECTION_ERROR; |
ampembeng | 15:6f2798e45099 | 112 | } |
ampembeng | 15:6f2798e45099 | 113 | |
ampembeng | 15:6f2798e45099 | 114 | rc = registerJsonTokenOnDelta(pStruct); |
ampembeng | 15:6f2798e45099 | 115 | |
ampembeng | 15:6f2798e45099 | 116 | return rc; |
ampembeng | 15:6f2798e45099 | 117 | } |
ampembeng | 15:6f2798e45099 | 118 | |
ampembeng | 15:6f2798e45099 | 119 | IoT_Error_t aws_iot_shadow_yield(MQTTClient_t *pClient, int timeout) { |
ampembeng | 15:6f2798e45099 | 120 | HandleExpiredResponseCallbacks(); |
ampembeng | 15:6f2798e45099 | 121 | return pClient->yield(timeout); |
ampembeng | 15:6f2798e45099 | 122 | } |
ampembeng | 15:6f2798e45099 | 123 | |
ampembeng | 15:6f2798e45099 | 124 | IoT_Error_t aws_iot_shadow_disconnect(MQTTClient_t *pClient) { |
ampembeng | 15:6f2798e45099 | 125 | return pClient->disconnect(); |
ampembeng | 15:6f2798e45099 | 126 | } |
ampembeng | 15:6f2798e45099 | 127 | |
ampembeng | 15:6f2798e45099 | 128 | IoT_Error_t aws_iot_shadow_update(MQTTClient_t *pClient, const char *pThingName, char *pJsonString, |
ampembeng | 15:6f2798e45099 | 129 | fpActionCallback_t callback, void *pContextData, uint8_t timeout_seconds, bool isPersistentSubscribe) { |
ampembeng | 15:6f2798e45099 | 130 | |
ampembeng | 15:6f2798e45099 | 131 | IoT_Error_t ret_val = NONE_ERROR; |
ampembeng | 15:6f2798e45099 | 132 | |
ampembeng | 15:6f2798e45099 | 133 | if (!(pClient->isConnected())) { |
ampembeng | 15:6f2798e45099 | 134 | return CONNECTION_ERROR; |
ampembeng | 15:6f2798e45099 | 135 | } |
ampembeng | 15:6f2798e45099 | 136 | |
ampembeng | 15:6f2798e45099 | 137 | ret_val = iot_shadow_action(pClient, pThingName, SHADOW_UPDATE, pJsonString, callback, pContextData, |
ampembeng | 15:6f2798e45099 | 138 | timeout_seconds, isPersistentSubscribe); |
ampembeng | 15:6f2798e45099 | 139 | |
ampembeng | 15:6f2798e45099 | 140 | return ret_val; |
ampembeng | 15:6f2798e45099 | 141 | } |
ampembeng | 15:6f2798e45099 | 142 | |
ampembeng | 15:6f2798e45099 | 143 | IoT_Error_t aws_iot_shadow_delete(MQTTClient_t *pClient, const char *pThingName, fpActionCallback_t callback, |
ampembeng | 15:6f2798e45099 | 144 | void *pContextData, uint8_t timeout_seconds, bool isPersistentSubscribe) { |
ampembeng | 15:6f2798e45099 | 145 | IoT_Error_t ret_val = NONE_ERROR; |
ampembeng | 15:6f2798e45099 | 146 | |
ampembeng | 15:6f2798e45099 | 147 | if (!(pClient->isConnected())) { |
ampembeng | 15:6f2798e45099 | 148 | return CONNECTION_ERROR; |
ampembeng | 15:6f2798e45099 | 149 | } |
ampembeng | 15:6f2798e45099 | 150 | |
ampembeng | 15:6f2798e45099 | 151 | char deleteRequestJsonBuf[MAX_SIZE_CLIENT_TOKEN_CLIENT_SEQUENCE]; |
ampembeng | 15:6f2798e45099 | 152 | iot_shadow_delete_request_json(deleteRequestJsonBuf); |
ampembeng | 15:6f2798e45099 | 153 | ret_val = iot_shadow_action(pClient, pThingName, SHADOW_DELETE, deleteRequestJsonBuf, callback, pContextData, |
ampembeng | 15:6f2798e45099 | 154 | timeout_seconds, isPersistentSubscribe); |
ampembeng | 15:6f2798e45099 | 155 | |
ampembeng | 15:6f2798e45099 | 156 | return ret_val; |
ampembeng | 15:6f2798e45099 | 157 | } |
ampembeng | 15:6f2798e45099 | 158 | |
ampembeng | 15:6f2798e45099 | 159 | IoT_Error_t aws_iot_shadow_get(MQTTClient_t *pClient, const char *pThingName, fpActionCallback_t callback, |
ampembeng | 15:6f2798e45099 | 160 | void *pContextData, uint8_t timeout_seconds, bool isPersistentSubscribe) { |
ampembeng | 15:6f2798e45099 | 161 | |
ampembeng | 15:6f2798e45099 | 162 | IoT_Error_t ret_val = NONE_ERROR; |
ampembeng | 15:6f2798e45099 | 163 | |
ampembeng | 15:6f2798e45099 | 164 | if (!(pClient->isConnected())) { |
ampembeng | 15:6f2798e45099 | 165 | return CONNECTION_ERROR; |
ampembeng | 15:6f2798e45099 | 166 | } |
ampembeng | 15:6f2798e45099 | 167 | |
ampembeng | 15:6f2798e45099 | 168 | char getRequestJsonBuf[MAX_SIZE_CLIENT_TOKEN_CLIENT_SEQUENCE]; |
ampembeng | 15:6f2798e45099 | 169 | |
ampembeng | 15:6f2798e45099 | 170 | iot_shadow_get_request_json(getRequestJsonBuf); |
ampembeng | 15:6f2798e45099 | 171 | |
ampembeng | 15:6f2798e45099 | 172 | ret_val = iot_shadow_action(pClient, pThingName, SHADOW_GET, getRequestJsonBuf, callback, pContextData, |
ampembeng | 15:6f2798e45099 | 173 | timeout_seconds, isPersistentSubscribe); |
ampembeng | 15:6f2798e45099 | 174 | |
ampembeng | 15:6f2798e45099 | 175 | return ret_val; |
ampembeng | 15:6f2798e45099 | 176 | } |
ampembeng | 15:6f2798e45099 | 177 |