export type Time = {
sec: number;
nsec: number;
};
export type Header = {
timestamp: Time;
frame_id: String;
};
export const makeHeader = (frame_id = ""): Header => {
const currentUnixTimeMs = new Date().getTime();
return {
timestamp: {
sec: Math.floor(currentUnixTimeMs / 1000),
nsec: (currentUnixTimeMs % 1000) * 1e6,
},
frame_id,
};
};
export type MsmState= {
INIT : number;
STANDBY : number;
BACKGROUND_SEARCH : number;
SEARCH : number;
PARKIN_SELECT : number;
PARKIN_GUIDENCE : number;
PARKIN_SUSPEND : number;
PARKOUT: number;
PARKOUT_ACTIVE : number;
PARKOUT_SUSPEND : number;
APA_ABORT : number;
APA_FINISH : number;
PILOT_ACTIVE : number;
PILOT_SUSPEND : number;
PILOT_ABORT : number;
MAPBUILD_PRE: number;
MAPBUILD : number;
MAPBUILD_COMPLETE : number;
FAILED : number;
FAILURE : number;
value: number;
};
export type MsmFcnMode= {
APA : number;
RPA : number;
HAVP: number;
PAVP : number;
MEB : number;
value: number;
};
export const makeMsmState = (a:number): MsmState => {
return {
INIT : 0,
STANDBY : 1,
BACKGROUND_SEARCH : 2,
SEARCH : 3,
PARKIN_SELECT : 4,
PARKIN_GUIDENCE : 5,
PARKIN_SUSPEND : 6,
PARKOUT: 7,
PARKOUT_ACTIVE : 8,
PARKOUT_SUSPEND : 9,
APA_ABORT : 10,
APA_FINISH : 11,
PILOT_ACTIVE : 12,
PILOT_SUSPEND : 13,
PILOT_ABORT : 14,
MAPBUILD_PRE: 15,
MAPBUILD : 16,
MAPBUILD_COMPLETE : 17,
FAILED : 18,
FAILURE : 19,
value: a
};
};
export const makeMsmFcnMode = (b:number): MsmFcnMode => {
return {
APA : 1,
RPA : 2,
HAVP : 3,
PAVP : 4,
MEB : 5,
value: b
};
};
export type SuspendReason = {
SUSPEND_REASON_INVALID : number;
SUSPEND_REASON_DOOR_OPEN: number;
SUSPEND_REASON_SAFETY_BELT_UNTIE : number;
SUSPEND_REASON_APP_REQ_SUSPEND : number;
SUSPEND_REASON_OBSTACLE_REPLAN_WAITING: number;
SUSPEND_REASON_MIRROR_FOLDED : number;
SUSPEND_REASON_HOOD_OPEN : number;
SUSPEND_REASON_TRUNK_OPEN : number;
SUSPEND_REASON_PUT_PEDAL : number;
value : number
};
export const MakeSuspendReason = (v : number): SuspendReason => {
return {
SUSPEND_REASON_INVALID : 0,
SUSPEND_REASON_DOOR_OPEN: 1,
SUSPEND_REASON_SAFETY_BELT_UNTIE : 2,
SUSPEND_REASON_APP_REQ_SUSPEND : 3,
SUSPEND_REASON_OBSTACLE_REPLAN_WAITING: 4,
SUSPEND_REASON_MIRROR_FOLDED : 5,
SUSPEND_REASON_HOOD_OPEN : 6,
SUSPEND_REASON_TRUNK_OPEN : 7,
SUSPEND_REASON_PUT_PEDAL : 8,
value : v
};
};
export type AbortReason = {
ABORT_REASON_INVALID: number;
ABORT_REASON_PARKING_TIMES_OVER_LIMIT : number;
ABORT_REASON_PARKING_TIME_TOO_LONG: number;
ABORT_REASON_SLOT_TOO_SMALL: number;
ABORT_REASON_PARKING_SUSPEND_OVER_TIME : number;
ABORT_REASON_PARK_SUSPEND_RESUME_MISSING_CONFIRM: number;
ABORT_REASON_PARK_SUSPEND_USER_CONFIRM_QUIT : number;
ABORT_REASON_DRIVE_MODE_NOT_SUPPORT : number;
ABORT_REASON_PARKING_SPEED_OVER_LIMIT : number;
ABORT_REASON_SLOPE_OVER : number;
ABORT_REASON_STEERING_INTERVENTION : number;
ABORT_REASON_GEAR_INTERVENTION : number;
ABORT_REASON_EPB_INTERVENTION : number;
ABORT_REASON_VEHICLE_NOT_READY : number;
ABORT_REASON_SYSTEM_ERROR: number;
ABORT_REASON_CONTROL_UNIT_ERROR : number;
ABORT_REASON_ACTIVE_SECURITY_FEATURE_ACTIVATION : number;
ABORT_REASON_PLANNING_FAULT : number;
value : number;
};
export const MakeAbortReason = (v : number): AbortReason => {
return {
ABORT_REASON_INVALID: 0,
ABORT_REASON_PARKING_TIMES_OVER_LIMIT : 1,
ABORT_REASON_PARKING_TIME_TOO_LONG: 2,
ABORT_REASON_SLOT_TOO_SMALL: 3,
ABORT_REASON_PARKING_SUSPEND_OVER_TIME : 4,
ABORT_REASON_PARK_SUSPEND_RESUME_MISSING_CONFIRM: 5,
ABORT_REASON_PARK_SUSPEND_USER_CONFIRM_QUIT : 6,
ABORT_REASON_DRIVE_MODE_NOT_SUPPORT : 7,
ABORT_REASON_PARKING_SPEED_OVER_LIMIT : 8,
ABORT_REASON_SLOPE_OVER : 9,
ABORT_REASON_STEERING_INTERVENTION : 10,
ABORT_REASON_GEAR_INTERVENTION : 11,
ABORT_REASON_EPB_INTERVENTION : 12,
ABORT_REASON_VEHICLE_NOT_READY : 13,
ABORT_REASON_SYSTEM_ERROR: 14,
ABORT_REASON_CONTROL_UNIT_ERROR : 15,
ABORT_REASON_ACTIVE_SECURITY_FEATURE_ACTIVATION : 16,
ABORT_REASON_PLANNING_FAULT : 17,
value : v
};
};
export type SwitchReason = {
INVALID :number;
SYSTEM_ASSOCIATED_FAULT:number;
HANDSHAKE_TIMEOUT: number;
PLANNING_FAIL : number;
PARKIN_SUSPEND_RESUME : number;
SEARCH_OVER_SPEED : number;
UPDATE_SLOT_SELECT : number;
PARKOUT_SUSPEND_RESUME : number;
PARKIN_ABORT : number;
PARK_SUSPEND_CANCLE_PARKING : number;
DETECT_PARKIN_SCENE : number;
DETECT_PARKOUT_SCENE : number;
value : number;
};
export const MakeSwitchReason = (v : number): SwitchReason => {
return {
INVALID : 0,
SYSTEM_ASSOCIATED_FAULT: 1,
HANDSHAKE_TIMEOUT : 2,
PLANNING_FAIL : 3,
PARKIN_SUSPEND_RESUME : 4,
SEARCH_OVER_SPEED: 5,
UPDATE_SLOT_SELECT: 6,
PARKOUT_SUSPEND_RESUME: 7,
PARKIN_ABORT: 8,
PARK_SUSPEND_CANCLE_PARKING : 9,
DETECT_PARKIN_SCENE : 10,
DETECT_PARKOUT_SCENE : 11,
value : v,
};
};
export type MsmStateInfo = {
header : Header;
msm_state : MsmState;
msm_fcn_mod : MsmFcnMode;
PARK_IN_SCENE : number;
PARK_OUT_SCENE : number;
park_scene : number;
select_slot_id : number;
PARK_TAIL_IN:number;
PARK_HEAD_IN:number;
PARK_TAIL_OUT:number;
PARK_HEAD_OUT:number;
park_method : number;
PARK_OUT_DIR_LEFT:number;
PARK_OUT_DIR_FORWARD:number;
PARK_OUT_DIR_RIGHT:number;
parkout_dir : number;
suspend_reason : SuspendReason;
abort_reason : AbortReason;
switch_reason : SwitchReason;
};
export const makeMsmStateInfo = (state:number, mode: number): MsmStateInfo => {
return {
header:makeHeader(),
msm_state: makeMsmState(state),
msm_fcn_mod : makeMsmFcnMode(mode),
PARK_IN_SCENE : 0,
PARK_OUT_SCENE : 1,
park_scene : 0,
select_slot_id : 0,
PARK_TAIL_IN:1,
PARK_HEAD_IN:2,
PARK_TAIL_OUT:3,
PARK_HEAD_OUT:4,
park_method : 1,
PARK_OUT_DIR_LEFT: 0,
PARK_OUT_DIR_FORWARD:1,
PARK_OUT_DIR_RIGHT: 2,
parkout_dir : 0,
suspend_reason : MakeSuspendReason(0),
abort_reason : MakeAbortReason(0),
switch_reason : MakeSwitchReason(0),
};
};
let msm_state_ = makeMsmStateInfo(0,0);
msm_state_.msm_state.value = msm_state_.msm_state.APA_ABORT;
msm_state_.select_slot_id = 0;
msm_state_.abort_reason.value = 0;
msm_state_.park_scene = msm_state_.PARK_IN_SCENE;
msm_state_.msm_fcn_mod.value = msm_state_.msm_fcn_mod.APA;
let rinfo ={
req_info : {
msm_state: {
value: msm_state_.msm_state.value
},
select_slot_id: 0,
park_scene : msm_state_.park_scene,
msm_fcn_mod : { value : msm_state_.msm_fcn_mod.value},
park_method: msm_state_.park_method,
abort_reason : { value : 0},
}
}
let strJson = JSON.stringify(rinfo);
console.log(strJson)