feat: generate parser code

This commit is contained in:
anjingyu 2025-07-15 11:49:23 +08:00
parent 04db35effb
commit 6444378882
14 changed files with 3244 additions and 16 deletions

View File

@ -38,7 +38,7 @@ sp.encode_message(msg_id, {"ACCAccReqValHSC2": -5.1})
"""
import logging
from ._dbcc import DbcParser, version
from ._dbcc import DbcParser, GenHelper, version
__author__ = ['"donkey" <anjingyu_ws@foxmail.com>']

View File

@ -7,6 +7,7 @@
#include "dbcc/dbc_iterator.h"
#include "dbcc/message.h"
#include "dbcc/signal.h"
#include "dbcc/helper/gen_helper.h"
#include "dbcc/version.h"
using namespace pybind11;
@ -52,6 +53,12 @@ PYBIND11_MODULE(_dbcc, m)
ss << "<dbcc.Signal name: " << s.Name() << ">";
return ss.str();
})
.def("dbc_str",
[](ad::dbcc::Signal& sig) {
std::stringstream ss;
ss << sig;
return ss.str();
})
.def("encode",
[](ad::dbcc::Signal& sig, double value, bytearray& ba) {
Py_buffer buffer;
@ -127,6 +134,12 @@ PYBIND11_MODULE(_dbcc, m)
<< ", " << std::dec << s.Id() << ">";
return ss.str();
})
.def("dbc_str",
[](ad::dbcc::Message& m) {
std::stringstream ss;
ss << m;
return ss.str();
})
.def_property_readonly("name", &ad::dbcc::Message::Name)
.def_property_readonly("id", &ad::dbcc::Message::Id)
.def_property_readonly("dlc", &ad::dbcc::Message::Dlc)
@ -149,4 +162,27 @@ PYBIND11_MODULE(_dbcc, m)
}
return s[i];
});
class_<ad::dbcc::helper::GenHelper>(m, "GenHelper")
.def(init<const std::string&, const std::string&>())
.def("gen_all", [](ad::dbcc::helper::GenHelper &gen_helper) {
return gen_helper.GenAll();
})
.def("gen_msg_def", [](ad::dbcc::helper::GenHelper &gen_helper, const std::string &msg, int indent_level) {
return gen_helper.GenMessageDef(msg, indent_level);
})
.def("gen_msg_unpack_decl", [](ad::dbcc::helper::GenHelper &gen_helper, const std::string &msg, int indent_level) {
return gen_helper.GenMessageUnpackDecl(msg, indent_level);
})
.def("gen_msg_unpack_def", [](ad::dbcc::helper::GenHelper &gen_helper, const std::string &msg, int indent_level) {
return gen_helper.GenMessageUnpackDef(msg, indent_level);
})
.def("gen_msg_pack_decl", [](ad::dbcc::helper::GenHelper &gen_helper, const std::string &msg, int indent_level) {
return gen_helper.GenMessagePackDecl(msg, indent_level);
})
.def("gen_msg_pack_def", [](ad::dbcc::helper::GenHelper &gen_helper, const std::string &msg, int indent_level) {
return gen_helper.GenMessagePackDef(msg, indent_level);
})
.def("gen_macros", [](ad::dbcc::helper::GenHelper &gen_helper) {
return ad::dbcc::helper::GenHelper::GenMacros();
});
}

View File

@ -31,6 +31,7 @@ public:
std::string GenMessagePackDecl(const std::string &msg, int indent_level);
std::string GenMessagePackDef(const std::string &msg, int indent_level);
static std::string GenMacros(int indent_level = 0);
static std::string GenMessageDef(const ad::dbcc::Message &msg, const ad::dbcc::helper::NameSignalVector &sigs,
int indent_level);

View File

@ -272,6 +272,20 @@ std::string GenHelper::GenMessagePackDef(const std::string &msg, int indent_leve
return impl_->GenMessagePackDef(msg, indent_level);
}
std::string GenHelper::GenMacros(int indent_level)
{
std::stringstream ss;
const std::string indent = GenerateIndent(indent_level);
ss << indent << "#define PACK_LEFT_SHIFT(value,shift,mask) (uint8_t)((uint8_t)(value << shift) & mask)\n";
ss << indent << "#define UNPACK_LEFT_SHIFT(_type,value,shift,mask) (_type)((_type)(value & mask) << shift)\n\n";
ss << indent << "#define PACK_RIGHT_SHIFT(value,shift,mask) (uint8_t)((uint8_t)(value >> shift) & mask)\n";
ss << indent << "#define UNPACK_RIGHT_SHIFT(_type,value,shift,mask) (_type)((_type)(value & mask) >> shift)\n";
return ss.str();
}
/*
struct <msg.Name()>_<msg.Id()>
{

File diff suppressed because it is too large Load Diff

638
dbcc/test-data/gen_test.dbc Normal file
View File

@ -0,0 +1,638 @@
VERSION ""
NS_ :
NS_DESC_
CM_
BA_DEF_
BA_
VAL_
CAT_DEF_
CAT_
FILTER
BA_DEF_DEF_
EV_DATA_
ENVVAR_DATA_
SGTYPE_
SGTYPE_VAL_
BA_DEF_SGTYPE_
BA_SGTYPE_
SIG_TYPE_REF_
VAL_TABLE_
SIG_GROUP_
SIG_VALTYPE_
SIGTYPE_VALTYPE_
BO_TX_BU_
BA_DEF_REL_
BA_REL_
BA_DEF_DEF_REL_
BU_SG_REL_
BU_EV_REL_
BU_BO_REL_
SG_MUL_VAL_
BS_:
BU_: AD VCU
VAL_TABLE_ Status_Yawrate_Z1 2 "Signal failure" 1 "Sensor not available" 0 "Signal in specification" ;
VAL_TABLE_ Parallel_torque_or_speed_or_Acc 2 "Acc_Control" 1 "Speed_Control" 0 "Torque_Control" ;
VAL_TABLE_ Mode_Control 1 "Value" 0 "Invalue" ;
VAL_TABLE_ VCU_EPS_Direction 1 "Right" 0 "Left" ;
VAL_TABLE_ EPS_Direction 255 "Right" 0 "Left" ;
VAL_TABLE_ iECU_Power_Control 1 "Speed_Control" 0 "Torque_Control" ;
VAL_TABLE_ iECU_Flag 1 "Valid" 0 "Invalid" ;
VAL_TABLE_ iECU_Left_Turn_Light 1 "Turn On" 0 "Turn Off" ;
VAL_TABLE_ iECU_HeadLight 1 "Turn On" 0 "Turn Off" ;
VAL_TABLE_ iECU_Right_Turn_Light 1 "Turn On" 0 "Turn Off" ;
VAL_TABLE_ iECU_Gear 3 "R" 2 "N" 1 "D" 0 "P" ;
VAL_TABLE_ MCU_Motor_Error_Grade_Table 3 "Break Down" 2 "Serious Fault" 1 "Slight Fault" 0 "Normal" ;
VAL_TABLE_ Energy_Recovery_State_Table 1 "有能量回收" 0 "无能量回收" ;
VAL_TABLE_ Shift_Table 3 "Reserved" 2 "后退" 1 "前进" 0 "空档" ;
VAL_TABLE_ DriveMode_Table 3 "VCU速度控制" 2 "VCU扭矩控制" 1 "Emergency Stop 急停0转速" 0 "禁止运行0扭矩" ;
VAL_TABLE_ VCU_Motor_Request_Valid_Table_ 1 "Valid" 0 "Invalid" ;
VAL_TABLE_ for_release 3 "ERROR" 2 "Press Down" 1 "Pull Up
" 0 "Release" ;
VAL_TABLE_ to_no_fault 1 "Fault" 0 "No Fault" ;
VAL_TABLE_ for_unknow 3 "Reserved" 2 "Released" 1 "Parked" 0 "Unknow" ;
VAL_TABLE_ to_valid 1 "Invalid" 0 "Valid " ;
VAL_TABLE_ for_no_request 3 "Reserved" 2 "LockBrakeRquest
" 1 "ReleaseBrakeRequest" 0 "NoRequest" ;
BO_ 689 BMS_2B1h: 8 VCU
SG_ BMS_HVBatLowestTemCellNum : 32|8@1+ (1,0) [0|250] "" AD
SG_ BMS_HVBatLowestTem : 0|8@1+ (1,-40) [-40|125] "℃" AD
SG_ BMS_HVBatHighestTemCellNum : 40|8@1+ (1,0) [0|250] "" AD
SG_ BMS_HVBatHighestTem : 8|8@1+ (1,-40) [-40|125] "℃" AD
BO_ 673 BMS_2A1h: 8 VCU
SG_ BMS_HVBatCellVolDiff : 48|16@1+ (1,0) [0|65535] "" Vector__XXX
SG_ BMS_HVBatHighestVolCellNum : 40|8@1+ (1,0) [0|250] "" AD
SG_ BMS_HVBatLowestVolCellNum : 32|8@1+ (1,0) [0|250] "" AD
SG_ BMS_HVBatHighestCellVol : 16|16@1+ (1,0) [0|5000] "mV" AD
SG_ BMS_HVBatLowestCellVol : 0|16@1+ (1,0) [0|5000] "mV" AD
BO_ 160 BMS_A0h: 8 VCU
SG_ BMS_HVDisplaySOH : 56|8@1+ (1,0) [0|100] "%" AD
SG_ BMS_Sys_Flt : 48|8@1+ (1,0) [0|255] "" AD
SG_ BMS_Charge_StsCc : 44|1@1+ (1,0) [0|1] "" AD
SG_ BMS_Sys_Sts : 40|3@1+ (1,0) [0|7] "" AD
SG_ BMS_HVBatSOC : 32|8@1+ (0.4,0) [0|100] "%" AD
SG_ BMS_HVBatCrnt : 0|16@1+ (0.1,-1000) [-1000|1000] "A" AD
SG_ BMS_HVBatVol : 16|16@1+ (0.1,0) [0|1000] "V" AD
BO_ 782 VCU_Vehicle_Error_Status: 8 VCU
SG_ VCU_EBSActinWhenEPBMF : 11|1@1+ (1,0) [0|1] "" AD
SG_ VCU_EPBActinWhenEBSMF : 12|1@1+ (1,0) [0|1] "" AD
SG_ VCU_PwrCtrl_Fault : 24|3@1+ (1,0) [0|7] "" Vector__XXX
SG_ Error_Code : 0|10@1+ (1,0) [0|999] "" AD
BO_ 323 DBS_Status2: 8 VCU
SG_ DBS_WarringCode : 24|16@1+ (1,0) [0|65535] "" AD
SG_ DBS_CheckSum2 : 56|8@1+ (1,0) [0|255] "" AD
SG_ DBS_Fault_Code : 0|24@1+ (1,0) [0|16777215] "N/A" AD
SG_ DBS_RollingCounter2 : 48|4@1+ (1,0) [0|15] "" AD
BO_ 322 DBS_Status: 8 VCU
SG_ DBS_EstopFlag : 54|1@1+ (1,0) [0|1] "" AD
SG_ DBS_PedaiFlag : 55|1@1+ (1,0) [0|1] "" AD
SG_ BrakePressureReqACK : 16|8@1+ (1,0) [0|1] "" AD
SG_ DBS_Work_Mode : 8|8@1+ (1,0) [0|2] "" AD
SG_ DBS_RollingCounter : 48|4@1+ (1,0) [0|15] "" AD
SG_ DBS_Ref_Iq : 40|8@1+ (0.5,-20) [-20|107.5] "A" AD
SG_ DBS_Park_Warning : 6|2@1+ (1,0) [0|1] "" AD
SG_ DBS_PeadalOpening : 32|8@1+ (1,0) [0|100] "%" AD
SG_ DBS_CheckSum : 56|8@1+ (1,0) [0|255] "" AD
SG_ DBS_HP_pressure : 24|8@1+ (0.1,0) [0|10] "Mpa" AD
SG_ DBS_System_Status : 0|2@1+ (1,0) [0|3] "N/A" AD
BO_ 340 VCU_DBS_Req: 8 VCU
SG_ VCU_DBS_Work_Mode : 8|8@1+ (1,0) [0|1] "" AD
SG_ VCU_ABS_Active : 24|8@1+ (1,0) [0|1] "" AD
SG_ VCU_DBS_Pressure_Request : 16|8@1+ (0.1,0) [0|10] "Mpa" AD
SG_ VCU_DBS_Request_Flag : 0|8@1+ (1,0) [0|1] "N/A" AD
BO_ 778 VCU_Vehicle_HVBat_Status: 8 VCU
SG_ Veh_SOH : 0|8@1+ (1,0) [0|100] "%" AD
SG_ Vehicle_Soc : 48|8@1+ (1,0) [0|100] "%" AD
SG_ Vehicle_HVBat_MsgCntr : 60|4@1+ (1,0) [0|15] "" AD
SG_ High_Voltage_Battery_Voltage : 24|16@1+ (0.1,0) [0|1000] "V" AD
SG_ High_Voltage_Battery_MaxTem : 40|8@1+ (1,-40) [-40|210] "℃" AD
SG_ High_Voltage_Battery_Current : 8|16@1+ (0.1,-1000) [-1000|1000] "A" AD
BO_ 771 VCU_Vehicle_Status_1: 8 VCU
SG_ Vehicle_Range : 8|10@1+ (1,0) [0|1023] "Km" AD
SG_ Drive_Mode_State : 4|4@1+ (1,0) [0|15] "" AD
SG_ EPB_Status : 3|1@1+ (1,0) [0|1] "" AD
SG_ Accelerator_Pedal_Status : 40|8@1+ (1,0) [0|100] "%" AD
SG_ Brake_Pedal_Status : 32|8@1+ (1,0) [0|100] "%" AD
SG_ Vehicle_Status_1_MsgCntr : 60|4@1+ (1,0) [0|15] "" AD
SG_ Vehicle_Gear : 0|2@1+ (1,0) [0|3] "N/A" AD
BO_ 772 VCU_Vehicle_Status_2: 8 VCU
SG_ Vehicle_Status_2_MsgCntr : 60|4@1+ (1,0) [0|15] "" AD
SG_ Vehicle_Steering_Angle : 32|16@1+ (0.1,-35) [-35|35] "deg" AD
SG_ Vehicle_Brake_Pressure : 16|16@1+ (0.01,0) [0|10] "Mpa" AD
SG_ Vehicle_Speed : 0|16@1+ (0.1,-80) [-80|80] "km/h" AD
BO_ 769 VCU_Vehicle_Diagnosis: 8 VCU
SG_ Horn_2_State : 43|1@1+ (1,0) [0|1] "" Vector__XXX
SG_ VCU_VehRdy : 37|1@1+ (1,0) [0|1] "" AD
SG_ Oil_pot_State : 4|1@1+ (1,0) [0|1] "" AD
SG_ Power_Button_State : 2|1@1+ (1,0) [0|1] "" AD
SG_ EPB_Button_State : 3|1@1+ (1,0) [0|1] "" AD
SG_ EPB_Diagnosis : 14|1@1+ (1,0) [0|1] "" AD
SG_ Move_Switch : 47|1@1+ (1,0) [0|1] "" AD
SG_ LowBeam_State : 33|1@1+ (1,0) [0|1] "" AD
SG_ Reversing_Lights_State : 34|1@1+ (1,0) [0|1] "" AD
SG_ Tire_Sensor_State : 41|1@1+ (1,0) [0|1] "" AD
SG_ Brake_Light_State : 42|1@1+ (1,0) [0|1] "" AD
SG_ Vehicle_Fault_Grade : 16|2@1+ (1,0) [0|3] "" AD
SG_ EPS_State : 10|1@1+ (1,0) [0|1] "N/A" AD
SG_ Vehicle_Diagnosis_MsgCntr : 60|4@1+ (1,0) [0|15] "" AD
SG_ HighBeam_State : 15|1@1+ (1,0) [0|1] "" AD
SG_ Right_Turn_Light_State : 48|1@1+ (1,0) [0|1] "" AD
SG_ Left_Turn_Light_State : 32|1@1+ (1,0) [0|1] "" AD
SG_ BMS_State : 9|1@1+ (1,0) [0|1] "" AD
SG_ Emergency_Button_State : 0|1@1+ (1,0) [0|1] "" AD
SG_ DBS_State : 7|1@1+ (1,0) [0|1] "N/A" AD
SG_ AD_State : 6|1@1+ (1,0) [0|1] "N/A" AD
SG_ Motor_State : 1|1@1+ (1,0) [0|1] "N/A" AD
BO_ 399 EPS_Status: 8 VCU
SG_ EPS_Fault_Code : 60|4@1+ (1,0) [0|15] "" AD
SG_ EPS_Current : 40|8@1+ (1,-128) [-128|127] "A" AD
SG_ EPS_Fault_Grade : 56|4@1+ (1,0) [0|255] "" AD
SG_ EPS_Temperature : 48|8@1+ (1,-128) [-128|127] "℃" AD
SG_ EPS_Angle_Spd : 24|16@1+ (1,0) [50|800] "N/A" AD
SG_ EPS_Calibration_Status : 5|1@1+ (1,0) [0|1] "N/A" AD
SG_ EPS_StrAngle_Act : 8|16@1+ (1,-500) [-500|500] "deg" AD
SG_ EPS_Fault : 6|1@1+ (1,0) [0|1] "Nm" AD
SG_ EPS_Work_Mode_Status : 7|1@1+ (1,0) [0|1] "N/A" AD
BO_ 788 VCU_EPS_Req: 8 VCU
SG_ VCU_Request_EPS_Angle_Speed : 24|16@1+ (1,0) [50|800] "deg/s" AD
SG_ VCU_Request_EPS_Angle_Calibrate : 5|1@1+ (1,0) [0|1] "N/A" AD
SG_ VCU_Req_EPS_Target_Angle : 8|16@1+ (1,-500) [-500|500] "deg" AD
SG_ VCU_EPS_CtrlEnable : 7|1@1+ (1,0) [0|1] "N/A" AD
BO_ 267 Remote_Control_Shake: 8 VCU
SG_ Remote_X1 : 48|16@1+ (1,-450) [-450|450] "N/A" AD
SG_ Remote_Y1 : 32|16@1+ (1,-450) [-450|450] "N/A" AD
SG_ Remote_Y2 : 16|16@1+ (1,-450) [-450|450] "N/A" AD
SG_ Remote_X2 : 0|16@1+ (1,-450) [-450|450] "N/A" AD
BO_ 266 Remote_Control_IO: 8 VCU
SG_ Remote_A : 16|8@1+ (1,0) [0|2] "N/A" AD
SG_ Remote_D : 40|8@1+ (1,0) [0|2] "N/A" AD
SG_ Remote_C : 32|8@1+ (1,0) [0|2] "N/A" AD
SG_ Remote_B : 24|8@1+ (1,0) [0|2] "N/A" AD
SG_ Remote_F : 8|8@1+ (1,0) [0|2] "N/A" AD
SG_ Remote_E : 0|8@1+ (1,0) [0|2] "N/A" AD
BO_ 886 EPB_Status: 8 VCU
SG_ EPB_MANUAL_PARKING_KEY : 24|8@1+ (1,0) [0|0] "" AD
SG_ EPB_FINAL_STATES_R : 8|8@1+ (1,0) [0|0] "" AD
SG_ EPB_FINAL_STATES_L : 0|8@1+ (1,0) [0|0] "" AD
SG_ EPB_FAULT : 16|8@1+ (1,0) [0|0] "" AD
BO_ 785 VCU_EPB_Req: 8 VCU
SG_ VCU_EPB_Parking_Request_R : 0|8@1+ (1,0) [0|1] "" AD
SG_ VCU_EPB_Parking_Request_L : 8|8@1+ (1,0) [0|1] "" AD
SG_ VCU_EPB_Parking_Request_ALL : 16|8@1+ (1,0) [0|0] "" AD
SG_ VCU_EPB_Parking_Flag_R : 24|8@1+ (1,0) [0|1] "" AD
SG_ VCU_EPB_Parking_Flag_L : 32|8@1+ (1,0) [0|1] "" AD
SG_ VCU_EPB_Parking_Flag_ALL : 40|8@1+ (1,0) [0|1] "" AD
SG_ VCU_EPB_Clamping_force_R : 48|8@1+ (100,0) [5000|15000] "" AD
SG_ VCU_EPB_Clamping_force_L : 56|8@1+ (100,0) [5000|15000] "" AD
BO_ 16 MCU_DrvMotSt: 8 VCU
SG_ Motor_ActIdc : 36|12@1+ (1,0) [0|1000] "A" AD
SG_ Motor_ActSpeed : 2|18@1+ (1,-10000) [-10000|10000] "rpm" AD
SG_ Motor_ActGear : 0|2@1+ (1,0) [0|0] "" AD
SG_ Motor_ActTorque : 20|16@1+ (0.1,-1000) [-1000|5553.5] "Nm" AD
SG_ Motor_FalutCode : 56|8@1+ (1,0) [0|255] "" AD
SG_ Motor_Temp : 48|8@1+ (1,-50) [-50|205] "C" AD
BO_ 352 VCU_MCU_Req: 8 VCU
SG_ VCU_SoftReset : 5|1@1+ (1,0) [0|1] "" AD
SG_ VCU_ActiveHVReleaseReq : 4|1@1+ (1,0) [0|1] "" AD
SG_ VCU_MotNegSpdLmt : 46|6@1+ (150,-9000) [-9000|0] "rpm" AD
SG_ VCU_MotNegTrqLmt : 58|6@1+ (5,-315) [-315|0] "N.m" AD
SG_ VCU_ClampingBrakeReq : 3|1@1+ (1,0) [0|1] "" AD
SG_ VCU_VehHVReady : 0|1@1+ (1,0) [0|1] "" AD
SG_ VCU_ModeReq : 1|2@1+ (1,0) [0|3] "" AD
SG_ VCU_TargetSpdReq : 24|16@1+ (1,-7000) [-7000|8000] "rpm" AD
SG_ VCU_MotPosSpdLmt : 40|6@1+ (150,0) [0|8000] "rpm" AD
SG_ VCU_MotPosTrqLmt : 52|6@1+ (5,0) [0|315] "N.m" AD
SG_ VCU_TargetTqReq : 8|16@1+ (0.1,-1000) [-1000|1000] "N.m" AD
BO_ 1287 AD_Setup_Control: 8 AD
SG_ Couter507 : 4|4@1+ (1,0) [0|15] "" Vector__XXX
SG_ AD_flgVirtualFence : 56|1@1+ (1,0) [0|1] "" Vector__XXX
SG_ AD_Clear_TRIP : 8|1@1+ (1,0) [0|1] "" VCU
SG_ CAN_Sign_tran_State : 16|1@1+ (1,0) [0|1] "" VCU
SG_ AD_GrVehSig : 40|16@1+ (0.01,-327.68) [-327.68|327.67] "°" VCU
BO_ 1286 AD_Control_Body: 8 AD
SG_ Couter506 : 4|4@1+ (1,0) [0|15] "" Vector__XXX
SG_ AD_flgEmeStpRCS : 32|1@1+ (1,0) [0|1] "" Vector__XXX
SG_ AD_Horn_2_Control : 16|1@1+ (1,0) [0|1] "" Vector__XXX
SG_ AD_Body_Valid : 0|4@1+ (1,0) [0|15] "N/A" VCU
SG_ AD_Low_Beam : 11|1@1+ (1,0) [0|1] "N/A" VCU
SG_ AD_Reversing_Lights : 10|1@1+ (1,0) [0|1] "" VCU
SG_ AD_Double_Flash_Light : 9|1@1+ (1,0) [0|1] "" VCU
SG_ AD_Brake_Light : 8|1@1+ (1,0) [0|1] "N/A" VCU
SG_ AD_High_Beam : 15|1@1+ (1,0) [0|1] "N/A" VCU
SG_ AD_Right_Turn_Light : 13|1@1+ (1,0) [0|1] "N/A" VCU
SG_ AD_Left_Turn_Light : 12|1@1+ (1,0) [0|1] "N/A" VCU
BO_ 1284 AD_Control_Accelerate: 8 AD
SG_ Couter504 : 4|4@1+ (1,0) [0|15] "" Vector__XXX
SG_ AD_Speed_Req : 48|16@1+ (0.1,0) [0|80] "km/h" VCU
SG_ AD_Accelerate_Gear : 24|8@1+ (1,0) [0|3] "N/A" VCU
SG_ AD_Accelerate_Valid : 0|4@1+ (1,0) [0|15] "N/A" VCU
BO_ 1283 AD_Control_Brake: 8 AD
SG_ Couter503 : 4|4@1+ (1,0) [0|15] "" Vector__XXX
SG_ AD_BrakePressure_Req : 8|8@1+ (1,0) [0|100] "%" VCU
SG_ AD_DBS_Valid : 0|4@1+ (1,0) [0|15] "N/A" VCU
BO_ 1282 AD_Control_Steering: 8 AD
SG_ Couter502 : 4|4@1+ (1,0) [0|15] "" Vector__XXX
SG_ AD_Steering_Speed_Cmd : 8|8@1+ (0.1,3.5) [3.5|29] "" VCU
SG_ AD_Steering_Angle_Cmd : 32|16@1+ (0.1,-30) [-30|30] "deg" VCU
SG_ AD_Steering_Valid : 0|4@1+ (1,0) [0|15] "N/A" VCU
CM_ BO_ 689 "本消息由VCU转发自子部件";
CM_ SG_ 689 BMS_HVBatLowestTemCellNum "High Voltage Battery Lowest Temperature Cell Number
有效值范围 1250
0xFE异常 0xFF无效";
CM_ SG_ 689 BMS_HVBatLowestTem "High Voltage Battery Lowest Temperature";
CM_ SG_ 689 BMS_HVBatHighestTemCellNum "High Voltage Battery highest Temperature Cell Number
有效值范围 1250
0xFE异常 0xFF无效";
CM_ SG_ 689 BMS_HVBatHighestTem "High Voltage Battery highest Temperature";
CM_ BO_ 673 "本消息由VCU转发自子部件";
CM_ SG_ 673 BMS_HVBatCellVolDiff "High Voltage Battery Cell Voltage Difference";
CM_ SG_ 673 BMS_HVBatHighestVolCellNum "0x0-0xFF:Cell Number";
CM_ SG_ 673 BMS_HVBatLowestVolCellNum "0x0-0xFF:Cell Number";
CM_ SG_ 673 BMS_HVBatHighestCellVol "High Voltage Battery highest Cell Voltage";
CM_ SG_ 673 BMS_HVBatLowestCellVol "High Voltage Battery Lowest Cell Voltage";
CM_ BO_ 160 "本消息由VCU转发自子部件";
CM_ SG_ 160 BMS_HVDisplaySOH "显示SOH";
CM_ SG_ 160 BMS_Sys_Flt "故障代码 ";
CM_ SG_ 160 BMS_Charge_StsCc "慢充连接状态
0x00: connect
0x01: disconect";
CM_ SG_ 160 BMS_Sys_Sts "0x0:Normal 正常
0x1:Level 1 Fault 一级故障(告警)
0x2Level 2 Fault 二级故障(限功率)
0x3Level 3 Fault 三级故障限功率为0主动停机
";
CM_ SG_ 160 BMS_HVBatSOC "High Voltage Battery State Of Charge
高压电池SOC状态";
CM_ SG_ 160 BMS_HVBatCrnt "High Voltage Battery Current
高压电池当前电流";
CM_ BO_ 782 "VCU车辆故障反馈";
CM_ SG_ 782 VCU_EBSActinWhenEPBMF "EPB故障EBS介入标志位";
CM_ SG_ 782 VCU_EPBActinWhenEBSMF "EBS故障EPB介入标志位";
CM_ SG_ 782 VCU_PwrCtrl_Fault "0x00:电源管理无故障
0x01:下电条件未满足
0x02:重启条件未满足,表现为有限重启";
CM_ SG_ 782 Error_Code "故障序号 故障类型
0-9 驱动系统故障
10-19 制动系统故障
20-29 转向系统故障
30-39 电池管理系统故障
40-49 底盘DC-DC故障
50-59 自动驾驶DC-DC故障
60-69 充电机故障
70-79 胎压监测故障
80-89 遥控器故障、轮速传感器故障
90-99 备用(自动驾驶系统)
100-300 BMS具体故障代码
999 挪车模式提示
";
CM_ BO_ 323 "本消息由VCU转发自子部件";
CM_ SG_ 323 DBS_WarringCode "警告类型。
第1bit急停按键闭合警告
第2bit驻车时间过长超1min
第3bitCAN0中断警告
第4bitCAN1中断警告
第5bit点火线断开警告";
CM_ SG_ 323 DBS_CheckSum2 "CheckSum校验和,Checksum = byte0 XOR byte1 XOR byte2 XOR ····· XOR byte6";
CM_ SG_ 323 DBS_Fault_Code "故障类型。
第1bit过载保护
第2bit过温保护
第3bit过流保护
第4bit电源欠压故障
第5bit电源过压故障
第6bit压力不足
第7bit电机故障
第8bit通讯故障
第9bit电流采样故障
第10bit驱动故障
第11bit磁编故障
第12bit压力传感器故障
第13bit踏板位置传感器故障
第14bit其他故障";
CM_ SG_ 323 DBS_RollingCounter2 "从0到15循环计数如果通信中断则重新从0开始计数";
CM_ BO_ 322 "本消息由VCU转发自子部件";
CM_ SG_ 322 DBS_EstopFlag "急停标志位";
CM_ SG_ 322 DBS_PedaiFlag "踏板插入标志位:
0踏板未插入
1踏板已插入";
CM_ SG_ 322 BrakePressureReqACK "制动压力请求应答DBS执行完成应答有效
0x0:Not ACK
0x1: ACK ";
CM_ SG_ 322 DBS_Work_Mode "工作模式0线控液压控制1排气模式2踏板模式
0x0:CAN control
0x1:Exhaust Mode
0x2:Pedal Mode 踏板模式为0-5V电信号输入对应0-8MPa压力反馈有电压输入时优先进入该模式 ";
CM_ SG_ 322 DBS_RollingCounter "从0到15循环计数如果通信中断则重新从0开始计数";
CM_ SG_ 322 DBS_Ref_Iq "实际电流";
CM_ SG_ 322 DBS_Park_Warning "驻车时间警告信号。0正常工作1驻车时间超过1分钟发出警告建议EPB驻车请求。";
CM_ SG_ 322 DBS_PeadalOpening "踏板开合度0%—100%";
CM_ SG_ 322 DBS_CheckSum "CheckSum校验和,Checksum = byte0 XOR byte1 XOR byte2 XOR ····· XOR byte6";
CM_ SG_ 322 DBS_HP_pressure "制动系统压力反馈";
CM_ SG_ 322 DBS_System_Status "系统故障状态
0:System No Fault
1:System Waring
2:System Fault";
CM_ BO_ 340 "本消息由VCU转发自VCU请求";
CM_ SG_ 340 VCU_DBS_Work_Mode "排气模式0线控模式1排气模式";
CM_ SG_ 340 VCU_ABS_Active "ABS工作标志位
0不工作 1工作";
CM_ SG_ 340 VCU_DBS_Pressure_Request "VCU发送给DBS的制动压力请求0-8Mpa";
CM_ SG_ 340 VCU_DBS_Request_Flag "1表示有效
0表示无效";
CM_ BO_ 778 "车辆高压电池状态";
CM_ SG_ 778 Veh_SOH "0unKnown1充电2能量回收3正常放电";
CM_ SG_ 778 Vehicle_Soc "车辆剩余电量%";
CM_ SG_ 778 Vehicle_HVBat_MsgCntr "心跳周期0-15";
CM_ SG_ 778 High_Voltage_Battery_Voltage "High Voltage Battery Voltage
高压电池当前电压";
CM_ SG_ 778 High_Voltage_Battery_MaxTem "高压电池最高实时温度";
CM_ SG_ 778 High_Voltage_Battery_Current "High Voltage Battery Current
高压电池当前电流,正为放电,负为充电";
CM_ BO_ 771 "VCU车辆状态反馈";
CM_ SG_ 771 Vehicle_Range "车辆剩余里程";
CM_ SG_ 771 Drive_Mode_State "各个模式需要配合模式开关来确认
1表示AD模式优先级第三
3表示故障模式优先级最高禁止运行
4表示人工模式
优先级第二";
CM_ SG_ 771 EPB_Status "0表示释放1表示加紧";
CM_ SG_ 771 Accelerator_Pedal_Status "油门踏板位移量反馈0-100%";
CM_ SG_ 771 Brake_Pedal_Status "刹车踏板位移量反馈0-100%";
CM_ SG_ 771 Vehicle_Status_1_MsgCntr "心跳周期0-15";
CM_ SG_ 771 Vehicle_Gear "车辆挡位状态
0P挡
1D挡
2N挡
3R挡";
CM_ BO_ 772 "VCU车辆状态反馈";
CM_ SG_ 772 Vehicle_Status_2_MsgCntr "心跳周期0-15";
CM_ SG_ 772 Vehicle_Steering_Angle "车辆轮端转角(左正右负),转向角速度(暂定)";
CM_ SG_ 772 Vehicle_Brake_Pressure "车辆制动管路压力";
CM_ SG_ 772 Vehicle_Speed "车辆速度km/h负为倒车";
CM_ BO_ 769 "VCU车辆状态反馈";
CM_ SG_ 769 Horn_2_State "0表示车载大喇叭关1表示车载大喇叭开";
CM_ SG_ 769 Oil_pot_State "制动油液信号
0油壶传感器油位正常
1不正常";
CM_ SG_ 769 Power_Button_State "电源开关
0未按下
1按下";
CM_ SG_ 769 EPB_Button_State "EPB驻车开关
0未按下
1按下";
CM_ SG_ 769 EPB_Diagnosis "1表示有故障0表示无故障";
CM_ SG_ 769 Move_Switch "挪车开关0表示未按下1表示按下
按下时,底盘不会自动给制动(急停和前后触碰依然有效),仅在遥控模式起效";
CM_ SG_ 769 LowBeam_State "0表示小灯关1表示小灯开";
CM_ SG_ 769 Reversing_Lights_State "倒车灯 0表示关 1表示开";
CM_ SG_ 769 Tire_Sensor_State "0表示胎压传感器控制盒信号正常
1表示胎压传感器控制盒信号丢失";
CM_ SG_ 769 Brake_Light_State "0表示制动灯关1表示制动灯开";
CM_ SG_ 769 Vehicle_Fault_Grade "整车故障等级0、1、2、3级故障
0级为无故障
1级故障 不影响车辆行驶
2级故障 速度环限制车速最高5km/h扭矩环不做限制
3级为最高级故障车辆禁止行驶
";
CM_ SG_ 769 EPS_State "1表示有故障0表示无故障";
CM_ SG_ 769 Vehicle_Diagnosis_MsgCntr "心跳周期0-15";
CM_ SG_ 769 HighBeam_State "0表示大灯关1表示大灯开";
CM_ SG_ 769 Right_Turn_Light_State "0表示右转灯关1表示右转灯开";
CM_ SG_ 769 Left_Turn_Light_State "0表示左转灯关1表示左转灯开";
CM_ SG_ 769 BMS_State "0表示正常1表示有故障";
CM_ SG_ 769 Emergency_Button_State "0表示急停按钮未按下1表示急停按钮按下";
CM_ SG_ 769 DBS_State "1表示有故障0表示无故障";
CM_ SG_ 769 AD_State "0表示接收到AD信号1表示未接收到AD信号";
CM_ SG_ 769 Motor_State "1表示有故障0表示无故障";
CM_ BO_ 399 "本消息由VCU转发自子部件";
CM_ SG_ 399 EPS_Fault_Code "0000:无故障
0001:输入过压
0010:输入欠压
0011:控制器过温
0100:扭矩传感器故障
0101:角度传感察故障
0110:控制器内部故障
0111:通讯故障
1000:角度中位未标定
1001:电机及驱动故障
";
CM_ SG_ 399 EPS_Current "当前电流";
CM_ SG_ 399 EPS_Fault_Grade "BIT0=1 一级故障
BIT1=1 二级故障
BIT2=1 三级故障
BIT3=1 通讯故障";
CM_ SG_ 399 EPS_Temperature "EPS ECU温度";
CM_ SG_ 399 EPS_Angle_Spd "EPS角速度反馈
";
CM_ SG_ 399 EPS_Calibration_Status "1 EPS中位未标定0 EPS中位已标定";
CM_ SG_ 399 EPS_StrAngle_Act "EPS当前角度值";
CM_ SG_ 399 EPS_Fault "1 ECU检测到故障0 ECU未检测到故障";
CM_ SG_ 399 EPS_Work_Mode_Status "EPS 1工作模式0停止模式";
CM_ BO_ 788 "本消息由VCU转发自VCU请求";
CM_ SG_ 788 VCU_Request_EPS_Angle_Speed "转向角速度";
CM_ SG_ 788 VCU_Request_EPS_Angle_Calibrate "不需要对中时,此字节发 0x00 即可";
CM_ SG_ 788 VCU_Req_EPS_Target_Angle "请求角度";
CM_ SG_ 788 VCU_EPS_CtrlEnable "
EPS控制使能1工作0停止";
CM_ BO_ 267 "本消息由VCU转发自子部件";
CM_ BO_ 266 "本消息由VCU转发自子部件";
CM_ BO_ 886 "本消息由VCU转发自子部件";
CM_ SG_ 886 EPB_MANUAL_PARKING_KEY "按钮状态: 0 Netural1 释放, 2 锁紧, 3 未接入未接入手动开关时仍可以can控制4 开关故障";
CM_ SG_ 886 EPB_FINAL_STATES_R "EPB反馈状态 0x0Released0x1Applied0x2Releasing 0x3Applying0x4:unknown";
CM_ SG_ 886 EPB_FINAL_STATES_L "EPB反馈状态 0x0Released0x1Applied0x2Releasing0x3Applying0x4:unknown";
CM_ SG_ 886 EPB_FAULT "EPB故障码 第1bit右卡钳故障第2bit左卡钳故障 第3bitECU故障 第4bit通讯故障收到VCU请求后VCU请求中断为通讯故障第5bit未知状态";
CM_ BO_ 785 "本消息由VCU转发自VCU请求";
CM_ SG_ 785 VCU_EPB_Parking_Request_R "VCU请求EPB右卡钳1 释放, 2 锁紧3 保留上一状态值";
CM_ SG_ 785 VCU_EPB_Parking_Request_L "VCU请求EPB左卡钳1 释放, 2 锁紧3 保留上一状态值";
CM_ SG_ 785 VCU_EPB_Parking_Request_ALL "VCU请求EPB左右卡钳同时工作1 释放, 2 锁紧3 保留上一状态值";
CM_ SG_ 785 VCU_EPB_Parking_Flag_R "EPB使能1有效 0无效";
CM_ SG_ 785 VCU_EPB_Parking_Flag_L "EPB使能1有效 0无效";
CM_ SG_ 785 VCU_EPB_Parking_Flag_ALL "EPB使能1有效 0无效";
CM_ SG_ 785 VCU_EPB_Clamping_force_R "右卡钳夹紧力请求0N-15000N";
CM_ SG_ 785 VCU_EPB_Clamping_force_L "左卡钳夹紧力请求0N-15000N";
CM_ BO_ 16 "本消息由VCU转发自子部件";
CM_ SG_ 16 Motor_ActIdc "电机三相电流";
CM_ SG_ 16 Motor_ActSpeed "电机转速";
CM_ SG_ 16 Motor_ActGear "MCU内部实际响应的档位 0x00:N档 0x01:前进D档 0x10:后退R档 0x11:预留";
CM_ SG_ 16 Motor_ActTorque "电机反馈扭矩";
CM_ SG_ 16 Motor_FalutCode "故障码详见故障列表";
CM_ SG_ 16 Motor_Temp "电机温度";
CM_ BO_ 352 "本消息由VCU转发自VCU请求";
CM_ SG_ 352 VCU_ActiveHVReleaseReq "0x00:无请求
0x01:主动泄压";
CM_ SG_ 352 VCU_MotNegSpdLmt "合普扭矩模式下电机负转速都不应超过此限速";
CM_ SG_ 352 VCU_MotNegTrqLmt "合普速度模式下电机负扭矩都不应超过此限值";
CM_ SG_ 352 VCU_ClampingBrakeReq "电机抱闸请求
0松抱闸
1抱闸";
CM_ SG_ 352 VCU_VehHVReady "电机状态0:进入待机状态 1:可进入运行状态";
CM_ SG_ 352 VCU_ModeReq "电机模式请求0x0:零扭矩模式 0x1:零速度模式 0x2:扭矩环模式 0x3:速度环模式 ";
CM_ SG_ 352 VCU_TargetSpdReq "转速请求:请求的转速,正转速为正转,负转速为反转
";
CM_ SG_ 352 VCU_MotPosSpdLmt "合普扭矩模式下电机正转速都不应超过此限速";
CM_ SG_ 352 VCU_MotPosTrqLmt "合普速度模式下电机正扭矩都不应超过此限值";
CM_ SG_ 352 VCU_TargetTqReq "扭矩请求:请求的扭矩,正扭矩为正转,负扭矩为反转 ,当电机旋转方向与扭矩值正负符号一致时为电机做功状态,反之则为发电状态";
CM_ BO_ 1287 "解除急停和Bumper清除小计里程";
CM_ SG_ 1287 Couter507 "ID507的心跳计数
";
CM_ SG_ 1287 AD_flgVirtualFence "0
1超限进入电子栅栏模式";
CM_ SG_ 1287 AD_Clear_TRIP "0无效1清除小里程
";
CM_ SG_ 1287 CAN_Sign_tran_State "转发信号开启标志
0转发
1不转发";
CM_ SG_ 1287 AD_GrVehSig "ADU反馈的车辆坡度状态";
CM_ BO_ 1286 "AD模式下body请求
由AD节点发送由VCU节点接收";
CM_ SG_ 1286 Couter506 "ID506的心跳计数
";
CM_ SG_ 1286 AD_flgEmeStpRCS "0
1车辆远程急停使能";
CM_ SG_ 1286 AD_Horn_2_Control "0x00:车载大喇叭关
0x01:车载大喇叭开";
CM_ SG_ 1286 AD_Body_Valid "0表示无效1表示车身部件可控";
CM_ SG_ 1286 AD_Low_Beam "0表示小灯关闭
1表示小灯开启";
CM_ SG_ 1286 AD_Reversing_Lights "倒车灯控制AD模式下无任何关联只由该接口控制
0关
1开";
CM_ SG_ 1286 AD_Double_Flash_Light "双闪控制
0关
1开";
CM_ SG_ 1286 AD_Brake_Light "AD模式下制动灯只由该信号控制除了按下急停和遥控器给制动无任何其他关联
0制动灯关
1制动灯开
";
CM_ SG_ 1286 AD_High_Beam "0表示大灯关闭
1表示大灯开启";
CM_ SG_ 1286 AD_Right_Turn_Light "0表示右转灯关闭
1表示右转灯开启";
CM_ SG_ 1286 AD_Left_Turn_Light "0表示左转灯关闭
1表示左转灯开启";
CM_ BO_ 1284 "AD驱动请求
由AD节点发送由VCU节点接收";
CM_ SG_ 1284 Couter504 "ID504的心跳计数
";
CM_ SG_ 1284 AD_Speed_Req "车辆请求车速km/h";
CM_ SG_ 1284 AD_Accelerate_Gear "0:P驻车档 1D前进档 2N空档 3R后退档
";
CM_ SG_ 1284 AD_Accelerate_Valid "0表示无效1表示进入自动驾驶";
CM_ BO_ 1283 "AD制动请求
由AD节点发送由VCU节点接收";
CM_ SG_ 1283 Couter503 "ID503的心跳计数
";
CM_ SG_ 1283 AD_BrakePressure_Req "制动踏板0~100%对应0-10Mpa压力请求
";
CM_ SG_ 1283 AD_DBS_Valid "0表示无效1表示制动可控";
CM_ BO_ 1282 "AD转向请求
由AD节点发送由VCU节点接收";
CM_ SG_ 1282 Couter502 "ID502的心跳计数
";
CM_ SG_ 1282 AD_Steering_Speed_Cmd "轮端转向角速度控制";
CM_ SG_ 1282 AD_Steering_Angle_Cmd "AD模式下-35到+35度 转角请求(左正右负)";
CM_ SG_ 1282 AD_Steering_Valid "0表示无效1表示转向可控";
BA_DEF_ SG_ "GenSigSendType" ENUM "Cyclic","OnWrite","OnWriteWithRepetition","OnChange","OnChangeWithRepetition","IfActive","IfActiveWithRepetition","NoSigSendType";
BA_DEF_ SG_ "GenSigInactiveValue" INT 0 0;
BA_DEF_ BO_ "GenMsgCycleTime" INT 0 0;
BA_DEF_ BO_ "GenMsgSendType" ENUM "Cyclic","not_used","not_used","not_used","not_used","Cyclic","not_used","IfActive","NoMsgSendType";
BA_DEF_ BU_ "NmStationAddress" HEX 0 0;
BA_DEF_ "DBName" STRING ;
BA_DEF_ "BusType" STRING ;
BA_DEF_DEF_ "GenSigSendType" "Cyclic";
BA_DEF_DEF_ "GenSigInactiveValue" 0;
BA_DEF_DEF_ "GenMsgCycleTime" 0;
BA_DEF_DEF_ "GenMsgSendType" "NoMsgSendType";
BA_DEF_DEF_ "NmStationAddress" 0;
BA_DEF_DEF_ "DBName" "";
BA_DEF_DEF_ "BusType" "CAN";
BA_ "DBName" "G402_CAN2V2";
BA_ "GenMsgSendType" BO_ 689 0;
BA_ "GenMsgCycleTime" BO_ 689 50;
BA_ "GenMsgSendType" BO_ 673 0;
BA_ "GenMsgCycleTime" BO_ 673 50;
BA_ "GenMsgSendType" BO_ 160 0;
BA_ "GenMsgCycleTime" BO_ 160 50;
BA_ "GenMsgSendType" BO_ 782 0;
BA_ "GenMsgCycleTime" BO_ 782 500;
BA_ "GenMsgCycleTime" BO_ 323 50;
BA_ "GenMsgSendType" BO_ 323 0;
BA_ "GenMsgCycleTime" BO_ 322 50;
BA_ "GenMsgSendType" BO_ 322 0;
BA_ "GenMsgCycleTime" BO_ 340 20;
BA_ "GenMsgSendType" BO_ 340 0;
BA_ "GenMsgSendType" BO_ 778 0;
BA_ "GenMsgCycleTime" BO_ 778 20;
BA_ "GenMsgSendType" BO_ 771 0;
BA_ "GenMsgCycleTime" BO_ 771 20;
BA_ "GenMsgSendType" BO_ 772 0;
BA_ "GenMsgCycleTime" BO_ 772 10;
BA_ "GenMsgSendType" BO_ 769 0;
BA_ "GenMsgCycleTime" BO_ 769 20;
BA_ "GenMsgSendType" BO_ 399 0;
BA_ "GenMsgCycleTime" BO_ 399 50;
BA_ "GenMsgSendType" BO_ 788 0;
BA_ "GenMsgCycleTime" BO_ 788 20;
BA_ "GenMsgSendType" BO_ 267 0;
BA_ "GenMsgCycleTime" BO_ 267 50;
BA_ "GenMsgSendType" BO_ 266 0;
BA_ "GenMsgCycleTime" BO_ 266 50;
BA_ "GenMsgCycleTime" BO_ 886 50;
BA_ "GenMsgSendType" BO_ 886 0;
BA_ "GenMsgCycleTime" BO_ 785 20;
BA_ "GenMsgSendType" BO_ 785 0;
BA_ "GenMsgSendType" BO_ 16 0;
BA_ "GenMsgCycleTime" BO_ 16 50;
BA_ "GenMsgSendType" BO_ 352 0;
BA_ "GenMsgCycleTime" BO_ 352 20;
BA_ "GenMsgCycleTime" BO_ 1287 20;
BA_ "GenMsgCycleTime" BO_ 1286 20;
BA_ "GenMsgCycleTime" BO_ 1284 20;
BA_ "GenMsgCycleTime" BO_ 1283 20;
BA_ "GenMsgCycleTime" BO_ 1282 20;
BA_ "GenSigInactiveValue" SG_ 323 DBS_Fault_Code 10;
BA_ "GenSigInactiveValue" SG_ 322 DBS_HP_pressure 10;
BA_ "GenSigInactiveValue" SG_ 322 DBS_System_Status 10;
BA_ "GenSigInactiveValue" SG_ 340 VCU_DBS_Pressure_Request 20;
BA_ "GenSigInactiveValue" SG_ 340 VCU_DBS_Request_Flag 20;

View File

@ -0,0 +1,96 @@
{
"control": {
"AD_Setup_Control": {
"Couter507": "",
"AD_flgVirtualFence": "",
"AD_Clear_TRIP": "",
"CAN_Sign_tran_State": "",
"AD_GrVehSig": ""
},
"AD_Control_Body": {
"Couter506": "",
"AD_flgEmeStpRCS": "",
"AD_Horn_2_Control": "",
"AD_Body_Valid": "",
"AD_Low_Beam": "",
"AD_Reversing_Lights": "",
"AD_Double_Flash_Light": "",
"AD_Brake_Light": "",
"AD_High_Beam": "",
"AD_Right_Turn_Light": "",
"AD_Left_Turn_Light": ""
},
"AD_Control_Accelerate": {
"Couter504": "",
"AD_Speed_Req": "",
"AD_Accelerate_Gear": "",
"AD_Accelerate_Valid": ""
},
"AD_Control_Brake": {
"Couter503": "",
"AD_BrakePressure_Req": "",
"AD_DBS_Valid": ""
},
"AD_Control_Steering": {
"Couter502": "",
"AD_Steering_Speed_Cmd": "",
"AD_Steering_Angle_Cmd": "",
"AD_Steering_Valid": ""
}
},
"feedback": {
"VCU_Vehicle_Error_Status": {
"VCU_EBSActinWhenEPBMF": "",
"VCU_EPBActinWhenEBSMF": "",
"VCU_PwrCtrl_Fault": "",
"Error_Code": ""
},
"VCU_Vehicle_HVBat_Status": {
"Veh_SOH": "",
"Vehicle_Soc": "",
"Vehicle_HVBat_MsgCntr": "",
"High_Voltage_Battery_Voltage": "",
"High_Voltage_Battery_MaxTem": "",
"High_Voltage_Battery_Current": ""
},
"VCU_Vehicle_Status_1": {
"Vehicle_Range": "",
"Drive_Mode_State": "",
"EPB_Status": "",
"Accelerator_Pedal_Status": "",
"Brake_Pedal_Status": "",
"Vehicle_Status_1_MsgCntr": "",
"Vehicle_Gear": ""
},
"VCU_Vehicle_Status_2": {
"Vehicle_Status_2_MsgCntr": "",
"Vehicle_Steering_Angle": "",
"Vehicle_Brake_Pressure": "",
"Vehicle_Speed": ""
},
"VCU_Vehicle_Diagnosis": {
"Horn_2_State": "",
"VCU_VehRdy": "",
"Oil_pot_State": "",
"Power_Button_State": "",
"EPB_Button_State": "",
"EPB_Diagnosis": "",
"Move_Switch": "",
"LowBeam_State": "",
"Reversing_Lights_State": "",
"Tire_Sensor_State": "",
"Brake_Light_State": "",
"Vehicle_Fault_Grade": "",
"EPS_State": "",
"Vehicle_Diagnosis_MsgCntr": "",
"HighBeam_State": "",
"Right_Turn_Light_State": "",
"Left_Turn_Light_State": "",
"BMS_State": "",
"Emergency_Button_State": "",
"DBS_State": "",
"AD_State": "",
"Motor_State": ""
}
}
}

View File

@ -0,0 +1,118 @@
VERSION "HSCAN2"
NS_ :
NS_DESC_
CM_
BA_DEF_
BA_
VAL_
CAT_DEF_
CAT_
FILTER
BA_DEF_DEF_
EV_DATA_
ENVVAR_DATA_
SGTYPE_
SGTYPE_VAL_
BA_DEF_SGTYPE_
BA_SGTYPE_
SIG_TYPE_REF_
VAL_TABLE_
SIG_GROUP_
SIG_VALTYPE_
SIGTYPE_VALTYPE_
BO_TX_BU_
BA_DEF_REL_
BA_REL_
BA_DEF_DEF_REL_
BU_SG_REL_
BU_EV_REL_
BU_BO_REL_
SG_MUL_VAL_
BS_:
BU_: FDR GW Diagnostics SCSABS EHBS EPB EPS Tester
BO_ 1130 GW_HSC2_BCM_FrP04: 8 GW
SG_ BntOpenStsHSC2 : 47|2@0+ (1,0) [0|3] "" FDR
SG_ DipdBeamLghtOnHSC2 : 13|1@0+ (1,0) [0|1] "" FDR
SG_ DircnIndLampSwStsHSC2 : 3|2@0+ (1,0) [0|3] "" FDR
SG_ DrvrDoorOpenStsHSC2 : 1|2@0+ (1,0) [0|3] "" FDR
SG_ DspMeasSysHSC2 : 44|1@0+ (1,0) [0|1] "" FDR
SG_ FrtFogLghtOnHSC2 : 14|1@0+ (1,0) [0|1] "" FDR
SG_ FrtPsngDoorOpenStsHSC2 : 43|2@0+ (1,0) [0|3] "" FDR
SG_ FrtWiperParkPosAHSC2 : 52|1@0+ (1,0) [0|1] "" FDR
SG_ FrtWshrPumpAHSC2 : 55|1@0+ (1,0) [0|1] "" FDR
SG_ KeyDetIndxHSC2 : 51|3@0+ (1,0) [0|7] "" FDR
SG_ LDircnIndLghtFHSC2 : 10|1@0+ (1,0) [0|1] "" FDR
SG_ LDircnIOHSC2 : 11|1@0+ (1,0) [0|1] "" FDR
SG_ LdspcOpenStsHSC2 : 7|2@0+ (1,0) [0|3] "" FDR
SG_ MainBeamLghtOnHSC2 : 15|1@0+ (1,0) [0|1] "" FDR
SG_ RDircnIndLghtFHSC2 : 48|1@0+ (1,0) [0|1] "" FDR
SG_ RDircnIOHSC2 : 9|1@0+ (1,0) [0|1] "" FDR
SG_ RLDoorOpenStsHSC2 : 41|2@0+ (1,0) [0|3] "" FDR
SG_ RRDoorOpenStsHSC2 : 5|2@0+ (1,0) [0|3] "" FDR
SG_ RrFogLghtOnHSC2 : 8|1@0+ (1,0) [0|1] "" FDR
SG_ VehSideLghtStsHSC2 : 57|2@0+ (1,0) [0|3] "" FDR
BO_ 540 GW_HSC2_BCM_FrP06: 8 GW
SG_ ClstrDspdVehSpdHSC2 : 55|8@0+ (1,0) [0|254] "km/h" FDR
SG_ FrtWiperSwStsHSC2 : 47|2@0+ (1,0) [0|3] "" FDR
BO_ 498 GW_HSC2_BCM_FrP07: 2 GW
SG_ SysBPMHSC2 : 5|2@0+ (1,0) [0|3] "" FDR
SG_ SysBPMEnbdHSC2 : 6|1@0+ (1,0) [0|1] "" FDR
BO_ 1285 EPS_1: 3 GW
SG_ EPS_EPSFailSts : 0|1@0+ (1,0) [0|1] "" FDR
SG_ EPS_0x505_MessageCounter : 15|4@0+ (1,0) [0|15] "" FDR
SG_ EPS_0x505_Checksum : 23|8@0+ (1,0) [0|255] "" FDR
BO_ 796 ABM_1: 4 GW
SG_ ABM_DrvSeatbeltBuckleStatus : 0|1@0+ (1,0) [0|1] "" FDR
SG_ ABM_0x31C_MessageCounter : 15|4@0+ (1,0) [0|15] "" FDR
SG_ ABM_0x31C_Checksum : 23|8@0+ (1,0) [0|255] "" FDR
BO_ 404 GW_HSC2_ECM_FrP04: 8 GW
SG_ TrEstdGearHSC2 : 3|4@0+ (1,0) [0|15] "" FDR
SG_ TrEstdGearVHSC2 : 4|1@0+ (1,0) [0|1] "" FDR
SG_ TrShftLvrPosV_h1HSC2 : 28|1@0+ (1,0) [0|1] "" FDR
SG_ TrShftLvrPos_h1HSC2 : 27|4@0+ (1,0) [0|15] "" FDR
BO_ 251 GW_HSC2_ECM_FrP27: 8 GW
SG_ AccelOvrdHSC2 : 19|1@0+ (1,0) [0|1] "" FDR
SG_ PtACCToqReqRespHSC2 : 4|3@0+ (1,0) [0|7] "" FDR
SG_ PtACCToqReqRespPVHSC2 : 43|4@0+ (1,0) [0|15] "" FDR
SG_ PtADASAlvRCHSC2 : 47|4@0+ (1,0) [0|15] "" FDR
BO_ 578 RADAR_HSC2_FrP00: 8 FDR
SG_ ACCAccReqStsHSC2 : 29|2@0+ (1,0) [0|3] "" GW,SCSABS
SG_ ACCAccReqValHSC2 : 2|11@0- (0.005,-7.22) [-7.22|3.015] "" SCSABS
SG_ ACCAccReqValTolMaxHSC2 : 22|7@0+ (0.025,0) [0|3.175] "" SCSABS
SG_ ACCAccReqValTolMinHSC2 : 54|7@0+ (0.025,0) [0|3.175] "" SCSABS
SG_ ACCGoReqHSC2 : 30|1@0+ (1,0) [0|1] "" SCSABS
SG_ ACCMinBrkReqStsHSC2 : 7|1@0+ (1,0) [0|1] "" SCSABS
SG_ ACCReqBrkPrfrdHSC2 : 23|1@0+ (1,0) [0|1] "" SCSABS
SG_ ACCSdslReq_RadarHSC2 : 55|1@0+ (1,0) [0|1] "" SCSABS
SG_ ACCSysAlvRlngCtr_SCSHSC2 : 6|4@0+ (1,0) [0|15] "" SCSABS
SG_ ACCSysChksm_SCSHSC2 : 63|8@0+ (1,0) [0|255] "" SCSABS
SG_ ACCSysFltSts_SCSHSC2 : 42|3@0+ (1,0) [0|7] "" SCSABS
SG_ ACCSysSts_RadarHSC2 : 45|3@0+ (1,0) [0|7] "" GW,SCSABS
SG_ ChACCShtdwnMdHSC2 : 47|2@0+ (1,0) [0|3] "" SCSABS
BO_ 580 RADAR_HSC2_FrP01: 8 FDR
SG_ ACCAccReqValGrdMaxHSC2 : 14|7@0+ (0.1,0) [0|12.7] "" SCSABS
SG_ ACCAccReqValGrdMinHSC2 : 54|7@0+ (0.1,-12.7) [-12.7|3.7998E-007] "" SCSABS
SG_ ACCAEBBrkJerkLvlReq_RadarHSC2 : 20|3@0+ (1,0) [0|7] "" SCSABS
SG_ AEBAlvRlngCtr_SCSHSC2 : 35|4@0+ (1,0) [0|15] "" SCSABS
SG_ AEBChksm_SCSHSC2 : 63|8@0+ (1,0) [0|255] "" SCSABS
SG_ AEBDclReqStsHSC2 : 25|2@0+ (1,0) [0|3] "" GW,SCSABS
SG_ AEBDclReqValHSC2 : 7|8@0+ (0.1,-12.7) [-12.7|12.8] "m/s^2" SCSABS
SG_ AEBHydBrkAstLvlReqHSC2 : 31|3@0+ (1,0) [0|7] "" SCSABS
SG_ AEBPedtrnSysFltStsHSC2 : 38|3@0+ (1,0) [0|7] "" GW
SG_ AEBPedtrnSysStsHSC2 : 28|3@0+ (1,0) [0|7] "" GW
SG_ AEBPrflReqHSC2 : 15|1@0+ (1,0) [0|1] "" SCSABS
SG_ AEBSysFltSts_RadarHSC2 : 47|3@0+ (1,0) [0|7] "" GW,SCSABS
SG_ AEBSysSts_RadarHSC2 : 23|3@0+ (1,0) [0|7] "" GW,SCSABS

60
dbcc/test/gen_test.py Normal file
View File

@ -0,0 +1,60 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import sys
import json
from collections import OrderedDict
import dbcc
if __name__ == '__main__':
gh = dbcc.GenHelper(sys.argv[1], sys.argv[2])
msgs = json.loads(open(sys.argv[2]).read(), object_pairs_hook=OrderedDict)
with open("gen_all.c", 'w+') as f:
f.write(gh.gen_all())
with open("parser.h", 'w+') as f:
f.write("#pragma once\n\n")
f.write("#include <stdint.h> /**< uint8_t uint16_t */\n")
f.write("#include <stddef.h> /**< size_t */\n\n")
f.write("#if defined(__cplusplus)\n")
f.write("extern \"C\" {\n")
f.write("#endif /* __cplusplus */\n\n")
for k, _ in msgs['feedback'].items():
f.write(gh.gen_msg_def(k, 0))
f.write("\n")
for k, _ in msgs['control'].items():
f.write(gh.gen_msg_def(k, 0))
f.write("\n")
for k, _ in msgs['feedback'].items():
f.write(gh.gen_msg_unpack_decl(k, 0))
f.write("\n")
for k, _ in msgs['control'].items():
f.write(gh.gen_msg_pack_decl(k, 0))
f.write("\n")
f.write("#if defined(__cplusplus)\n")
f.write("}\n")
f.write("#endif /* __cplusplus */\n\n")
with open("parser.c", 'w+') as f:
f.write("#include \"parser.h\"\n\n")
f.write(gh.gen_macros())
f.write("\n")
for k, _ in msgs['feedback'].items():
f.write(gh.gen_msg_unpack_def(k, 0))
f.write("\n")
for k, _ in msgs['control'].items():
f.write(gh.gen_msg_pack_def(k, 0))
f.write("\n")

View File

@ -58,7 +58,8 @@ function main()
fi
fi
/usr/bin/python3 "./test.py" "$@"
/usr/bin/python3 "./parse_test.py" "$PROJ_DIR/test-data/parse_test.dbc"
/usr/bin/python3 "./gen_test.py" "$PROJ_DIR/test-data/gen_test.dbc" "$PROJ_DIR/test-data/gen_test.json"
# python "./test.py" "$@"
popd >/dev/null 2>&1 || exit
}

View File

@ -0,0 +1,11 @@
# PyCanStudio
## Build
``` bash
sudo apt install python3-full -y
/usr/bin/python3 -m venv ./venv
./venv/bin/python3 -m pip install <dbcc.whl>
```

View File

@ -22,6 +22,7 @@ import os
import json
import platform
from collections import OrderedDict
import traceback
import tkinter as tk
import tkinter.filedialog
@ -34,11 +35,12 @@ from ttkwidgets import CheckboxTreeview, DebugWindow
from .status_bar import StatusBar
from .tabs.info_view import InfoView
from .tabs.text_view import CodeText
# from .tabs.text_view import CodeText
from .tabs.code_view import CodeEditor
from .util import change_encode
import dbcc
from dbcc import *
from dbcc import GenHelper
__all__ = ['App']
__version__ = ".".join(map(lambda x: str(x), [1, 0, 1]))
@ -239,6 +241,10 @@ class App(ttk.Window):
else:
json_obj = OrderedDict()
# XXX(donkey): Patch, append the required KEY
if 'control' not in json_obj:
json_obj['control'] = {}
result = OrderedDict()
for idd in checked:
msgid, sig = idd.split('.')
@ -260,6 +266,38 @@ class App(ttk.Window):
message=
f"Generate Feedback signals successfully",
title="Successfully")
# Generate code for feedback signals
gh = GenHelper(self.__dbc_file_path, json_desc_path)
all_lines = []
all_lines.append("// parser.h")
all_lines.append("#pragma once\n")
all_lines.append("#include <stdint.h> /**< uint8_t uint16_t */")
all_lines.append("#include <stddef.h> /**< size_t */\n")
all_lines.append("#if defined(__cplusplus)")
all_lines.append("extern \"C\" {")
all_lines.append("#endif /* __cplusplus */\n")
for k, _ in json_obj['feedback'].items():
all_lines.append(gh.gen_msg_def(k, 0))
for k, _ in json_obj['feedback'].items():
all_lines.append(gh.gen_msg_unpack_decl(k, 0))
all_lines.append("#if defined(__cplusplus)")
all_lines.append("}")
all_lines.append("#endif /* __cplusplus */\n\n")
all_lines.append("// parser.c")
all_lines.append("#include \"parser.h\"\n")
all_lines.append(gh.gen_macros())
for k, _ in json_obj['feedback'].items():
all_lines.append(gh.gen_msg_unpack_def(k, 0))
self.__text_view.set_content('\n'.join(all_lines))
except Exception as e:
ttk.dialogs.Messagebox.show_error(
message=f"{str(e)}, Failed to generate Feedback signals",
@ -285,6 +323,10 @@ class App(ttk.Window):
else:
json_obj = OrderedDict()
# XXX(donkey): Patch, append the required KEY
if 'feedback' not in json_obj:
json_obj['feedback'] = {}
result = OrderedDict()
for idd in checked:
msgid, sig = idd.split('.')
@ -306,7 +348,40 @@ class App(ttk.Window):
message=
f"Generate Control signals successfully",
title="Successfully")
# Generate code for control signals
gh = GenHelper(self.__dbc_file_path, json_desc_path)
all_lines = []
all_lines.append("// parser.h")
all_lines.append("#pragma once\n")
all_lines.append("#include <stdint.h> /**< uint8_t uint16_t */")
all_lines.append("#include <stddef.h> /**< size_t */\n")
all_lines.append("#if defined(__cplusplus)")
all_lines.append("extern \"C\" {")
all_lines.append("#endif /* __cplusplus */\n")
for k, _ in json_obj['control'].items():
all_lines.append(gh.gen_msg_def(k, 0))
for k, _ in json_obj['control'].items():
all_lines.append(gh.gen_msg_pack_decl(k, 0))
all_lines.append("#if defined(__cplusplus)")
all_lines.append("}")
all_lines.append("#endif /* __cplusplus */\n\n")
all_lines.append("// parser.c")
all_lines.append("#include \"parser.h\"\n")
all_lines.append(gh.gen_macros())
for k, _ in json_obj['control'].items():
all_lines.append(gh.gen_msg_pack_def(k, 0))
self.__text_view.set_content('\n'.join(all_lines))
except Exception as e:
traceback.print_exc()
ttk.dialogs.Messagebox.show_error(
message=f"{str(e)}, Failed to generate Control signals",
title="Failed to generate Control signals")
@ -393,9 +468,8 @@ class App(ttk.Window):
self.__note_book = ttk.Notebook(self.rframe)
self.__info_view = InfoView(self.__note_book, border=0)
self.__note_book.add(self.__info_view, text="Layout")
self.__text_view = CodeText(self.__note_book, border=0)
self.__text_view = CodeEditor(self.__note_book, border=0)
self.__note_book.add(self.__text_view, text="Code")
self.__text_view.update()
self.__note_book.pack(expand=True, fill=BOTH)

View File

@ -722,13 +722,3 @@ class CodeText(ttk.Frame):
def set_content(self, content: str):
self.__code_block.content = content
def update(self, msg=None, sig=None):
if msg is None and sig is None:
self.__code_block.config = ""
if msg:
# Generate message encode/decode code snippets
self.__code_block.config = ""
else:
# Generate signal encode/decode code snippets
self.__code_block.config = ""