mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-13 22:25:03 +00:00
791e3b6add
In the comments there where some grammar mistakes and references to struct names that have gotten renamed over time but not updated in the comments. Signed-off-by: Paulo Miguel Almeida <paulo.miguel.almeida.rodenas@gmail.com> Link: https://lore.kernel.org/r/20210828105633.GA8421@localhost.localdomain Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
150 lines
3.8 KiB
C
150 lines
3.8 KiB
C
/* SPDX-License-Identifier: GPL-2.0+ */
|
|
/*
|
|
* include/linux/TODO
|
|
*
|
|
* userspace interface for pi433 radio module
|
|
*
|
|
* Pi433 is a 433MHz radio module for the Raspberry Pi.
|
|
* It is based on the HopeRf Module RFM69CW. Therefore, inside of this
|
|
* driver you'll find an abstraction of the rf69 chip.
|
|
*
|
|
* If needed this driver could also be extended to support other
|
|
* devices based on HopeRf rf69 as well as HopeRf modules with a similar
|
|
* interface such as RFM69HCW, RFM12, RFM95 and so on.
|
|
*
|
|
* Copyright (C) 2016 Wolf-Entwicklungen
|
|
* Marcus Wolf <linux@wolf-entwicklungen.de>
|
|
*/
|
|
|
|
#ifndef PI433_H
|
|
#define PI433_H
|
|
|
|
#include <linux/types.h>
|
|
#include "rf69_enum.h"
|
|
|
|
/*---------------------------------------------------------------------------*/
|
|
|
|
enum option_on_off {
|
|
OPTION_OFF,
|
|
OPTION_ON
|
|
};
|
|
|
|
/* IOCTL structs and commands */
|
|
|
|
/**
|
|
* struct pi433_tx_cfg
|
|
* describes the configuration of the radio module for sending data
|
|
* @frequency:
|
|
* @bit_rate:
|
|
* @modulation:
|
|
* @data_mode:
|
|
* @preamble_length:
|
|
* @sync_pattern:
|
|
* @tx_start_condition:
|
|
* @payload_length:
|
|
* @repetitions:
|
|
*
|
|
* ATTENTION:
|
|
* If the contents of 'pi433_tx_cfg' ever change
|
|
* incompatibly, then the ioctl number (see define below) must change.
|
|
*
|
|
* NOTE: struct layout is the same in 64bit and 32bit userspace.
|
|
*/
|
|
#define PI433_TX_CFG_IOCTL_NR 0
|
|
struct pi433_tx_cfg {
|
|
__u32 frequency;
|
|
__u16 bit_rate;
|
|
__u32 dev_frequency;
|
|
enum modulation modulation;
|
|
enum mod_shaping mod_shaping;
|
|
|
|
enum pa_ramp pa_ramp;
|
|
|
|
enum tx_start_condition tx_start_condition;
|
|
|
|
__u16 repetitions;
|
|
|
|
/* packet format */
|
|
enum option_on_off enable_preamble;
|
|
enum option_on_off enable_sync;
|
|
enum option_on_off enable_length_byte;
|
|
enum option_on_off enable_address_byte;
|
|
enum option_on_off enable_crc;
|
|
|
|
__u16 preamble_length;
|
|
__u8 sync_length;
|
|
__u8 fixed_message_length;
|
|
|
|
__u8 sync_pattern[8];
|
|
__u8 address_byte;
|
|
};
|
|
|
|
/**
|
|
* struct pi433_rx_cfg
|
|
* describes the configuration of the radio module for receiving data
|
|
* @frequency:
|
|
* @bit_rate:
|
|
* @modulation:
|
|
* @data_mode:
|
|
* @preamble_length:
|
|
* @sync_pattern:
|
|
* @tx_start_condition:
|
|
* @payload_length:
|
|
* @repetitions:
|
|
*
|
|
* ATTENTION:
|
|
* If the contents of 'pi433_rx_cfg' ever change
|
|
* incompatibly, then the ioctl number (see define below) must change
|
|
*
|
|
* NOTE: struct layout is the same in 64bit and 32bit userspace.
|
|
*/
|
|
#define PI433_RX_CFG_IOCTL_NR 1
|
|
struct pi433_rx_cfg {
|
|
__u32 frequency;
|
|
__u16 bit_rate;
|
|
__u32 dev_frequency;
|
|
|
|
enum modulation modulation;
|
|
|
|
__u8 rssi_threshold;
|
|
enum threshold_decrement threshold_decrement;
|
|
enum antenna_impedance antenna_impedance;
|
|
enum lna_gain lna_gain;
|
|
enum mantisse bw_mantisse; /* normal: 0x50 */
|
|
__u8 bw_exponent; /* during AFC: 0x8b */
|
|
enum dagc dagc;
|
|
|
|
/* packet format */
|
|
enum option_on_off enable_sync;
|
|
|
|
/* should be used in combination with sync, only */
|
|
enum option_on_off enable_length_byte;
|
|
|
|
/* operational with sync, only */
|
|
enum address_filtering enable_address_filtering;
|
|
|
|
/* only operational, if sync on and fixed length or length byte is used */
|
|
enum option_on_off enable_crc;
|
|
|
|
__u8 sync_length;
|
|
__u8 fixed_message_length;
|
|
__u32 bytes_to_drop;
|
|
|
|
__u8 sync_pattern[8];
|
|
__u8 node_address;
|
|
__u8 broadcast_address;
|
|
};
|
|
|
|
#define PI433_IOC_MAGIC 'r'
|
|
|
|
#define PI433_IOC_RD_TX_CFG \
|
|
_IOR(PI433_IOC_MAGIC, PI433_TX_CFG_IOCTL_NR, char[sizeof(struct pi433_tx_cfg)])
|
|
#define PI433_IOC_WR_TX_CFG \
|
|
_IOW(PI433_IOC_MAGIC, PI433_TX_CFG_IOCTL_NR, char[sizeof(struct pi433_tx_cfg)])
|
|
|
|
#define PI433_IOC_RD_RX_CFG \
|
|
_IOR(PI433_IOC_MAGIC, PI433_RX_CFG_IOCTL_NR, char[sizeof(struct pi433_rx_cfg)])
|
|
#define PI433_IOC_WR_RX_CFG \
|
|
_IOW(PI433_IOC_MAGIC, PI433_RX_CFG_IOCTL_NR, char[sizeof(struct pi433_rx_cfg)])
|
|
|
|
#endif /* PI433_H */
|