chore: release v0.27.12

This commit is contained in:
2026-09-05 19:07:21 +02:00
parent f93e1c5898
commit be889681a9
40 changed files with 4971 additions and 453 deletions
+192
View File
@@ -1954,6 +1954,58 @@ export namespace main {
this.qso_play_gain = source["qso_play_gain"];
}
}
export class AutoCallSettings {
enabled: boolean;
only: string;
attempts: number;
watched_attempts: number;
misses: number;
max_rounds: number;
rest_min: number;
static createFrom(source: any = {}) {
return new AutoCallSettings(source);
}
constructor(source: any = {}) {
if ('string' === typeof source) source = JSON.parse(source);
this.enabled = source["enabled"];
this.only = source["only"];
this.attempts = source["attempts"];
this.watched_attempts = source["watched_attempts"];
this.misses = source["misses"];
this.max_rounds = source["max_rounds"];
this.rest_min = source["rest_min"];
}
}
export class AutoCallStatus {
enabled: boolean;
only: string;
target: string;
calls: number;
max: number;
misses: number;
max_miss: number;
stopped: boolean;
reason: string;
static createFrom(source: any = {}) {
return new AutoCallStatus(source);
}
constructor(source: any = {}) {
if ('string' === typeof source) source = JSON.parse(source);
this.enabled = source["enabled"];
this.only = source["only"];
this.target = source["target"];
this.calls = source["calls"];
this.max = source["max"];
this.misses = source["misses"];
this.max_miss = source["max_miss"];
this.stopped = source["stopped"];
this.reason = source["reason"];
}
}
export class AutostartLaunchResult {
id: string;
name: string;
@@ -3317,6 +3369,20 @@ export namespace main {
}
}
export class PSKTargetSettings {
enabled: boolean;
scope: string;
static createFrom(source: any = {}) {
return new PSKTargetSettings(source);
}
constructor(source: any = {}) {
if ('string' === typeof source) source = JSON.parse(source);
this.enabled = source["enabled"];
this.scope = source["scope"];
}
}
export class PSUSettings {
enabled: boolean;
com_port: string;
@@ -4932,6 +4998,132 @@ export namespace pskr {
}
export namespace pskrtgt {
export class Bin {
offset_hz: number;
count: number;
avg_snr: number;
static createFrom(source: any = {}) {
return new Bin(source);
}
constructor(source: any = {}) {
if ('string' === typeof source) source = JSON.parse(source);
this.offset_hz = source["offset_hz"];
this.count = source["count"];
this.avg_snr = source["avg_snr"];
}
}
export class Entry {
call: string;
grid: string;
snr: number;
offset_hz: number;
age_sec: number;
static createFrom(source: any = {}) {
return new Entry(source);
}
constructor(source: any = {}) {
if ('string' === typeof source) source = JSON.parse(source);
this.call = source["call"];
this.grid = source["grid"];
this.snr = source["snr"];
this.offset_hz = source["offset_hz"];
this.age_sec = source["age_sec"];
}
}
export class Analysis {
target: string;
mode?: string;
enabled: boolean;
online: boolean;
spots: number;
he_me: boolean;
he_me_seconds: number;
he_me_snr: number;
he_me_offset_hz: number;
target_uploads: boolean;
target_grid?: string;
near_him_count: number;
near_him_top: Entry[];
from_my_area_count: number;
from_my_area_top: Entry[];
path_open: boolean;
heard_by_count: number;
heard_near_me: number;
heard_near_me_top: Entry[];
decoded_by_count: number;
decoded_by_top: Entry[];
decoded_by_calls: string[];
pileup_count: number;
dial_hz: number;
ceiling_hz: number;
decodes_in_window: number;
bins: Bin[];
suggested_offset: number;
static createFrom(source: any = {}) {
return new Analysis(source);
}
constructor(source: any = {}) {
if ('string' === typeof source) source = JSON.parse(source);
this.target = source["target"];
this.mode = source["mode"];
this.enabled = source["enabled"];
this.online = source["online"];
this.spots = source["spots"];
this.he_me = source["he_me"];
this.he_me_seconds = source["he_me_seconds"];
this.he_me_snr = source["he_me_snr"];
this.he_me_offset_hz = source["he_me_offset_hz"];
this.target_uploads = source["target_uploads"];
this.target_grid = source["target_grid"];
this.near_him_count = source["near_him_count"];
this.near_him_top = this.convertValues(source["near_him_top"], Entry);
this.from_my_area_count = source["from_my_area_count"];
this.from_my_area_top = this.convertValues(source["from_my_area_top"], Entry);
this.path_open = source["path_open"];
this.heard_by_count = source["heard_by_count"];
this.heard_near_me = source["heard_near_me"];
this.heard_near_me_top = this.convertValues(source["heard_near_me_top"], Entry);
this.decoded_by_count = source["decoded_by_count"];
this.decoded_by_top = this.convertValues(source["decoded_by_top"], Entry);
this.decoded_by_calls = source["decoded_by_calls"];
this.pileup_count = source["pileup_count"];
this.dial_hz = source["dial_hz"];
this.ceiling_hz = source["ceiling_hz"];
this.decodes_in_window = source["decodes_in_window"];
this.bins = this.convertValues(source["bins"], Bin);
this.suggested_offset = source["suggested_offset"];
}
convertValues(a: any, classs: any, asMap: boolean = false): any {
if (!a) {
return a;
}
if (a.slice && a.map) {
return (a as any[]).map(elem => this.convertValues(elem, classs));
} else if ("object" === typeof a) {
if (asMap) {
for (const key of Object.keys(a)) {
a[key] = new classs(a[key]);
}
return a;
}
return new classs(a);
}
return a;
}
}
}
export namespace psu {
export class Status {