Skip to content
Jan Horacek edited this page Dec 24, 2019 · 19 revisions

XpressNET library Wiki

This wiki describes API is implemented by XpressNET library via public functions. This allows XpressNET library to be used as .dll or .so dynamically. This feature is used by hJOPserver.

This file describes XN library API, however, this API is designed to be used with any system supporting locomotive control (e.g. LocoNET). This is generalized by name trakce.

Errors

API functions

enum class TrkStatus {
	Unknown,
	Off,
	On,
	Programming,
};

using CommandCallbackFunc = void(*)(void *sender, void *data);

struct CommandCallback {
	CommandCallbackFunc const func;
	void *const data;
};

using Cb = CommandCallback;

Connect/disconnect

void connect()

void disconnect()

bool connected()

Locomotive control

TrkStatus trackStatus()

void setTrackStatus(TrkStatus, Cb ok, Cb err)

void emergencyStop(Cb ok, Cb err)

void locoEmergencyStop(uint16_t addr, Cb ok, Cb err)

void locoSetSpeed(uint16_t addr, int speed, int dir, Cb ok, Cb err)

void locoSetFunc(uint16_t addr, uint8_t function, bool state, Cb ok, Cb err)

Locomotive acquire/release

void locoAcquire(uint16_t addr)

void locoRelease(uint16_t addr)

POM

void pomWriteCv(uint16_t addr, uint16_t cv, uint8_t value, Cb ok, Cb err)

Version

bool apiSupportsVersion(uint version)

int apiSetVersion(uint version)

bool supportsFeature(uint featureCode)

Event binders

void bindBefeoreOpen(TrkStdNotifyEv)

void bindAfterOpen(TrkStdNotifyEv)

void bindBefeoreClose(TrkStdNotifyEv)

void bindAfterClose(TrkStdNotifyEv)

void bindOnTrackStatusChange(TrkStatusChangedEv)

void bindOnLog(TrkStatusLogEv)

Clone this wiki locally