blob: c54660f00a8b196605ae48036c8f754c483c8cb3 [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 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();
31extern void InitializeCompressor();
32extern void InitializeConstants();
33extern void InitializeCounter();
34extern void InitializeDigitalInternal();
35extern void InitializeDIO();
36extern void InitializeDMA();
37extern void InitializeDutyCycle();
38extern void InitializeEncoder();
39extern void InitializeFPGAEncoder();
40extern void InitializeFRCDriverStation();
41extern void InitializeHAL();
42extern void InitializeI2C();
Austin Schuh1e69f942020-11-14 15:06:14 -080043extern void InitializeInterrupts();
Brian Silverman8fce7482020-01-05 13:18:21 -080044extern void InitializeMain();
45extern void InitializeNotifier();
46extern void InitializePCMInternal();
47extern void InitializePDP();
48extern 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 InitializeSolenoid();
54extern void InitializeSPI();
55extern void InitializeThreads();
56} // namespace init
57} // namespace hal