Пример #1
0
 /// <summary>
 /// 
 /// </summary>
 /// <param name="validConditionCheck"></param>
 /// <param name="data_byte"></param>
 /// <param name="passState"></param>
 /// <param name="failState"></param>
 /// <returns></returns>
 void processNextState(bool validConditionCheck, byte data_byte, MiltiWiiPacketState passState, MiltiWiiPacketState failState)
 {
     // detemrine if the packet check is valid
      if (validConditionCheck == true)
      {
     // if condition is true, then add the data to the packes and update the next state
     m_packetData[m_length_of_packet++] = data_byte;
     m_packetParserState = passState;
      }
      else
      {
     m_packetParserState = failState;
     m_length_of_packet = 0;
      }
 }
Пример #2
0
        /// <summary>
        /// 
        /// </summary>
        /// <param name="data_byte"></param>
        /// <returns></returns>
        void processHeaderCommand(byte data_byte)
        {
            m_packetData[m_length_of_packet++] = data_byte;
             m_checksum ^= data_byte;

             // determine if there is data associated with the packet
             if (m_dataSize == 0)
            m_packetParserState = MiltiWiiPacketState.CHECKSUM;
             else
            m_packetParserState = MiltiWiiPacketState.COMMAND_DATA;
        }
Пример #3
0
        /// <summary>
        /// 
        /// </summary>
        /// <param name="data_byte"></param>
        /// <returns></returns>
        void processDataSize(byte data_byte)
        {
            // now we are expecting the payload size
             if (data_byte > INBUF_SIZE)  // Data is too large go back to idle
             {
            m_packetParserState = MiltiWiiPacketState.IDLE;
            m_length_of_packet = 0;
             }
             else
             {
            m_packetParserState = MiltiWiiPacketState.HEADER_COMMAND;

            m_dataSize = data_byte;
            m_checksum = 0;
            m_offset   = 0;
            m_checksum ^= data_byte;
            m_packetData[m_length_of_packet++] = data_byte;
             }
        }
Пример #4
0
        /// <summary>
        /// 
        /// </summary>
        /// <param name="data_byte"></param>
        void processCommandData(byte data_byte)
        {
            m_checksum ^= data_byte;
             m_packetData[m_length_of_packet++] = data_byte;
             m_offset++;

             if (m_offset == m_dataSize)
            m_packetParserState = MiltiWiiPacketState.CHECKSUM;
        }
Пример #5
0
        /// <summary>
        /// 
        /// </summary>
        /// <param name="data_byte"></param>
        void processChecksum(byte data_byte)
        {
            m_packetData[m_length_of_packet++] = data_byte;

             if (m_checksum == data_byte)
             {
            // compare calculated and transferred checksum
            if (m_packetData[2] == '<')
            {
               m_packetParserState = MiltiWiiPacketState.VALID_TX_CMD;
            }
            else
            {
               m_packetParserState = MiltiWiiPacketState.VALID_RX_CMD;
            }
             }
             else
             {
            m_packetParserState = MiltiWiiPacketState.IDLE;
            m_length_of_packet = 0;
             }
        }
Пример #6
0
 /// <summary>
 /// 
 /// </summary>
 public MultiWiiPacket()
 {
     m_packetData        = new byte[255];
      m_length_of_packet  = 0;
      m_packetParserState = MiltiWiiPacketState.IDLE;
 }