public void newPredictionHandler(PredictedTargetProb m) { if (newPredictionEvent != null) { newPredictionEvent.Invoke(m); } }
// get new messages from the utopia-hub, and store the list of new public List <UtopiaMessage> getNewMessages(int timeout_ms = 0) { if (this.client == null) { return(null); } // get any messages with predictions this.msgs = this.client.getNewMessages();//timeout_ms); if (timeout_ms > 0) { Console.WriteLine("Warning: timeout not supported yet!!"); } // process these messages as needed & call-callbacks if (this.msgs.Count > 0) { //foreach (MessageDegelateType h in this.messageHandlers) { // h.Invoke(this.msgs); //} if (messageHandlers != null) { this.messageHandlers.Invoke(this.msgs); } PredictedTargetProb newPrediction = null; foreach (UtopiaMessage m in this.msgs) { if (m.msgID() == PredictedTargetProb.MSGID) { this.lastPrediction = (PredictedTargetProb)m; // process new prediction callbacks //foreach (PredictionDegelateType h in this.predictionHandlers) { // h.Invoke(newPrediction); //} if (predictionHandlers != null) { this.predictionHandlers.Invoke(this.lastPrediction); } } else if (m.msgID() == Selection.MSGID) { // process selection callbacks //foreach (SelectionDegelateType h in this.selectionHandlers) { // h.Invoke(((Selection)m).objID); //} if (selectionHandlers != null) { this.selectionHandlers.Invoke(((Selection)m).objID); } } else if (m.msgID() == SignalQuality.MSGID) { this.lastSignalQuality = (SignalQuality)m; if (signalQualityHandlers != null) { this.signalQualityHandlers.Invoke(this.lastSignalQuality.signalQuality); } } } } return(this.msgs); }
public UtopiaController() { this.client = new UtopiaClient(); this.msgs = new List <UtopiaMessage>(); this.lastPrediction = null; // callback list for new messages //this.messageHandlers = new List<MessageDegelateType>(); // call back list for new predictions //this.predictionHandlers = new List<PredictionDegelateType>(); // selection stuff //this.selectionHandlers = new List<SelectionDegelateType>(); this.selectionThreshold = 0.1; }
public void newPredictionHandler(PredictedTargetProb m) { int objIdx = getObjIdx(this.objIDs, m.Yest); if (objIdx >= 0) // one of ours { NoisetagBehaviour obj = registeredobjIDs[objIdx]; if (obj != null) { obj.OnPrediction(m.Perr); } } if (newPredictionEvent != null) { newPredictionEvent.Invoke(m); } }
// process a perr-message generating appropriate output. // To avoid 'key-bounce' we use a press-release semantics, where the output is 'Pressed' // so the output is generated when the Perr < outputPressThreshold, then further // output is inhibited until Perr > outputReleaseThreshold. public virtual void perrModeOutput(List <UtopiaMessage> msgs) { foreach (UtopiaMessage m in msgs) { if (!(m.msgID() == PredictedTargetProb.MSGID)) { continue; } PredictedTargetProb ptp = (PredictedTargetProb)m; //print('OutputnMode:',ptp) if (ptp.Perr < this.outputPressThreshold && !this.outputActivated) { // low enough error, not already activated this.client.sendMessage(new Selection(this.client.getTimeStamp(), ptp.Yest)); this.outputActivated = true; this.doOutput(ptp.Yest); } else if (ptp.Perr > this.outputReleaseThreshold && this.outputActivated) { // high-enough error, already activated this.outputActivated = false; } } }
// clear the last predicted target public void clearLastPrediction() { this.lastPrediction = null; }
public UtopiaMessage decodePayload() { // Decode the payload UtopiaMessage evt = null; if ((this.msgID == StimulusEvent.MSGID)) { if ((VERBOSITY > 2)) { System.Console.WriteLine("Trying to read " + StimulusEvent.MSGNAME + " message"); } evt = StimulusEvent.deserialize(this.msgbuffer); } else if ((this.msgID == PredictedTargetProb.MSGID)) { if ((VERBOSITY > 2)) { System.Console.WriteLine("Trying to read " + PredictedTargetProb.MSGNAME + " message"); } evt = PredictedTargetProb.deserialize(this.msgbuffer); } else if ((this.msgID == ModeChange.MSGID)) { if ((VERBOSITY > 2)) { System.Console.WriteLine("Trying to read " + ModeChange.MSGNAME + " message"); } evt = ModeChange.deserialize(this.msgbuffer); } else if ((this.msgID == Reset.MSGID)) { if ((VERBOSITY > 2)) { System.Console.WriteLine("Trying to read " + Reset.MSGNAME + " message"); } evt = Reset.deserialize(this.msgbuffer); } else if ((this.msgID == NewTarget.MSGID)) { if ((VERBOSITY > 2)) { System.Console.WriteLine("Trying to read " + NewTarget.MSGNAME + " message"); } evt = NewTarget.deserialize(this.msgbuffer); } else if ((this.msgID == Heartbeat.MSGID)) { if ((VERBOSITY > 2)) { System.Console.WriteLine("Trying to read " + Heartbeat.MSGNAME + " message"); } evt = Heartbeat.deserialize(this.msgbuffer); } else { throw new ClientException("Unsupported Message type: " + this.msgID); } if ((VERBOSITY > 1)) { System.Console.WriteLine("Got message: " + evt.ToString()); } return(evt); }
private static void sendTestMessages(UtopiaClient utopiaClient, int offset) { // write some test messages.. int[] objIDs = new int[10]; for (int i = 0; (i < objIDs.Length); i++) { objIDs[i] = i; } int[] objState = new int[objIDs.Length]; // send some test StimulusEvents for (int i = 0; (i < 5); i++) { for (int j = 0; (j < objState.Length); j++) { objState[j] = (i + offset); } StimulusEvent e = new StimulusEvent(utopiaClient.getTimeStamp(), objIDs, objState); Console.WriteLine("Sending: " + e.ToString() + " -> server"); try { utopiaClient.sendMessage(e); } catch (IOException ex) { Console.WriteLine(ex); } System.Threading.Thread.Sleep(1000); } { // PREDICTEDTARGETPROB PredictedTargetProb e = new PredictedTargetProb(utopiaClient.getTimeStamp(), 1, ((float)(0.99))); Console.WriteLine("Sending: " + e.ToString() + " -> server"); utopiaClient.sendMessage(e); System.Threading.Thread.Sleep(1000); } { // PREDICTEDTARGETDIST PredictedTargetDist e = new PredictedTargetDist(utopiaClient.getTimeStamp(), new int[] { 1, 2, 3 }, new float[] { .1f, .2f, .3f }); Console.WriteLine("Sending: " + e.ToString() + " -> server"); utopiaClient.sendMessage(e); System.Threading.Thread.Sleep(1000); } { // HEARTBEAT V.2.0 Heartbeat e = new Heartbeat(utopiaClient.getTimeStamp(), "TestMessage"); Console.WriteLine("Sending: " + e.ToString() + " -> server"); utopiaClient.sendMessage(e); System.Threading.Thread.Sleep(1000); } // LOG { Log e = new Log(utopiaClient.getTimeStamp(), "ClientTest"); Console.WriteLine("Sending: " + e.ToString() + " -> server"); utopiaClient.sendMessage(e); System.Threading.Thread.Sleep(1000); } { // MODECHANGE ModeChange e = new ModeChange(utopiaClient.getTimeStamp(), "ClientTest"); Console.WriteLine("Sending: " + e.ToString() + " -> server"); utopiaClient.sendMessage(e); System.Threading.Thread.Sleep(1000); } { // RESET Reset e = new Reset(utopiaClient.getTimeStamp()); Console.WriteLine("Sending: " + e.ToString() + " -> server"); utopiaClient.sendMessage(e); System.Threading.Thread.Sleep(1000); } { // NEWTARGET NewTarget e = new NewTarget(utopiaClient.getTimeStamp()); Console.WriteLine("Sending: " + e.ToString() + " -> server"); utopiaClient.sendMessage(e); System.Threading.Thread.Sleep(1000); } }
public static PredictedTargetProb deserialize(ByteBuffer buffer) { return(PredictedTargetProb.deserialize(buffer, 0)); // default to version 0 messages }