// this is called when the arduino starts
 void OnStatus(ReceivedCommand arguments)
 {
     int cStatus = arguments.ReadInt16Arg ();
     if (Globals.arguments ().verbose) {
         Console.WriteLine ("Command OnStatus received with status " + cStatus);
     }
 }
        void OnSendSamsungResponse(ReceivedCommand responseCommand, String value)
        {
            int success = responseCommand.ReadInt16Arg();
            String cValue = responseCommand.ReadStringArg();

            listener.response (cValue);
        }
 //we use this for general response debugging
 void OnResponse(ReceivedCommand arguments)
 {
     int cStatus = arguments.ReadInt16Arg ();
     string cMessage = arguments.ReadStringArg ();
     if (Globals.arguments ().verbose) {
         Console.WriteLine ("Command OnResponse received with status " + cStatus + " and message: " + cMessage);
         Console.WriteLine (arguments.RawString);
     }
 }
 void OnLEDOnResponse(ReceivedCommand responseCommand)
 {
     int success = responseCommand.ReadInt16Arg();
     int ledIndex = responseCommand.ReadInt16Arg();
     listener.response ("" + ledIndex);
 }
 void OnLEDEffectResponse(ReceivedCommand responseCommand)
 {
     int success = responseCommand.ReadInt16Arg();
     int effectIndex = responseCommand.ReadInt16Arg();
     listener.response ("" + effectIndex);
 }
        // Callback function To receive the plain text float series from the Arduino
        void OnReceivePlainTextFloatSeries(ReceivedCommand arguments)
        {
            _receivedBytesCount += CountBytesInCommand(arguments, true);

            var count         = arguments.ReadInt16Arg();
            var receivedValue = arguments.ReadFloatArg();


            if (count != _receivedItemsCount)
            {
                Console.WriteLine("Values not matching: received {0} expected {1}", count, _receivedItemsCount);
            }
            if (_receivedItemsCount % (SeriesLength/10) == 0)
                Console.WriteLine("Received value: {0}", receivedValue);
            if (_receivedItemsCount == 0)
            {
                // Received first value, start stopwatch
                _beginTime = Millis;
            }
            else if (count == SeriesLength - 1)
            {
                // Received all values, stop stopwatch
                _endTime = Millis;
                var deltaTime = (_endTime - _beginTime);
                Console.WriteLine("{0} milliseconds per {1} items = is {2} ms/item, {3} Hz",
                    deltaTime, 
                    SeriesLength, 
                    (float)deltaTime / (float)SeriesLength,
                    (float)1000 * SeriesLength / (float)deltaTime
                    );
                Console.WriteLine("{0} milliseconds per {1} bytes = is {2} ms/byte,  {3} bytes/sec, {4} bps",
                    deltaTime,
                    _receivedBytesCount,
                    (float)deltaTime / (float)_receivedBytesCount,
                    (float)1000 * _receivedBytesCount / (float)deltaTime,
                    (float)8 * 1000 * _receivedBytesCount / (float)deltaTime
                    );
                _receivePlainTextFloatSeriesFinished = true;
           }            
            _receivedItemsCount++;     
        }