public void newPredictionHandler(PredictedTargetProb m)
 {
     if (newPredictionEvent != null)
     {
         newPredictionEvent.Invoke(m);
     }
 }
Exemple #2
0
 // 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);
 }
Exemple #3
0
 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;
 }
Exemple #4
0
    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);
        }
    }
Exemple #5
0
 // 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;
         }
     }
 }
Exemple #6
0
 // clear the last predicted target
 public void clearLastPrediction()
 {
     this.lastPrediction = null;
 }
Exemple #7
0
        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);
        }
Exemple #8
0
        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
 }