lc.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2018 HAW Hamburg
3  *
4  * This file is subject to the terms and conditions of the GNU Lesser
5  * General Public License v2.1. See the file LICENSE in the top level
6  * directory for more details.
7  */
8 
9 #pragma once
10 
51 #include "net/sock/udp.h"
52 #include "net/nanocoap.h"
53 #include "clif.h"
54 
55 #ifdef __cplusplus
56 extern "C" {
57 #endif
58 
62 enum {
63  CORD_LC_OK = 0,
65  CORD_LC_ERR = -2,
68 };
69 
73 enum {
76 };
77 
81 typedef struct {
83  char *res_lookif;
84  char *ep_lookif;
85  unsigned res_last_page;
86  unsigned ep_last_page;
87 } cord_lc_rd_t;
88 
95  size_t max_attrs;
96 };
97 
98 typedef struct cord_lc_result cord_lc_res_t;
99 typedef struct cord_lc_result cord_lc_ep_t;
104 typedef struct cord_lc_filter {
106  size_t len;
109 
125 int cord_lc_rd_init(cord_lc_rd_t *rd, void *buf, size_t maxlen,
126  const sock_udp_ep_t *remote);
127 
153 ssize_t cord_lc_raw(const cord_lc_rd_t *rd, unsigned content_format,
154  unsigned lookup_type, cord_lc_filter_t *filters,
155  void *result, size_t maxlen);
156 
181  cord_lc_filter_t *filters, void *buf, size_t maxlen,
182  unsigned type);
183 
205 static inline ssize_t cord_lc_res(cord_lc_rd_t *rd, cord_lc_res_t *resource,
206  cord_lc_filter_t *filters, void *buf,
207  size_t maxlen)
208 {
209  return _lookup_result(rd, resource, filters, buf, maxlen, CORD_LC_RES);
210 }
211 
233 static inline ssize_t cord_lc_ep(cord_lc_rd_t *rd, cord_lc_ep_t *endpoint,
234  cord_lc_filter_t *filters, void *buf,
235  size_t maxlen)
236 {
237  return _lookup_result(rd, endpoint, filters, buf, maxlen, CORD_LC_EP);
238 }
239 
240 #ifdef __cplusplus
241 }
242 #endif
243 
CoRE Link Format encoding and decoding library public definitions.
ssize_t _lookup_result(cord_lc_rd_t *rd, cord_lc_res_t *result, cord_lc_filter_t *filters, void *buf, size_t maxlen, unsigned type)
Get one resource from RD server.
static ssize_t cord_lc_res(cord_lc_rd_t *rd, cord_lc_res_t *resource, cord_lc_filter_t *filters, void *buf, size_t maxlen)
Get one resource from RD server.
Definition: lc.h:205
int cord_lc_rd_init(cord_lc_rd_t *rd, void *buf, size_t maxlen, const sock_udp_ep_t *remote)
Discover the lookup interfaces of a RD server.
ssize_t cord_lc_raw(const cord_lc_rd_t *rd, unsigned content_format, unsigned lookup_type, cord_lc_filter_t *filters, void *result, size_t maxlen)
Raw lookup for registered resources/endpoints at a RD server.
static ssize_t cord_lc_ep(cord_lc_rd_t *rd, cord_lc_ep_t *endpoint, cord_lc_filter_t *filters, void *buf, size_t maxlen)
Get one endpoint from RD server.
Definition: lc.h:233
struct cord_lc_filter cord_lc_filter_t
Filters to use for a lookup.
@ CORD_LC_RES
Resource lookup type.
Definition: lc.h:74
@ CORD_LC_EP
Endpoint lookup type.
Definition: lc.h:75
@ CORD_LC_TIMEOUT
no response from the network
Definition: lc.h:64
@ CORD_LC_NORSC
lookup interface not found
Definition: lc.h:67
@ CORD_LC_OVERFLOW
internal buffers can not handle input
Definition: lc.h:66
@ CORD_LC_OK
everything went as expected
Definition: lc.h:63
@ CORD_LC_ERR
internal error or invalid reply
Definition: lc.h:65
nanocoap API
UDP sock definitions.
Common IP-based transport layer end point.
Definition: sock.h:214
Link format attribute descriptor.
Definition: clif.h:136
Link format descriptor.
Definition: clif.h:146
Filters to use for a lookup.
Definition: lc.h:104
struct cord_lc_filter * next
Next set of filters.
Definition: lc.h:107
size_t len
No.
Definition: lc.h:106
clif_attr_t * array
Array of filter(s)
Definition: lc.h:105
Information about RD server and its lookup interface resources.
Definition: lc.h:81
unsigned res_last_page
Page of last resource lookup.
Definition: lc.h:85
const sock_udp_ep_t * remote
Remote endpoint of RD server.
Definition: lc.h:82
char * res_lookif
Resource lookup interface.
Definition: lc.h:83
unsigned ep_last_page
Page of last endpoint lookup.
Definition: lc.h:86
char * ep_lookif
Endpoint lookup interface.
Definition: lc.h:84
Result of lookup.
Definition: lc.h:92
size_t max_attrs
Max parameters at params.
Definition: lc.h:95
clif_attr_t * attrs
Array of Link Format parameters.
Definition: lc.h:94
clif_t link
Resource link.
Definition: lc.h:93