diff options
Diffstat (limited to 'src/js_signal_event.c')
-rw-r--r-- | src/js_signal_event.c | 259 |
1 files changed, 85 insertions, 174 deletions
diff --git a/src/js_signal_event.c b/src/js_signal_event.c index ad3035a..712d51c 100644 --- a/src/js_signal_event.c +++ b/src/js_signal_event.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2019 TOYOTA MOTOR CORPORATION + * Copyright (c) 2017 TOYOTA MOTOR CORPORATION * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -22,13 +22,20 @@ #include <string.h> #include <sys/ioctl.h> #include <alloca.h> -#include <math.h> -#include <time.h> -#include <signal.h> -#include "wheel-service.h" +#include "af-steering-wheel-binding.h" #include "js_signal_event.h" +// Axis +#define JS_STEERING 0 +#define JS_THROTTLE 2 +#define JS_BRAKE 3 +// Button +#define JS_LEFT_PADDLE_SHIFTER 4 +#define JS_RIGHT_PADDLE_SHIFTER 5 +#define JS_TURN_SIGNAL_RIGHT 6 +#define JS_TURN_SIGNAL_LEFT 7 + // Property string #define VEHICLE_SPEED "VehicleSpeed" #define ENGINE_SPEED "EngineSpeed" @@ -38,89 +45,56 @@ #define STEERING_WHEEL_ANGLE "SteeringWheelAngle" #define TURN_SIGNAL_STATUS "TurnSignalStatus" #define LIGHT_STATUS_BRAKE "LightStatusBrake" -#define PARKING_STATUS_BRAKE "ParkingStatusBrake" -#define FUEL_LEVEL "FuelLevel" #define MAX_TRANSMISSION_GEAR_INFO 6 #define MIN_TRANSMISSION_GEAR_INFO 0 -enum eJsButtonEvent { - JS_BUTTON_X = 0, - JS_BUTTON_R = 1, - JS_BUTTON_O = 2, - JS_BUTTON_T = 3, - JS_BUTTON_R1 = 4, - JS_BUTTON_L1 = 5, - JS_BUTTON_R2 = 6, - JS_BUTTON_L2 = 7, - JS_BUTTON_SHARE = 8, - JS_BUTTON_OPTION = 9, - JS_BUTTON_R3 = 10, - JS_BUTTON_L3 = 11, - JS_BUTTON_PLUS = 19, - JS_BUTTON_MINUS = 20, - JS_BUTTON_SCROLL_R = 21, - JS_BUTTON_SCROLL_L = 22, - JS_BUTTON_ENTER = 23, - JS_BUTTON_PS = 24 -}; - -enum eJsAxisEvent { - JS_AXIS_STEERING = 0, - JS_AXIS_CLUTCH = 1, - JS_AXIS_ACCEL = 2, - JS_AXIS_BRAKE = 3, -}; - -enum eTransmissionGearInfo { +enum eTransmissionGearInfo +{ eTransmissionGearInfoLeft = 0, eTransmissionGearInfoRight = 1, }; -enum eTurnSignalStatus { +enum eTurnSignalStatus +{ eTurnSignalStatusOff = 0, - eTurnSignalStatusRight = 4, + eTurnSignalStatusRight = 1, eTurnSignalStatusLeft = 2, - eTurnSignalStatusHazard = 1 + eTurnSignalStatusHazard = 3 }; -double gearRatio[8] = { - 0.0, //Neutral - 1.0/4.12, //First - 1.0/2.84, //Second - 1.0/2.28, //Third - 1.0/1.45, //Fourth - 1.0/1.0, //Fifth - 1.0/0.69, //Sixth - 1.0/3.21 //Reverse +double gearRatio[8] = +{ + 0.0, //Neutral + 1.0/4.12, //First + 1.0/2.84, //Second + 1.0/2.28, //Third + 1.0/1.45, //Fourth + 1.0/1.0, //Fifth + 1.0/0.69, //Sixth + 1.0/3.21 //Reverse }; -static int gJsType=JS_TYPE_STEERING; -static int gCurAccPedalPos=0, gAccPedalPos=0; -static int gEngineSpeed=0; -static int gVehicleSpeed=0; -static float gBaseValue = 0.0; - +static int gAcceleratorPedalPosition = 0; static int gLightStatusBrake = 0; -static int gTransmissionGearInfo = 0; +static int gTransmissionGearInfo = 1; static int gSteeringWheelAngle = 0; -static int gParkingStatusBrake = 0; -static int gFuelLevel = 0; static enum eTurnSignalStatus gTurnSignalStatus = eTurnSignalStatusOff; -static void setLightStatusBrake(int val) +// Method to set value +static void setAcceleratorPedalPosition(int val) { - if(gLightStatusBrake != val) + if(gAcceleratorPedalPosition != val) { - gLightStatusBrake = val; + gAcceleratorPedalPosition = val; } } -static void setFuelLevel(int val) +static void setLightStatusBrake(int val) { - if(gFuelLevel != val) + if(gLightStatusBrake != val) { - gFuelLevel = val; + gLightStatusBrake = val; } } @@ -162,10 +136,6 @@ static void setTurnSignalStatus(int val, enum eTurnSignalStatus turn) { gTurnSignalStatus = eTurnSignalStatusLeft; } - else if(turn == eTurnSignalStatusHazard) - { - gTurnSignalStatus = eTurnSignalStatusHazard; - } } else { @@ -173,12 +143,27 @@ static void setTurnSignalStatus(int val, enum eTurnSignalStatus turn) } } -static void setParkingStatusBrake(int val) +// Method to calculate property +static int calcAcceleratorPedalPosition() { - if(gParkingStatusBrake != val) - { - gParkingStatusBrake = val; - } + return (int)(((double)(gAcceleratorPedalPosition - 32767)/(double)-65534.0)*(double)100.0); +} + +static int calcEngineSpeed() +{ + int acceleratorPedalPosition = calcAcceleratorPedalPosition(); + int engineSpeed = (int)acceleratorPedalPosition * 100; + + return engineSpeed; +} + +static int calcVehicleSpeed() +{ + int engineSpeed = calcEngineSpeed(); + double transmissionGearInfoRatio = gearRatio[(gTransmissionGearInfo == 128 ? 7 : gTransmissionGearInfo)]; + int vehicleSpeed = (int)(engineSpeed * transmissionGearInfoRatio / 100); + + return vehicleSpeed; } static int calcSteeringWheelAngle() @@ -189,7 +174,7 @@ static int calcSteeringWheelAngle() } // Method to update property -static void setCanValue(char *prop, int val) +static void updateValue(char *prop, int val) { unsigned int nProp = wheel_info->nData; for(unsigned int i = 0; i < nProp; i++) @@ -208,36 +193,38 @@ static void setCanValue(char *prop, int val) void updateTransmissionGearInfo() { - setCanValue(TRANSMISSION_GEAR_INFO, 5); + updateValue(TRANSMISSION_GEAR_INFO, gTransmissionGearInfo); } void updateTransmissionMode() { - setCanValue(TRANSMISSION_MODE, 0); + updateValue(TRANSMISSION_MODE, gTransmissionGearInfo); } static void updateAcceleratorPedalPosition() { - setCanValue(ACCELERATOR_PEDAL_POSITION, gAccPedalPos); - DBG_NOTICE("acceleratorPedalPosition : %d\n", gAccPedalPos); + int acceleratorPedalPosition; + + acceleratorPedalPosition = calcAcceleratorPedalPosition(); + updateValue(ACCELERATOR_PEDAL_POSITION, acceleratorPedalPosition); } static void updateEngineSpeed() { // Update EngineSpeed - gEngineSpeed = gBaseValue*3000+1000; - setCanValue(ENGINE_SPEED, gEngineSpeed); - DBG_DEBUG("engineSpeed : %d\n", gEngineSpeed); + int engineSpeed; + + engineSpeed = calcEngineSpeed(); + updateValue(ENGINE_SPEED, engineSpeed); } static void updateVehicleSpeed() { // Update VehicleSpeed - if(gBaseValue < 0) - gBaseValue = 0; - gVehicleSpeed = (int)(gBaseValue*9550/100)*100; - setCanValue(VEHICLE_SPEED, gVehicleSpeed); - DBG_DEBUG("vehicleSpeed : %d\n", gVehicleSpeed); + int vehicleSpeed; + + vehicleSpeed = calcVehicleSpeed(); + updateValue(VEHICLE_SPEED, vehicleSpeed); } static void updateLightStatusBrake() @@ -245,30 +232,18 @@ static void updateLightStatusBrake() int lightStatusBrake; lightStatusBrake = (gLightStatusBrake < 20000); - setCanValue(LIGHT_STATUS_BRAKE, lightStatusBrake); -} - -static void updateFuelLevel() -{ - int fuelLevel = (32511 - gFuelLevel)*256.0/65278.0; - DBG_DEBUG("fuelLevel: %d, gFuelLevel: %d \n", fuelLevel, gFuelLevel); - setCanValue(FUEL_LEVEL, fuelLevel); -} - -static void updateParkingStatusBrake() -{ - setCanValue(PARKING_STATUS_BRAKE, gParkingStatusBrake); + updateValue(LIGHT_STATUS_BRAKE, lightStatusBrake); } static void updateSteeringWheelAngle() { int steering = calcSteeringWheelAngle(); - setCanValue(STEERING_WHEEL_ANGLE, steering); + updateValue(STEERING_WHEEL_ANGLE, steering); } static void updateTurnSignalStatus() { - setCanValue(TURN_SIGNAL_STATUS, gTurnSignalStatus); + updateValue(TURN_SIGNAL_STATUS, gTurnSignalStatus); } // Method to handle joy stick event @@ -276,7 +251,7 @@ void newButtonValue(char number, int val) { switch (number) { - case JS_BUTTON_R1: //Left paddle shifter + case JS_LEFT_PADDLE_SHIFTER: //Left paddle shifter // Set gear position setTransmissionGearInfo(val, eTransmissionGearInfoLeft); @@ -286,7 +261,7 @@ void newButtonValue(char number, int val) updateVehicleSpeed(); break; - case JS_BUTTON_L1: //Right paddle shifter + case JS_RIGHT_PADDLE_SHIFTER: //Right paddle shifter // Set gear position setTransmissionGearInfo(val, eTransmissionGearInfoRight); @@ -296,7 +271,7 @@ void newButtonValue(char number, int val) updateVehicleSpeed(); break; - case JS_BUTTON_R2: //Right upper wheel button + case JS_TURN_SIGNAL_RIGHT: //Right upper wheel button // Set value setTurnSignalStatus(val, eTurnSignalStatusRight); @@ -304,27 +279,14 @@ void newButtonValue(char number, int val) updateTurnSignalStatus(); break; - case JS_BUTTON_L2: //Left upper wheel button + case JS_TURN_SIGNAL_LEFT: //Left upper wheel button // Set value setTurnSignalStatus(val, eTurnSignalStatusLeft); // Update property updateTurnSignalStatus(); break; - case JS_BUTTON_R3: - // Set value - setTurnSignalStatus(val, eTurnSignalStatusHazard); - - // Update property - updateTurnSignalStatus(); - break; - case JS_BUTTON_L3: - // Set value - setParkingStatusBrake(val); - // Update property - updateParkingStatusBrake(); - break; default: break; } @@ -332,24 +294,9 @@ void newButtonValue(char number, int val) void newAxisValue(char number, int val) { -// DBG_ERROR("#################number: %d, %d. \n", number, val); -// DBG_ERROR("#################gJsType: %d. \n", gJsType); - if ((JS_TYPE_GAME_CTL == gJsType) && (number == JS_AXIS_BRAKE)) - { - number = JS_AXIS_ACCEL; - } - else if ((JS_TYPE_GAME_CTL == gJsType) && (number == JS_AXIS_ACCEL)) - { - number = JS_AXIS_BRAKE; - } - else - { - //do nothing - } - switch (number) { - case JS_AXIS_STEERING: //Wheel angle, -32767 - 32767 + case JS_STEERING: //Wheel angle, -32767 - 32767 // Set value setSteeringWheelAngle(val); @@ -357,29 +304,17 @@ void newAxisValue(char number, int val) updateSteeringWheelAngle(); break; - case JS_AXIS_ACCEL: //Throttle, -32767 (depressed) - 32767 (undepressed) + case JS_THROTTLE: //Throttle, -32767 (depressed) - 32767 (undepressed) // Set origin value - if (JS_TYPE_GAME_CTL == gJsType) - { - gAccPedalPos = (int)(((double)val/(double)-32767.0)*(double)100.0); - } - else - { - gAccPedalPos = (int)(((double)(val - 32767)/(double)-65534.0)*(double)100.0); - } + setAcceleratorPedalPosition(val); // Update property updateAcceleratorPedalPosition(); - if (gAccPedalPos > gCurAccPedalPos){ - gCurAccPedalPos = gAccPedalPos; - gBaseValue = sin((float)gCurAccPedalPos/100.0); - - updateEngineSpeed(); - updateVehicleSpeed(); - } + updateEngineSpeed(); + updateVehicleSpeed(); break; - case JS_AXIS_BRAKE: + case JS_BRAKE: // Set value setLightStatusBrake(val); @@ -387,31 +322,7 @@ void newAxisValue(char number, int val) updateLightStatusBrake(); break; //Brake, -32767 (depressed) - 32767 (undepressed) - case JS_AXIS_CLUTCH: - setFuelLevel(val); - updateFuelLevel(); - break; default: - DBG_DEBUG("number: %d, %d. \n", number, val); break; } } - -void updateTimerHandler(int signum) -{ - if (gCurAccPedalPos == gAccPedalPos){ - gCurAccPedalPos = gCurAccPedalPos + rand()%2; - }else if (gAccPedalPos < (gCurAccPedalPos - 5)){ - gCurAccPedalPos = gCurAccPedalPos - 5; - }else{ - gCurAccPedalPos = gAccPedalPos; - } - gBaseValue = sin((float)gCurAccPedalPos/100.0); - updateEngineSpeed(); - updateVehicleSpeed(); -} - -void setJsType(int jstype) -{ - gJsType = jstype; -}
\ No newline at end of file |