PageSourceSearch

https://www.robotmesh.com/studio/content/jsx/robotmesh/tsjs/blockly/blocks_vexv5.js

js robotmesh.com collected 2026-09-24 12:53:13 UTC 18,622 bytes, 1 lines download raw bytes

1import{ProjectTypeId}from"../db_enum.js";import{vexv5_state}from"../interfaces/vexv5_state.js";import{interface_code as icode}from"../interface_code.js";import{msg}from"../msg/messages.js";import*as blocks from"./blocks.js";import*as bcmn from"./blocks_common.js";import{Toolbox}from"./blocks_toolbox.js";import*as bv2 from"./blocks_v2.js";var v5st=vexv5_state;const PROJ_TYPES=[ProjectTypeId.VexV5Blockly,ProjectTypeId.VexV5BlocklyCompetition,ProjectTypeId.VexV5MimicBlockly];var param_v5,code_v5,V5Type;!function(e){const t={"RotationUnits.DEG":"DEGREES","RotationUnits.REV":"TURNS","PercentUnits.PCT":"PERCENT","VelocityUnits.PCT":"PERCENT","AnalogUnits.PCT":"PERCENT","TimeUnits.SEC":"SECONDS","DistanceUnits.IN":"INCHES","DistanceUnits.MM":"MM","DirectionType.FWD":"FORWARD","DirectionType.REV":"REVERSE","TurnType.LEFT":"LEFT","TurnType.RIGHT":"RIGHT","AxisType.XAXIS":"XAXIS","AxisType.YAXIS":"YAXIS","AxisType.ZAXIS":"ZAXIS","OrientationType.ROLL":"ROLL","OrientationType.PITCH":"PITCH","OrientationType.YAW":"YAW","Font.MONO_20":"MONO_M","Font.MONO_30":"MONO_L","Font.MONO_40":"MONO_XL","Font.MONO_60":"MONO_XXL","Font.MONO_15":"MONO_S","Font.MONO_12":"MONO_XS","Font.PROP_20":"PROP_M","Font.PROP_30":"PROP_L","Font.PROP_40":"PROP_XL","Font.PROP_60":"PROP_XXL","ControllerType.PRIMARY":"PRIMARY","ControllerType.PARTNER":"PARTNER"};e.percentUnits=function(){return bv2.param.enumSingleValue(t,"PercentUnits","PCT")},e.directionType=function(){return bv2.param.enumType(t,"DirectionType",["FWD","REV"])},e.turnType=function(){return bv2.param.enumType(t,"TurnType",["LEFT","RIGHT"])},e.velocityUnits=function(e){return bv2.param.enumType(t,"VelocityUnits",["PCT","RPM","DPS"],e)},e.velocityUnitsNoPct=function(e){return bv2.param.enumType(t,"VelocityUnits",["DPS","RPM"],e)},e.distanceUnits=function(){return bv2.param.enumType(t,"DistanceUnits",["CM","MM","IN"])},e.rotationUnits=function(e){return bv2.param.enumType(t,"RotationUnits",["DEG","REV","RAW"],e)},e.timeUnits=function(){return bv2.param.enumType(t,"TimeUnits",["SEC","MSEC"])},e.brakeType=function(){return bv2.param.enumType(t,"BrakeType",["HOLD","BRAKE","COAST"])},e.currentUnits=function(){return bv2.param.enumSingleValue(t,"CurrentUnits","AMP")},e.powerUnits=function(){return bv2.param.enumSingleValue(t,"PowerUnits","WATT")},e.torqueUnits=function(){return bv2.param.enumType(t,"TorqueUnits",["NM","IN_LB"])},e.analogUnits=function(){return bv2.param.enumType(t,"AnalogUnits",["PCT","RANGE_8BIT","RANGE_10BIT","RANGE_12BIT","MV"])},e.temperatureUnits=function(){return bv2.param.enumSingleValue(t,"TemperatureUnits","CELSIUS")},e.orientationType=function(){return bv2.param.enumType(t,"OrientationType",["YAW","PITCH","ROLL"])},e.axisType=function(){return bv2.param.enumType(t,"AxisType",["XAXIS","YAXIS","ZAXIS"])},e.font=function(){return bv2.param.enumType(t,"Font",["MONO_12","MONO_15","MONO_20","MONO_30","MONO_40","MONO_60","PROP_20","PROP_30","PROP_40","PROP_60","CHINESE_16"])},e.eyes=function(){return bv2.param.enumType(t,"Eyes",["BLACK_LEFT","BLACK_DOWN","BLACK_RESTING","BLACK_RIGHT","BLACK_STRAIGHT","BLUE_ANGRY","BLUE_RESTING","BLUE_RESTING_L","BLUE_RESTING_R","BLUE_SAD","BLUE_SQUINTING","GREEN_DOWN","GREEN_LEFT","GREEN_RESTING","GREEN_RIGHT","GREEN_UP","PURPLE_DOWN","PURPLE_LEFT","PURPLE_RESTING","PURPLE_RIGHT","PURPLE_UP"])},e.TORQUE_OPTIONS=[[msg.blockly.PERCENTUNITS_PCT,"vex.PercentUnits.PCT"],[msg.blockly.TORQUEUNITS_NM,"vex.TorqueUnits.NM"],[msg.blockly.TORQUEUNITS_IN_LB,"vex.TorqueUnits.IN_LB"],[msg.blockly.CURRENTUNITS_AMP,"vex.CurrentUnits.AMP"]],e.controller=function(e=""){const o=bv2.param.enumType(t,"ControllerType",["PRIMARY","PARTNER"]);return{init:(e,t,r)=>{o.init(e,t,r)},generateCode:(t,o)=>{const r="PARTNER"==t.getFieldValue(o);return`${code_v5.getControllerName(r)}${e}`}}}}(param_v5||(param_v5={})),function(e){function t(e){const t=blocks.getJoystick(),o=t&&t.type===v5st.VexDeviceType.controller_one,r=t&&t.type===v5st.VexDeviceType.controller_partner;if(!e&&!o&&!r)throw msg.blockly.ERR_NO_CONTROLLER_CONFIGURED;if(e&&!r)throw msg.blockly.ERR_NO_PARTNER_CONTROLLER_CONFIGURED;return t.name+(e?"_p":"")}e.changeSetMaxTorqueMethod=function(e){let t=e.code;return-1!==t.indexOf("PercentUnits")?t.replace("set_max_torque","set_max_torque_percent"):-1!==t.indexOf("CurrentUnits")?t.replace("set_max_torque","set_max_torque_current"):t},e.setCursorAndPrint=function(e){return`${e.objCodes[0]}.set_cursor(${e.argCodes[0]}, 1)\n`+`${e.objCodes[0]}.print_(${e.argCodes[1]})`},e.insertControllerName=function(e){let o=e.code;const r=0===o.indexOf(msg.blockly.PFX_PARTNER_);return r&&(o=o.substr(msg.blockly.PFX_PARTNER_.length)),`${t(r)}.${o}`},e.getControllerName=t}(code_v5||(code_v5={})),function(e){e.DirectionType="Number"}(V5Type||(V5Type={}));
1export const toolbox=new Toolbox;bv2.BlockTypeCreator.ifcPrefix="vexv5";let tc=null;toolbox.category(msg.blockly.VEX_COMPETITION,[ProjectTypeId.VexV5Blockly,ProjectTypeId.VexV5BlocklyCompetition],()=>{function e(e,t,o){const r="vexv5_start_"+t;blocks.createBlock(r,t=>{blocks.whenRunInit(t,e,o,blocks.COLOR_COMPETITION)},e=>{const o=`competition = ${blocks.getNamespace()}.Competition()`;return Blockly.Python.definitions_[o]=o,blocks.whenRunCode(e,"competition",t)}),toolbox.append(`<block type="${r}"></block>`)}e("auto","autonomous",msg.blockly.WHEN_AUTONOMOUS),e("driver","drivercontrol",msg.blockly.WHEN_DRIVER)}),toolbox.category(msg.blockly.VEX_V5_MOTORS,PROJ_TYPES,()=>{tc=new bv2.BlockTypeCreator("motor",bv2.param.widget(v5st.VexDeviceType.motor),toolbox),tc.method({pyMethod:"spin",params:[param_v5.directionType(),bv2.param.number(100,msg.blockly.AT_VELOCITY_C),param_v5.velocityUnits()]}),tc.method({pyMethod:"set_velocity",params:[bv2.param.number(100),param_v5.velocityUnits()]}),tc.method({id:"spin_without_velocity",pyMethod:"spin",params:[param_v5.directionType()]}),tc.method({idSuffix:"rotate_for",pyMethod:"spin_for",params:[param_v5.directionType(),bv2.param.number(0,msg.blockly.FOR),param_v5.rotationUnits()],color:bv2.BlockColorType.Blocking}),tc.method({idSuffix:"start_rotate_for",pyMethod:"start_spin_for",params:[param_v5.directionType(),bv2.param.number(0,msg.blockly.FOR),param_v5.rotationUnits()]}),tc.method({idSuffix:"rotate_to",pyMethod:"spin_to",params:[bv2.param.number(0),param_v5.rotationUnits()],color:bv2.BlockColorType.Blocking}),tc.method({idSuffix:"start_rotate_to",pyMethod:"start_spin_to",params:[bv2.param.number(0),param_v5.rotationUnits()]}),tc.method({idSuffix:"rotate_for_time",pyMethod:"spin_for_time",params:[param_v5.directionType(),bv2.param.number(0,msg.blockly.FOR),param_v5.timeUnits()],color:bv2.BlockColorType.Blocking}),tc.method({pyMethod:"stop",params:[param_v5.brakeType()]}),tc.method({pyMethod:"is_done",outputType:bv2.BType.Boolean}),toolbox.category(msg.blockly.MOTOR_DETAIL,PROJ_TYPES,()=>{tc.method({pyMethod:"rotation",outputType:bv2.BType.Number,params:[param_v5.rotationUnits()]}),tc.method({pyMethod:"set_rotation",params:[bv2.param.number(0),param_v5.rotationUnits()]}),tc.method({pyMethod:"set_timeout",params:[bv2.param.number(5),param_v5.timeUnits()]}),tc.method({pyMethod:"did_timeout",outputType:bv2.BType.Boolean}),tc.method({pyMethod:"set_max_torque",params:[bv2.param.number(100),bv2.param.dropdown(param_v5.TORQUE_OPTIONS)],processCode:code_v5.changeSetMaxTorqueMethod}),tc.method({pyMethod:"set_stopping",params:[param_v5.brakeType()]}),tc.method({pyMethod:"velocity",outputType:bv2.BType.Number,params:[param_v5.velocityUnits()]}),tc.method({pyMethod:"current",outputType:bv2.BType.Number,params:[param_v5.currentUnits()]}),tc.method({pyMethod:"power",outputType:bv2.BType.Number,params:[param_v5.powerUnits()]}),tc.method({pyMethod:"torque",outputType:bv2.BType.Number,params:[param_v5.torqueUnits()]}),tc.method({pyMethod:"efficiency",outputType:bv2.BType.Number,params:[param_v5.percentUnits()]}),tc.method({pyMethod:"temperature",outputType:bv2.BType.Number,params:[param_v5.temperatureUnits()]})})}),toolbox.category(msg.blockly.VEX_V5_DISPLAY,PROJ_TYPES,()=>{tc=new bv2.BlockTypeCreator("brain_lcd",bv2.param.constant("brain.screen",msg.blockly.LCD),toolbox),tc.method({pyMethod:"set_font",params:[param_v5.font()]}),tc.method({pyMethod:"print_line",params:[bv2.param.numberField(1),bv2.param.any("''",null,bcmn.xml.SHADOW_TEXT)],lastValueInputOpen:!0}),tc.method({pyMethod:"clear_line",params:[bv2.param.numberField(1),bv2.param.color(bv2.COLOR_BLACK," ")]}),tc.method({pyMethod:"print_at",params:[bv2.param.number(0,msg.blockly.X),bv2.param.number(40,msg.blockly.Y),bv2.param.boolDropdown(!0,msg.blockly.OPAQUE,msg.blockly.TRANSPARENT),bv2.param.any("''",null,bcmn.xml.SHADOW_TEXT)]}),tc.method({pyMethod:"pressing",outputType:bv2.BType.Boolean}),tc.method({idSuffix:"position",pyMethod:bv2.param.dropdown([[msg.blockly.X_POSITION,"x_position"],[msg.blockly.Y_POSITION,"y_position"]]),outputType:bv2.BType.Number})}),toolbox.category(msg.blockly.VEX_V5_GRAPHICS,PROJ_TYPES,()=>{tc.method({pyMethod:"set_pen_width",params:[bv2.param.number(1)]}),tc.method({idSuffix:"set_color",pyMethod:bv2.param.dropdown([[msg.blockly.PEN_COLOR,"set_pen_color"],[msg.blockly.FILL_COLOR,"set_fill_color"]]),params:[bv2.param.color(bv2.COLOR_YELLOW,msg.blockly.TO)]}),tc.method({pyMethod:"set_origin",params:[bv2.param.number(0,msg.blockly.X),bv2.param.number(0,msg.blockly.Y)]}),tc.method({pyMethod:"draw_pixel",params:[bv2.param.number(0,msg.blockly.X),bv2.param.number(0,msg.blockly.Y)]}),tc.method({pyMethod:"draw_line",params:[bv2.param.number(0,msg.blockly.FROM_X),bv2.param.number(0,msg.blockly.Y),bv2.param.number(100,msg.blockly.TO_X),bv2.param.number(100,msg.blockly.Y)]}),tc.method({pyMethod:"draw_rectangle",params:[bv2.param.number(0,msg.blockly.X),bv2.param.number(0,msg.blockly.Y),bv2.param.number(200,msg.blockly.WIDTH),bv2.param.number(100,msg.blockly.HEIGHT)]}),tc.method({pyMethod:"draw_eyes",params:[param_v5.eyes()]}),tc.method({pyMethod:"draw_circle",params:[bv2.param.number(0,msg.blockly.X),bv2.param.number(0,msg.blockly.Y),bv2.param.number(100,msg.blockly.RADIUS)]}),tc.method({pyMethod:"clear_screen",params:[bv2.param.color(bv2.COLOR_BLACK)]}),tc.method({pyMethod:"render",params:[bv2.param.boolDropdown(!0,msg.blockly.VSYNC,msg.blockly.IMMEDIATELY)]})}),toolbox.category(msg.blockly.VEXV5_CONTROLLER,PROJ_TYPES,()=>{tc=new bv2.BlockTypeCreator("controller",param_v5.controller(),toolbox),tc.method({id:`${tc.typePrefix}_button_pressing`,obj:bv2.param.widget(v5st.VexDeviceType.controller_button),pyMethod:"pressing",outputType:bv2.BType.Boolean,processCode:code_v5.insertControllerName}),tc.method({id:`${tc.typePrefix}_axis_position`,obj:bv2.param.widget(v5st.VexDeviceType.controller_axis),pyMethod:"position",outputType:bv2.BType.Number,params:[param_v5.percentUnits()],processCode:code_v5.insertControllerName}),tc.method({pyMethod:"set_deadband",params:[bv2.param.number(5),param_v5.percentUnits()]}),tc=new bv2.BlockTypeCreator("controller_lcd",param_v5.controller(".screen"),toolbox);const e=[["1","1"],["2","2"],["3","3"]];tc.method({pyMethod:"print_at_line",params:[bv2.param.dropdown(e),bv2.param.any("''",null,bcmn.xml.SHADOW_TEXT)],lastValueInputOpen:!0,processCode:code_v5.setCursorAndPrint}),tc.method({pyMethod:"clear_screen"}),tc.method({pyMethod:"clear_line",params:[bv2.param.dropdown(e)]}),tc=new bv2.BlockTypeCreator("controller",param_v5.controller(),toolbox),tc.method({pyMethod:"rumble",params:[bv2.param.string(". - . -",msg.blockly.PATTERN)]})}),bcmn.addVisionCategory(toolbox,msg.blockly.VEX_V5_VISION,[ProjectTypeId.VexV5Blockly,ProjectTypeId.VexV5BlocklyCompetition],"vexv5",v5st.VexDeviceType.vision,icode.vision.SIG_PREFIX),toolbox.category(msg.blockly.VEX_V5_INERTIAL,PROJ_TYPES,()=>{tc=new bv2.BlockTypeCreator("inertial",bv2.param.widget(v5st.VexDeviceType.inertial),toolbox),tc.method({pyMethod:"heading",params:[param_v5.rotationUnits()],outputType:bv2.BType.Number}),tc.method({pyMethod:"orientation",params:[param_v5.orientationType(),param_v5.rotationUnits(msg.IN)],outputType:bv2.BType.Number,processCode:e=>{try{if(e.argCodes[0].endsWith("YAW"))return`${e.objCodes[0]}.yaw(${e.argCodes[1]})`;if(e.argCodes[0].endsWith("PITCH"))return`${e.objCodes[0]}.pitch(${e.argCodes[1]})`;if(e.argCodes[0].endsWith("ROLL"))return`${e.objCodes[0]}.roll(${e.argCodes[1]})`}catch(t){blocks.addError(t.message||t,e.block,!!e.args.outputType)}}}),tc.method({pyMethod:"rotation",params:[param_v5.rotationUnits()],outputType:bv2.BType.Number}),tc.method({pyMethod:"set_heading",params:[bv2.param.number(0),param_v5.rotationUnits()]}),tc.method({pyMethod:"set_rotation",params:[bv2.param.number(0),param_v5.rotationUnits()]}),tc.method({pyMethod:"gyro_rate",params:[param_v5.axisType(),param_v5.velocityUnitsNoPct(msg.IN)],outputType:bv2.BType.Number}),tc.method({pyMethod:"acceleration",params:[param_v5.axisType()],outputType:bv2.BType.Number}),tc.method({pyMethod:"calibrate",color:bv2.BlockColorType.Blocking})}),toolbox.category(msg.blockly.VEX_V5_DISTANCE,PROJ_TYPES,()=>{tc=new bv2.BlockTypeCreator("distance",bv2.param.widget(v5st.VexDeviceType.distance),toolbox),tc.method({pyMethod:"is_object_detected",outputType:bv2.BType.Boolean}),tc.method({pyMethod:"object_distance",params:[param_v5.distanceUnits()],outputType:bv2.BType.Number}),tc.method({pyMethod:"object_raw_size",outputType:bv2.BType.Number}),tc.method({pyMethod:"object_velocity",outputType:bv2.BType.Number})}),toolbox.category(msg.blockly.VEX_V5_OPTICAL,PROJ_TYPES,()=>{tc=new bv2.BlockTypeCreator("optical",bv2.param.widget(v5st.VexDeviceType.optical),toolbox),tc.method({pyMethod:"is_near_object",outputType:bv2.BType.Boolean}),tc.method({pyMethod:"hue",outputType:bv2.BType.Number}),tc.method({pyMethod:"brightness",outputType:bv2.BType.Number})}),toolbox.category(msg.blockly.VEX_V5_ROTATION,PROJ_TYPES,()=>{tc=new bv2.BlockTypeCreator("rotation",bv2.param.widget(v5st.VexDeviceType.rotation),toolbox),tc.method({pyMethod:"set_reversed",params:[bv2.param.bool(!1)]}),tc.method({pyMethod:"angle",params:[param_v5.rotationUnits()],outputType:bv2.BType.Number}),tc.method({pyMethod:"position",params:[param_v5.rotationUnits()],outputType:bv2.BType.Number}),tc.method({pyMethod:"set_position",params:[bv2.param.number(0)]}),tc.method({pyMethod:"velocity",params:[param_v5.velocityUnitsNoPct()],outputType:bv2.BType.Number})}),toolbox.category(msg.blockly.TRIPORT_INPUTS,PROJ_TYPES,()=>{tc=new bv2.BlockTypeCreator("bumper",bv2.param.widget(v5st.VexDeviceType.limit,v5st.VexDeviceType.bumper),toolbox),tc.method({pyMethod:"pressing",outputType:bv2.BType.Boolean}),tc=new bv2.BlockTypeCreator("analog",bv2.param.widget(v5st.VexDeviceType.pot,v5st.VexDeviceType.line,v5st.VexDeviceType.light,v5st.VexDeviceType.gyro,v5st.VexDeviceType.accelerometer,v5st.VexDeviceType.analog_in),toolbox),tc.method({pyMethod:"value",outputType:bv2.BType.Number,params:[param_v5.analogUnits()]}),tc=new bv2.BlockTypeCreator("pot",bv2.param.widget(v5st.VexDeviceType.pot),toolbox),tc.method({pyMethod:"value",outputType:bv2.BType.Number,params:[param_v5.rotationUnits()]}),tc=new bv2.BlockTypeCreator("encoder",bv2.param.widget(v5st.VexDeviceType.encoder),toolbox),tc.method({pyMethod:"rotation",outputType:bv2.BType.Number,params:[param_v5.rotationUnits()]}),tc.method({pyMethod:"set_rotation",params:[bv2.param.number(0),param_v5.rotationUnits()]}),tc.method({pyMethod:"velocity",outputType:bv2.BType.Number,params:[param_v5.velocityUnitsNoPct()]}),tc=new bv2.BlockTypeCreator("sonar",bv2.param.widget(v5st.VexDeviceType.sonar),toolbox),tc.method({pyMethod:"distance",outputType:bv2.BType.Number,params:[param_v5.distanceUnits()]}),tc=new bv2.BlockTypeCreator("gyro",bv2.param.widget(v5st.VexDeviceType.gyro),toolbox),tc.method({pyMethod:"value",outputType:bv2.BType.Number,params:[param_v5.rotationUnits()]})}),toolbox.category(msg.blockly.TRIPORT_OUTPUTS,PROJ_TYPES,()=>{tc=new bv2.BlockTypeCreator("digital_out",bv2.param.widget(v5st.VexDeviceType.digital_out),toolbox),tc.method({pyMethod:"set",params:[bv2.param.bool(!1)]}),tc.method({pyMethod:"is_set",outputType:bv2.BType.Boolean}),tc=new bv2.BlockTypeCreator("motor393",bv2.param.widget(v5st.VexDeviceType.motor393),toolbox),tc.method({pyMethod:"spin",params:[param_v5.directionType(),bv2.param.number(100,msg.blockly.AT_VELOCITY_C),param_v5.velocityUnits()]}),tc.method({pyMethod:"stop"}),tc=new bv2.BlockTypeCreator("servo",bv2.param.widget(v5st.VexDeviceType.servo),toolbox),tc.method({pyMethod:"set_position",params:[bv2.param.number(0),param_v5.percentUnits()]})}),toolbox.category(msg.blockly.C_DRIVETRAIN,PROJ_TYPES,()=>{tc=new bv2.BlockTypeCreator("drivetrain",bcmn.param.drivetrain(msg.blockly.DRIVETRAIN),toolbox),tc.method({pyMethod:"set_drive_velocity",params:[bv2.param.number(100),param_v5.velocityUnits()]}),tc.method({pyMethod:"set_turn_velocity",params:[bv2.param.number(100),param_v5.velocityUnits()]}),tc.method({pyMethod:"drive",params:[param_v5.directionType()]}),tc.method({pyMethod:"drive_for",params:[param_v5.directionType(),bv2.param.number(50,msg.blockly.FOR),param_v5.distanceUnits()],color:bv2.BlockColorType.Blocking}),tc.method({pyMethod:"start_drive_for",params:[param_v5.directionType(),bv2.param.number(50,msg.blockly.FOR),param_v5.distanceUnits()]}),tc.method({pyMethod:"turn",params:[param_v5.turnType()]}),tc.method({pyMethod:"turn_for",params:[param_v5.turnType(),bv2.param.number(90,msg.blockly.FOR),param_v5.rotationUnits()],color:bv2.BlockColorType.Blocking}),tc.method({pyMethod:"start_turn_for",params:[param_v5.turnType(),bv2.param.number(90,msg.blockly.FOR),param_v5.rotationUnits()]}
1),tc.method({pyMethod:"arcade",params:[bv2.param.number(100,msg.blockly.DRIVE),bv2.param.number(0,msg.blockly.TURN)]}),tc.method({pyMethod:"stop",params:[param_v5.brakeType()]}),tc.method({pyMethod:"is_done",outputType:bv2.BType.Boolean}),toolbox.category(msg.blockly.DRIVETRAIN_DETAIL,PROJ_TYPES,()=>{tc.method({pyMethod:"set_timeout",params:[bv2.param.number(5),param_v5.timeUnits()]}),tc.method({pyMethod:"did_timeout",outputType:bv2.BType.Boolean}),tc.method({pyMethod:"set_stopping",params:[param_v5.brakeType()]}),tc.method({pyMethod:"velocity",outputType:bv2.BType.Number,params:[param_v5.velocityUnits()]}),tc.method({pyMethod:"current",outputType:bv2.BType.Number,params:[param_v5.currentUnits()]}),tc.method({pyMethod:"power",outputType:bv2.BType.Number,params:[param_v5.powerUnits()]}),tc.method({pyMethod:"torque",outputType:bv2.BType.Number,params:[param_v5.torqueUnits()]}),tc.method({pyMethod:"efficiency",outputType:bv2.BType.Number,params:[param_v5.percentUnits()]}),tc.method({pyMethod:"temperature",outputType:bv2.BType.Number,params:[param_v5.temperatureUnits()]})})});

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.