001/*----------------------------------------------------------------------------*/
002/* Copyright (c) FIRST 2008-2012. All Rights Reserved.                        */
003/* Open Source Software - may be modified and shared by FRC teams. The code   */
004/* must be accompanied by the FIRST BSD license file in the root directory of */
005/* the project.                                                               */
006/*----------------------------------------------------------------------------*/
007
008package edu.wpi.first.wpilibj.can;
009
010/**
011 * Exception indicating that the CAN driver layer has not been initialized.
012 * This happens when an entry-point is called before a CAN driver plugin
013 * has been installed.
014 */
015public class CANJaguarVersionException extends RuntimeException {
016
017    public static final int kMinLegalFIRSTFirmwareVersion = 101;
018    // 3330 was the first shipping RDK firmware version for the Jaguar
019    public static final int kMinRDKFirmwareVersion = 3330;
020
021    public CANJaguarVersionException(int deviceNumber, int fwVersion) {
022        super(getString(deviceNumber, fwVersion));
023        System.out.println("fwVersion[" + deviceNumber + "]: " + fwVersion);
024    }
025
026    static String getString(int deviceNumber, int fwVersion) {
027        String msg;
028        if (fwVersion < kMinRDKFirmwareVersion) {
029            msg = "Jaguar " + deviceNumber +
030                  " firmware is too old.  It must be updated to at least version " +
031                  Integer.toString(kMinLegalFIRSTFirmwareVersion) +
032                  " of the FIRST approved firmware!";
033        } else {
034            msg = "Jaguar " + deviceNumber +
035                  " firmware is not FIRST approved.  It must be updated to at least version " +
036                  Integer.toString(kMinLegalFIRSTFirmwareVersion) +
037                  " of the FIRST approved firmware!";
038        }
039        return msg;
040    }
041}