Skip to content

Commit bbccb99

Browse files
committed
First Beta-Version which also processes N1MM-Live-Logs
1 parent 955d8ec commit bbccb99

File tree

2 files changed

+63
-4
lines changed

2 files changed

+63
-4
lines changed

main.js

Lines changed: 60 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ const {app, BrowserWindow, globalShortcut } = require('electron/main');
22
const path = require('node:path');
33
const {ipcMain} = require('electron')
44
const http = require('http');
5+
const xml = require("xml2js");
56

67
let s_mainWindow;
78
let msgbacklog=[];
@@ -139,6 +140,13 @@ function parseADIF(adifdata) {
139140
return adiReader.toObject();
140141
}
141142

143+
function writeADIF(adifObject) {
144+
const { ADIF } = require("tcadif");
145+
var adiWriter = new ADIF(adifObject);
146+
// console.log(adiWriter);
147+
return adiWriter;
148+
}
149+
142150
function send2wavelog(o_cfg,adif, dryrun = false) {
143151
let clpayload={};
144152
clpayload.key=o_cfg.wavelog_key.trim();
@@ -213,12 +221,49 @@ WServer.on('error', function(err) {
213221
});
214222

215223
WServer.on('message',async function(msg,info){
216-
adobject=parseADIF(msg.toString());
224+
parsedXML={};
225+
adobject={};
226+
if (msg.toString().includes("xml")) { // detect if incoming String is XML
227+
try {
228+
xml.parseString(msg.toString(), function (err,dat) {
229+
parsedXML=dat;
230+
});
231+
let qsodatum = new Date(Date.parse(parsedXML.contactinfo.timestamp[0]));
232+
qsodat=fmt(qsodatum);
233+
if (parsedXML.contactinfo.mode[0] == 'USB' || parsedXML.contactinfo.mode[0] == 'LSB') { // TCADIF lib is not capable of using USB/LSB
234+
parsedXML.contactinfo.mode[0]='SSB';
235+
}
236+
adobject = { qsos: [
237+
{
238+
CALL: parsedXML.contactinfo.call[0],
239+
MODE: parsedXML.contactinfo.mode[0],
240+
QSO_DATE_OFF: qsodat.d,
241+
QSO_DATE: qsodat.d,
242+
TIME_OFF: qsodat.t,
243+
TIME_ON: qsodat.t,
244+
RST_RCVD: parsedXML.contactinfo.rcv[0],
245+
RST_SENT: parsedXML.contactinfo.snt[0],
246+
FREQ: ((1*parseInt(parsedXML.contactinfo.txfreq[0]))/100000).toString(),
247+
FREQ_RX: ((1*parseInt(parsedXML.contactinfo.rxfreq[0]))/100000).toString(),
248+
OPERATOR: parsedXML.contactinfo.operator[0],
249+
COMMENT: parsedXML.contactinfo.comment[0],
250+
POWER: parsedXML.contactinfo.power[0],
251+
STX: parsedXML.contactinfo.sntnr[0],
252+
RTX: parsedXML.contactinfo.rcvnr[0],
253+
MYCALL: parsedXML.contactinfo.mycall[0],
254+
GRIDSQUARE: parsedXML.contactinfo.gridsquare[0],
255+
STATION_CALLSIGN: parsedXML.contactinfo.mycall[0]
256+
} ]};
257+
} catch (e) {}
258+
} else {
259+
adobject=parseADIF(msg.toString());
260+
}
217261
var plainret='';
218262
if (adobject.qsos.length>0) {
219263
let x={};
220264
try {
221-
plainret=await send2wavelog(defaultcfg,msg.toString());
265+
outadif=writeADIF(adobject);
266+
plainret=await send2wavelog(defaultcfg,outadif.stringify());
222267
x.state=plainret.statusCode;
223268
x.payload = JSON.parse(plainret.resString);
224269
} catch(e) {
@@ -340,4 +385,17 @@ function httpPost(url,options,postData) {
340385
});
341386
}
342387

388+
function fmt(spotDate) {
389+
retstr={};
390+
d=spotDate.getUTCDate().toString();
391+
y=spotDate.getUTCFullYear().toString();
392+
m=(1+spotDate.getUTCMonth()).toString();
393+
h=spotDate.getUTCHours().toString();
394+
i=spotDate.getUTCMinutes().toString();
395+
s=spotDate.getUTCSeconds().toString();
396+
retstr.d=y.padStart(4,'0')+m.padStart(2,'0')+d.padStart(2,'0');
397+
retstr.t=h.padStart(2,'0')+i.padStart(2,'0')+s.padStart(2,'0');
398+
return retstr;
399+
}
400+
343401
startserver();

package.json

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
"description": "Gateway for connecting WSJT-* and FLRig to Wavelog",
55
"keywords": [],
66
"main": "./main.js",
7-
"version": "1.0.13",
7+
"version": "1.0.15",
88
"author": "DJ7NT",
99
"scripts": {
1010
"start": "electron-forge start",
@@ -20,7 +20,8 @@
2020
"electron-squirrel-startup": "^1.0.0",
2121
"jquery": "^3.6.0",
2222
"popper.js": "^1.14.4",
23-
"tcadif": "^2.1.0"
23+
"tcadif": "^2.1.0",
24+
"xml2js": "^0.6.2"
2425
},
2526
"devDependencies": {
2627
"@electron-forge/cli": "^7.2.0",

0 commit comments

Comments
 (0)