~gpcf/advtrains

Luaautomation: add section_occupancy() v1 APPLIED

Maverick2797: 1
 Luaautomation: add section_occupancy()

 2 files changed, 16 insertions(+), 1 deletions(-)
Export patchset (mbox)
How do I use this?

Copy & paste the following snippet into your terminal to import this patchset into git:

curl -s https://lists.sr.ht/~gpcf/advtrains/patches/23600/mbox | git am -3
Learn more about email & git

[PATCH] Luaautomation: add section_occupancy() Export this patch

Returns a table of train ids for the specified section.
Returns nil if the section id is not provided..
Returns false if the section id is invalid.
Returns an empty table if the section id is valid but empty of trains.
---
 advtrains_luaautomation/README.md       |  5 ++++-
 advtrains_luaautomation/environment.lua | 12 ++++++++++++
 2 files changed, 16 insertions(+), 1 deletion(-)
 mode change 100644 => 100755 advtrains_luaautomation/README.md
 mode change 100644 => 100755 advtrains_luaautomation/environment.lua

diff --git a/advtrains_luaautomation/README.md b/advtrains_luaautomation/README.md
old mode 100644
new mode 100755
index 683e45c..5d527c8
--- a/advtrains_luaautomation/README.md
+++ b/advtrains_luaautomation/README.md
@@ -312,13 +312,16 @@ Deprecated:


#### Interlocking
This additional function is available when advtrains_interlocking is enabled:
These additional functions are available when advtrains_interlocking is enabled:

 - `atc_set_disable_ars(boolean)`
	Disables (true) or enables (false) the use of ARS for this train. The train will not trigger ARS (automatic route setting) on signals then.
	
	Note: If you want to disable ARS from an approach callback, the call to `atc_set_disable_ars(true)` *must* happen during the approach callback, and may not be deferred to an interrupt(). Else the train might trigger an ARS before the interrupt fires.

 - `section_occupancy(section_id)`
	Returns a table of train ids for the specified section, nil if no section id is provided, false if the section id is invalid, an empty table if the section id is valid but empty of trains.
	
#### Approach callbacks
The LuaATC interface provides a way to hook into the approach callback system, which is for example used in the TSR rails (provided by advtrains_interlocking) or the station tracks (provided by advtrains_lines). However, for compatibility reasons, this behavior needs to be explicitly enabled.

diff --git a/advtrains_luaautomation/environment.lua b/advtrains_luaautomation/environment.lua
old mode 100644
new mode 100755
index 63aa68d..c25d3de
--- a/advtrains_luaautomation/environment.lua
+++ b/advtrains_luaautomation/environment.lua
@@ -223,6 +223,18 @@ if advtrains.interlocking then
		local pos = atlatc.pcnaming.resolve_pos(signal)
		return advtrains.interlocking.signal_set_aspect(pos)
	end
	
	--section_occupancy()
	static_env.section_occupancy = function(ts_id)
		if not ts_id then return nil end
		ts_id = tostring(ts_id)
		local response = advtrains.interlocking.db.get_ts(ts_id)
		if response == nil then
			return false
		else
			return response.trains
		end
	end
end

-- Lines-specific:
-- 
2.31.1