15 package com.neuronrobotics.sdk.dyio;
17 import java.util.ArrayList;
18 import java.util.Collection;
20 import com.neuronrobotics.sdk.commands.bcs.io.AsyncThreshholdEdgeType;
21 import com.neuronrobotics.sdk.commands.bcs.io.GetChannelModeCommand;
22 import com.neuronrobotics.sdk.commands.bcs.io.GetValueCommand;
23 import com.neuronrobotics.sdk.commands.bcs.io.SetChannelValueCommand;
24 import com.neuronrobotics.sdk.commands.bcs.io.setmode.SetChannelModeCommand;
25 import com.neuronrobotics.sdk.common.BowlerAbstractCommand;
26 import com.neuronrobotics.sdk.common.BowlerDatagram;
27 import com.neuronrobotics.sdk.common.BowlerMethod;
28 import com.neuronrobotics.sdk.common.ByteList;
29 import com.neuronrobotics.sdk.common.InvalidResponseException;
30 import com.neuronrobotics.sdk.common.Log;
31 import com.neuronrobotics.sdk.dyio.peripherals.DyIOAbstractPeripheral;
32 import com.neuronrobotics.sdk.util.ThreadUtil;
63 private ArrayList<IChannelEventListener>
listeners =
new ArrayList<IChannelEventListener>();
66 private ArrayList< IDyIOChannelModeChangeListener>
modeListeners =
new ArrayList< IDyIOChannelModeChangeListener>();
115 Log.
error(
"Failed to update channel: "+ channel);
116 throw new RuntimeException(
"Failed to update channel: "+ channel);
267 throw new RuntimeException();
314 for(
int i=0;i<
myModes.size();i++){
377 modeList +=
" "+md.toString()+
",";
386 String message = this.getClass()+
" Can not set channel: "+
getChannelNumber()+
" to mode: "+e;
390 }
catch(RuntimeException ex) {
391 ex.printStackTrace();
445 if(b==
null || b.intValue()!=
number){
446 Log.
error(
"Failed to get value "+response);
479 throw new RuntimeException(
"Mode can not be set to null, must be set to a mode");
482 Log.
info(this.getClass()+
" First time setting mode.");
493 new RuntimeException(
"\nChannel: "+
getChannelNumber()+
" can not be mode '"+mode+
"' in current configuration. \nCheck the power switch settings and availible modes.").printStackTrace();
495 new RuntimeException(
"\nChannel: "+
getChannelNumber()+
" can not be mode '"+mode+
"'.").printStackTrace();
510 if(!
getDevice().isMuteResyncOnModeChange()){
513 }
catch(RuntimeException e) {
527 new Object[]{getChannelNumber(),mode.getValue(),async?1:0});
548 }
catch (InterruptedException e1) {
611 new Object[]{number,getCachedValue(),(int)(getCachedTime()*1000)});
961 for(
int i = 0; i < attempts; i++) {
968 }
catch (InterruptedException e1) {
975 throw new RuntimeException(
"Only stream channels should talk to this method");
979 new Object[]{number,data});
synchronized boolean add(byte data)
boolean addAs16(int value)
boolean addAs32(int value)
static void info(String message)
static void error(String message)
static void debug(String message)
boolean setValue(int value)
boolean setMode(DyIOChannelMode mode)
boolean isStreamtMode(DyIOChannelMode m)
ArrayList< DyIOChannelMode > myModes
boolean setMode(DyIOChannelMode mode, boolean async)
void fireModeChangeEvent(DyIOChannelMode e)
DyIOAbstractPeripheral dap
void fireChannelEvent(DyIOChannelEvent e)
boolean setValue(ByteList data)
void removeAllChannelEventListeners()
DyIOChannelMode getMode(boolean resync)
boolean configAdvancedAsyncAutoSample(int msTime)
void setPreviousValue(int previousValue)
boolean isDefaultAsync(DyIOChannelMode m)
ArrayList< IChannelEventListener > listeners
boolean configAdvancedAsyncTreshhold(int msTime, int threshholdValue, AsyncThreshholdEdgeType edgeType)
boolean configAdvancedAsyncDeadBand(int deadbandSize)
void setCachedMode(boolean mode)
boolean canBeMode(DyIOChannelMode m)
DyIOChannelMode getMode()
int parseDyIOChannelEvent(DyIOChannelEvent e)
void removeChannelEventListener(IChannelEventListener l)
void update(DyIO dyio, int channel, DyIOChannelMode mode, boolean isEditable)
void removeAllChannelModeChangeListener()
void addChannelModeChangeListener(IDyIOChannelModeChangeListener l)
void setDevice(DyIO device)
void setCachedTime(float cachedTime)
void removeChannelModeChangeListener(IDyIOChannelModeChangeListener l)
ArrayList< IDyIOChannelModeChangeListener > modeListeners
boolean configAdvancedAsyncNotEqual(int msTime)
DyIOChannelMode getCurrentMode()
DyIOAbstractPeripheral getDap()
boolean configAdvancedAsyncAutoSample()
void setDap(DyIOAbstractPeripheral dap)
void setCachedValue(int cachedValue)
boolean configAdvancedAsyncDeadBand(int msTime, int deadbandSize)
boolean isOutputMode(DyIOChannelMode m)
boolean configAdvancedAsyncTreshhold(int threshholdValue, AsyncThreshholdEdgeType edgeType)
DyIOChannel(DyIO dyio, int channel, DyIOChannelMode mode, boolean isEditable)
Collection< DyIOChannelMode > getAvailableModes()
void addChannelEventListener(IChannelEventListener l)
boolean configAdvancedAsyncNotEqual()
boolean isStreamChannel()
void send(BowlerAbstractCommand command)
boolean configAdvancedAsyncDeadBand(int pin, int deadbandSize)
DyIOPowerState getBankBState()
ArrayList< DyIOChannelMode > getAvailibleChannelModes(int channel)
void setMuteResyncOnModeChange(boolean muteResyncOnModeChange)
DyIOPowerState getBankAState()
Object[] send(String NS, BowlerMethod method, String rpcString, Object[] arguments)
ArrayList< DyIOChannel > getChannels()
boolean configAdvancedAsyncAutoSample(int pin)
boolean configAdvancedAsyncTreshhold(int pin, int threshholdValue, AsyncThreshholdEdgeType edgeType)
boolean configAdvancedAsyncNotEqual(int pin)
DyIOChannel getChannel(int channel)
static DyIOChannelMode get(byte code)