RK3288实现JNI对接上层Java和下层的C++。那么我们就要搭建JNI环境,请参考:
https://blog.csdn.net/shao15232/article/details/102501415
这一节我们主要讲JNI如何实现Android stdio实现IIC与从机通信。
首先在JNI中添加iic源文件。如下图:
这里我们添加了编译so库要使用的源文件,就需要设置一下Android.mk
然后就是bsp_iic.cpp源码的实现。(注这里是我们用来读取T613作为Slave address)
bsp_iic.cpp源码:
#include <stdio.h>
#include <linux/types.h>
#include <fcntl.h>
#include <unistd.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/ioctl.h>
#include <string.h>
#include <linux/i2c.h>
#include <linux/i2c-dev.h> //这个头文件只有在ndk-16里面有,之前用的ndk-12找不到这个头文件
#define SINGLE_RW_2B_ADDR 0x30
#define MODIFY_BNAK_ADDR 0x31
/**
*
* @param u8BusIndex
* @return
*/
int I2C_open(unsigned char u8BusIndex)
{
char szDev[16] = {0};
sprintf(szDev, "/dev/i2c-%d", u8BusIndex);
return open(szDev, O_RDWR);
}
/**
*
* @param dev_fh
* @return
*/
int I2C_close(int dev_fh)
{
return close(dev_fh);
}
/**
*
* @param u8BusIndex
* @param u16BankIndex
* @return
*/
int I2C_modify_bank_index(unsigned char u8BusIn