您好,欢迎来到上海分类信息网
免费发信息

广东深圳RK3399开发板KEY 按键、触摸板添加方法

2018-10-31 6:47:29发布161次查看ip:发布人:
 rk3399的cpu采用big.little大小核架构,双cortex-a72大核+四cortex-a53小核结构,对整数、浮点、内存等作了大幅优化,在整体性能、功耗及核心面积三个方面都具革命性提升。 rk3399的gpu采用四核arm新yi代高端图像处理器mali-t860,集成更多带宽压缩技术:如智能迭加、astc、本地像素存储等,还支持更多的图形和计算接口,总体性能比上代提升45%。
nanoc 端的修改,相关代码如下:
nanoc 对应 key 值的宏定义在 nanoc_vr_release/common/driver/ad_key/ad_key.h 中。nanoc
key 有 定 义 一 个 key 的 结 构 体 , 用 来 存 放 key 值 的 状 态 , 结 构 体 的 路 径
common\driver\usb\usbhidrkvrdata.h
struct keymap_t{
__u16 key_menu_up:1;
__u16 key_menu_down:1;
__u16 key_home_up:1;
__u16 key_home_down:1;
__u16 key_power_up:1;
__u16 key_power_down:1;
__u16 key_volup_up:1;
__u16 key_volup_down:1;
__u16 key_voldn_up:1;
__u16 key_voldn_down:1;
__u16 key_esc_up:1;
__u16 key_esc_down:1;
/*for touch screen **/
__u16 key_up_pressed:1;
__u16 key_up_released:1;
__u16 key_down_pressed:1;
__u16 key_down_released:1;
__u16 key_left_pressed:1;
__u16 key_left_released:1;
__u16 key_right_pressed:1;
__u16 key_right_released:1;
__u16 key_enter_pressed:1;
__u16 key_enter_released:1;
__u16 key_pressed:1;
__u16 psensor_on:1;
__u16 psensor_off:1;
};
typedef union rkvr_data_t{
struct rkvr_data{
struct rkvr_sensor_data sensor_data;
__u8 buf_reserve[10];
struct keymap_t key_map;
}rkvr_data;
__u8 buf[62];
}rkvr_data_un;
nanoc 监听 key 按下的代码路径:nanoc_vr_release/sdk/ui/usb/funusb.c
代码如下:
attr_usb_ui_code_
void hid_reportdata()
{
int16 accel_data[3] = {0};
int16 gyro_data[3] ={0};
uint8 temperature[2] ={0};
float tempreature;
uint32 tempkeyval;
rkvr_data_un rkvr_data_un;
if(usbwriter_isbusy(62)) {
return;
}
memset(rkvr_data_un.buf, 0, sizeof(rkvr_data_un.buf));
if (gsysconfig.usbsensor == 1)
{
//获取 sensor 数据
mpu6500_read_data(accel_data,1,gyro_data,1);
mpu6500_read_temperature(temperature);
sensor_data_fill(&(rkvr_data_un.rkvr_data.sensor_data),accel_data,gyro_data,temperature);
}
//触摸板的键值上报
if(key_map&key_up_mask_bit) {
rkvr_data_un.rkvr_data.key_map.key_up_pressed = 1;
key_map &= ~key_up_mask_bit;
printf(menu up down\n);
}
if(key_map&key_down_mask_bit) {
rkvr_data_un.rkvr_data.key_map.key_down_pressed = 1;
key_map &= ~key_down_mask_bit;
printf(menu down down\n);
}
if(key_map&key_left_mask_bit) {
rkvr_data_un.rkvr_data.key_map.key_left_pressed = 1;
key_map &= ~key_left_mask_bit;
printf(menu left down\n);
}
if(key_map&key_right_mask_bit) {
rkvr_data_un.rkvr_data.key_map.key_right_pressed = 1;
key_map &= ~key_right_mask_bit;
printf(menu right down\n);
}
if(key_map&key_enter_mask_bit) {
rkvr_data_un.rkvr_data.key_map.key_enter_pressed = 1;
key_map &= ~key_enter_mask_bit;
printf(menu enter down\n);
}
//按键键值上报
tempkeyval = getkeyval();
switch (tempkeyval)
{
case key_val_menu_down:
{
printf(menu key down\n);
rkvr_data_un.rkvr_data.key_map.key_menu_down = 1;
rkvr_data_un.rkvr_data.key_map.key_pressed = 1;
usbwriteep(hid_in_ep_sensor ,62, rkvr_data_un.buf);
}
break;
case key_val_menu_long_up:
case key_val_menu_short_up: //menu key
{
printf (menu key up\n);
rkvr_data_un.rkvr_data.key_map.key_menu_up = 1;
rkvr_data_un.rkvr_data.key_map.key_pressed = 1;
usbwriteep(hid_in_ep_sensor ,62, rkvr_data_un.buf); // 发送数据包给
3399 端
}
break;
case key_val_up_down:
{
printf(volup key down\n);
rkvr_data_un.rkvr_data.key_map.key_volup_down = 1;
rkvr_data_un.rkvr_data.key_map.key_pressed = 1;
usbwriteep(hid_in_ep_sensor ,62, rkvr_data_un.buf);
}
break;
case key_val_up_long_up: //volume increse
case key_val_up_short_up:
{
printf (volup key up\n);
rkvr_data_un.rkvr_data.key_map.key_volup_up = 1;
rkvr_data_un.rkvr_data.key_map.key_pressed = 1;
usbwriteep(hid_in_ep_sensor ,62, rkvr_data_un.buf);
}
break;
case key_val_ffw_down:
{
printf(voldn key down\n);
rkvr_data_un.rkvr_data.key_map.key_voldn_down = 1;
rkvr_data_un.rkvr_data.key_map.key_pressed = 1;
usbwriteep(hid_in_ep_sensor ,62, rkvr_data_un.buf);
}
break;
case key_val_ffw_long_up:
case key_val_ffw_short_up:
{
printf (voldn key up\n);
rkvr_data_un.rkvr_data.key_map.key_voldn_up = 1;
rkvr_data_un.rkvr_data.key_map.key_pressed = 1;
usbwriteep(hid_in_ep_sensor ,62, rkvr_data_un.buf);
}
break;
case key_val_ffd_down:
{
printf(ffd key down\n);
}
break;
case key_val_ffd_short_up:
case key_val_ffd_long_up:
{
printf(ffd key up\n);
}
break;
case key_val_down_down:
{
printf(home key down\n);
rkvr_data_un.rkvr_data.key_map.key_home_down = 1;
rkvr_data_un.rkvr_data.key_map.key_pressed = 1;
usbwriteep(hid_in_ep_sensor ,62, rkvr_data_un.buf);
}
break;
case key_val_down_long_up:
case key_val_down_short_up:
{
printf (home key up\n);
rkvr_data_un.rkvr_data.key_map.key_home_up = 1;
rkvr_data_un.rkvr_data.key_map.key_pressed = 1;
usbwriteep(hid_in_ep_sensor ,62, rkvr_data_un.buf);
}
break;
case key_val_play_down:
{
printf(play key down\n);
}
break;
case key_val_play_long_up:
case key_val_play_short_up:
{
printf (play key up\n);
}
福州瑞芯微电子股份有限公司
10
break;
case key_val_esc_d
{
printf(power key down\n);
rkvr_data_un.rkvr_data.key_map.key_power_down = 1;
rkvr_data_un.rkvr_data.key_map.key_pressed = 1;
usbwriteep(hid_in_ep_sensor ,62, rkvr_data_un.buf);
}
break;
case key_val_esc_long_up:
case key_val_esc_short_up:
{
printf (power key up\n);
rkvr_data_un.rkvr_data.key_map.key_power_up = 1;
rkvr_data_un.rkvr_data.key_map.key_pressed = 1;
usbwriteep(hid_in_ep_sensor ,62, rkvr_data_un.buf);
}
break;
default:
{
if (gsysconfig.usbsensor == 1)
{
rkvr_data_un.rkvr_data.key_map.key_pressed = 0;
usbwriteep(hid_in_ep_sensor ,62, rkvr_data_un.buf);
}
}
break;
}
}
      广东深圳rk3399开发板,友坚科技专注于三星、瑞芯微、飞思卡尔平台产品的研发,是三星、瑞芯微、飞思卡尔在中国zui具实力的方案公司之一。公司研发、生产的平板、开发板,连续多年销量稳居第yi。公司专注于中高端产品的研发,具有多年的嵌入式产品研发经验。




该用户其它信息

VIP推荐

上海分类信息网-上海免费发布信息-上海新闻网