113 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			113 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/**
 | 
						|
 * @author Rémi Heredero
 | 
						|
 * @version. 0.0.0
 | 
						|
 * @date August 2023
 | 
						|
 * @file car.h
 | 
						|
 */
 | 
						|
 | 
						|
#ifndef CAR_H
 | 
						|
#define	CAR_H
 | 
						|
 | 
						|
/*************
 | 
						|
 * MODULE ID *
 | 
						|
 *************/
 | 
						|
#define ID_CONTROL      1   // Control the three-wheeler
 | 
						|
#define ID_JOYSTICK     2   // Inform control avout current joystick state
 | 
						|
#define ID_DISPLAY      3   // User interface to display informations
 | 
						|
#define ID_DRIVE        4   // Drive power motor of the three-wheeler
 | 
						|
#define ID_STEERING     5   // Drive the direction motor og the three-wheeler
 | 
						|
#define ID_SUPPLY       6   // Information about batteries, current, ...
 | 
						|
#define ID_BROADCAST    0   // Message to and from any module
 | 
						|
#define ID_DEBUG        0   // Message to and from any module
 | 
						|
 | 
						|
/*******************
 | 
						|
 * MEMORY ADRESSES *
 | 
						|
 *******************/
 | 
						|
#define MEMADD_CONTROL_STEERING_MODE        0x01
 | 
						|
#define MEMADD_CONTROL_ALIVE_TIME           0x02
 | 
						|
#define MEMADD_CONTROL_SPEED_FACTOR         0x03
 | 
						|
#define MEMADD_CONTROL_POWER_FACTOR         0x07
 | 
						|
#define MEMADD_CONTROL_STEERING_FACTOR      0x0B
 | 
						|
#define MEMADD_CONTROL_MAX_SPEED_FW         0x0F
 | 
						|
#define MEMADD_CONTROL_MAX_SPEED_BW         0x10
 | 
						|
#define MEMADD_JOYSTICK_MODE                0x11
 | 
						|
#define MEMADD_JOYSTICK_PARAM1              0x12
 | 
						|
#define MEMADD_JOYSTICK_PARAM2              0x13
 | 
						|
#define MEMADD_JOYSTICK_ALIVE_TIME          0x14
 | 
						|
#define MEMADD_DISPLAY_ALIVE_TIME           0x15
 | 
						|
#define MEMADD_DRIVE_SPEED_TIME             0x16
 | 
						|
#define MEMADD_DRIVE_STOP_TIME              0x17
 | 
						|
#define MEMADD_DRIVE_ALIVE_TIME             0x18
 | 
						|
#define MEMADD_STEERING_ALIVE_TIME          0x19
 | 
						|
#define MEMADD_BATTERY_VOLT_TIME            0x1A
 | 
						|
#define MEMADD_BATTERY_CURRENT_TIME         0x1B
 | 
						|
#define MEMADD_BATTERY_ENERGY_TIME          0x1C
 | 
						|
#define MEMADD_BATTERY_ALIVE_TIME           0x1D
 | 
						|
#define MEMADD_CONTROL_PARAM_MAX_CHANGE_STEERING 0x1E
 | 
						|
#define MEMADD_CONTROL_PARAM_MAX_CHANGE_DRIVE 0x1F
 | 
						|
 | 
						|
const bool ALWAYSTRUE = true;
 | 
						|
const bool ALWAYSFALSE = false;
 | 
						|
const uint8_t ALWAYS0 = 0;
 | 
						|
const uint8_t ALWAYS1 = 1;
 | 
						|
const uint8_t ALWAYS2 = 2;
 | 
						|
const uint8_t ALWAYS3 = 3;
 | 
						|
 | 
						|
typedef struct {
 | 
						|
    uint8_t     CONTROL_STEERING_MODE;
 | 
						|
    uint8_t     CONTROL_ALIVE_TIME;
 | 
						|
    uint32_t    CONTROL_SPEED_FACTOR;
 | 
						|
    uint32_t    CONTROL_POWER_FACTOR;
 | 
						|
    uint32_t    CONTROL_STEERING_FACTOR;
 | 
						|
    uint8_t     CONTROL_MAX_SPEED_FW;
 | 
						|
    uint8_t     CONTROL_MAX_SPEED_BW;
 | 
						|
    uint8_t     JOYSTICK_MODE;
 | 
						|
    uint8_t     JOYSTICK_PARAM1;
 | 
						|
    uint8_t     JOYSTICK_PARAM2;
 | 
						|
    uint8_t     JOYSTICK_ALIVE_TIME;
 | 
						|
    uint8_t     DISPLAY_ALIVE_TIME;
 | 
						|
    uint8_t     DRIVE_SPEED_TIME;
 | 
						|
    uint8_t     DRIVE_STOP_TIME;
 | 
						|
    uint8_t     DRIVE_ALIVE_TIME;
 | 
						|
    uint8_t     STEERING_ALIVE_TIME;
 | 
						|
    uint8_t     BATTERY_VOLT_TIME;
 | 
						|
    uint8_t     BATTERY_CURRENT_TIME;
 | 
						|
    uint8_t     BATTERY_ENERGY_TIME;
 | 
						|
    uint8_t     BATTERY_ALIVE_TIME;
 | 
						|
    uint8_t     CONTROL_PARAM_MAX_CHANGE_STEERING;
 | 
						|
    uint8_t     CONTROL_PARAM_MAX_CHANGE_DRIVE;
 | 
						|
 | 
						|
} KART_CST_TYPE;
 | 
						|
KART_CST_TYPE KART_CST;
 | 
						|
 | 
						|
typedef struct {
 | 
						|
    int16_t torque;     // 
 | 
						|
    uint32_t center;    // 
 | 
						|
    uint32_t position;  // 
 | 
						|
    uint8_t speed;      // 100m/h
 | 
						|
    bool brake;
 | 
						|
    uint8_t powerMode; // 0: eco - 1: normal - 2: race
 | 
						|
    /*
 | 
						|
     * 0 - ECO MODE
 | 
						|
     * Eco mod limit to 1/2 of the maximal current. 
 | 
						|
     * Position is 1/2 of the maximal angle
 | 
						|
     * 
 | 
						|
     * 1 - NORMAL MODE
 | 
						|
     * Standard ramp for normal mode
 | 
						|
     * Position is limited to 3/4 of the maximal 
 | 
						|
     * 
 | 
						|
     * 2 - RACE MODE
 | 
						|
     * 
 | 
						|
     * 
 | 
						|
     */
 | 
						|
} KART_VAR_TYPE;
 | 
						|
KART_VAR_TYPE eKart;
 | 
						|
 | 
						|
uint8_t rampTorque[101];
 | 
						|
uint8_t rampPosition[101];
 | 
						|
 | 
						|
 | 
						|
 | 
						|
#endif	/* CAR_H */
 | 
						|
 |