2021-01-25 15:48:10 +01:00
|
|
|
/*
|
|
|
|
|
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_();
|
|
|
|
|
|
2021-01-27 14:19:36 +01:00
|
|
|
void begin();
|
2021-01-25 15:48:10 +01:00
|
|
|
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
|