diff --git a/sys/include/net/rdcli_simple.h b/sys/include/net/rdcli_simple.h index 1e5d08ffc486b41e8fd8a498ba5a078101ef96a6..9a110761b2255465d866f4cfc04d82e3a20847f4 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 cb86eeef838c4d140b9491f559047a681d4040ae..c12869a0541a69a05556bec3ecdf9505ab7f6d15 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 868250ff19895c15dfc710d4401b2565bfa498bc..f5a93892fd71521106ae4e0ca49b33849980a01d 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);