Loading...
Searching...
No Matches
ata8520e.h
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2017 Inria
3 * SPDX-License-Identifier: LGPL-2.1-only
4 */
5
6#pragma once
7
23
24#include <stdint.h>
25#include <inttypes.h>
26#include "mutex.h"
27#include "periph/gpio.h"
28#include "periph/spi.h"
29
30#ifdef __cplusplus
31extern "C" {
32#endif
33
38#define SIGFOX_PAC_LENGTH (16U)
39#define SIGFOX_ID_LENGTH (8U)
40#define SIGFOX_MAX_TX_LENGTH (12U)
41#define SIGFOX_RX_LENGTH (8U)
43
47enum {
54};
55
59enum {
64};
65
74
90
114
118typedef struct {
119 spi_t spi;
121 gpio_t cs_pin;
122 gpio_t int_pin;
123 gpio_t power_pin;
124 gpio_t reset_pin;
126
136
153
160
168void ata8520e_read_atmel_version(const ata8520e_t *dev, uint8_t *version);
169
177void ata8520e_read_sigfox_version(const ata8520e_t *dev, char *version);
178
186void ata8520e_read_pac(const ata8520e_t *dev, char *pac);
187
195void ata8520e_read_id(const ata8520e_t *dev, char *id);
196
207int ata8520e_send_frame(ata8520e_t *dev, uint8_t *payload, uint8_t payload_len);
208
220int ata8520e_send_receive_frame(ata8520e_t *dev, uint8_t *payload,
221 uint8_t payload_len, uint8_t *rx_payload);
222
232int ata8520e_send_bit(ata8520e_t *dev, bool bit);
233
234#ifdef __cplusplus
235}
236#endif
237
spi_clk_t
Definition periph_cpu.h:348
Low-level GPIO peripheral driver interface definitions.
void ata8520e_read_atmel_version(const ata8520e_t *dev, uint8_t *version)
Return the Atmel version of the device.
int ata8520e_send_frame(ata8520e_t *dev, uint8_t *payload, uint8_t payload_len)
Send a frame.
int ata8520e_init(ata8520e_t *dev, const ata8520e_params_t *params)
Initialize the device.
void ata8520e_read_id(const ata8520e_t *dev, char *id)
Return the ID of the device.
int ata8520e_send_bit(ata8520e_t *dev, bool bit)
Send a bit.
ata8520e_status_type_t
device module status
Definition ata8520e.h:69
ata8520e_atmel_status_t
Sigfox statuses.
Definition ata8520e.h:80
void ata8520e_read_pac(const ata8520e_t *dev, char *pac)
Return the porting authorization code (PAC) available in the device.
void ata8520e_read_sigfox_version(const ata8520e_t *dev, char *version)
Return the Atmel version of the device.
void ata8520e_system_reset(const ata8520e_t *dev)
Perform a complete reset of the device.
int ata8520e_send_receive_frame(ata8520e_t *dev, uint8_t *payload, uint8_t payload_len, uint8_t *rx_payload)
Send a frame and wait for a RX packet.
ata8520e_sigfox_status_t
Sigfox statuses.
Definition ata8520e.h:96
@ ATA8520E_STATE_RX
Device is in RX mode, just after TX.
Definition ata8520e.h:63
@ ATA8520E_STATE_TX
Device is in TX mode.
Definition ata8520e.h:62
@ ATA8520E_STATE_IDLE
Device is in idle state.
Definition ata8520e.h:60
@ ATA8520E_STATE_INIT
Device is in initialization phase.
Definition ata8520e.h:61
@ ATA8520E_OK
Everything is fine.
Definition ata8520e.h:48
@ ATA8520E_ERR_EVENT_TIMEOUT
An expected event never happened.
Definition ata8520e.h:53
@ ATA8520E_ERR_GPIO_POWER
An error occurred with power pin.
Definition ata8520e.h:52
@ ATA8520E_ERR_GPIO_INT
An error occurred with interrupt pin.
Definition ata8520e.h:50
@ ATA8520E_ERR_GPIO_RESET
An error occurred with reset pin.
Definition ata8520e.h:51
@ ATA8520E_ERR_SPI
An error occurred with SPI.
Definition ata8520e.h:49
@ ATA8520E_SIGFOX
Sigfox status.
Definition ata8520e.h:72
@ ATA8520E_SSM
SoC System Management status.
Definition ata8520e.h:70
@ ATA8520E_ATMEL
Atmel status.
Definition ata8520e.h:71
@ ATA8520E_ATMEL_OPENING_ERROR
Opening error.
Definition ata8520e.h:86
@ ATA8520E_ATMEL_FREQUENCY_ERROR
Frequency error.
Definition ata8520e.h:84
@ ATA8520E_ATMEL_COMMAND_ERROR
Command error / not supported.
Definition ata8520e.h:82
@ ATA8520E_ATMEL_OK
No error.
Definition ata8520e.h:81
@ ATA8520E_ATMEL_GENERIC_ERROR
Generic error.
Definition ata8520e.h:83
@ ATA8520E_ATMEL_CLOSING_ERROR
Closing error.
Definition ata8520e.h:87
@ ATA8520E_ATMEL_USAGE_ERROR
Usage error.
Definition ata8520e.h:85
@ ATA8520E_ATMEL_SEND_ERROR
Send error.
Definition ata8520e.h:88
@ ATA8520E_SIGFOX_MANUFACTURER_SEND_ERROR
Manufacturer send error.
Definition ata8520e.h:102
@ ATA8520E_SIGFOX_OK
No error.
Definition ata8520e.h:97
@ ATA8520E_SIGFOX_GET_FREQUENCY_ERROR
Error getting frequency.
Definition ata8520e.h:107
@ ATA8520E_SIGFOX_ID_OR_KEY_ERROR
ID or key error.
Definition ata8520e.h:99
@ ATA8520E_SIGFOX_FREQUENCY_ERROR
Frequency error.
Definition ata8520e.h:112
@ ATA8520E_SIGFOX_CALLBACK_ERROR
Callback causes error.
Definition ata8520e.h:110
@ ATA8520E_SIGFOX_GET_PN9_ERROR
Error getting PN9.
Definition ata8520e.h:106
@ ATA8520E_SIGFOX_CLOSE_ERROR
Close issues encountered.
Definition ata8520e.h:104
@ ATA8520E_SIGFOX_DELAY_ROUTINE_ERROR
Error in delay routine.
Definition ata8520e.h:109
@ ATA8520E_SIGFOX_TIMING_ERROR
Timing error.
Definition ata8520e.h:111
@ ATA8520E_SIGFOX_BUILDING_FRAME_ERROR
Error building frame.
Definition ata8520e.h:108
@ ATA8520E_SIGFOX_MANUFACTURER_ERROR
Manufacturer error.
Definition ata8520e.h:98
@ ATA8520E_SIGFOX_GET_VOLTAGE_TEMP_ERROR
Get voltage/temperature error.
Definition ata8520e.h:103
@ ATA8520E_SIGFOX_FRAME_SIZE_ERROR
Frame size error.
Definition ata8520e.h:101
@ ATA8520E_SIGFOX_API_ERROR
API error indication.
Definition ata8520e.h:105
@ ATA8520E_SIGFOX_STATE_MACHINE_ERROR
State machine error.
Definition ata8520e.h:100
Adds include for missing inttype definitions.
Mutex for thread synchronization.
Low-level SPI peripheral driver interface definition.
Initialization parameters.
Definition ata8520e.h:118
spi_clk_t spi_clk
SPI clock speed.
Definition ata8520e.h:120
gpio_t reset_pin
Reset pin.
Definition ata8520e.h:124
gpio_t power_pin
Power pin.
Definition ata8520e.h:123
spi_t spi
SPI device.
Definition ata8520e.h:119
gpio_t cs_pin
Chip select pin.
Definition ata8520e.h:121
gpio_t int_pin
IRQ pin.
Definition ata8520e.h:122
device descriptor
Definition ata8520e.h:130
mutex_t event_lock
mutex for waiting for event
Definition ata8520e.h:134
uint8_t internal_state
current state of the device
Definition ata8520e.h:132
uint8_t event_received
check if an event was received
Definition ata8520e.h:133
ata8520e_params_t params
Device parameters.
Definition ata8520e.h:131
Mutex structure.
Definition mutex.h:36