Skip to content

Commit

Permalink
examples/gcoap_fileserver: add CoAP fileserver example
Browse files Browse the repository at this point in the history
  • Loading branch information
benpicco committed May 10, 2022
1 parent 904ec2b commit 6c66b40
Show file tree
Hide file tree
Showing 2 changed files with 87 additions and 0 deletions.
35 changes: 35 additions & 0 deletions examples/gcoap_fileserver/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
# name of your application
APPLICATION = gcoap_fileserver

# If no BOARD is found in the environment, use this default:
BOARD ?= native

# This has to be the absolute path to the RIOT base directory:
RIOTBASE ?= $(CURDIR)/../..

# Comment this out to disable code in RIOT that does safety checking
# which is not needed in a production environment but helps in the
# development process:
DEVELHELP ?= 1

# Change this to 0 show compiler invocation lines by default:
QUIET ?= 1

# Modules to include:
USEMODULE += shell
USEMODULE += shell_commands

# enable the fileserver module
USEMODULE += gcoap_fileserver

# select network modules
USEMODULE += gnrc_ipv6_default
USEMODULE += auto_init_gnrc_netif
USEMODULE += netdev_default
USEMODULE += gnrc_icmpv6_echo

# enable default file system mount points
USEMODULE += vfs_default
# USEMODULE += vfs_auto_format

include $(RIOTBASE)/Makefile.include
52 changes: 52 additions & 0 deletions examples/gcoap_fileserver/main.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
/*
* Copyright (C) 2022 ML!PA Consulting GmbH
*
* 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.
*/

/**
* @ingroup examples
* @{
*
* @file
* @brief Example application for demonstrating the GCoAP file server
*
* @author Benjamin Valentin <benjamin.valentin@ml-pa.com>
* @}
*/

#include "net/gcoap.h"
#include "net/gcoap/fileserver.h"
#include "shell.h"
#include "vfs_default.h"

#define MAIN_QUEUE_SIZE (4)
static msg_t _main_msg_queue[MAIN_QUEUE_SIZE];

static const gcoap_fileserver_entry_t _vfs_entry = {
.root = VFS_DEFAULT_DATA,
.resource = "/vfs",
};

/* CoAP resources. Must be sorted by path (ASCII order). */
static const coap_resource_t _resources[] = {
{ "/vfs", COAP_GET | COAP_MATCH_SUBTREE, gcoap_fileserver_handler, (void *)&_vfs_entry },
};

static gcoap_listener_t _listener = {
.resources = _resources,
.resources_len = ARRAY_SIZE(_resources),
};

int main(void)
{
msg_init_queue(_main_msg_queue, MAIN_QUEUE_SIZE);
gcoap_register_listener(&_listener);

char line_buf[SHELL_DEFAULT_BUFSIZE];
shell_run(NULL, line_buf, SHELL_DEFAULT_BUFSIZE);

return 0;
}

0 comments on commit 6c66b40

Please sign in to comment.