blob: 20b9a8bff0801639b36ba7e8be360e92f7bc0bc9 [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
Austin Schuh812d0d12021-11-04 20:16:48 -070019extern void InitializeCTREPCM();
20extern void InitializeREVPH();
Brian Silverman8fce7482020-01-05 13:18:21 -080021extern void InitializeAccelerometer();
22extern void InitializeAddressableLED();
23extern void InitializeAnalogAccumulator();
Austin Schuh1e69f942020-11-14 15:06:14 -080024extern void InitializeAnalogGyro();
Brian Silverman8fce7482020-01-05 13:18:21 -080025extern void InitializeAnalogInput();
26extern void InitializeAnalogInternal();
27extern void InitializeAnalogOutput();
28extern void InitializeAnalogTrigger();
29extern void InitializeCAN();
30extern void InitializeCANAPI();
Brian Silverman8fce7482020-01-05 13:18:21 -080031extern void InitializeConstants();
32extern void InitializeCounter();
33extern void InitializeDigitalInternal();
34extern void InitializeDIO();
35extern void InitializeDMA();
36extern void InitializeDutyCycle();
37extern void InitializeEncoder();
38extern void InitializeFPGAEncoder();
39extern void InitializeFRCDriverStation();
40extern void InitializeHAL();
41extern void InitializeI2C();
Austin Schuh1e69f942020-11-14 15:06:14 -080042extern void InitializeInterrupts();
Maxwell Henderson80bec322024-01-09 15:48:44 -080043extern void InitializeLEDs();
Brian Silverman8fce7482020-01-05 13:18:21 -080044extern void InitializeMain();
45extern void InitializeNotifier();
Austin Schuh812d0d12021-11-04 20:16:48 -070046extern void InitializeCTREPDP();
47extern void InitializeREVPDH();
Brian Silverman8fce7482020-01-05 13:18:21 -080048extern void InitializePorts();
49extern void InitializePower();
50extern void InitializePWM();
51extern void InitializeRelay();
Austin Schuh1e69f942020-11-14 15:06:14 -080052extern void InitializeSerialPort();
Brian Silverman8fce7482020-01-05 13:18:21 -080053extern void InitializeSPI();
54extern void InitializeThreads();
Austin Schuh812d0d12021-11-04 20:16:48 -070055} // namespace hal::init