修改:信号包独立发包,周期100ms;
布局切换按键,增加开机读取电平状态
This commit is contained in:
Binary file not shown.
@@ -22,9 +22,9 @@
|
||||
#include "confile.h"
|
||||
#include "Util.h"
|
||||
|
||||
|
||||
#define KEY_EVENT_DEV0_NAME "/dev/input/event0"
|
||||
#define KEY_EVENT_DEV0_NAME "/dev/input/event1"
|
||||
//#define KEY_EVENT_DEV0_NAME "/dev/input/event2"
|
||||
|
||||
|
||||
#define DEFAULT_MD_LEN 4096
|
||||
int switch_video;
|
||||
@@ -123,12 +123,18 @@ int main(int argc, char **argv)
|
||||
int flag_down=0;
|
||||
|
||||
key_fd = open(KEY_EVENT_DEV0_NAME, O_RDONLY);
|
||||
if(key_fd <= 0)
|
||||
// if(key_fd <= 0)
|
||||
// {
|
||||
// printf("---open /dev/input/event2 device error!---\n");
|
||||
// return ret;
|
||||
// }
|
||||
if(key_fd < 0)
|
||||
{
|
||||
printf("---open /dev/input/event0 device error!---\n");
|
||||
return ret;
|
||||
perror("open " KEY_EVENT_DEV0_NAME); // 这一行能直接告诉你 errno
|
||||
return -1; // 原来 return ret; ret 未初始化,是未定义行为
|
||||
}
|
||||
|
||||
|
||||
light_mode = switch_memory_open();
|
||||
get_parameter(¶m);
|
||||
//printf("---\n");
|
||||
@@ -161,7 +167,7 @@ int main(int argc, char **argv)
|
||||
}else if(key_event.type == EV_KEY && key_event.value == 0){
|
||||
|
||||
if(flag_down == 1){ //短按
|
||||
if((key_event.code == 0x67) && (count_down < 25))
|
||||
if((key_event.code == 0x66) && (count_down < 25))
|
||||
{
|
||||
//key_value = 0x01; //light down
|
||||
count=count+400;
|
||||
@@ -170,7 +176,7 @@ int main(int argc, char **argv)
|
||||
}
|
||||
|
||||
|
||||
}else if((key_event.code == 0x66) && (count_down < 25)){
|
||||
}else if((key_event.code == 0x67) && (count_down < 25)){
|
||||
|
||||
count=count-400;
|
||||
if(count <= 0){
|
||||
|
||||
@@ -19,12 +19,17 @@
|
||||
#include <sys/mman.h>
|
||||
#include <arpa/inet.h>
|
||||
#include <netdb.h>
|
||||
#include <sys/ioctl.h>
|
||||
#include "confile.h"
|
||||
#include "Util.h"
|
||||
|
||||
#define KEY_EVENT_DEV1_NAME "/dev/input/event1"
|
||||
#define KEY_EVENT_DEV0_NAME "/dev/input/event0"
|
||||
|
||||
#define KEY_CODE_LAYOUT 0x68 /* 布局开关按键 */
|
||||
|
||||
#define SHM_LAYOUT_NAME "/video_switch" /* [1] = 布局开关状态,ctrl_pnl 上报面板 byte27 */
|
||||
|
||||
#define DEFAULT_MD_LEN 4096
|
||||
int switch_video;
|
||||
unsigned char key_value;
|
||||
@@ -79,17 +84,26 @@ void* pkts_worker(void *arg)
|
||||
}
|
||||
}
|
||||
#endif
|
||||
int *switch_memory_open(void) {
|
||||
char buf[128];
|
||||
int fd;
|
||||
sprintf(buf, "/switch_mode");
|
||||
fd = shm_open(buf, O_CREAT | O_RDWR, S_IRUSR | S_IWUSR);
|
||||
// int *switch_memory_open(void) {
|
||||
// char buf[128];
|
||||
// int fd;
|
||||
// sprintf(buf, "/switch_mode");
|
||||
// fd = shm_open(buf, O_CREAT | O_RDWR, S_IRUSR | S_IWUSR);
|
||||
// if(fd < 0) { perror("shm_open"); exit(1); }
|
||||
// if (ftruncate(fd, 4096) == -1) { perror("ftruncate"); exit(1); }
|
||||
// int *retval = mmap(NULL, 4096, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);
|
||||
// return retval;
|
||||
// }
|
||||
|
||||
int *switch_memory_open(const char *name) {
|
||||
int fd = shm_open(name, O_CREAT | O_RDWR, S_IRUSR | S_IWUSR);
|
||||
if(fd < 0) { perror("shm_open"); exit(1); }
|
||||
if (ftruncate(fd, 4096) == -1) { perror("ftruncate"); exit(1); }
|
||||
int *retval = mmap(NULL, 4096, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);
|
||||
return retval;
|
||||
}
|
||||
|
||||
|
||||
int get_parameter(struct decoce_param *pparam)
|
||||
{
|
||||
if(confile_init()) {
|
||||
@@ -102,6 +116,21 @@ int get_parameter(struct decoce_param *pparam)
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* 开机时按键可能已经按住,输入层不会上报"电平没变"的事件,只能主动查一次 */
|
||||
static int key_is_down(int fd, unsigned int code)
|
||||
{
|
||||
unsigned long keybits[(KEY_MAX / 8 / sizeof(unsigned long)) + 1];
|
||||
|
||||
memset(keybits, 0, sizeof(keybits));
|
||||
if(ioctl(fd, EVIOCGKEY(sizeof(keybits)), keybits) < 0)
|
||||
{
|
||||
printf("---EVIOCGKEY error!---\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
return (keybits[code / (8 * sizeof(unsigned long))] >>
|
||||
(code % (8 * sizeof(unsigned long)))) & 1UL;
|
||||
}
|
||||
|
||||
|
||||
int main(int argc, char **argv)
|
||||
@@ -112,7 +141,7 @@ int main(int argc, char **argv)
|
||||
struct input_event key_event = {0};
|
||||
int ret;
|
||||
int port;
|
||||
int *light_mode;
|
||||
int *video_mode;
|
||||
int len;
|
||||
pthread_attr_t attr;
|
||||
|
||||
@@ -121,7 +150,7 @@ int main(int argc, char **argv)
|
||||
int count_down=0;
|
||||
int flag_down=0;
|
||||
|
||||
key_fd = open(KEY_EVENT_DEV0_NAME, O_RDONLY);
|
||||
key_fd = open(KEY_EVENT_DEV1_NAME, O_RDONLY);
|
||||
if(key_fd <= 0)
|
||||
{
|
||||
printf("---open %s device error!---\n",KEY_EVENT_DEV1_NAME);
|
||||
@@ -129,6 +158,11 @@ int main(int argc, char **argv)
|
||||
}
|
||||
|
||||
//light_mode = switch_memory_open();
|
||||
video_mode = switch_memory_open(SHM_LAYOUT_NAME);
|
||||
|
||||
video_mode[1] = key_is_down(key_fd, KEY_CODE_LAYOUT);
|
||||
|
||||
|
||||
get_parameter(¶m);
|
||||
//printf("---\n");
|
||||
//switch_mode[0] = 0x01;
|
||||
@@ -149,6 +183,13 @@ int main(int argc, char **argv)
|
||||
{
|
||||
//printf("key_event.type %d EV_KEY %d \n",key_event.type,EV_KEY);
|
||||
//printf("key_event.value %d key_event.code %d count_down %d\n",key_event.value, key_event.code,count_down);
|
||||
|
||||
/* 布局开关:直接跟按键电平,按下=1 松开=0,不做翻转、不留状态 */
|
||||
if(key_event.type == EV_KEY && key_event.code == KEY_CODE_LAYOUT){
|
||||
|
||||
video_mode[1] = key_event.value ? 1 : 0;
|
||||
}
|
||||
|
||||
if(key_event.type == EV_KEY && key_event.value == 1 )
|
||||
{
|
||||
flag_down=1;
|
||||
@@ -186,7 +227,10 @@ int main(int argc, char **argv)
|
||||
sprintf(buf,"./pwm.sh %d",count);
|
||||
system(buf);
|
||||
printf("----%s \n",buf);
|
||||
|
||||
}
|
||||
|
||||
|
||||
#if 0
|
||||
if((count_down > 50) && (key_event.code == 0x67)){
|
||||
printf("long\n");
|
||||
|
||||
Reference in New Issue
Block a user