BowlerKernel
PidDeviceServer.java
Go to the documentation of this file.
1 package com.neuronrobotics.sdk.namespace.bcs.pid;
2 
3 import java.io.IOException;
4 
5 import com.neuronrobotics.sdk.common.BowlerDataType;
6 import com.neuronrobotics.sdk.common.Log;
7 import com.neuronrobotics.sdk.common.MACAddress;
8 import com.neuronrobotics.sdk.common.device.server.BowlerAbstractServer;
9 import com.neuronrobotics.sdk.pid.IPIDEventListener;
10 import com.neuronrobotics.sdk.pid.PIDEvent;
11 import com.neuronrobotics.sdk.pid.PIDLimitEvent;
12 import com.neuronrobotics.sdk.pid.VirtualGenericPIDDevice;
13 
14 // TODO: Auto-generated Javadoc
18 public class PidDeviceServer extends BowlerAbstractServer implements IPIDEventListener {
19 
22 
30  super(mac);
31  pidServer = new PidDeviceServerNamespace(mac, device);
33 
34  device.addPIDEventListener(this);
35  Log.info("Starting UDP");
36  try {
37  startNetworkServer(1865);
38  } catch (IOException e) {
39  // TODO Auto-generated catch block
40  e.printStackTrace();
41  //System.exit(1);
42  }
43  }
44 
45  /* (non-Javadoc)
46  * @see com.neuronrobotics.sdk.pid.IPIDEventListener#onPIDEvent(com.neuronrobotics.sdk.pid.PIDEvent)
47  */
48  @Override
49  public void onPIDEvent(PIDEvent e) {
50  Log.info("Pushing "+e);
51  pushAsyncPacket(2,//0 is core, 1 is rpc
53  "_pid",
54  new Object[]{
55  new Byte((byte) e.getGroup()),
56  new Integer((int)e.getValue()),
57  new Integer((int) e.getTimeStamp()),
58  new Integer(e.getVelocity())
59  },
60  new BowlerDataType[]{
61  BowlerDataType.I08,//channel
62  BowlerDataType.I32,//position
63  BowlerDataType.I32,//timestamp
64  BowlerDataType.I32//velocity
65  } );
66  }
67 
68  /* (non-Javadoc)
69  * @see com.neuronrobotics.sdk.pid.IPIDEventListener#onPIDLimitEvent(com.neuronrobotics.sdk.pid.PIDLimitEvent)
70  */
71  @Override
72  public void onPIDLimitEvent(PIDLimitEvent e) {
73  pushAsyncPacket(2,//0 is core, 1 is rpc
75  "pidl",
76  new Object[]{
77  new Byte((byte) e.getGroup()),
78  new Byte( e.getLimitType().getValue()),
79  new Integer((int) e.getValue()),
80  new Integer((int) e.getTimeStamp()),
81  },
82  new BowlerDataType[]{
83  BowlerDataType.I08,//channel
84  BowlerDataType.I08,//type
85  BowlerDataType.I32,//position
86  BowlerDataType.I32,//timestamp
87  } );
88  }
89 
90  /* (non-Javadoc)
91  * @see com.neuronrobotics.sdk.pid.IPIDEventListener#onPIDReset(int, int)
92  */
93  @Override
94  public void onPIDReset(int group, float currentValue) {}//used for object state not commands
95 
96 
102  public static void main(String [] args){
104  PidDeviceServer srv = new PidDeviceServer(new MACAddress(), new VirtualGenericPIDDevice(10000,"PID SERVER TEST") );
105 
106  }
107 }
static void info(String message)
Definition: Log.java:110
static void enableInfoPrint()
Definition: Log.java:207
void addBowlerDeviceServerNamespace(BowlerAbstractDeviceServerNamespace ns)
void pushAsyncPacket(int namespaceIndex, String namespace, String rpcString, Object[] arguments, BowlerDataType[] asyncArguments)
PidDeviceServer(MACAddress mac, IPidControlNamespace device)