Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

MetadataStart migrate to Module #275

Merged
merged 4 commits into from
Sep 29, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 4 additions & 7 deletions Scripts/DCS-BIOS/BIOS.lua
Original file line number Diff line number Diff line change
Expand Up @@ -38,8 +38,9 @@ dofile(lfs.writedir()..[[Scripts/DCS-BIOS/lib/Protocol.lua]])
--dofile(lfs.writedir()..[[Scripts/DCS-BIOS/lib/MetadataEnd.lua]])
local MetadataEnd = require "MetadataEnd"
BIOS.protocol.writeNewModule(MetadataEnd)

dofile(lfs.writedir()..[[Scripts/DCS-BIOS/lib/MetadataStart.lua]])
--dofile(lfs.writedir()..[[Scripts/DCS-BIOS/lib/MetadataStart.lua]])
local MetadataStart = require "MetadataStart"
BIOS.protocol.writeNewModule(MetadataStart)
-- dofile(lfs.writedir()..[[Scripts/DCS-BIOS/lib/CommonData.lua]])
local CommonData = require "CommonData"
BIOS.protocol.writeNewModule(CommonData)
Expand All @@ -64,7 +65,7 @@ dofile(lfs.writedir()..[[Scripts/DCS-BIOS/lib/AJS37.lua]]) -- ID = 8, ProperName
local Alphajet = require "Alphajet"
BIOS.protocol.writeNewModule(Alphajet)
dofile(lfs.writedir()..[[Scripts/DCS-BIOS/lib/AV8BNA.lua]]) -- ID = 10, ProperName = AV-8B Night Attack
--dofile(lfs.writedir()..[[Scripts\DCS-BIOS\lib\Bf-109K-4.lua]]) -- ID = 11, ProperName = Bf 109 K-4 Kurfurst
--dofile(lfs.writedir()..[[Scripts/DCS-BIOS/lib/Bf-109K-4.lua]]) -- ID = 11, ProperName = Bf 109 K-4 Kurfurst
local Bf_109K_4 = require "Bf-109K-4"
BIOS.protocol.writeNewModule(Bf_109K_4)
dofile(lfs.writedir()..[[Scripts/DCS-BIOS/lib/C-101.lua]]) -- ID = 12, ProperName = C-101 Aviojet
Expand All @@ -89,11 +90,7 @@ BIOS.protocol.writeNewModule(FW_190A8)
--dofile(lfs.writedir()..[[Scripts/DCS-BIOS/lib/FW-190D9.lua]]) -- ID = 22, ProperName = Fw 190 D-9 Dora
local FW_190D9 = require "FW-190D9"
BIOS.protocol.writeNewModule(FW_190D9)

-- dofile(lfs.writedir()..[[Scripts\DCS-BIOS\lib\I-16.lua]]) -- ID = 23, ProperName = I-16

-- dofile(lfs.writedir()..[[Scripts/DCS-BIOS/lib/I-16.lua]]) -- ID = 23, ProperName = I-16

local I_16 = require "I-16"
BIOS.protocol.writeNewModule(I_16)
dofile(lfs.writedir()..[[Scripts/DCS-BIOS/lib/JF-17.lua]]) -- ID = 24, ProperName = JF-17 Thunder
Expand Down
9 changes: 5 additions & 4 deletions Scripts/DCS-BIOS/lib/Protocol.lua
Original file line number Diff line number Diff line change
Expand Up @@ -205,9 +205,10 @@ function BIOS.protocol.step()
if selfData then
acftName = selfData["Name"]
end

metadataStartModule.data.acftName = acftName
acftModules = aircraftNameToModules[acftName]

metadataStartModule:setAircraftName(acftName)

acftModules = aircraftNameToModules[acftName]
if lastAcftName ~= acftName then
if acftModules then
for _, acftModule in pairs(acftModules) do
Expand Down Expand Up @@ -274,7 +275,7 @@ end

function BIOS.protocol.shutdown()
-- Nullify the aircraft name and publish one last frame to identify end of mission.
metadataStartModule.data.acftName = ""
metadataStartModule:setAircraftName("")

-- send frame sync sequence
BIOS.protocol_io.queue(string.char(0x55, 0x55, 0x55, 0x55))
Expand Down
27 changes: 27 additions & 0 deletions Scripts/DCS-BIOS/lib/modules/common_modules/MetadataStart.lua
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
-- This is a special module: its data will always be exported
-- and its export hooks will be called regardless of aircraft.
-- It cannot access any cockpit arguments, because it will also
-- be called when there is no active aircraft.

module("MetadataStart", package.seeall)

local Module = require("Module")

--- @class MetadataStart: Module
--- @field setAircraftName function
local MetadataStart = Module:new("MetadataStart", 0x0000, BIOS.ALL_PLAYABLE_AIRCRAFT)

-- "data" will be set by the Protocol module
local aircraft_name

--- @func Sets the name of the aircraft
--- @param new_aircraft_name string
function MetadataStart:setAircraftName(new_aircraft_name)
aircraft_name = new_aircraft_name
end

MetadataStart:defineString("_ACFT_NAME", function()
return aircraft_name .. string.char(0)
end, 24, "Metadata", "Aircraft Name (or NONE), null-terminated")

return MetadataStart
12 changes: 12 additions & 0 deletions Scripts/DCS-BIOS/test/AircraftTest.lua
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,14 @@ function TestAircraft:testCommonData()
self:validateModule(require("CommonData"), "CommonData", 0x0400)
end

function TestAircraft:testMetadataStart()
self:validateModule(require("MetadataStart"), "MetadataStart", 0x0000)
end

function TestAircraft:testMetadataEnd()
self:validateModule(require("MetadataEnd"), "MetadataEnd", 0xfffe)
end

function TestAircraft:testF22A()
self:validateModule(require("F-22A"), "F-22A", 0x6600)
end
Expand All @@ -35,6 +43,10 @@ function TestAircraft:testFW190D9()
self:validateModule(require("FW-190D9"), "FW-190D9", 0x3400)
end

function TestAircraft:testBf109K4()
self:validateModule(require("Bf-109K-4"), "Bf-109K-4", 0x4200)
end

function TestAircraft:testI16()
self:validateModule(require("I-16"), "I-16", 0x4000)
end
Expand Down