EASession stream function doesn't fire

I have MFi device(RFID reader) and I'm trying to catch scanned tags in my app.

So I use EAAccessorymanager to get the shared accessory and read data from it.

When I open session and scan tags, stream function does not fire and I can't understand what I'm doing wrong.


import Foundation
import ExternalAccessory
class RFID: NSObject, EAAccessoryDelegate, StreamDelegate
{
var _accessory: EAAccessory!
var _session: EASession!
var _protocolString: String?
func ******() {
let manager = EAAccessoryManager.shared()
let accessories = manager.connectedAccessories
if (accessories.count > 0)
{
_accessory = accessories[0];
_session = EASession(accessory: _accessory, forProtocol: _accessory.protocolStrings[0]);
_accessory.delegate = self;
_session?.inputStream?.delegate = self;
_session?.inputStream?.schedule(in: .current, forMode: .default);
_session?.inputStream?.open();
print(_accessory);
print(_session);
}
}
func stream(_ aStream: Stream, handle eventCode: Stream.Event) {
switch eventCode {
case Stream.Event.openCompleted:
break
case Stream.Event.hasBytesAvailable:
// Read Data
print("Data Available");
break
case Stream.Event.hasSpaceAvailable:
// Write Data
break
case Stream.Event.errorOccurred:
break
case Stream.Event.endEncountered:
break
default: break
}
}
}

NOTE: printed accessory is always the right one and inputStream is not nil!