コード例 #1
0
        /* Tuning Variable Retrieval Response */
        public static int decodeTuningVarGetResponse(byte[] buffer,
                                                     int offset,
                                                     int length,
                                                     TuningVar r)
        {
            if (length < FUSION_TUNING_CMD_MESSAGE_LENGTH)
            {
                return(0);
            }
            if ((buffer[0] == PACKET_START_CHAR) &&
                (buffer[1] == BINARY_PACKET_INDICATOR_CHAR) &&
                (buffer[2] == FUSION_TUNING_CMD_MESSAGE_LENGTH - 2) &&
                (buffer[3] == MSGID_FUSION_TUNING_CMD))
            {
                if (!verifyChecksum(buffer, offset, FUSION_TUNING_CMD_MESSAGE_CHECKSUM_INDEX))
                {
                    return(0);
                }

                // Data
                r.action = buffer[FUSION_TUNING_DATA_ACTION_VALUE_INDEX];
                r.var_id = buffer[FUSION_TUNING_CMD_VAR_ID_VALUE_INDEX];
                r.value  = decodeProtocol1616Float(buffer, FUSION_TUNING_CMD_VAR_VALUE_INDEX);
                return(FUSION_TUNING_CMD_MESSAGE_LENGTH);
            }
            return(0);
        }
コード例 #2
0
 /* Tuning Variable Storage Request */
 public static int encodeTuningVarSetRequest(byte[] buffer,
                                             TuningVar r)
 {
     // Header
     buffer[0] = PACKET_START_CHAR;
     buffer[1] = (byte)BINARY_PACKET_INDICATOR_CHAR;
     buffer[2] = FUSION_TUNING_CMD_MESSAGE_LENGTH - 2;
     buffer[3] = MSGID_FUSION_TUNING_CMD;
     // Data
     buffer[FUSION_TUNING_DATA_ACTION_VALUE_INDEX] = r.action;
     buffer[FUSION_TUNING_CMD_VAR_ID_VALUE_INDEX]  = r.var_id;
     encodeProtocol1616Float(r.value, buffer, FUSION_TUNING_CMD_VAR_VALUE_INDEX);
     // Footer
     encodeTermination(buffer, FUSION_TUNING_CMD_MESSAGE_LENGTH, FUSION_TUNING_CMD_MESSAGE_LENGTH - 4);
     return(FUSION_TUNING_CMD_MESSAGE_LENGTH);
 }
コード例 #3
0
ファイル: AHRSProtocol.cs プロジェクト: chopshop-166/WPILib
        /* Tuning Variable Retrieval Response */
        public static int decodeTuningVarGetResponse(byte[] buffer,
                                                        int offset,
                                                        int length,
                                                        TuningVar r)
        {
            if (length < FUSION_TUNING_CMD_MESSAGE_LENGTH) return 0;
            if ((buffer[0] == PACKET_START_CHAR) &&
                 (buffer[1] == BINARY_PACKET_INDICATOR_CHAR) &&
                 (buffer[2] == FUSION_TUNING_CMD_MESSAGE_LENGTH - 2) &&
                 (buffer[3] == MSGID_FUSION_TUNING_CMD))
            {
                if (!verifyChecksum(buffer, offset, FUSION_TUNING_CMD_MESSAGE_CHECKSUM_INDEX)) return 0;

                // Data
                r.action = buffer[FUSION_TUNING_DATA_ACTION_VALUE_INDEX];
                r.var_id = buffer[FUSION_TUNING_CMD_VAR_ID_VALUE_INDEX];
                r.value = decodeProtocol1616Float(buffer, FUSION_TUNING_CMD_VAR_VALUE_INDEX);
                return FUSION_TUNING_CMD_MESSAGE_LENGTH;
            }
            return 0;
        }
コード例 #4
0
ファイル: AHRSProtocol.cs プロジェクト: chopshop-166/WPILib
 /* Tuning Variable Storage Request */
 public static int encodeTuningVarSetRequest(byte[] buffer,
                                              TuningVar r)
 {
     // Header
     buffer[0] = PACKET_START_CHAR;
     buffer[1] = (byte)BINARY_PACKET_INDICATOR_CHAR;
     buffer[2] = FUSION_TUNING_CMD_MESSAGE_LENGTH - 2;
     buffer[3] = MSGID_FUSION_TUNING_CMD;
     // Data
     buffer[FUSION_TUNING_DATA_ACTION_VALUE_INDEX] = r.action;
     buffer[FUSION_TUNING_CMD_VAR_ID_VALUE_INDEX] = r.var_id;
     encodeProtocol1616Float(r.value, buffer, FUSION_TUNING_CMD_VAR_VALUE_INDEX);
     // Footer
     encodeTermination(buffer, FUSION_TUNING_CMD_MESSAGE_LENGTH, FUSION_TUNING_CMD_MESSAGE_LENGTH - 4);
     return FUSION_TUNING_CMD_MESSAGE_LENGTH;
 }