Pierre-Marie Ancèle
/
AWS-test
test
aws-iot/src/aws_iot_shadow_actions.cpp@1:3f75eb8d46f4, 2017-04-12 (annotated)
- Committer:
- peyo
- Date:
- Wed Apr 12 14:09:46 2017 +0200
- Revision:
- 1:3f75eb8d46f4
- Parent:
- 0:cd5404401c2f
add main
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
peyo |
0:cd5404401c2f | 1 | /* |
peyo |
0:cd5404401c2f | 2 | * Copyright 2010-2015 Amazon.com, Inc. or its affiliates. All Rights Reserved. |
peyo |
0:cd5404401c2f | 3 | * |
peyo |
0:cd5404401c2f | 4 | * Licensed under the Apache License, Version 2.0 (the "License"). |
peyo |
0:cd5404401c2f | 5 | * You may not use this file except in compliance with the License. |
peyo |
0:cd5404401c2f | 6 | * A copy of the License is located at |
peyo |
0:cd5404401c2f | 7 | * |
peyo |
0:cd5404401c2f | 8 | * http://aws.amazon.com/apache2.0 |
peyo |
0:cd5404401c2f | 9 | * |
peyo |
0:cd5404401c2f | 10 | * or in the "license" file accompanying this file. This file is distributed |
peyo |
0:cd5404401c2f | 11 | * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either |
peyo |
0:cd5404401c2f | 12 | * express or implied. See the License for the specific language governing |
peyo |
0:cd5404401c2f | 13 | * permissions and limitations under the License. |
peyo |
0:cd5404401c2f | 14 | */ |
peyo |
0:cd5404401c2f | 15 | |
peyo |
0:cd5404401c2f | 16 | /** |
peyo |
0:cd5404401c2f | 17 | * @file aws_iot_shadow_actions.c |
peyo |
0:cd5404401c2f | 18 | * @brief Shadow client Action API definitions |
peyo |
0:cd5404401c2f | 19 | */ |
peyo |
0:cd5404401c2f | 20 | |
peyo |
0:cd5404401c2f | 21 | #ifdef __cplusplus |
peyo |
0:cd5404401c2f | 22 | extern "C" { |
peyo |
0:cd5404401c2f | 23 | #endif |
peyo |
0:cd5404401c2f | 24 | |
peyo |
0:cd5404401c2f | 25 | #include "aws_iot_shadow_actions.h" |
peyo |
0:cd5404401c2f | 26 | |
peyo |
0:cd5404401c2f | 27 | #include "aws_iot_log.h" |
peyo |
0:cd5404401c2f | 28 | #include "aws_iot_shadow_json.h" |
peyo |
0:cd5404401c2f | 29 | #include "aws_iot_shadow_records.h" |
peyo |
0:cd5404401c2f | 30 | #include "aws_iot_config.h" |
peyo |
0:cd5404401c2f | 31 | |
peyo |
0:cd5404401c2f | 32 | IoT_Error_t aws_iot_shadow_internal_action(const char *pThingName, ShadowActions_t action, |
peyo |
0:cd5404401c2f | 33 | const char *pJsonDocumentToBeSent, fpActionCallback_t callback, |
peyo |
0:cd5404401c2f | 34 | void *pCallbackContext, uint32_t timeout_seconds, bool isSticky) { |
peyo |
0:cd5404401c2f | 35 | IoT_Error_t ret_val = SUCCESS; |
peyo |
0:cd5404401c2f | 36 | bool isClientTokenPresent = false; |
peyo |
0:cd5404401c2f | 37 | bool isAckWaitListFree = false; |
peyo |
0:cd5404401c2f | 38 | uint8_t indexAckWaitList; |
peyo |
0:cd5404401c2f | 39 | char extractedClientToken[MAX_SIZE_CLIENT_ID_WITH_SEQUENCE]; |
peyo |
0:cd5404401c2f | 40 | |
peyo |
0:cd5404401c2f | 41 | FUNC_ENTRY; |
peyo |
0:cd5404401c2f | 42 | |
peyo |
0:cd5404401c2f | 43 | if(NULL == pThingName || NULL == pJsonDocumentToBeSent) { |
peyo |
0:cd5404401c2f | 44 | FUNC_EXIT_RC(NULL_VALUE_ERROR); |
peyo |
0:cd5404401c2f | 45 | } |
peyo |
0:cd5404401c2f | 46 | |
peyo |
0:cd5404401c2f | 47 | isClientTokenPresent = extractClientToken(pJsonDocumentToBeSent, extractedClientToken); |
peyo |
0:cd5404401c2f | 48 | |
peyo |
0:cd5404401c2f | 49 | if(isClientTokenPresent && (NULL != callback)) { |
peyo |
0:cd5404401c2f | 50 | if(getNextFreeIndexOfAckWaitList(&indexAckWaitList)) { |
peyo |
0:cd5404401c2f | 51 | isAckWaitListFree = true; |
peyo |
0:cd5404401c2f | 52 | } |
peyo |
0:cd5404401c2f | 53 | |
peyo |
0:cd5404401c2f | 54 | if(isAckWaitListFree) { |
peyo |
0:cd5404401c2f | 55 | if(!isSubscriptionPresent(pThingName, action)) { |
peyo |
0:cd5404401c2f | 56 | ret_val = subscribeToShadowActionAcks(pThingName, action, isSticky); |
peyo |
0:cd5404401c2f | 57 | } else { |
peyo |
0:cd5404401c2f | 58 | incrementSubscriptionCnt(pThingName, action, isSticky); |
peyo |
0:cd5404401c2f | 59 | } |
peyo |
0:cd5404401c2f | 60 | } |
peyo |
0:cd5404401c2f | 61 | else { |
peyo |
0:cd5404401c2f | 62 | ret_val = FAILURE; |
peyo |
0:cd5404401c2f | 63 | } |
peyo |
0:cd5404401c2f | 64 | } |
peyo |
0:cd5404401c2f | 65 | |
peyo |
0:cd5404401c2f | 66 | if(SUCCESS == ret_val) { |
peyo |
0:cd5404401c2f | 67 | ret_val = publishToShadowAction(pThingName, action, pJsonDocumentToBeSent); |
peyo |
0:cd5404401c2f | 68 | } |
peyo |
0:cd5404401c2f | 69 | |
peyo |
0:cd5404401c2f | 70 | if(isClientTokenPresent && (NULL != callback) && (SUCCESS == ret_val) && isAckWaitListFree) { |
peyo |
0:cd5404401c2f | 71 | addToAckWaitList(indexAckWaitList, pThingName, action, extractedClientToken, callback, pCallbackContext, |
peyo |
0:cd5404401c2f | 72 | timeout_seconds); |
peyo |
0:cd5404401c2f | 73 | } |
peyo |
0:cd5404401c2f | 74 | |
peyo |
0:cd5404401c2f | 75 | FUNC_EXIT_RC(ret_val); |
peyo |
0:cd5404401c2f | 76 | } |
peyo |
0:cd5404401c2f | 77 | |
peyo |
0:cd5404401c2f | 78 | #ifdef __cplusplus |
peyo |
0:cd5404401c2f | 79 | } |
peyo |
0:cd5404401c2f | 80 | #endif |