text: /*----------------------------------------------------------------------------*/
  /* Copyright (c) 2017-2019 FIRST. All Rights Reserved.                        */
  /* Open Source Software - may be modified and shared by FRC teams. The code   */
  /* must be accompanied by the FIRST BSD license file in the root directory of */
  /* the project.                                                               */
  /*----------------------------------------------------------------------------*/
  
  #pragma once
  
  #include "NotifyListener.h"
  #include "hal/Types.h"
  
  #ifdef __cplusplus
  extern "C" {
  #endif
  
  void HALSIM_ResetPCMData(int32_t index);
  int32_t HALSIM_RegisterPCMSolenoidInitializedCallback(
      int32_t index, int32_t channel, HAL_NotifyCallback callback, void* param,
      HAL_Bool initialNotify);
  void HALSIM_CancelPCMSolenoidInitializedCallback(int32_t index, int32_t channel,
                                                   int32_t uid);
  HAL_Bool HALSIM_GetPCMSolenoidInitialized(int32_t index, int32_t channel);
  void HALSIM_SetPCMSolenoidInitialized(int32_t index, int32_t channel,
                                        HAL_Bool solenoidInitialized);
  
  int32_t HALSIM_RegisterPCMSolenoidOutputCallback(int32_t index, int32_t channel,
                                                   HAL_NotifyCallback callback,
                                                   void* param,
                                                   HAL_Bool initialNotify);
  void HALSIM_CancelPCMSolenoidOutputCallback(int32_t index, int32_t channel,
                                              int32_t uid);
  HAL_Bool HALSIM_GetPCMSolenoidOutput(int32_t index, int32_t channel);
  void HALSIM_SetPCMSolenoidOutput(int32_t index, int32_t channel,
                                   HAL_Bool solenoidOutput);
  
  int32_t HALSIM_RegisterPCMCompressorInitializedCallback(
      int32_t index, HAL_NotifyCallback callback, void* param,
      HAL_Bool initialNotify);
  void HALSIM_CancelPCMCompressorInitializedCallback(int32_t index, int32_t uid);
  HAL_Bool HALSIM_GetPCMCompressorInitialized(int32_t index);
  void HALSIM_SetPCMCompressorInitialized(int32_t index,
                                          HAL_Bool compressorInitialized);
  
  int32_t HALSIM_RegisterPCMCompressorOnCallback(int32_t index,
                                                 HAL_NotifyCallback callback,
                                                 void* param,
                                                 HAL_Bool initialNotify);
  void HALSIM_CancelPCMCompressorOnCallback(int32_t index, int32_t uid);
  HAL_Bool HALSIM_GetPCMCompressorOn(int32_t index);
  void HALSIM_SetPCMCompressorOn(int32_t index, HAL_Bool compressorOn);
  
  int32_t HALSIM_RegisterPCMClosedLoopEnabledCallback(int32_t index,
                                                      HAL_NotifyCallback callback,
                                                      void* param,
                                                      HAL_Bool initialNotify);
  void HALSIM_CancelPCMClosedLoopEnabledCallback(int32_t index, int32_t uid);
  HAL_Bool HALSIM_GetPCMClosedLoopEnabled(int32_t index);
  void HALSIM_SetPCMClosedLoopEnabled(int32_t index, HAL_Bool closedLoopEnabled);
  
  int32_t HALSIM_RegisterPCMPressureSwitchCallback(int32_t index,
                                                   HAL_NotifyCallback callback,
                                                   void* param,
                                                   HAL_Bool initialNotify);
  void HALSIM_CancelPCMPressureSwitchCallback(int32_t index, int32_t uid);
  HAL_Bool HALSIM_GetPCMPressureSwitch(int32_t index);
  void HALSIM_SetPCMPressureSwitch(int32_t index, HAL_Bool pressureSwitch);
  
  int32_t HALSIM_RegisterPCMCompressorCurrentCallback(int32_t index,
                                                      HAL_NotifyCallback callback,
                                                      void* param,
                                                      HAL_Bool initialNotify);
  void HALSIM_CancelPCMCompressorCurrentCallback(int32_t index, int32_t uid);
  double HALSIM_GetPCMCompressorCurrent(int32_t index);
  void HALSIM_SetPCMCompressorCurrent(int32_t index, double compressorCurrent);
  
  void HALSIM_GetPCMAllSolenoids(int32_t index, uint8_t* values);
  void HALSIM_SetPCMAllSolenoids(int32_t index, uint8_t values);
  
  void HALSIM_RegisterPCMAllNonSolenoidCallbacks(int32_t index,
                                                 HAL_NotifyCallback callback,
                                                 void* param,
                                                 HAL_Bool initialNotify);
  
  void HALSIM_RegisterPCMAllSolenoidCallbacks(int32_t index, int32_t channel,
                                              HAL_NotifyCallback callback,
                                              void* param,
                                              HAL_Bool initialNotify);
  
  #ifdef __cplusplus
  }  // extern "C"
  #endif
  