bool LXDevice::EnableNanoNMEA(OperationEnvironment &env) { return IsV7() ? EnablePassThrough(env) : true; }
bool LXDevice::PutQNH(const AtmosphericPressure &pres, OperationEnvironment &env) { if (!EnableNMEA(env)) return false; if (IsV7()) return V7::SetQNH(port, env, pres); else return LX1600::SetQNH(port, env, pres); }
bool LXDevice::PutMacCready(fixed mac_cready, OperationEnvironment &env) { if (!EnableNMEA(env)) return false; if (IsV7()) return V7::SetMacCready(port, env, mac_cready); else return LX1600::SetMacCready(port, env, mac_cready); }
bool LXDevice::PutBallast(gcc_unused fixed fraction, fixed overload, OperationEnvironment &env) { if (!EnableNMEA(env)) return false; if (IsV7()) return V7::SetBallast(port, env, overload); else return LX1600::SetBallast(port, env, overload); }
bool LXDevice::PutBugs(fixed bugs, OperationEnvironment &env) { if (!EnableNMEA(env)) return false; int transformed_bugs_value = 100 - (int)(bugs*100); if (IsV7()) return V7::SetBugs(port, env, transformed_bugs_value); else return LX1600::SetBugs(port, env, transformed_bugs_value); }
bool LXDevice::PutMacCready(fixed mac_cready, OperationEnvironment &env) { if (!EnableNMEA(env)) return false; char tmp[32]; if (IsV7()) sprintf(tmp, "PLXV0,MC,W,%.1f", (double)mac_cready); else sprintf(tmp, "PFLX2,%1.1f,,,,,,", (double)mac_cready); return PortWriteNMEA(port, tmp, env); }
bool LXDevice::PutQNH(const AtmosphericPressure &pres, OperationEnvironment &env) { if (!EnableNMEA(env)) return false; double altitude_offset = (double)pres.StaticPressureToQNHAltitude(AtmosphericPressure::Standard()) / 0.3048; char buffer[100]; if (IsV7()) sprintf(buffer, "PLXV0,QNH,W,%.2f", altitude_offset); else sprintf(buffer, "PFLX3,%.2f,,,,,,,,,,,,", altitude_offset); return PortWriteNMEA(port, buffer, env); }
bool LXDevice::PutBugs(fixed bugs, OperationEnvironment &env) { if (!EnableNMEA(env)) return false; // This is a copy of the routine done in LK8000 for LX MiniMap, realized // by Lx developers. char tmp[100]; int transformed_bugs_value = 100 - (int)(bugs*100); if (IsV7()) sprintf(tmp, "PLXV0,BUGS,W,%d", transformed_bugs_value); else sprintf(tmp, "PFLX2,,,%d,,,", transformed_bugs_value); return PortWriteNMEA(port, tmp, env); }