public Expander(Topic pin) {
if(pin==null) {
throw new ArgumentNullException();
}
if(pin.name.Length==5 && pin.name.StartsWith("EXP_") && pin.name[4]>='0' && pin.name[4]<='7') {
_mnt=pin;
ADDR=(byte)(0x20 | (byte)(pin.name[4]-'0'));
} else {
throw new ArgumentException();
}
var dc=_mnt.Get<string>("_declarer", _mnt);
dc.saved=true;
dc.value="TWI_Expander";
_pins=new DVar<bool>[18]; // 16 - present, 17 - IRQ
_pins[16]=_mnt.Get<bool>("present");
_pins[16].saved=false;
_pins[16].value=false;
_iodir=0xFFFF;
_mnt.Subscribe("+", PinChanged);
Reset();
}
public override bool VarChanged(Topic snd, bool delete) {