Files
Zendrive-simulator/ZenDrive Simulator/ZenDrive.h
2021-01-27 14:19:36 +01:00

111 lines
2.5 KiB
C++

/*
ZenDrive.h
Copyright (c) 2021, Valentin Boulanger
This library is a part of the ZenDrive simulator firmware.
Version : 1.0.0
*/
#ifndef ZENDRIVE_h
#define ZENDRIVE_h
#include "HID.h"
#if ARDUINO < 10606
#error The ZenDrive library requires Arduino IDE 1.6.6 or greater. Please update your IDE.
#endif
#if ARDUINO > 10606
#if !defined(USBCON)
#error The ZenDrive library can only be used with a USB MCU (e.g. Arduino Leonardo, Arduino Micro, etc.).
#endif
#endif
#if !defined(_USING_HID)
#warning "Using legacy HID core (non pluggable)"
#else
//================================================================================
//================================================================================
// ZenDrive Simulator (Gamepad)
class ZenDrive_
{
private:
// Gearshift module
uint8_t speeds; // (NEUTRAL;SPEED1;SPEED2;SPEED3;SPEED4;SPEED5;SPEED6;SPEEDR)
uint8_t handbrake;
//Pedals module
uint8_t clutch;
uint8_t brake;
uint8_t accelerator;
//Steering wheel module
uint16_t wheelCommands; // (BLINKER LEFT;BLINKER RIGHT;WARNING;LIGHTS;HEAD LIGHTS;FOGLIGHTS;STARTER;HORN;CRUISE;CRUISE +;CRUISE -;NOT USED;NOT USED;NOT USED;NOT USED;NOT USED)
int8_t steering;
public:
ZenDrive_();
void begin();
void end();
// Gearshift module
bool gearshiftNeedRefresh = false;
int currentSpeed = 0;
void switchNeutral();
void switchSpeed1();
void switchSpeed2();
void switchSpeed3();
void switchSpeed4();
void switchSpeed5();
void switchSpeed6();
void switchSpeedR();
void setHandbrake(int8_t value);
// Pedals module
bool pedalsNeedRefresh = false;
void setClutch(int8_t value);
void setBrake(int8_t value);
void setAccelerator(int8_t value);
// Steering wheel module
bool wheelNeedRefresh = false;
bool isBlinkerLeft = false;
void setBlinkerLeft(bool value);
bool isBlinkerRight = false;
void setBlinkerRight(bool value);
bool isWarning = false;
void setWarning(bool value);
bool isLights = false;
bool isRoadLights = false;
void switchLightsOn();
void switchRoadLights();
void switchLightsOff();
bool isHeadLights = false;
void setHeadLights(bool value);
bool isFogLights = false;
void setFogLights(bool value);
bool isStarter = false;
void setStarter(bool value);
bool isHorn = false;
void setHorn(bool value);
void activeCruise();
void increaseCruise();
void decreaseCruise();
void setDirection(uint8_t value);
void sendGearshiftStates();
void sendPedalsStates();
void sendWheelStates();
};
extern ZenDrive_ ZenDrive;
#endif
#endif