blob: 308e2f47cfb11e93119285e067245178fff86dad [file] [log] [blame]
Austin Schuh812d0d12021-11-04 20:16:48 -07001// Copyright (c) FIRST and other WPILib contributors.
2// Open Source Software; you can modify and/or share it under the terms of
3// the WPILib BSD license file in the root directory of this project.
Brian Silverman8fce7482020-01-05 13:18:21 -08004
5#pragma once
6
7#include <atomic>
8
Austin Schuh812d0d12021-11-04 20:16:48 -07009namespace hal::init {
Brian Silverman8fce7482020-01-05 13:18:21 -080010extern std::atomic_bool HAL_IsInitialized;
11extern void RunInitialize();
Austin Schuh812d0d12021-11-04 20:16:48 -070012inline void CheckInit() {
13 if (HAL_IsInitialized.load(std::memory_order_relaxed)) {
14 return;
15 }
Brian Silverman8fce7482020-01-05 13:18:21 -080016 RunInitialize();
17}
18
19extern void InitializeAccelerometerData();
20extern void InitializeAddressableLEDData();
21extern void InitializeAnalogGyroData();
22extern void InitializeAnalogInData();
23extern void InitializeAnalogOutData();
24extern void InitializeAnalogTriggerData();
25extern void InitializeCanData();
26extern void InitializeCANAPI();
27extern void InitializeDigitalPWMData();
28extern void InitializeDutyCycleData();
29extern void InitializeDIOData();
30extern void InitializeDutyCycle();
31extern void InitializeDriverStationData();
32extern void InitializeEncoderData();
33extern void InitializeI2CData();
Austin Schuh812d0d12021-11-04 20:16:48 -070034extern void InitializeCTREPCMData();
35extern void InitializeREVPHData();
36extern void InitializePowerDistributionData();
Brian Silverman8fce7482020-01-05 13:18:21 -080037extern void InitializePWMData();
38extern void InitializeRelayData();
39extern void InitializeRoboRioData();
40extern void InitializeSimDeviceData();
41extern void InitializeSPIAccelerometerData();
42extern void InitializeSPIData();
43extern void InitializeAccelerometer();
44extern void InitializeAddressableLED();
45extern void InitializeAnalogAccumulator();
46extern void InitializeAnalogGyro();
47extern void InitializeAnalogInput();
48extern void InitializeAnalogInternal();
49extern void InitializeAnalogOutput();
Austin Schuh1e69f942020-11-14 15:06:14 -080050extern void InitializeAnalogTrigger();
Brian Silverman8fce7482020-01-05 13:18:21 -080051extern void InitializeCAN();
Brian Silverman8fce7482020-01-05 13:18:21 -080052extern void InitializeConstants();
53extern void InitializeCounter();
54extern void InitializeDigitalInternal();
55extern void InitializeDIO();
56extern void InitializeDriverStation();
57extern void InitializeEncoder();
58extern void InitializeExtensions();
59extern void InitializeHAL();
60extern void InitializeI2C();
61extern void InitializeInterrupts();
62extern void InitializeMain();
63extern void InitializeMockHooks();
64extern void InitializeNotifier();
Austin Schuh812d0d12021-11-04 20:16:48 -070065extern void InitializePowerDistribution();
Brian Silverman8fce7482020-01-05 13:18:21 -080066extern void InitializePorts();
67extern void InitializePower();
Austin Schuh812d0d12021-11-04 20:16:48 -070068extern void InitializeCTREPCM();
69extern void InitializeREVPH();
Brian Silverman8fce7482020-01-05 13:18:21 -080070extern void InitializePWM();
71extern void InitializeRelay();
72extern void InitializeSerialPort();
73extern void InitializeSimDevice();
Brian Silverman8fce7482020-01-05 13:18:21 -080074extern void InitializeSPI();
75extern void InitializeThreads();
76
Austin Schuh812d0d12021-11-04 20:16:48 -070077} // namespace hal::init