blob: 29efac5c7d89394f055711b2ca96415af4100fd3 [file] [log] [blame]
Brian Silverman8fce7482020-01-05 13:18:21 -08001/*----------------------------------------------------------------------------*/
Austin Schuh1e69f942020-11-14 15:06:14 -08002/* Copyright (c) 2017-2020 FIRST. All Rights Reserved. */
Brian Silverman8fce7482020-01-05 13:18:21 -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();
22extern void InitializeAddressableLEDData();
23extern void InitializeAnalogGyroData();
24extern void InitializeAnalogInData();
25extern void InitializeAnalogOutData();
26extern void InitializeAnalogTriggerData();
27extern void InitializeCanData();
28extern void InitializeCANAPI();
29extern void InitializeDigitalPWMData();
30extern void InitializeDutyCycleData();
31extern void InitializeDIOData();
32extern void InitializeDutyCycle();
33extern void InitializeDriverStationData();
34extern void InitializeEncoderData();
35extern void InitializeI2CData();
36extern void InitializePCMData();
37extern void InitializePDPData();
38extern void InitializePWMData();
39extern void InitializeRelayData();
40extern void InitializeRoboRioData();
41extern void InitializeSimDeviceData();
42extern void InitializeSPIAccelerometerData();
43extern void InitializeSPIData();
44extern void InitializeAccelerometer();
45extern void InitializeAddressableLED();
46extern void InitializeAnalogAccumulator();
47extern void InitializeAnalogGyro();
48extern void InitializeAnalogInput();
49extern void InitializeAnalogInternal();
50extern void InitializeAnalogOutput();
Austin Schuh1e69f942020-11-14 15:06:14 -080051extern void InitializeAnalogTrigger();
Brian Silverman8fce7482020-01-05 13:18:21 -080052extern void InitializeCAN();
53extern void InitializeCompressor();
54extern void InitializeConstants();
55extern void InitializeCounter();
56extern void InitializeDigitalInternal();
57extern void InitializeDIO();
58extern void InitializeDriverStation();
59extern void InitializeEncoder();
60extern void InitializeExtensions();
61extern void InitializeHAL();
62extern void InitializeI2C();
63extern void InitializeInterrupts();
64extern void InitializeMain();
65extern void InitializeMockHooks();
66extern void InitializeNotifier();
67extern void InitializePDP();
68extern void InitializePorts();
69extern void InitializePower();
70extern void InitializePWM();
71extern void InitializeRelay();
72extern void InitializeSerialPort();
73extern void InitializeSimDevice();
74extern void InitializeSolenoid();
75extern void InitializeSPI();
76extern void InitializeThreads();
77
78} // namespace init
79} // namespace hal