blob: c08df7398a0ed59c89a9772d804264f47fac8dae [file] [log] [blame]
Brian Silverman41cdd3e2019-01-19 19:48:58 -08001/*----------------------------------------------------------------------------*/
James Kuszmaul4f3ad3c2019-12-01 16:35:21 -08002/* Copyright (c) 2017-2019 FIRST. All Rights Reserved. */
Brian Silverman41cdd3e2019-01-19 19:48:58 -08003/* 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 InitializeAccelerometerData();
James Kuszmaul4b81d302019-12-14 20:53:14 -080022extern void InitializeAddressableLEDData();
Brian Silverman41cdd3e2019-01-19 19:48:58 -080023extern void InitializeAnalogGyroData();
24extern void InitializeAnalogInData();
25extern void InitializeAnalogOutData();
26extern void InitializeAnalogTriggerData();
27extern void InitializeCanData();
28extern void InitializeCANAPI();
29extern void InitializeDigitalPWMData();
James Kuszmaul4b81d302019-12-14 20:53:14 -080030extern void InitializeDutyCycleData();
Brian Silverman41cdd3e2019-01-19 19:48:58 -080031extern void InitializeDIOData();
James Kuszmaul4b81d302019-12-14 20:53:14 -080032extern void InitializeDutyCycle();
Brian Silverman41cdd3e2019-01-19 19:48:58 -080033extern void InitializeDriverStationData();
34extern void InitializeEncoderData();
35extern void InitializeI2CData();
36extern void InitializePCMData();
37extern void InitializePDPData();
38extern void InitializePWMData();
39extern void InitializeRelayData();
40extern void InitializeRoboRioData();
James Kuszmaul4f3ad3c2019-12-01 16:35:21 -080041extern void InitializeSimDeviceData();
Brian Silverman41cdd3e2019-01-19 19:48:58 -080042extern void InitializeSPIAccelerometerData();
43extern void InitializeSPIData();
44extern void InitializeAccelerometer();
James Kuszmaul4b81d302019-12-14 20:53:14 -080045extern void InitializeAddressableLED();
Brian Silverman41cdd3e2019-01-19 19:48:58 -080046extern void InitializeAnalogAccumulator();
47extern void InitializeAnalogGyro();
48extern void InitializeAnalogInput();
49extern void InitializeAnalogInternal();
50extern void InitializeAnalogOutput();
51extern void InitializeCAN();
52extern void InitializeCompressor();
53extern void InitializeConstants();
54extern void InitializeCounter();
55extern void InitializeDigitalInternal();
56extern void InitializeDIO();
57extern void InitializeDriverStation();
58extern void InitializeEncoder();
59extern void InitializeExtensions();
60extern void InitializeHAL();
61extern void InitializeI2C();
62extern void InitializeInterrupts();
James Kuszmaul4f3ad3c2019-12-01 16:35:21 -080063extern void InitializeMain();
Brian Silverman41cdd3e2019-01-19 19:48:58 -080064extern void InitializeMockHooks();
65extern void InitializeNotifier();
66extern void InitializePDP();
67extern void InitializePorts();
68extern void InitializePower();
69extern void InitializePWM();
70extern void InitializeRelay();
71extern void InitializeSerialPort();
James Kuszmaul4f3ad3c2019-12-01 16:35:21 -080072extern void InitializeSimDevice();
Brian Silverman41cdd3e2019-01-19 19:48:58 -080073extern void InitializeSolenoid();
74extern void InitializeSPI();
75extern void InitializeThreads();
76
77} // namespace init
78} // namespace hal