From faab006631377530b206f40867f94d588020c4a2 Mon Sep 17 00:00:00 2001 From: Hauke Petersen <hauke.petersen@fu-berlin.de> Date: Thu, 12 Apr 2018 11:27:19 +0200 Subject: [PATCH] net/rdcli_simple: improved doc and error handling --- sys/include/net/rdcli_simple.h | 14 +++++++++++++- .../rdcli_simple/rdcli_simple.c | 18 ++++++++++-------- .../rdcli_simple/rdcli_simple_standalone.c | 3 +-- 3 files changed, 24 insertions(+), 11 deletions(-) diff --git a/sys/include/net/rdcli_simple.h b/sys/include/net/rdcli_simple.h index 1e5d08ffc4..9a110761b2 100644 --- a/sys/include/net/rdcli_simple.h +++ b/sys/include/net/rdcli_simple.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2017 Freie Universität Berlin + * Copyright (C) 2017-2018 Freie Universität Berlin * * This file is subject to the terms and conditions of the GNU Lesser * General Public License v2.1. See the file LICENSE in the top level @@ -26,9 +26,21 @@ extern "C" { #endif +/** + * @brief Error codes used by the rdcli_simple implementation + */ +enum { + RDCLI_SIMPLE_OK = 0, /**< all ok */ + RDCLI_SIMPLE_ERR = -1, /**< return for formatting and network errors */ +}; + /** * @brief Initiate the node registration by sending an empty CoAP POST message * to the RD server's /.well-known/core resource + * + * @return RDCLI_SIMPLE_OK on success + * @return RDCLI_ERROR if something goes wrong preparing or sending the + * initial request */ int rdcli_simple_register(void); diff --git a/sys/net/application_layer/rdcli_simple/rdcli_simple.c b/sys/net/application_layer/rdcli_simple/rdcli_simple.c index cb86eeef83..c12869a054 100644 --- a/sys/net/application_layer/rdcli_simple/rdcli_simple.c +++ b/sys/net/application_layer/rdcli_simple/rdcli_simple.c @@ -42,19 +42,21 @@ static const sock_udp_ep_t remote = { int rdcli_simple_register(void) { /* build the initial CON packet */ - int res = gcoap_req_init(&pkt, buf, sizeof(buf), COAP_METHOD_POST, - "/.well-known/core"); - if (res < 0) { - return res; + if (gcoap_req_init(&pkt, buf, sizeof(buf), COAP_METHOD_POST, + "/.well-known/core") < 0) { + return RDCLI_SIMPLE_ERR; } /* make packet confirmable */ coap_hdr_set_type(pkt.hdr, COAP_TYPE_CON); /* add Uri-Query options */ - res = rdcli_common_add_qstring(&pkt); - if (res < 0) { - return res; + if (rdcli_common_add_qstring(&pkt) < 0) { + return RDCLI_SIMPLE_ERR; } /* finish, we don't have any payload */ ssize_t len = gcoap_finish(&pkt, 0, COAP_FORMAT_LINK); - return (int)gcoap_req_send2(buf, len, &remote, NULL); + if (gcoap_req_send2(buf, len, &remote, NULL) == 0) { + return RDCLI_SIMPLE_ERR; + } + + return RDCLI_SIMPLE_OK; } diff --git a/sys/net/application_layer/rdcli_simple/rdcli_simple_standalone.c b/sys/net/application_layer/rdcli_simple/rdcli_simple_standalone.c index 868250ff19..f5a93892fd 100644 --- a/sys/net/application_layer/rdcli_simple/rdcli_simple_standalone.c +++ b/sys/net/application_layer/rdcli_simple/rdcli_simple_standalone.c @@ -38,8 +38,7 @@ static void *reg_runner(void *arg) xtimer_sleep(RDCLI_STARTUP_DELAY); while (1) { - int res = rdcli_simple_register(); - if (res < 0) { + if (rdcli_simple_register() != RDCLI_SIMPLE_OK) { LOG_ERROR("[rdcli_simple] error: unable to trigger registration\n"); } xtimer_sleep(RDCLI_UPDATE_INTERVAL); -- GitLab