package kernel.peripherals; import haxe.exceptions.NotImplementedException; import haxe.Exception; using lua.Table; class Modem { private final nativ:cc.periphs.Modem.Modem; public final addr:String; @:allow(kernel.peripherals) private function new(nativePeripherals: cc.periphs.Modem.Modem,addr: String) { this.nativ = nativePeripherals; this.addr = addr; } public function open(chan: Int) { nativ.open(chan); } public function isOpen(chan: Int): Bool { return nativ.isOpen(chan); } public function close(chan: Int) { nativ.close(chan); } public function closAll() { nativ.closeAll(); } public function transmit(chan: Int,replyChan: Int,payload: Any) { nativ.transmit(chan,replyChan,payload); } public function isWireless(): Bool { return nativ.isWireless(); } public function getNamesRemote():Array { if (isWireless()){ throw new Exception("'getNamesRemote' only works with wired modems"); } return nativ.getNamesRemote().toArray(); } public function isPresentRemote(name: String): Bool { if (isWireless()){ throw new Exception("'isPresentRemote' only works with wired modems"); } return nativ.isPresentRemote(name); } public function getTypeRemote(name: String): String { if (isWireless()){ throw new Exception("'getTypeRemote' only works with wired modems"); } return nativ.getTypeRemote(name); } public function hasTypeRemote(name:String, type:String):Bool { if (isWireless()){ throw new Exception("'hasTypeRemote' only works with wired modems"); } // Missing in upstream API throw new haxe.exceptions.NotImplementedException(); // return nativ.hasRemoteType(name,type); } public function getMethodsRemote(name: String): Array { if (isWireless()){ throw new Exception("'getMethodsRemote' only works with wired modems"); } return nativ.getMethodsRemote(name).toArray(); } public function callRemote(remoteName: String, method:String):Dynamic { if (isWireless()){ throw new Exception("'callRemote' only works with wired modems"); } // TODO: implment or solve differently throw new haxe.exceptions.NotImplementedException(); } public function getNameLocal(): String { if (isWireless()){ throw new Exception("'getNameLocal' only works with wired modems"); } return nativ.getNameLocal(); } }