Skip to content

Commit

Permalink
suit: move CoAP endpoints to the example
Browse files Browse the repository at this point in the history
Those endpoints are very specific to the example and not
useful for general use.

Move them to the example's CoAP endpoints.
  • Loading branch information
benpicco committed Nov 26, 2024
1 parent b69d060 commit 83569aa
Show file tree
Hide file tree
Showing 3 changed files with 73 additions and 126 deletions.
79 changes: 73 additions & 6 deletions examples/suit_update/coap_handler.c
Original file line number Diff line number Diff line change
@@ -1,19 +1,23 @@
/*
* Copyright (C) 2019 Kaspar Schleiser <[email protected]>
* 2019 Freie Universität Berlin
* 2019 Inria
*
* 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
* directory for more details.
*/

#include <stdlib.h>
#include <stdio.h>
#include <string.h>

#include "log.h"
#include "suit.h"
#include "net/nanocoap.h"
#include "suit/transport/coap.h"
#include "kernel_defines.h"

#ifdef MODULE_RIOTBOOT_SLOT
#include "riotboot/slot.h"
#endif

static ssize_t _riot_board_handler(coap_pkt_t *pkt, uint8_t *buf, size_t len,
coap_request_ctx_t *context)
{
Expand All @@ -22,8 +26,71 @@ static ssize_t _riot_board_handler(coap_pkt_t *pkt, uint8_t *buf, size_t len,
COAP_FORMAT_TEXT, (uint8_t*)RIOT_BOARD, strlen(RIOT_BOARD));
}

static ssize_t _version_handler(coap_pkt_t *pkt, uint8_t *buf, size_t len,
coap_request_ctx_t *context)
{
(void)context;
return coap_reply_simple(pkt, COAP_CODE_205, buf, len,
COAP_FORMAT_TEXT, (uint8_t *)"NONE", 4);
}

static ssize_t _trigger_handler(coap_pkt_t *pkt, uint8_t *buf, size_t len,
coap_request_ctx_t *context)
{
(void)context;
unsigned code;
size_t payload_len = pkt->payload_len;
if (payload_len) {
if (payload_len >= CONFIG_SOCK_URLPATH_MAXLEN) {
code = COAP_CODE_REQUEST_ENTITY_TOO_LARGE;
}
else {
code = COAP_CODE_CREATED;
LOG_INFO("suit: received URL: \"%s\"\n", (char *)pkt->payload);
suit_worker_trigger((char *)pkt->payload, strlen((char *)pkt->payload));
}
}
else {
code = COAP_CODE_REQUEST_ENTITY_INCOMPLETE;
}

return coap_reply_simple(pkt, code, buf, len,
COAP_FORMAT_NONE, NULL, 0);
}

#ifdef MODULE_RIOTBOOT_SLOT
static ssize_t _slot_handler(coap_pkt_t *pkt, uint8_t *buf, size_t len,
coap_request_ctx_t *context)
{
/* context is passed either as NULL or 0x1 for /active or /inactive */
char c = '0';

if (coap_request_ctx_get_context(context)) {
c += riotboot_slot_other();
}
else {
c += riotboot_slot_current();
}

return coap_reply_simple(pkt, COAP_CODE_205, buf, len,
COAP_FORMAT_TEXT, (uint8_t *)&c, 1);
}
#endif

#ifdef MODULE_RIOTBOOT_SLOT
NANOCOAP_RESOURCE(slot_active) {
.path = "/suit/slot/active", .methods = COAP_METHOD_GET, .handler = _slot_handler,
};
NANOCOAP_RESOURCE(slot_inactive) {
.path = "/suit/slot/inactive", .methods = COAP_METHOD_GET, .handler = _slot_handler, .context = (void *)0x1,

Check warning on line 85 in examples/suit_update/coap_handler.c

View workflow job for this annotation

GitHub Actions / static-tests

line is longer than 100 characters
};
#endif
NANOCOAP_RESOURCE(trigger) {
.path = "/suit/trigger", .methods = COAP_METHOD_PUT | COAP_METHOD_POST, .handler = _trigger_handler,

Check warning on line 89 in examples/suit_update/coap_handler.c

View workflow job for this annotation

GitHub Actions / static-tests

line is longer than 100 characters
};
NANOCOAP_RESOURCE(version) {
.path = "/suit/version", .methods = COAP_METHOD_GET, .handler = _version_handler,
};
NANOCOAP_RESOURCE(board) {
.path = "/riot/board", .methods = COAP_GET, .handler = _riot_board_handler,
};

NANOCOAP_RESOURCE(suit) SUIT_COAP_SUBTREE;
21 changes: 0 additions & 21 deletions sys/include/suit/transport/coap.h
Original file line number Diff line number Diff line change
Expand Up @@ -32,22 +32,6 @@
extern "C" {
#endif

/**
* @brief SUIT CoAP endpoint entry.
*
* In order to use, include this header, then add SUIT_COAP_SUBTREE to the nanocoap endpoint array.
* Mind the alphanumerical sorting!
*
* See examples/suit_update for an example.
*/
#define SUIT_COAP_SUBTREE \
{ \
.path="/suit/", \
.methods=COAP_MATCH_SUBTREE | COAP_METHOD_GET | COAP_METHOD_POST | COAP_METHOD_PUT, \
.handler=coap_subtree_handler, \
.context=(void*)&coap_resource_subtree_suit \
}

/*
* Dear Reviewer,
*
Expand All @@ -63,11 +47,6 @@ extern "C" {
*/
#ifndef DOXYGEN

/**
* @brief Reference to the coap resource subtree
*/
extern const coap_resource_subtree_t coap_resource_subtree_suit;

/**
* @brief Coap block-wise-transfer size used for SUIT
*/
Expand Down
99 changes: 0 additions & 99 deletions sys/suit/transport/coap.c

This file was deleted.

0 comments on commit 83569aa

Please sign in to comment.