Loading...
Searching...
No Matches
nrfmin.h
Go to the documentation of this file.
1/*
2 * Copyright (C) 2015-2017 Freie Universität Berlin
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
73
74#include "net/netdev.h"
75
76#ifdef __cplusplus
77extern "C" {
78#endif
79
84#define NRFMIN_CHAN_MIN (0U)
85#define NRFMIN_CHAN_DEFAULT (0U) /* 2400MHz */
86#define NRFMIN_CHAN_MAX (32)
88
92#define NRFMIN_TXPOWER_DEFAULT (0) /* 0dBm */
93
97#define NRFMIN_ADDR_BCAST (0xffff)
98
102#ifndef NRFMIN_PAYLOAD_MAX
103#define NRFMIN_PAYLOAD_MAX (200U)
104#endif
105
110#define NRFMIN_HDR_LEN (sizeof(nrfmin_hdr_t))
111#define NRFMIN_PKT_MAX (NRFMIN_HDR_LEN + NRFMIN_PAYLOAD_MAX)
113
117typedef struct __attribute__((packed)) {
118 uint8_t len;
119 uint16_t src_addr;
120 uint16_t dst_addr;
121 uint8_t proto;
123
127typedef union {
128 struct __attribute__((packed)) {
131 } pkt;
132 uint8_t raw[NRFMIN_PKT_MAX];
134
138extern netdev_t nrfmin_dev;
139
143extern const netdev_driver_t nrfmin_netdev;
144
148void nrfmin_setup(void);
149
155uint16_t nrfmin_get_addr(void);
156
162void nrfmin_set_addr(uint16_t addr);
163
169void nrfmin_get_iid(uint16_t *iid);
170
176uint16_t nrfmin_get_channel(void);
177
186int nrfmin_set_channel(uint16_t chan);
187
194
204
210int16_t nrfmin_get_txpower(void);
211
217void nrfmin_set_txpower(int16_t power);
218
219#ifdef __cplusplus
220}
221#endif
222
Definitions low-level network driver interface.
struct netdev netdev_t
Forward declaration for netdev struct.
Definition netdev.h:288
struct netdev_driver netdev_driver_t
Structure to hold driver interface -> function mapping.
void nrfmin_get_iid(uint16_t *iid)
Get the IID build from the 16-bit node address.
const netdev_driver_t nrfmin_netdev
Reference to the netdev driver interface.
#define NRFMIN_PAYLOAD_MAX
Default maximum payload length (must be <= 250)
Definition nrfmin.h:103
void nrfmin_setup(void)
Setup the device driver's data structures.
int16_t nrfmin_get_txpower(void)
Get the current transmit power.
netopt_state_t nrfmin_get_state(void)
Get the current radio state.
void nrfmin_set_txpower(int16_t power)
Set the used transmission power.
int nrfmin_set_state(netopt_state_t val)
Put the device into the given state.
uint16_t nrfmin_get_addr(void)
Get the currently active address.
void nrfmin_set_addr(uint16_t addr)
Set the 16-bit radio address.
netdev_t nrfmin_dev
Export the netdev device descriptor.
int nrfmin_set_channel(uint16_t chan)
Set the active channel.
uint16_t nrfmin_get_channel(void)
Get the current channel.
netopt_state_t
Option parameter to be used with NETOPT_STATE to set or get the state of a network device or protocol...
Definition netopt.h:893
Header format used for our custom nrfmin link layer.
Definition nrfmin.h:117
uint16_t src_addr
source address of the packet
Definition nrfmin.h:119
uint8_t len
packet length, including this header
Definition nrfmin.h:118
uint8_t proto
protocol of payload
Definition nrfmin.h:121
uint16_t dst_addr
destination address
Definition nrfmin.h:120
In-memory structure of a nrfmin radio packet.
Definition nrfmin.h:127
uint8_t payload[NRFMIN_PAYLOAD_MAX]
actual payload
Definition nrfmin.h:130
nrfmin_hdr_t hdr
the nrfmin header
Definition nrfmin.h:129
uint8_t raw[NRFMIN_PKT_MAX]
raw packet access
Definition nrfmin.h:132