Simulated product dispenser

Dependencies:   HTS221

Fork of mbed-cloud-workshop-connect-HTS221 by Jim Carver

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers sn_coap_header_check.c Source File

sn_coap_header_check.c

Go to the documentation of this file.
00001 /*
00002  * Copyright (c) 2011-2015 ARM Limited. All rights reserved.
00003  * SPDX-License-Identifier: Apache-2.0
00004  * Licensed under the Apache License, Version 2.0 (the License); you may
00005  * not use this file except in compliance with the License.
00006  * You may obtain a copy of the License at
00007  *
00008  * http://www.apache.org/licenses/LICENSE-2.0
00009  *
00010  * Unless required by applicable law or agreed to in writing, software
00011  * distributed under the License is distributed on an AS IS BASIS, WITHOUT
00012  * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00013  * See the License for the specific language governing permissions and
00014  * limitations under the License.
00015  */
00016 
00017 /**
00018  * \file sn_coap_header_check.c
00019  *
00020  * \brief CoAP Header validity checker
00021  *
00022  * Functionality: Checks validity of CoAP Header
00023  *
00024  */
00025 
00026 /* * * * INCLUDE FILES * * * */
00027 #include "ns_types.h"
00028 #include "mbed-coap/sn_coap_header.h"
00029 #include "mbed-coap/sn_coap_protocol.h"
00030 #include "sn_coap_header_internal.h"
00031 #include "sn_coap_protocol_internal.h"
00032 #include "mbed-trace/mbed_trace.h"
00033 
00034 #define TRACE_GROUP "coap"
00035 
00036 /**
00037  * \fn int8_t sn_coap_header_validity_check(sn_coap_hdr_s *src_coap_msg_ptr, coap_version_e coap_version)
00038  *
00039  * \brief Checks validity of given Header
00040  *
00041  * \param *src_coap_msg_ptr is source for building Packet data
00042  * \param coap_version is version of used CoAP specification
00043  *
00044  * \return Return value is status of validity check. In ok cases 0 and in
00045  *         failure cases -1
00046  */
00047 int8_t sn_coap_header_validity_check(sn_coap_hdr_s *src_coap_msg_ptr, coap_version_e coap_version)
00048 {
00049     /* * Check validity of CoAP Version * */
00050     if (coap_version != COAP_VERSION_1) {
00051         return -1;
00052     }
00053 
00054     /* * Check validity of Message type * */
00055     switch (src_coap_msg_ptr->msg_type) {
00056         case COAP_MSG_TYPE_CONFIRMABLE:
00057         case COAP_MSG_TYPE_NON_CONFIRMABLE:
00058         case COAP_MSG_TYPE_ACKNOWLEDGEMENT:
00059         case COAP_MSG_TYPE_RESET:
00060             break;      /* Ok cases */
00061         default:
00062             tr_error("sn_coap_header_validity_check - unknown message type!");
00063             return -1;      /* Failed case */
00064     }
00065 
00066     /* * Check validity of Message code * */
00067     switch (src_coap_msg_ptr->msg_code) {
00068         case COAP_MSG_CODE_EMPTY:
00069         case COAP_MSG_CODE_REQUEST_GET:
00070         case COAP_MSG_CODE_REQUEST_POST:
00071         case COAP_MSG_CODE_REQUEST_PUT:
00072         case COAP_MSG_CODE_REQUEST_DELETE:
00073         case COAP_MSG_CODE_RESPONSE_CREATED:
00074         case COAP_MSG_CODE_RESPONSE_DELETED:
00075         case COAP_MSG_CODE_RESPONSE_VALID:
00076         case COAP_MSG_CODE_RESPONSE_CHANGED:
00077         case COAP_MSG_CODE_RESPONSE_CONTENT:
00078         case COAP_MSG_CODE_RESPONSE_BAD_REQUEST:
00079         case COAP_MSG_CODE_RESPONSE_UNAUTHORIZED:
00080         case COAP_MSG_CODE_RESPONSE_BAD_OPTION:
00081         case COAP_MSG_CODE_RESPONSE_FORBIDDEN:
00082         case COAP_MSG_CODE_RESPONSE_NOT_FOUND:
00083         case COAP_MSG_CODE_RESPONSE_METHOD_NOT_ALLOWED:
00084         case COAP_MSG_CODE_RESPONSE_NOT_ACCEPTABLE:
00085         case COAP_MSG_CODE_RESPONSE_REQUEST_ENTITY_INCOMPLETE:
00086         case COAP_MSG_CODE_RESPONSE_PRECONDITION_FAILED:
00087         case COAP_MSG_CODE_RESPONSE_REQUEST_ENTITY_TOO_LARGE:
00088         case COAP_MSG_CODE_RESPONSE_UNSUPPORTED_CONTENT_FORMAT:
00089         case COAP_MSG_CODE_RESPONSE_INTERNAL_SERVER_ERROR:
00090         case COAP_MSG_CODE_RESPONSE_NOT_IMPLEMENTED:
00091         case COAP_MSG_CODE_RESPONSE_BAD_GATEWAY:
00092         case COAP_MSG_CODE_RESPONSE_SERVICE_UNAVAILABLE:
00093         case COAP_MSG_CODE_RESPONSE_GATEWAY_TIMEOUT:
00094         case COAP_MSG_CODE_RESPONSE_PROXYING_NOT_SUPPORTED:
00095         case COAP_MSG_CODE_RESPONSE_CONTINUE:
00096             break;      /* Ok cases */
00097         default:
00098             tr_error("sn_coap_header_validity_check - unknown message code!");
00099             return -1;      /* Failed case */
00100     }
00101 
00102     /* Success */
00103     return 0;
00104 }