aboutsummaryrefslogblamecommitdiff
path: root/xplane.mjs
blob: 7b828174e7fe16014db2b09968c1eb0b643b9bc3 (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11
12
                               


                               
                                          






                                        
                                                    









                                                                        
  






                                                       
                                        



                                                                        
import dgram from "node:dgram";

const xplaneAddr = "localhost";
const xplanePort = 49000;
const socket = dgram.createSocket("udp4");

//socket.on('message', (msg, rinfo) => {
//    console.log(msg, rinfo)
//});
//
//socket.bind(10080);

export const subscribeDataRef = async (dataRef) => {
    //const dataRef = "sim/flightmodel/position/indicated_airspeed";
    let buffer = Buffer.alloc(4 + 1 + 4 * 2 + 400);
    let off = buffer.write("RREF");
    off = buffer.writeUInt8(0, off); // null terminated
    off = buffer.writeInt32LE(1, off); // xint frequency
    off = buffer.writeInt32LE(0, off); // xint client
    off += buffer.write(dataRef, off); // char[400] dataref
    off = buffer.writeUInt8(0, off); // null terminated
    console.log(Array.from(buffer));
    await socket.send(buffer, 0, buffer.length, xplanePort, xplaneAddr);
};

export const sendCommand = async (cmd) => {
    let buffer = Buffer.alloc(4 + 1 + cmd.length + 1);
    let off = buffer.write("CMND");
    off = buffer.writeUInt8(0, off); // null terminated
    off += buffer.write(cmd, off); // command
    off = buffer.writeUInt8(0, off); // null terminated
    console.info(`x-plane cmd: ${cmd}`);
    await socket.send(buffer, 0, buffer.length, xplanePort, xplaneAddr);
};

//command("sim/GPS/g1000n1_hdg_down");