747IPC Interface

Broker keys used in communicating with 747IPC.

Broker Keys

Input keys:

IPC.scratchpad [string | {string with spaces}] inserts the string into the FMC scratchpad.
the FMC keyboard *doesn't* need to be switched on.
maximum length is 23 characters.
IPC.fmckeyb [0/1] switches on/off the FMC keyboard
IPC.keypress {1 xxxx} where xxxx = keycode. See keycodes.txt.
IPC.pushsw {xx yy} where xx = keycode, yy = action. See pushsw.h.
IPC.poke {xx dd dd} where xxxx is the offset in PS1's data segment of the variable to be poked, in hexadecimal only;
yy is the data to be poked, in decimal;
zz is the size of the data in bytes, decimal.
IPC.pokeSust {xx dd dd} arguments as above, however 747IPC's behaviour is different. The data will be repeatedly poked at up to 20 Hz, until a cancellation order is received. This takes the form
"IPC.pokeSust {xxxx 0 0}"
where xxxx must be the same value as the previous start order.
Note that you can have up to 8 addresses in the IPC.pokeSust list at any time. You must individually cancel each address that was previously added to the list, as detailed above.
IPC.pokeN1 {aa bb cc dd} where the 4 arguments are in decimal and represent the "target N1 equivalent" in percentage units x 10.
eg on the GE-engine configs,
"IPC.pokeN1 {500 500 500 500}"
will set 50.0% N1 on all 4 engines.
On non-GE types, the actual N1 may not be 50.0% but it should be true that any given value will always correspond to the same thrust lever position in PS1.
Output keys: IPC.latdeg [integer] - latitude degrees, minus = south IPC.latmin [integer] - latitude minutes * 100000, minus = south IPC.londeg [integer] - longitude degrees minus = west IPC.lonmin [integer] - longitude degrees * 100000, minus = west IPC.pitch [floating point, rouded to 0.01] - pitch, minus = down IPC.bank [floating point, rouded to 0.01] - bank, minus = left wing down IPC.talt [floating point, rouded to 0.1] - true altitude, minus = you are probably a submarine captain :) IPC.thdg [floating point, rouded to 0.01] - true heading IPC.var [integer] - magnetic variation in airplane vicinity IPC.elev [integer] - elevation in airplane vicinity IPC.mcpalt [integer] - MCP altitude IPC.mcpim [integer] - MCP IAS/MACH window - it contains the FMC commanded speed when the MCP IAS/MACH window is blank IPC.mcphdg [integer] - MCP heading IPC.ias - actual IAS IPC.mcpvs [integer] - MCP V/S IPC.vs [floating point, rounded to 0.01] - IRS V/S - slightly inaccurate if PS1's frame rate is not 18.2Hz IPC.dias [floating point, rounded to 0.01] - PFD IAS IPC.dalt [floating point, rounded to 0.1] - PFD altitude IPC.lspd [boolean, 0/1] - MCP SPD bar (not) illuminated IPC.llnav [boolean, 0/1] - MCP LNAV bar (not) illuminated IPC.lvnav [boolean, 0/1] - MCP VNAV bar (not) illuminated IPC.lflch [boolean, 0/1] - MCP FLCH bar (not) illuminated IPC.lhdgh [boolean, 0/1] - MCP HDG HOLD bar (not) illuminated IPC.lvs [boolean, 0/1] - MCP V/S bar (not) illuminated IPC.lalth [boolean, 0/1] - MCP ALT HOLD bar (not) illuminated IPC.lloc [boolean, 0/1] - MCP LOC bar (not) illuminated IPC.lapp [boolean, 0/1] - MCP APP bar (not) illuminated IPC.baro IPC.mag IPC.grid IPC.warning IPC.caution

Contact the author: Ivan Ngeow <rimb1991@yahoo.com>.