blob: 4c91b404feeb9f655950e2878149a4c4ba16b601 [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();
22extern void InitializeAnalogGyroData();
23extern void InitializeAnalogInData();
24extern void InitializeAnalogOutData();
25extern void InitializeAnalogTriggerData();
26extern void InitializeCanData();
27extern void InitializeCANAPI();
28extern void InitializeDigitalPWMData();
29extern void InitializeDIOData();
30extern void InitializeDriverStationData();
31extern void InitializeEncoderData();
32extern void InitializeI2CData();
33extern void InitializePCMData();
34extern void InitializePDPData();
35extern void InitializePWMData();
36extern void InitializeRelayData();
37extern void InitializeRoboRioData();
James Kuszmaul4f3ad3c2019-12-01 16:35:21 -080038extern void InitializeSimDeviceData();
Brian Silverman41cdd3e2019-01-19 19:48:58 -080039extern void InitializeSPIAccelerometerData();
40extern void InitializeSPIData();
41extern void InitializeAccelerometer();
42extern void InitializeAnalogAccumulator();
43extern void InitializeAnalogGyro();
44extern void InitializeAnalogInput();
45extern void InitializeAnalogInternal();
46extern void InitializeAnalogOutput();
47extern void InitializeCAN();
48extern void InitializeCompressor();
49extern void InitializeConstants();
50extern void InitializeCounter();
51extern void InitializeDigitalInternal();
52extern void InitializeDIO();
53extern void InitializeDriverStation();
54extern void InitializeEncoder();
55extern void InitializeExtensions();
56extern void InitializeHAL();
57extern void InitializeI2C();
58extern void InitializeInterrupts();
James Kuszmaul4f3ad3c2019-12-01 16:35:21 -080059extern void InitializeMain();
Brian Silverman41cdd3e2019-01-19 19:48:58 -080060extern void InitializeMockHooks();
61extern void InitializeNotifier();
62extern void InitializePDP();
63extern void InitializePorts();
64extern void InitializePower();
65extern void InitializePWM();
66extern void InitializeRelay();
67extern void InitializeSerialPort();
James Kuszmaul4f3ad3c2019-12-01 16:35:21 -080068extern void InitializeSimDevice();
Brian Silverman41cdd3e2019-01-19 19:48:58 -080069extern void InitializeSolenoid();
70extern void InitializeSPI();
71extern void InitializeThreads();
72
73} // namespace init
74} // namespace hal