0
1
mirror of https://github.com/radio95-rnt/rds95.git synced 2026-02-26 20:33:53 +01:00
Files
rds95/plugin.lua
2025-12-24 19:45:59 +01:00

276 lines
7.4 KiB
Lua

---@meta
-- Global Variables
---@type string
core_version = ""
---@type integer
eon_count = 0
---@type integer
max_programs = 0
---Starts the initialization sequence, also calls the on_init function
---@return nil
function set_rds_program_defaults() end
---Saves, loads and resets the state of the data, you might as well restart the whole program
---@return nil
function reset_rds() end
---This function is called by the C core after we reset data, or have no data in general
---It should be defined by the user in the script.
---@return nil
function on_init() end
---This function is called by the C core after we initialize the encoder (always, every start)
---It should be defined by the user in the script.
---@return nil
function on_start() end
---This function is called every second
---It should be defined by the user in the script.
---@return nil
function tick() end
---This function is called in order to handle UDP data
---It should be defined by the user in the script.
---@param data string
---@return string
function data_handle(data) end
---This function is called when the group "L" is in the sequence
---It should be defined by the user in the script.
---@param b integer
---@param c integer
---@param d integer
---@return integer b
---@return integer c
---@return integer d
function group(b, c, d) end
---@param pi integer
function set_rds_pi(pi) end
---@return integer
function get_rds_pi() end
---@param pty integer
function set_rds_pty(pty) end
---@return integer
function get_rds_pty() end
---@param ecc integer
function set_rds_ecc(ecc) end
---@return integer
function get_rds_ecc() end
---@param slc_data integer
function set_rds_slc_data(slc_data) end
---@return integer
function get_rds_slc_data() end
---@param ct boolean
function set_rds_ct(ct) end
---@return boolean
function get_rds_ct() end
---@param dpty boolean
function set_rds_dpty(dpty) end
---@return boolean
function get_rds_dpty() end
---@param tp boolean
function set_rds_tp(tp) end
---@return boolean
function get_rds_tp() end
---@param ta boolean
function set_rds_ta(ta) end
---@return boolean
function get_rds_ta() end
-- Feature Flags
---@param enabled boolean
function set_rds_rt1_enabled(enabled) end
---@return boolean
function get_rds_rt1_enabled() end
---@param enabled boolean
function set_rds_rt2_enabled(enabled) end
---@return boolean
function get_rds_rt2_enabled() end
---@param enabled boolean
function set_rds_ptyn_enabled(enabled) end
---@return boolean
function get_rds_ptyn_enabled() end
---@param rt_type integer
function set_rds_rt_type(rt_type) end
---@return integer
function get_rds_rt_type() end
-- Modulation & Generation
---@param mode boolean
function set_rds_rds2mod(mode) end
---@return boolean
function get_rds_rds2mod() end
---@param rdsgen integer
function set_rds_rdsgen(rdsgen) end
---@return integer
function get_rds_rdsgen() end
---@param level number
function set_rds_level(level) end
---@return number
function get_rds_level() end
-- Program & Linking
---@param linkage boolean
function set_rds_link(linkage) end
---@return boolean
function get_rds_link() end
---@param program_idx integer 0 to (max_programs - 1)
function set_rds_program(program_idx) end
---@return integer
function get_rds_program() end
-- Timeouts and Periods
---@param period integer
function set_rds_rt_switching_period(period) end
---@return integer
function get_rds_rt_switching_period() end
---@param timeout integer
function set_rds_rt_text_timeout(timeout) end
---@return integer
function get_rds_rt_text_timeout() end
-- String Setters (Charset converted)
---@param ptyn string Program Type Name (max 8 chars)
function set_rds_ptyn(ptyn) end
---@param ps string Program Service (8 chars)
function set_rds_ps(ps) end
---@param tps string Traffic PS
function set_rds_tps(tps) end
---@param rt1 string Radio Text 1 (max 64 chars)
function set_rds_rt1(rt1) end
---@param rt2 string Radio Text 2 (max 64 chars)
function set_rds_rt2(rt2) end
---@param lps string
function set_rds_lps(lps) end
---@return string
function get_rds_lps() end
---@param ert string
function set_rds_ert(ert) end
---@return string
function get_rds_ert() end
---@param grpseq string
function set_rds_grpseq(grpseq) end
---@return string
function get_rds_grpseq() end
---@param grpseq2 string
function set_rds_grpseq2(grpseq2) end
---@return string
function get_rds_grpseq2() end
-- RT Plus Tags
---Sets RT+ tags: type1, start1, len1, type2, start2, len2
---@param ertp boolean
---@param t1 integer
---@param s1 integer
---@param l1 integer
---@param t2 integer
---@param s2 integer
---@param l2 integer
function set_rds_rtplus_tags(ertp, t1, s1, l1, t2, s2, l2) end
---Gets RT+ tags: type1, start1, len1, type2, start2, len2
---@param ertp boolean
---@return integer type1, integer start1, integer len1, integer type2, integer start2, integer len2
function get_rds_rtplus_tags(ertp) end
---Puts in a RDS1 group in the buffer, note that block A is filled in always
---@param b integer
---@param c integer
---@param d integer
function put_rds_custom_group(b, c, d) end
---Puts in a RDS2 group in the buffer
---@param a integer
---@param b integer
---@param c integer
---@param d integer
function put_rds2_custom_group(a, b, c, d) end
---Toggles RTP or ERTP's toggle switch
---@param ertp boolean
function toggle_rds_rtp(ertp) end
---Sets the metadata of RTP or ERTP
---@param ertp boolean
---@param enabled boolean
---@param running boolean
function set_rds_rtp_meta(ertp, enabled, running) end
---Gets the metadata of RTP and ERTP
---@param ertp boolean
---@return boolean enabled, boolean running
function get_rds_rtp_meta(ertp) end
---Sets the AFs included in group 0
---@param afs table
function set_rds_af_group0(afs) end
---Sets the AFs included in the ODA
---@param afs table
function set_rds_af_oda(afs) end
---Sets data about the EON
---@param eon integer Index of the EON we are setting
---@param enabled boolean
---@param pi integer
---@param tp boolean
---@param ta boolean
---@param pty integer
---@param ps string
---@param afs table
---@param data integer
function set_rds_eon(eon, enabled, pi, tp, ta, pty, ps, afs, data) end
---Gets the same data set_rds_eon sets, yes this returns 8 arguments
---@param eon integer
---@return boolean enabled
---@return integer pi
---@return boolean tp
---@return boolean ta
---@return integer pty
---@return string ps
---@return table _ this is empty, getting afs is not supported yet
---@return integer data
function get_rds_eon(eon) end
---Sets the X/Y of the UDG
---@param xy boolean
---@param groups table Table of tables, this should be up to 8 tables containing 3 integers
function set_rds_udg(xy, groups) end
---Sets the X/Y of the UDG for RDS2
---@param xy boolean
---@param groups table Table of tables, this should be up to 8 tables containing 4 integers
function set_rds_udg2(xy, groups) end
---Registers an ODA to be used in the O of the group sequence. ODAs are stored as state data, thus running reset_rds will clear it
---@param group integer
---@param group_version boolean
---@param id integer
---@param id_data integer
---@return integer oda_id
function register_oda(group, group_version, id, id_data) end
---The callback function for an ODA handler
---@alias ODAHandler fun(): (integer, integer, integer)
---Sets a function to handle the ODA data generation.
---The handler is called when the group sequence 'K' slot is processed.
---The function must return 3 integers representing RDS Blocks B, C, and D.
---@param oda_id integer The ID returned by register_oda
---@param fun ODAHandler
function set_oda_handler(oda_id, fun) end