nrfcxx
0.1.0
C++-17 Framework for Nordic nRF5 Devices
|
Primary header for nrfcxx interface dependencies. More...
#include <cstddef>
#include <cstdint>
#include <functional>
#include <pabigot/container.hpp>
#include <nrfcxx/version.hpp>
#include <nrfcxx/nrf51/core.hpp>
Go to the source code of this file.
Data Structures | |
struct | nrfcxx::nrf5::peripheral< S > |
Capture information about an nRF5 peripheral instance. More... | |
struct | nrfcxx::nrf5::GPIO_Instance< I > |
A traits type identifying GPIO peripheral instances. More... | |
class | nrfcxx::null_mutex |
RAII class that performs no mutex operations. More... | |
class | nrfcxx::primask |
RAII class to block exceptions. More... | |
class | nrfcxx::nvic_BlockIRQ |
RAII class to block a peripheral interrupt. More... | |
class | nrfcxx::mutex_irq< IRQn > |
nvic_BlockIRQ as a template type. More... | |
class | nrfcxx::event_set |
A record of events that occur asynchonously. More... | |
class | nrfcxx::event_set_copy |
A helper class for processing snapshot nrfcxx::event_set values. More... | |
class | nrfcxx::systemState |
A class supporting watchdog configuration and cross-reset retention of state. More... | |
class | nrfcxx::systemState::scoped_sleeper |
RAII instance that configures the operational mode to enter OM_SLEEP when constructed, and to leave OM_SLEEP when destructed. More... | |
struct | nrfcxx::systemState::state_type |
The raw data supporting cross-reset state transfer. More... | |
class | nrfcxx::watchdog_extended_channel |
Support for extended watchdog channels. More... | |
Namespaces | |
nrfcxx | |
Primary namespace for nrfcxx functionality. | |
nrfcxx::board | |
Namespace holding board-specific configuration data. | |
nrfcxx::nrf5 | |
Namespace holding support for bare nRF5 peripheral instances. | |
nrfcxx::nrf5::series | |
Namespace holding series-specific implementations that support the genericized API of nrfcxx. | |
nrfcxx::sensor | |
Namespace for abstractions of various sensors. | |
nrfcxx::misc | |
Namespace for abstractions that aren't handled in another namespace. | |
Macros | |
#define | NRFCXX_FAKED 0 |
Macro defined to an nRF5 series number for host-based testing. More... | |
#define | NRF_SERIES 51 |
Nordic nRF5 series. More... | |
#define | ADCSeriesVariant_IRQHandler [SA]ADC_IRQHandler |
Identifier for series-specific ADC IRQ entrypoint. More... | |
#define | NRFCXX_CROSS_COMPILING 1 |
Macro defined to preprocessor true when cross-compiling. More... | |
Typedefs | |
using | nrfcxx::notifier_type = std::function< void()> |
Type used to hold a notifier. More... | |
Enumerations | |
enum | nrfcxx::FailSafeCode : unsigned int { nrfcxx::FailSafeCode::SYSTEM_BASE = 0xbad00000, nrfcxx::FailSafeCode::NO_SUCH_PERIPHERAL = SYSTEM_BASE + 1, nrfcxx::FailSafeCode::MEMORY_POOL = SYSTEM_BASE + 2, nrfcxx::FailSafeCode::HEAP_OVERRUN = SYSTEM_BASE + 3, nrfcxx::FailSafeCode::STACK_OVERFLOW = SYSTEM_BASE + 4, nrfcxx::FailSafeCode::PERSIST_VIOLATION = SYSTEM_BASE + 5, nrfcxx::FailSafeCode::INTERNAL_ERROR = SYSTEM_BASE + 6, nrfcxx::FailSafeCode::INCOMPLETE_SETUP = SYSTEM_BASE + 7, nrfcxx::FailSafeCode::RESOURCE_VIOLATION = SYSTEM_BASE + 8, nrfcxx::FailSafeCode::API_VIOLATION = SYSTEM_BASE + 9, nrfcxx::FailSafeCode::BOARD_INIT_FAILURE = SYSTEM_BASE + 10, nrfcxx::FailSafeCode::EVENT_LOOP_TERMINATED = SYSTEM_BASE + 11, nrfcxx::FailSafeCode::APPLICATION_BASE = 0xbad10000 } |
Enumerated constants used in failsafe() calls. More... | |
Functions | |
int | nrfcxx::board::initialize (bool enable_hfxt=false) |
Perform board-specific initialization. More... | |
void | nrfcxx::delay_us (unsigned int number_of_us) |
Delay for exactly the specified duration. More... | |
void | nrfcxx::sleep_ms (unsigned int dur_ms) |
Sleep for the specified duration. More... | |
static void | nrfcxx::nvic_EnableIRQ (int irqn) |
Wrapper around NVIC_EnableIRQ to work around issues with peripheral::IRQn. | |
static void | nrfcxx::nvic_DisableIRQ (int irqn) |
Wrapper around NVIC_DisableIRQ to work around issues with peripheral::IRQn. | |
static void | nrfcxx::nvic_GetPendingIRQ (int irqn) |
Wrapper around NVIC_GetPending to work around issues with peripheral::IRQn. | |
static void | nrfcxx::nvic_SetPendingIRQ (int irqn) |
Wrapper around NVIC_SetPending to work around issues with peripheral::IRQn. | |
static void | nrfcxx::nvic_ClearPendingIRQ (int irqn) |
Wrapper around NVIC_ClearPending to work around issues with peripheral::IRQn. | |
static void | nrfcxx::nvic_SetPriority (int irqn, uint32_t priority) |
Wrapper around NVIC_SetPriority to work around issues with peripheral::IRQn. | |
static void | nrfcxx::nvic_GetPriority (int irqn) |
Wrapper around NVIC_GetPriority to work around issues with peripheral::IRQn. | |
static FailSafeCode | nrfcxx::operator+ (const FailSafeCode &lhs, unsigned int incr) |
void | nrfcxx::failsafe (FailSafeCode code) |
Record a critical system failure and reset the system. More... | |
void | nrfcxx::failsafe (unsigned int code) |
int | nrfcxx::stack_space_remaining () |
Determine how much of the reserved stack space remains. More... | |
void | nrfcxx::validate_stack_pointer () |
Force a system failure if the stack is beyond its configured maximum depth. More... | |
unsigned int | nrfcxx::stack_fill_unused (unsigned int marker) |
Fill all space between the top of the heap and the current stack pointer with the provided value. More... | |
unsigned int | nrfcxx::stack_infer_highwater (unsigned int marker) |
Check the space between the top of the heap and the current stack pointer for matches to the provided marker. More... | |
uint32_t | nrfcxx::application_crc32 (bool exclude_data=false) |
Calculate a checksum of the application content. More... | |
Primary header for nrfcxx interface dependencies.
Including this module introduces a dependency on CMSIS headers and Nordic device peripheral structures. It does not import the Nordic device bitfield macro definitions as with <nrfcxx/impl.hpp>.
The nrfcxx namespace defines nrfcxx::peripheral instances for all peripherals on the supported product, such as CLOCK
, TWI0
, or SAADC
. Some peripherals are common and compatible between products; others are only available on a specific product. Note that these objects appear in the documentation regardless of series and availability on a specific product.
#define ADCSeriesVariant_IRQHandler [SA]ADC_IRQHandler |
Identifier for series-specific ADC IRQ entrypoint.
For nRF51 this is ADC_IRQHandler
. For nRF52 this is SAADC_IRQHandler.
The define is provided by the series-specific core.hpp
header.
#define NRF_SERIES 51 |
Nordic nRF5 series.
Derived from the externally provided device identifier (NRF51
, NRF52832
, etc) this is used in preprocessor directives when series-specific API is required. The value is either 51 or 52.
#define NRFCXX_CROSS_COMPILING 1 |
Macro defined to preprocessor true when cross-compiling.
This is defined to preprocessor false when building on a host for non-embedded testing of implementation.
#define NRFCXX_FAKED 0 |
Macro defined to an nRF5 series number for host-based testing.
When defined to a non-zero value this causes the nRF5 register, bitfield, and CMSIS headers to be included even when not cross-compiling. This allows references to structures and constants in header files even though the execution environment won't provide them.
In that situation NRFCXX_CROSS_COMPILING should be a preprocessor false (i.e. 0).