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 008 package edu.wpi.first.wpilibj.communication; 009 010 import com.sun.cldc.jna.*; 011 import com.sun.squawk.VM; 012 013 /** 014 * Class for obtaining a RIO handle. 015 * @author jhersh 016 */ 017 public class BumARioHandle 018 { 019 020 // UINT32 FRC_NetworkCommunication_nBumARioHandle_bum(INT32 *status); 021 private static Function bumFn; 022 private static Function invalidateFn; 023 024 static { 025 try { 026 bumFn = NativeLibrary.getDefaultInstance().getFunction("FRC_NetworkCommunication_nBumARioHandle_bum"); 027 invalidateFn = NativeLibrary.getDefaultInstance().getFunction("FRC_NetworkCommunication_nBumARioHandle_invalidate"); 028 } catch (Exception e){ 029 bumFn = null; 030 invalidateFn = null; 031 throw new RuntimeException("Communication functions are missing. Make sure that you are using the latest version of the communication library and FPGA, downloaded from file releases on sourceforge.wpi.edu"); 032 } 033 } 034 035 /** 036 * Obtain a RIO handle. 037 * @param pStatus The current status. 038 * @return A RIOHandle 039 */ 040 public static int bum(int pStatus) 041 { 042 return bumFn.call1(pStatus); 043 } 044 045 static { 046 invalidateFn.call0(); 047 VM.addShutdownHook(new Thread(new Runnable() { 048 public void run() { 049 invalidateFn.call0(); 050 } 051 })); 052 } 053 }