blob: 384fe583d66a1825ebe1e976c1b634ad86d3e96f [file] [log] [blame]
Brian Silverman41cdd3e2019-01-19 19:48:58 -08001/*----------------------------------------------------------------------------*/
2/* Copyright (c) 2017-2018 FIRST. All Rights Reserved. */
3/* Open Source Software - may be modified and shared by FRC teams. The code */
4/* must be accompanied by the FIRST BSD license file in the root directory of */
5/* the project. */
6/*----------------------------------------------------------------------------*/
7
8#pragma once
9
10#include <atomic>
11
12namespace hal {
13namespace init {
14extern std::atomic_bool HAL_IsInitialized;
15extern void RunInitialize();
16static inline void CheckInit() {
17 if (HAL_IsInitialized.load(std::memory_order_relaxed)) return;
18 RunInitialize();
19}
20
21extern void InitializeAccelerometer();
22extern void InitializeAnalogAccumulator();
23extern void InitializeAnalogGyro();
24extern void InitializeAnalogInput();
25extern void InitializeAnalogInternal();
26extern void InitializeAnalogOutput();
27extern void InitializeAnalogTrigger();
28extern void InitializeCAN();
29extern void InitializeCANAPI();
30extern void InitializeCompressor();
31extern void InitializeConstants();
32extern void InitializeCounter();
33extern void InitializeDigitalInternal();
34extern void InitializeDIO();
35extern void InitializeEncoder();
36extern void InitializeFPGAEncoder();
37extern void InitializeFRCDriverStation();
38extern void InitializeHAL();
39extern void InitializeI2C();
40extern void InitialzeInterrupts();
41extern void InitializeNotifier();
42extern void InitializePCMInternal();
43extern void InitializePDP();
44extern void InitializePorts();
45extern void InitializePower();
46extern void InitializePWM();
47extern void InitializeRelay();
48extern void InitializeSerialPort();
49extern void InitializeSolenoid();
50extern void InitializeSPI();
51extern void InitializeThreads();
52} // namespace init
53} // namespace hal