diff --git a/src/SCRIPTS/RF2/MSP/mspEscFlyrotor.lua b/src/SCRIPTS/RF2/MSP/mspEscFlyrotor.lua index 4fbc8e9..e18392c 100644 --- a/src/SCRIPTS/RF2/MSP/mspEscFlyrotor.lua +++ b/src/SCRIPTS/RF2/MSP/mspEscFlyrotor.lua @@ -2,8 +2,8 @@ local statusOptions = { [0] = "Disable", "Enable" } local govMode = { [0] = "ESC Governor", "Linear Throttle", "RF Gyro Governor" } local becVoltage = { [0] = "Disable", "7.5V", "8.0V", "8.5V", "12.0V" } local timing = { [0] = "Auto", "1°", "2°", "3°", "4°", "5°", "6°", "7°", "8°", "9°", "10°" } -local motorDirection = { [0] = "CW", "CCW" } -local fanControl = { [0] = "Automatic", "Always On" } +local motorDirection = { [0] = "Normal", "Reversed" } +local fanControl = { [0] = "Temp Control", "Always On", "Always Off" } local throttleProtocols = { [0] = "PWM" } local telemetryProtocols = { [0] = "FLYROTOR" } local ledColors = { [0] = "CUSTOM", "OFF", "RED", "GREEN", "BLUE", "YELLOW", "MAGENTA", "CYAN", "WHITE", "ORANGE", "GRAY", "MAROON", "DARK_GREEN", "NAVY", "PURPLE", "TEAL", "SILVER", "PINK", "GOLD", "BROWN", "LIGHT_BLUE", "FL_PINK", "FL_ORANGE", "FL_LIME", "FL_MINT", "FL_CYAN", "FL_PURPLE", "FL_HOT_PINK", "FL_LIGHT_YELLOW", "FL_AQUAMARINE", "FL_GOLD", "FL_DEEP_PINK", "FL_NEON_GREEN", "FL_ORANGE_RED" } @@ -12,7 +12,7 @@ local function getDefaults() return { esc_signature = nil, command = nil, - unknown1 = nil, + type = nil, amperage = nil, serial_number1 = nil, serial_number2 = nil, @@ -42,13 +42,13 @@ local function getDefaults() restart_acc = { min = 1, max = 10 }, p_gain = { min = 0, max = 100 }, i_gain = { min = 0, max = 100 }, - unknown2 = nil, + active_freewheel = { min = 0, max = #statusOptions, table = statusOptions}, drive_freq = { min = 10, max = 24 }, max_motor_erpm = { min = 1000, max = 1000000, mult = 100 }, throttle_protocol = { min = 0, max = #throttleProtocols, table = throttleProtocols }, telemetry_protocol = { min = 0, max = #telemetryProtocols, table = telemetryProtocols }, led_color = { min = 0, max = #ledColors, table = ledColors }, - unknown3 = nil, + led_rgb = nil, motor_temp_sensor = { min = 0, max = #statusOptions, table = statusOptions}, motor_temp = { min = 50, max = 150, unit = rf2.units.celsius }, capacity_cutoff = { min = 0, max = 50000, mult = 100 } @@ -77,7 +77,7 @@ local function getEscParameters(callback, callbackParam, data) end data.esc_signature = signature data.command = rf2.mspHelper.readU8(buf) - data.unknown1 = rf2.mspHelper.readU8(buf) + data.type = rf2.mspHelper.readU8(buf) data.amperage = getUInt(buf, 2) data.serial_number1 = getUInt(buf, 4) data.serial_number2 = getUInt(buf, 4) @@ -107,24 +107,24 @@ local function getEscParameters(callback, callbackParam, data) data.restart_acc.value = rf2.mspHelper.readU8(buf) data.p_gain.value = rf2.mspHelper.readU8(buf) data.i_gain.value = rf2.mspHelper.readU8(buf) - data.unknown2 = rf2.mspHelper.readU8(buf) + data.active_freewheel.value = rf2.mspHelper.readU8(buf) data.drive_freq.value = rf2.mspHelper.readU8(buf) data.max_motor_erpm.value = getUInt(buf, 3) data.throttle_protocol.value = rf2.mspHelper.readU8(buf) data.telemetry_protocol.value = rf2.mspHelper.readU8(buf) data.led_color.value = rf2.mspHelper.readU8(buf) - data.unknown3 = getUInt(buf, 3) + data.led_rgb = getUInt(buf, 3) data.motor_temp_sensor.value = rf2.mspHelper.readU8(buf) data.motor_temp.value = rf2.mspHelper.readU8(buf) data.capacity_cutoff.value = getUInt(buf, 2) callback(callbackParam, data) end, - simulatorResponse = { 115, 0, 0, 1, 24, 231, 79, 190, 216, 78, 29, 169, 244, 1, 0, 0, 1, 0, 2, 0, 4, 76, 7, 148, 0, 6, 30, 125, 1, 0, 0, 3, 15, 1, 20, 0, 10, 30, 5, 45, 35, 0, 16, 1, 251, 208, 0, 0, 3, 0, 0, 0, 0, 100, 0, 0 }, + simulatorResponse = { 115, 0, 1, 0, 155, 231, 79, 190, 216, 78, 29, 169, 244, 1, 0, 0, 1, 0, 2, 0, 4, 76, 7, 148, 0, 6, 30, 125, 1, 0, 0, 3, 15, 1, 20, 0, 10, 30, 5, 45, 35, 1, 16, 1, 251, 208, 0, 0, 3, 0, 0, 0, 0, 100, 0, 0 }, --[[ simulatorResponse = { 115, -- signature 0, -- command - 0, -- unknown1 + 1, -- type 1, 24, -- amperage 231, 79, 190, 216, -- serial number1 78, 29, 169, 244, -- serial number2 @@ -150,13 +150,13 @@ local function getEscParameters(callback, callbackParam, data) 5, -- restart acc 45, -- p-gain 35, -- i-gain - 0, -- unknown2 + 1, -- active freewheeling 16, -- drive-freq 1, 251, 208 -- max motor erpm 0, -- throttle protocol 0, -- telemetry protocol - 3, -- led color - 0, 0, 0, -- unknown3 + 3, -- led color index + 0, 0, 0, -- led color value 0, -- motor temp sensor 100, -- motor temperature 0, 0, -- capacity cutoff @@ -179,7 +179,7 @@ local function setEscParameters(data) } rf2.mspHelper.writeU8(message.payload, data.esc_signature) rf2.mspHelper.writeU8(message.payload, data.command) - rf2.mspHelper.writeU8(message.payload, data.unknown1) + rf2.mspHelper.writeU8(message.payload, data.type) setUInt(message.payload, data.amperage, 2) setUInt(message.payload, data.serial_number1, 4) setUInt(message.payload, data.serial_number2, 4) @@ -209,13 +209,13 @@ local function setEscParameters(data) rf2.mspHelper.writeU8(message.payload, data.restart_acc.value) rf2.mspHelper.writeU8(message.payload, data.p_gain.value) rf2.mspHelper.writeU8(message.payload, data.i_gain.value) - rf2.mspHelper.writeU8(message.payload, data.unknown2) + rf2.mspHelper.writeU8(message.payload, data.active_freewheel.value) rf2.mspHelper.writeU8(message.payload, data.drive_freq.value) setUInt(message.payload, data.max_motor_erpm.value, 3) rf2.mspHelper.writeU8(message.payload, data.throttle_protocol.value) rf2.mspHelper.writeU8(message.payload, data.telemetry_protocol.value) rf2.mspHelper.writeU8(message.payload, data.led_color.value) - setUInt(message.payload, data.unknown3, 3) + setUInt(message.payload, data.led_rgb, 3) rf2.mspHelper.writeU8(message.payload, data.motor_temp_sensor.value) rf2.mspHelper.writeU8(message.payload, data.motor_temp.value) setUInt(message.payload, data.capacity_cutoff.value, 2) diff --git a/src/SCRIPTS/RF2/PAGES/esc_flyrotor.lua b/src/SCRIPTS/RF2/PAGES/esc_flyrotor.lua index 488b8bc..e718783 100644 --- a/src/SCRIPTS/RF2/PAGES/esc_flyrotor.lua +++ b/src/SCRIPTS/RF2/PAGES/esc_flyrotor.lua @@ -19,45 +19,46 @@ labels[#labels + 1] = { t = "---", x = x + indent, y = inc labels[#labels + 1] = { t = "---", x = x + indent, y = incY(lineSpacing), bold = false } labels[#labels + 1] = { t = "---", x = x + indent, y = incY(lineSpacing), bold = false } --- Basic -labels[#labels + 1] = { t = "Basic", x = x, y = incY(lineSpacing) } -fields[#fields + 1] = { t = "ESC mode", x = x + indent, y = incY(lineSpacing), sp = x + sp, w = 125, data = escParameters.esc_mode } -fields[#fields + 1] = { t = "Cell count [S]", x = x + indent, y = incY(lineSpacing), sp = x + sp, data = escParameters.cell_count } -fields[#fields + 1] = { t = "Low voltage", x = x + indent, y = incY(lineSpacing), sp = x + sp, data = escParameters.low_voltage } -fields[#fields + 1] = { t = "ESC Temperature", x = x + indent, y = incY(lineSpacing), sp = x + sp, data = escParameters.temperature } -fields[#fields + 1] = { t = "SBEC voltage", x = x + indent, y = incY(lineSpacing), sp = x + sp, data = escParameters.bec_voltage } -fields[#fields + 1] = { t = "Electrical angle", x = x + indent, y = incY(lineSpacing), sp = x + sp, data = escParameters.timing } -fields[#fields + 1] = { t = "Motor direction", x = x + indent, y = incY(lineSpacing), sp = x + sp, data = escParameters.motor_direction } -fields[#fields + 1] = { t = "Starting torque", x = x + indent, y = incY(lineSpacing), sp = x + sp, data = escParameters.starting_torque } -fields[#fields + 1] = { t = "Response speed", x = x + indent, y = incY(lineSpacing), sp = x + sp, data = escParameters.response_speed } -fields[#fields + 1] = { t = "Buzzer volume", x = x + indent, y = incY(lineSpacing), sp = x + sp, data = escParameters.buzzer_volume } -fields[#fields + 1] = { t = "Current gain", x = x + indent, y = incY(lineSpacing), sp = x + sp, data = escParameters.current_gain } -fields[#fields + 1] = { t = "Fan control", x = x + indent, y = incY(lineSpacing), sp = x + sp, data = escParameters.fan_control } +-- General +labels[#labels + 1] = { t = "General Parameters", x = x, y = incY(lineSpacing) } +fields[#fields + 1] = { t = "ESC Mode", x = x + indent, y = incY(lineSpacing), sp = x + sp, w = 125, data = escParameters.esc_mode } +fields[#fields + 1] = { t = "LiPo Cell Count [S]", x = x + indent, y = incY(lineSpacing), sp = x + sp, data = escParameters.cell_count } +fields[#fields + 1] = { t = "Low Voltage Limit", x = x + indent, y = incY(lineSpacing), sp = x + sp, data = escParameters.low_voltage } +fields[#fields + 1] = { t = "Temperature Limit", x = x + indent, y = incY(lineSpacing), sp = x + sp, data = escParameters.temperature } +fields[#fields + 1] = { t = "SBEC Voltage", x = x + indent, y = incY(lineSpacing), sp = x + sp, data = escParameters.bec_voltage } +fields[#fields + 1] = { t = "Electrical Angle", x = x + indent, y = incY(lineSpacing), sp = x + sp, data = escParameters.timing } +fields[#fields + 1] = { t = "Motor Direction", x = x + indent, y = incY(lineSpacing), sp = x + sp, data = escParameters.motor_direction } +fields[#fields + 1] = { t = "Starting Power", x = x + indent, y = incY(lineSpacing), sp = x + sp, data = escParameters.starting_torque } +fields[#fields + 1] = { t = "Response Speed", x = x + indent, y = incY(lineSpacing), sp = x + sp, data = escParameters.response_speed } +fields[#fields + 1] = { t = "Beeper Volume", x = x + indent, y = incY(lineSpacing), sp = x + sp, data = escParameters.buzzer_volume } +fields[#fields + 1] = { t = "Current Gain", x = x + indent, y = incY(lineSpacing), sp = x + sp, data = escParameters.current_gain } +fields[#fields + 1] = { t = "Cooling Fan Mode", x = x + indent, y = incY(lineSpacing), sp = x + sp, data = escParameters.fan_control } -- Advanced -labels[#labels + 1] = { t = "Advanced", x = x, y = incY(lineSpacing) } -fields[#fields + 1] = { t = "Soft start time", x = x + indent, y = incY(lineSpacing), sp = x + sp, data = escParameters.soft_start } -fields[#fields + 1] = { t = "Auto restart time", x = x + indent, y = incY(lineSpacing), sp = x + sp, data = escParameters.auto_restart_time } -fields[#fields + 1] = { t = "Restart Acc", x = x + indent, y = incY(lineSpacing), sp = x + sp, data = escParameters.restart_acc } -fields[#fields + 1] = { t = "Gov P-gain", x = x + indent, y = incY(lineSpacing), sp = x + sp, data = escParameters.p_gain } -fields[#fields + 1] = { t = "Gov I-gain", x = x + indent, y = incY(lineSpacing), sp = x + sp, data = escParameters.i_gain } -fields[#fields + 1] = { t = "Drive frequency [KHz]", x = x + indent, y = incY(lineSpacing), sp = x + sp, data = escParameters.drive_freq } -fields[#fields + 1] = { t = "Motor max ERPM", x = x + indent, y = incY(lineSpacing), sp = x + sp, data = escParameters.max_motor_erpm } +labels[#labels + 1] = { t = "Advanced Parameters", x = x, y = incY(lineSpacing) } +fields[#fields + 1] = { t = "Soft Start Time", x = x + indent, y = incY(lineSpacing), sp = x + sp, data = escParameters.soft_start } +fields[#fields + 1] = { t = "Auto Bailout Time", x = x + indent, y = incY(lineSpacing), sp = x + sp, data = escParameters.auto_restart_time } +fields[#fields + 1] = { t = "Auto Bailout Accel", x = x + indent, y = incY(lineSpacing), sp = x + sp, data = escParameters.restart_acc } +fields[#fields + 1] = { t = "Governor P", x = x + indent, y = incY(lineSpacing), sp = x + sp, data = escParameters.p_gain } +fields[#fields + 1] = { t = "Governor I", x = x + indent, y = incY(lineSpacing), sp = x + sp, data = escParameters.i_gain } +fields[#fields + 1] = { t = "Active Freewheeling", x = x + indent, y = incY(lineSpacing), sp = x + sp, data = escParameters.active_freewheel } +fields[#fields + 1] = { t = "Drive Frequency [KHz]", x = x + indent, y = incY(lineSpacing), sp = x + sp, data = escParameters.drive_freq } +fields[#fields + 1] = { t = "Maximun Motor ERPM", x = x + indent, y = incY(lineSpacing), sp = x + sp, data = escParameters.max_motor_erpm } -- Other -labels[#labels + 1] = { t = "Other", x = x, y = incY(lineSpacing) } -fields[#fields + 1] = { t = "Throttle protocol", x = x + indent, y = incY(lineSpacing), sp = x + sp, data = escParameters.throttle_protocol } -fields[#fields + 1] = { t = "Tele protocol", x = x + indent, y = incY(lineSpacing), sp = x + sp, data = escParameters.telemetry_protocol } -fields[#fields + 1] = { t = "LED color", x = x + indent, y = incY(lineSpacing), sp = x + sp, data = escParameters.led_color } -fields[#fields + 1] = { t = "Motor temp sensor", x = x + indent, y = incY(lineSpacing), sp = x + sp, data = escParameters.motor_temp_sensor } -fields[#fields + 1] = { t = "Motor temperture", x = x + indent, y = incY(lineSpacing), sp = x + sp, data = escParameters.motor_temp } -fields[#fields + 1] = { t = "Capacity cutoff", x = x + indent, y = incY(lineSpacing), sp = x + sp, data = escParameters.capacity_cutoff } +labels[#labels + 1] = { t = "Other Parameters", x = x, y = incY(lineSpacing) } +fields[#fields + 1] = { t = "Throttle Protocol", x = x + indent, y = incY(lineSpacing), sp = x + sp, data = escParameters.throttle_protocol } +fields[#fields + 1] = { t = "Telemetry Protocol", x = x + indent, y = incY(lineSpacing), sp = x + sp, data = escParameters.telemetry_protocol } +fields[#fields + 1] = { t = "LED Color", x = x + indent, y = incY(lineSpacing), sp = x + sp, data = escParameters.led_color } +fields[#fields + 1] = { t = "Motor Temperture Sensor", x = x + indent, y = incY(lineSpacing), sp = x + sp, data = escParameters.motor_temp_sensor } +fields[#fields + 1] = { t = "Motor Temperture Limit", x = x + indent, y = incY(lineSpacing), sp = x + sp, data = escParameters.motor_temp } +fields[#fields + 1] = { t = "Capacity Limit [mAh]", x = x + indent, y = incY(lineSpacing), sp = x + sp, data = escParameters.capacity_cutoff } local function receivedEscParameters(page, data) if data.esc_signature ~= 115 then -- Flyrotor signature page.labels[1].t = "Invalid ESC detected" else - page.labels[1].t = string.format("FLYROTOR %dA", data.amperage) + page.labels[1].t = string.format("FLYROTOR %dA%s", data.amperage, data.type == 1 and " F3C" or "") page.labels[2].t = string.format("S/N: %08X%08X", data.serial_number1, data.serial_number2) page.labels[3].t = string.format("HW: 1.%d - IAP: %d.%d.%d", data.hw_version, data.iap_major, data.iap_minor, data.iap_patch) page.labels[4].t = string.format("FW: %d.%d.%d", data.fw_major, data.fw_minor, data.fw_patch)