package com.friendlyarm.AndroidSDK;
import android.util.Log;
/**
 * 描述：函数库接口
 * @author Administrator
 *
 */
public class HardwareControler
{
	/**
	 * 描述：打开指定的串口设备，并返回文件描述符
	 * @param devName  串口设备文件名
	 * @param baud  波特率
	 * @param dataBits  数据位
	 * @param stopBits  停止位
	 * @return 文件描述符
	 */
	static public native int openSerialPort( String devName, long baud, int dataBits, int stopBits );
	
	/**
	 * 描述：开关LED灯
	 * @param ledID 指定开关哪一个LED灯（1-3）
	 * @param ledState  1表示亮，0表示灭
	 * @return  成功返回0  失败返回-1
	 */
	static public native int setLedState( int ledID, int ledState );
    
    /**
     * 描述：按指定频率让蜂鸣器发声
     * @param frequency  要发声的频率
     * @return  成功返回0  失败返回-1
     */
	static public native int PWMPlay(int frequency);
	/**
	 *  描述：让蜂鸣器停止发声
	 * @return 成功返回0  失败返回-1
	 */
	static public native int PWMStop();
    
    /**
     * 描述：读取ADC转换结果
     * @return
     */
	static public native int readADC();
	
	/**
	 * 描述：打开IIC设备
	 * @return
	 */
	static public native int openI2CDevice();
	/**
	 * 描述：读取数据
	 * @param fd
	 * @param pos
	 * @param byteData
	 * @return
	 */
	static public native int writeByteDataToI2C(int fd, int pos, byte byteData);
	/**
	 * 描述：写入数据
	 * @param fd
	 * @param pos
	 * @return
	 */
	static public native int readByteDataFromI2C(int fd, int pos);
	
	/**
	 * 描述：向打开的设备或文件中写入数据
	 * @param fd
	 * @param data
	 * @return
	 */
	static public native int write(int fd, byte[] data);
	/**
	 * 描述：从打开的设备或文件中读取数据
	 * @param fd
	 * @param buf
	 * @param len
	 * @return
	 */
	static public native int read(int fd, byte[] buf, int len);
	/**
	 * 描述：查询打开的设备或文件中是否数据可读
	 * @param fd
	 * @param sec
	 * @param usec
	 * @return
	 */
	static public native int select(int fd, int sec, int usec);
	/**
	 * 描述：关闭指定设备或文件
	 * @param fd
	 */
	static public native void close(int fd);
    
    static {
        try {
        	System.loadLibrary("friendlyarm-hardware");
        } catch (UnsatisfiedLinkError e) {
            Log.d("HardwareControler", "libfriendlyarm-hardware library not found!");
        }
    }
}