zoukankan      html  css  js  c++  java
  • I.MX6 Linux、Jni ioctl 差异

    /***********************************************************************
     *                      I.MX6 Linux、Jni ioctl 差异
     * 声明:
     *     在使用Jni的ioctl()的过程中,发现不能像普通的Linux函数那样使用,
     * 必须使用3各参数的ioctl()函数。
     * 
     *                                   2015-12-20 深圳 南山平山村 曾剑锋
     **********************************************************************/
    
    
    #include <unistd.h>
    #include <sys/types.h>
    #include <sys/stat.h>
    #include <fcntl.h>
    #include <string.h>
    #include <jni.h>
    
    #include "android/log.h"
    static const char *TAG="Buzz";
    #define LOGE(fmt, args...) __android_log_print(ANDROID_LOG_ERROR, TAG, fmt, ##args)
    
    #define BUZZER_ENABLE   82
    #define BUZZER_FREQENCY 83
    #define BUZZER_DISABLE  84
    
    /*
     * Class:     com_android_buzz_Buzz
     * Method:    enable
     * Signature: ()V
     */
    JNIEXPORT void JNICALL Java_com_android_buzz_Buzz_enable
      (JNIEnv *env, jobject obj) {
        int fd = open("/dev/buzzer", O_RDWR);
        if ( fd == -1 ) {
            LOGE("open buzzer device error.");
            return;
        }
    
        // ioctl(fd, BUZZER_ENABLE);        // 不能这样使用
        ioctl(fd, BUZZER_ENABLE, 0);        // 得这么使用
    
        close(fd);
    
        //LOGE("enable buzzer device. ");
    }
    
    /*
     * Class:     com_android_buzz_Buzz
     * Method:    setFrequency
     * Signature: (I)V
     */
    JNIEXPORT void JNICALL Java_com_android_buzz_Buzz_setFrequency
      (JNIEnv *env, jobject obj, jint frequency) {
    
        int fd = open("/dev/buzzer", O_RDWR);
        if ( fd == -1 ) {
            LOGE("open buzzer device error.");
            return;
        }
    
        ioctl(fd, BUZZER_FREQENCY, frequency);
    
        close(fd);
    
        //LOGE("set buzzer device frequency. ");
    }
    
    /*
     * Class:     com_android_buzz_Buzz
     * Method:    disable
     * Signature: ()V
     */
    JNIEXPORT void JNICALL Java_com_android_buzz_Buzz_disable
      (JNIEnv *env, jobject obj) {
    
        int fd = open("/dev/buzzer", O_RDWR);
        if ( fd == -1 ) {
            LOGE("open buzzer device error.");
            return;
        }
    
        // ioctl(fd, BUZZER_DISABLE);       // 不能这样使用
        ioctl(fd, BUZZER_DISABLE, 0);       // 得这么使用
    
        close(fd);
    
        //LOGE("disable buzzer device. ");
    }
  • 相关阅读:
    bzoj2809 [Apio2012]dispatching
    bzoj2743[HEOI2012]采花
    bzoj3626[LNOI2014]LCA
    bzoj2038 [2009国家集训队]小Z的袜子(hose)——莫队
    bzoj2442[Usaco2011 Open]修剪草坪——单调队列优化
    bzoj1588[HNOI2002]营业额统计——双向链表
    洛谷1527(bzoj2738)矩阵乘法——二维树状数组+整体二分
    bzoj1503[NOI2004]郁闷的出纳员——Splay
    洛谷P2014——选课
    洛谷P1352——动规
  • 原文地址:https://www.cnblogs.com/zengjfgit/p/5060715.html
Copyright © 2011-2022 走看看