hello
Dependents: nespresso_demo nespresso_endpoint EnvoyNespressoEndpointColorDetectorV2
Fork of nsdl by
sn_coap_header_check.c@2:05e4cd1a1542, 2014-07-14 (annotated)
- 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?
User | Revision | Line number | New 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 | } |