#ifndef CONFIG_H_
#define CONFIG_H_
#define DEBUG_MODE 0
#define DEBUG_DATA 1
// --------------------------------------------------------------------------
// MOTOR
// --------------------------------------------------------------------------
// motor type (0=48V 1=36V)
// DO NOT ENTER OTHER VALUES!
#define MOTOR_TYPE 0
// experimental high cadence mode (1=ENABLED)
#define EXPERIMENTAL_HIGH_CADENCE_MODE 1
// motor acceleration adjustment
#define MOTOR_ACCELERATION 15
/* VALUES NEED VALIDATION FROM USER FEEDBACK
Default value = 0 %
36 volt motor, 36 volt battery = 35 %
36 volt motor, 48 volt battery = 5 %
36 volt motor, 52 volt battery = 0 %
48 volt motor, 36 volt battery = 45 %
48 volt motor, 48 volt battery = 35 %
48 volt motor, 52 volt battery = 30 % */
// assist without pedal rotation (1=ENABLED)
#define MOTOR_ASSISTANCE_WITHOUT_PEDAL_ROTATION 0
// assist without pedal rotation threshold
// max value 100, recommended range between 10-20
#define ASSISTANCE_WITHOUT_PEDAL_ROTATION_THRESHOLD 20
// pedal torque conversion (optional calibration)
#define PEDAL_TORQUE_PER_10_BIT_ADC_STEP_X100 67
// cadence sensor high percentage (calibration required)
#define CADENCE_SENSOR_PULSE_HIGH_PERCENTAGE_X10 500
// --------------------------------------------------------------------------
// BATTERY
// --------------------------------------------------------------------------
// maximum battery current (Amp)
#define BATTERY_CURRENT_MAX 20
// battery capacity (Watt/h)
#define TARGET_MAX_BATTERY_POWER 850
// number of cells in series (7=24V 10=36V 13=48V 14=52V)
#define BATTERY_CELLS_NUMBER 13
// battery internal resistance (milliohms)
#define BATTERY_PACK_RESISTANCE 196
// battery low-cut-off voltage (Volt)
#define BATTERY_LOW_VOLTAGE_CUT_OFF 39
// battery voltage calibration (95% to 105%)
#define ACTUAL_BATTERY_VOLTAGE_PERCENT 100
// battery capacity calibration (max 100%)
#define ACTUAL_BATTERY_CAPACITY_PERCENT 100
// li-ion cell
#define LI_ION_CELL_OVERVOLT 4.30
#define LI_ION_CELL_RESET_SOC_PERCENT 4.10
// full
#define LI_ION_CELL_VOLTS_FULL 3.95
// 4 bars
#define LI_ION_CELL_VOLTS_3_OF_4 3.70
#define LI_ION_CELL_VOLTS_2_OF_4 3.45
#define LI_ION_CELL_VOLTS_1_OF_4 3.25
// 6 bars
#define LI_ION_CELL_VOLTS_5_OF_6 3.85
#define LI_ION_CELL_VOLTS_4_OF_6 3.70
#define LI_ION_CELL_VOLTS_3_OF_6 3.55
#define LI_ION_CELL_VOLTS_2_OF_6 3.40
#define LI_ION_CELL_VOLTS_1_OF_6 3.25
// empty
#define LI_ION_CELL_VOLTS_EMPTY 2.90
// --------------------------------------------------------------------------
// BIKE
// --------------------------------------------------------------------------
// wheel perimeter(mm)
#define WHEEL_PERIMETER 2215
// wheel max speed (km/h)
#define WHEEL_MAX_SPEED 99
// --------------------------------------------------------------------------
// FUNCTION
// --------------------------------------------------------------------------
// enable functions (1=ENABLED)
#define ENABLE_LIGHTS 1
#define ENABLE_WALK_ASSIST 1
#define ENABLE_BRAKE_SENSOR 1
#define ENABLE_THROTTLE 1
#define ENABLE_TEMPERATURE_LIMIT 0
// FUNCTIONS ENABLED ON STARTUP
// street mode (0=OFFROAD 1=STREET)
#define ENABLE_STREET_MODE_ON_STARTUP 0
// display mode (0=DISPLAY DATA 1=SET PARAMETER)
#define ENABLE_SET_PARAMETER_ON_STARTUP 0
// odometer compensation (1=ENABLED)
#define ENABLE_ODOMETER_COMPENSATION 1
// cadence sensor mode (0=STANDARD 1=ADVANCED)
#define CADENCE_SENSOR_MODE_ON_STARTUP 0
// lights configuration (0 to 8)
#define LIGHTS_CONFIGURATION_ON_STARTUP 0
// ridind mode (1=POWER 2=TORQUE 3=CADENCE 4=EMTB)
#define RIDING_MODE_ON_STARTUP 4
// lights configuration
#define LIGHTS_CONFIGURATION_1 1
#define LIGHTS_CONFIGURATION_2 6
#define LIGHTS_CONFIGURATION_3 7
/* NOTE: regarding the various light modes
(0) lights ON when enabled
(1) lights FLASHING when enabled
(2) lights ON when enabled and BRAKE-FLASHING when braking
(3) lights FLASHING when enabled and ON when braking
(4) lights FLASHING when enabled and BRAKE-FLASHING when braking
(5) lights ON when enabled, but ON when braking regardless if lights are enabled
(6) lights ON when enabled, but BRAKE-FLASHING when braking regardless if lights are enabled
(7) lights FLASHING when enabled, but ON when braking regardless if lights are enabled
(8) lights FLASHING when enabled, but BRAKE-FLASHING when braking regardless if lights are enabled
*/
// STREET MODE FUNCTION
// street mode power limit (1=ENABLED)
#define STREET_MODE_POWER_LIMIT_ENABLED 1
// street mode power limit value (Watt)
#define STREET_MODE_POWER_LIMIT 250
// street mode speed limit (km/h)
#define STREET_MODE_SPEED_LIMIT 24
// street mode enable other functions
#define STREET_MODE_THROTTLE_ENABLED 0
#define STREET_MODE_CRUISE_ENABLED 0
// throttle ADC values (optional)
#define ADC_THROTTLE_MIN_VALUE 47
#define ADC_THROTTLE_MAX_VALUE 176
// motor temperature limit (sensor required)
#define MOTOR_TEMPERATURE_MIN_VALUE_LIMIT 65
#define MOTOR_TEMPERATURE_MAX_VALUE_LIMIT 80
// enable temperature error at min limit value
#define ENABLE_TEMPERATURE_ERROR_MIN_LIMIT 1
// --------------------------------------------------------------------------
// DISPLAY
// --------------------------------------------------------------------------
// display type
#define ENABLE_VLCD6 0
#define ENABLE_VLCD5 1
#define ENABLE_XH18 0
// display parameters
#define ENABLE_DISPLAY_WORKING_FLAG 1
#define ENABLE_DISPLAY_ALWAYS_ON 0
#define ENABLE_WHEEL_MAX_SPEED_FROM_DISPLAY 0
// delay menu function (0.1 sec)
#define DELAY_MENU_ON 20
// enable delay return to default display mode
#define ENABLE_RETURN_DEFAULT_DISPLAY_MODE 1
// delay return to default display mode (seconds)
#define DELAY_DISPLAY_MODE_DEFAULT 60
// displays double data (0=3 VALUES 1=6 VALUES)
#define ENABLE_DISPLAY_DOUBLE_DATA 0
// delay display data (0.1 sec, max 255)
// first series
#define DELAY_DISPLAY_DATA_1 50
#define DELAY_DISPLAY_DATA_2 250
#define DELAY_DISPLAY_DATA_3 250
// second series
#define DELAY_DISPLAY_DATA_4 250
#define DELAY_DISPLAY_DATA_5 50
#define DELAY_DISPLAY_DATA_6 50
// display data configuration
// first series
#define DISPLAY_DATA_1 2
#define DISPLAY_DATA_2 3
#define DISPLAY_DATA_3 7
// second series
#define DISPLAY_DATA_4 4
#define DISPLAY_DATA_5 5
#define DISPLAY_DATA_6 6
/* display data code configuration
0 - motor temperature (°C)
1 - battery SOC remaining (%)
2 - battery voltage (Volt)
3 - battery current (Amp)
4 - absorbed motor power (Watt/10)
5 - adc torque sensor (8 bit)
6 - adc torque sensor (10 bit)
7 - pedal cadence (rpm)
*/
// --------------------------------------------------------------------------
// ASSIST
// --------------------------------------------------------------------------
// CAUTION: all assist values _LEVEL_0 for safety must be set to zero
// power assist (% max 500)
#define POWER_ASSIST_LEVEL_0 0
#define POWER_ASSIST_LEVEL_1 40
#define POWER_ASSIST_LEVEL_2 70
#define POWER_ASSIST_LEVEL_3 120
#define POWER_ASSIST_LEVEL_4 500
// torque assist (max 254)
#define TORQUE_ASSIST_LEVEL_0 0
#define TORQUE_ASSIST_LEVEL_1 40
#define TORQUE_ASSIST_LEVEL_2 70
#define TORQUE_ASSIST_LEVEL_3 120
#define TORQUE_ASSIST_LEVEL_4 254
// cadence assist (max 254)
#define CADENCE_ASSIST_LEVEL_0 0
#define CADENCE_ASSIST_LEVEL_1 40
#define CADENCE_ASSIST_LEVEL_2 70
#define CADENCE_ASSIST_LEVEL_3 120
#define CADENCE_ASSIST_LEVEL_4 254
// eMTB assist (sensitivity 0 to 20)
#define EMTB_ASSIST_LEVEL_0 0
#define EMTB_ASSIST_LEVEL_1 4
#define EMTB_ASSIST_LEVEL_2 7
#define EMTB_ASSIST_LEVEL_3 12
#define EMTB_ASSIST_LEVEL_4 20
// walk assist (max 100)
#define WALK_ASSIST_LEVEL_0 0
#define WALK_ASSIST_LEVEL_1 30
#define WALK_ASSIST_LEVEL_2 50
#define WALK_ASSIST_LEVEL_3 75
#define WALK_ASSIST_LEVEL_4 100
// walk assist threshold (speed limit max km/h)
#define WALK_ASSIST_THRESHOLD_SPEED 25
// walk assist debounce (brake sensor required)
#define WALK_ASSIST_DEBOUNCE_ENABLED 0
// walk assist debounce time (0.1 sec, max 255)
#define WALK_ASSIST_DEBOUNCE_TIME 50
// cruise level (target km/h, brake sensor required)
#define CRUISE_TARGET_SPEED_LEVEL_0 0
#define CRUISE_TARGET_SPEED_LEVEL_1 15
#define CRUISE_TARGET_SPEED_LEVEL_2 18
#define CRUISE_TARGET_SPEED_LEVEL_3 21
#define CRUISE_TARGET_SPEED_LEVEL_4 24
// cruise function with pedal rotation
#define CRUISE_MODE_CADENCE_ENABLED 1
// cruise threshold (speed limit min km/h)
#define CRUISE_THRESHOLD_SPEED 10
#endif // CONFIG_H_