100 lines
3.6 KiB
Lua
100 lines
3.6 KiB
Lua
---- #########################################################################
|
|
---- # #
|
|
---- # Copyright (C) OpenTX #
|
|
-----# #
|
|
---- # License GPLv2: http://www.gnu.org/licenses/gpl-2.0.html #
|
|
---- # #
|
|
---- # This program is free software; you can redistribute it and/or modify #
|
|
---- # it under the terms of the GNU General Public License version 2 as #
|
|
---- # published by the Free Software Foundation. #
|
|
---- # #
|
|
---- # This program is distributed in the hope that it will be useful #
|
|
---- # but WITHOUT ANY WARRANTY; without even the implied warranty of #
|
|
---- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
|
|
---- # GNU General Public License for more details. #
|
|
---- # #
|
|
---- #########################################################################
|
|
|
|
local backgroundBitmap
|
|
local orangeLed
|
|
local greenLed
|
|
local offsetX
|
|
local offsetY
|
|
local sensors = {}
|
|
|
|
local options = {
|
|
{ "VTX", BOOL, 0 },
|
|
}
|
|
|
|
local function getValues(wgt)
|
|
if wgt.options.VTX == 0 then
|
|
sensors[1] = string.format("%s", getValue("RFMD"))
|
|
sensors[2] = string.format("%d Hz", getValue("FRat"))
|
|
sensors[3] = string.format("%d %%", getValue("RQly"))
|
|
if (getValue("TPWR") == 0) then
|
|
sensors[4] = "Range"
|
|
else
|
|
sensors[4] = string.format("%d mW", getValue("TPWR"))
|
|
end
|
|
else
|
|
sensors[1] = string.format("%s", getValue("VBan"))
|
|
sensors[2] = string.format("%dMHz", getValue("VFrq"))
|
|
sensors[3] = string.format("CH: %d", getValue("VChn"))
|
|
sensors[4] = string.format("%d mW", getValue("VPwr"))
|
|
end
|
|
end
|
|
|
|
local function create(zone, options)
|
|
local wgt = { zone=zone, options=options}
|
|
backgroundBitmap = Bitmap.open("/WIDGETS/Ghost/img/background.png")
|
|
orangeLed = Bitmap.open("/WIDGETS/Ghost/img/orange.png")
|
|
greenLed = Bitmap.open("/WIDGETS/Ghost/img/green.png")
|
|
offsetX = (wgt.zone.w - 178) / 2
|
|
offsetY = (wgt.zone.h - 148) / 2
|
|
return wgt
|
|
end
|
|
|
|
local function update(wgt, options)
|
|
wgt.options = options
|
|
end
|
|
|
|
local function background(wgt)
|
|
end
|
|
|
|
function refresh(wgt)
|
|
-- runs onty on large enough zone
|
|
if wgt.zone.w < 180 or wgt.zone.h < 145 then
|
|
return
|
|
end
|
|
|
|
if backgroundBitmap ~= nil then
|
|
lcd.drawBitmap(backgroundBitmap, wgt.zone.x + offsetX, wgt.zone.y + offsetY)
|
|
end
|
|
|
|
if getRSSI() ~= 0 then
|
|
if getValue("RFMD") == "Pure" then
|
|
if orangeLed ~= nil then
|
|
lcd.drawBitmap(orangeLed, wgt.zone.x + offsetX + 143, wgt.zone.y + offsetY)
|
|
end
|
|
elseif greenLed ~= nil then
|
|
lcd.drawBitmap(greenLed, wgt.zone.x + offsetX + 143, wgt.zone.y + offsetY)
|
|
end
|
|
|
|
getValues(wgt)
|
|
|
|
-- RF Mode/Band
|
|
lcd.drawText(wgt.zone.x + offsetX + 75, wgt.zone.y + offsetY + 2, sensors[1], CENTER + DBLSIZE)
|
|
|
|
-- Frame rate / Frequency
|
|
lcd.drawText(wgt.zone.x + offsetX + 85, wgt.zone.y + offsetY + 35, sensors[2], CENTER + DBLSIZE)
|
|
|
|
-- RSSI / Channel
|
|
lcd.drawText(wgt.zone.x + offsetX + 85, wgt.zone.y + offsetY + 70, sensors[3], CENTER + DBLSIZE)
|
|
|
|
-- Transmit power
|
|
lcd.drawText(wgt.zone.x + offsetX + 85, wgt.zone.y + offsetY + 105, sensors[4], CENTER + DBLSIZE)
|
|
end
|
|
|
|
end
|
|
|
|
return { name="Ghost", options=options, create=create, update=update, refresh=refresh, background=background } |