Skip to content

Commit

Permalink
MetadataStart migrate to Module (#275)
Browse files Browse the repository at this point in the history
* MetadataStart migrate to Module

* Added modules to AircraftTest.lua

* Update BIOS.lua

Earlier migrated modules changed to be used
  • Loading branch information
jdahlblom authored Sep 29, 2023
1 parent be7ea46 commit 4cfce5e
Show file tree
Hide file tree
Showing 4 changed files with 48 additions and 11 deletions.
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

0 comments on commit 4cfce5e

Please sign in to comment.