hello

Dependents:   nespresso_demo nespresso_endpoint EnvoyNespressoEndpointColorDetectorV2

Fork of nsdl by Robert Taylor

Committer:
bjblazkowicz
Date:
Mon Jul 14 12:33:59 2014 +0000
Revision:
2:05e4cd1a1542
Parent:
0:f6e4e1bbb3fe
WIP - registration is broken in this commit.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
GeofferyOmlette 0:f6e4e1bbb3fe 1 /**
GeofferyOmlette 0:f6e4e1bbb3fe 2 * \file sn_coap_header_check.c
GeofferyOmlette 0:f6e4e1bbb3fe 3 *
GeofferyOmlette 0:f6e4e1bbb3fe 4 * \brief CoAP Header validity checker
GeofferyOmlette 0:f6e4e1bbb3fe 5 *
GeofferyOmlette 0:f6e4e1bbb3fe 6 * Functionality: Checks validity of CoAP Header
GeofferyOmlette 0:f6e4e1bbb3fe 7 *
GeofferyOmlette 0:f6e4e1bbb3fe 8 * Created on: Aug 22, 2011
GeofferyOmlette 0:f6e4e1bbb3fe 9 * Author: tero
GeofferyOmlette 0:f6e4e1bbb3fe 10 *
GeofferyOmlette 0:f6e4e1bbb3fe 11 * \note Supports draft-ietf-core-coap-18
GeofferyOmlette 0:f6e4e1bbb3fe 12 */
GeofferyOmlette 0:f6e4e1bbb3fe 13
GeofferyOmlette 0:f6e4e1bbb3fe 14 /* * * * INCLUDE FILES * * * */
GeofferyOmlette 0:f6e4e1bbb3fe 15 #include "nsdl_types.h"
GeofferyOmlette 0:f6e4e1bbb3fe 16 #include "sn_nsdl.h"
GeofferyOmlette 0:f6e4e1bbb3fe 17 #include "sn_coap_header.h"
GeofferyOmlette 0:f6e4e1bbb3fe 18 #include "sn_coap_protocol.h"
GeofferyOmlette 0:f6e4e1bbb3fe 19 #include "sn_coap_header_internal.h"
GeofferyOmlette 0:f6e4e1bbb3fe 20 #include "sn_coap_protocol_internal.h"
GeofferyOmlette 0:f6e4e1bbb3fe 21
GeofferyOmlette 0:f6e4e1bbb3fe 22 /**
GeofferyOmlette 0:f6e4e1bbb3fe 23 * \fn int8_t sn_coap_header_validity_check(sn_coap_hdr_s *src_coap_msg_ptr, coap_version_e coap_version)
GeofferyOmlette 0:f6e4e1bbb3fe 24 *
GeofferyOmlette 0:f6e4e1bbb3fe 25 * \brief Checks validity of given Header
GeofferyOmlette 0:f6e4e1bbb3fe 26 *
GeofferyOmlette 0:f6e4e1bbb3fe 27 * \param *src_coap_msg_ptr is source for building Packet data
GeofferyOmlette 0:f6e4e1bbb3fe 28 * \param coap_version is version of used CoAP specification
GeofferyOmlette 0:f6e4e1bbb3fe 29 *
GeofferyOmlette 0:f6e4e1bbb3fe 30 * \return Return value is status of validity check. In ok cases 0 and in
GeofferyOmlette 0:f6e4e1bbb3fe 31 * failure cases -1
GeofferyOmlette 0:f6e4e1bbb3fe 32 */
GeofferyOmlette 0:f6e4e1bbb3fe 33 SN_MEM_ATTR_COAP_VALID_CHECK_FUNC
GeofferyOmlette 0:f6e4e1bbb3fe 34 int8_t sn_coap_header_validity_check(sn_coap_hdr_s *src_coap_msg_ptr, coap_version_e coap_version)
GeofferyOmlette 0:f6e4e1bbb3fe 35 {
GeofferyOmlette 0:f6e4e1bbb3fe 36 /* * Check validity of CoAP Version * */
GeofferyOmlette 0:f6e4e1bbb3fe 37 if (coap_version != COAP_VERSION_1)
GeofferyOmlette 0:f6e4e1bbb3fe 38 {
GeofferyOmlette 0:f6e4e1bbb3fe 39 return -1;
GeofferyOmlette 0:f6e4e1bbb3fe 40 }
GeofferyOmlette 0:f6e4e1bbb3fe 41
GeofferyOmlette 0:f6e4e1bbb3fe 42 /* * Check validity of Message type * */
GeofferyOmlette 0:f6e4e1bbb3fe 43 switch (src_coap_msg_ptr->msg_type)
GeofferyOmlette 0:f6e4e1bbb3fe 44 {
GeofferyOmlette 0:f6e4e1bbb3fe 45 case COAP_MSG_TYPE_CONFIRMABLE:
GeofferyOmlette 0:f6e4e1bbb3fe 46 case COAP_MSG_TYPE_NON_CONFIRMABLE:
GeofferyOmlette 0:f6e4e1bbb3fe 47 case COAP_MSG_TYPE_ACKNOWLEDGEMENT:
GeofferyOmlette 0:f6e4e1bbb3fe 48 case COAP_MSG_TYPE_RESET:
GeofferyOmlette 0:f6e4e1bbb3fe 49 break; /* Ok cases */
GeofferyOmlette 0:f6e4e1bbb3fe 50 default:
GeofferyOmlette 0:f6e4e1bbb3fe 51 return -1; /* Failed case */
GeofferyOmlette 0:f6e4e1bbb3fe 52 }
GeofferyOmlette 0:f6e4e1bbb3fe 53
GeofferyOmlette 0:f6e4e1bbb3fe 54 /* * Check validity of Message code * */
GeofferyOmlette 0:f6e4e1bbb3fe 55 switch (src_coap_msg_ptr->msg_code)
GeofferyOmlette 0:f6e4e1bbb3fe 56 {
GeofferyOmlette 0:f6e4e1bbb3fe 57 case COAP_MSG_CODE_EMPTY:
GeofferyOmlette 0:f6e4e1bbb3fe 58 case COAP_MSG_CODE_REQUEST_GET:
GeofferyOmlette 0:f6e4e1bbb3fe 59 case COAP_MSG_CODE_REQUEST_POST:
GeofferyOmlette 0:f6e4e1bbb3fe 60 case COAP_MSG_CODE_REQUEST_PUT:
GeofferyOmlette 0:f6e4e1bbb3fe 61 case COAP_MSG_CODE_REQUEST_DELETE:
GeofferyOmlette 0:f6e4e1bbb3fe 62 case COAP_MSG_CODE_RESPONSE_CREATED:
GeofferyOmlette 0:f6e4e1bbb3fe 63 case COAP_MSG_CODE_RESPONSE_DELETED:
GeofferyOmlette 0:f6e4e1bbb3fe 64 case COAP_MSG_CODE_RESPONSE_VALID:
GeofferyOmlette 0:f6e4e1bbb3fe 65 case COAP_MSG_CODE_RESPONSE_CHANGED:
GeofferyOmlette 0:f6e4e1bbb3fe 66 case COAP_MSG_CODE_RESPONSE_CONTENT:
GeofferyOmlette 0:f6e4e1bbb3fe 67 case COAP_MSG_CODE_RESPONSE_BAD_REQUEST:
GeofferyOmlette 0:f6e4e1bbb3fe 68 case COAP_MSG_CODE_RESPONSE_UNAUTHORIZED:
GeofferyOmlette 0:f6e4e1bbb3fe 69 case COAP_MSG_CODE_RESPONSE_BAD_OPTION:
GeofferyOmlette 0:f6e4e1bbb3fe 70 case COAP_MSG_CODE_RESPONSE_FORBIDDEN:
GeofferyOmlette 0:f6e4e1bbb3fe 71 case COAP_MSG_CODE_RESPONSE_NOT_FOUND:
GeofferyOmlette 0:f6e4e1bbb3fe 72 case COAP_MSG_CODE_RESPONSE_METHOD_NOT_ALLOWED:
GeofferyOmlette 0:f6e4e1bbb3fe 73 case COAP_MSG_CODE_RESPONSE_REQUEST_ENTITY_INCOMPLETE:
GeofferyOmlette 0:f6e4e1bbb3fe 74 case COAP_MSG_CODE_RESPONSE_REQUEST_ENTITY_TOO_LARGE:
GeofferyOmlette 0:f6e4e1bbb3fe 75 case COAP_MSG_CODE_RESPONSE_UNSUPPORTED_CONTENT_FORMAT:
GeofferyOmlette 0:f6e4e1bbb3fe 76 case COAP_MSG_CODE_RESPONSE_INTERNAL_SERVER_ERROR:
GeofferyOmlette 0:f6e4e1bbb3fe 77 case COAP_MSG_CODE_RESPONSE_NOT_IMPLEMENTED:
GeofferyOmlette 0:f6e4e1bbb3fe 78 case COAP_MSG_CODE_RESPONSE_BAD_GATEWAY:
GeofferyOmlette 0:f6e4e1bbb3fe 79 case COAP_MSG_CODE_RESPONSE_SERVICE_UNAVAILABLE:
GeofferyOmlette 0:f6e4e1bbb3fe 80 case COAP_MSG_CODE_RESPONSE_GATEWAY_TIMEOUT:
GeofferyOmlette 0:f6e4e1bbb3fe 81 case COAP_MSG_CODE_RESPONSE_PROXYING_NOT_SUPPORTED:
GeofferyOmlette 0:f6e4e1bbb3fe 82 break; /* Ok cases */
GeofferyOmlette 0:f6e4e1bbb3fe 83 default:
GeofferyOmlette 0:f6e4e1bbb3fe 84 return -1; /* Failed case */
GeofferyOmlette 0:f6e4e1bbb3fe 85 }
GeofferyOmlette 0:f6e4e1bbb3fe 86
GeofferyOmlette 0:f6e4e1bbb3fe 87 /* Success */
GeofferyOmlette 0:f6e4e1bbb3fe 88 return 0;
GeofferyOmlette 0:f6e4e1bbb3fe 89 }