#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include int switch_video; //unsigned char key_value; char buf_kill_rtsp[1024]; char buf[1024]; int *switch_uart(void) { char buf1[128]; int fd; sprintf(buf1, "/video_mode"); fd = shm_open(buf1, 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(void) { char buf[128]; int fd; sprintf(buf, "/video_switch"); 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; } void rtsp_play(int switch_index, int kill_port, int start_por){ printf("+++++++++++++++++++++++++%d time out\n" ,switch_index); sprintf(buf_kill_rtsp,"./kill_rtsp.sh %d",kill_port); system(buf_kill_rtsp); printf("%s \n",buf_kill_rtsp); sprintf(buf,"./start_rtsp.sh %d",start_por); system(buf); printf("%s \n",buf); } void handle_buffer1(int *switch_mode, int buffer_val1){ if(buffer_val1>0){ if(switch_mode[2]==0x55){ rtsp_play(1,4,buffer_val1*6-5); } if(switch_mode[3]==0x55){ rtsp_play(2,5,buffer_val1*6-4); } }} void handle_buffer2(int *switch_mode, int buffer_val2,int buffer_val3,int buffer_val4){ if(buffer_val2==0x01){ if(buffer_val3>0){ if(switch_mode[4]==0x55){ rtsp_play(1,6,buffer_val3*6-3); } } if(buffer_val4>0){ if(switch_mode[5]==0x55){ rtsp_play(2,7,buffer_val4*6-2); } } }else if(buffer_val2==0x10){ if(buffer_val3>0){ if(switch_mode[4]==0x55){ rtsp_play(3,8,buffer_val3*6-1); } } if(buffer_val4>0){ if(switch_mode[5]==0x55){ rtsp_play(4,9,buffer_val4*6); } } } } int main(int argc, char **argv) { int *switch_mode; int *buffer; int buffer_pre[5]; switch_mode = switch_memory_open(); buffer = switch_uart(); buffer_pre[1] = buffer[1]; buffer_pre[2] = buffer[2]; buffer_pre[3] = buffer[3]; buffer_pre[4] = buffer[4]; //handle_buffer1(switch_mode, buffer[1]); //handle_buffer2(switch_mode,buffer[2],buffer[3],buffer[4]); #if 1 while(1) { if(switch_mode[2]==0x55||switch_mode[3]==0x55||switch_mode[4]==0x55||switch_mode[5]==0x55){ handle_buffer1(switch_mode, buffer[1]); printf("handle_buffer1 \n"); handle_buffer2(switch_mode,buffer[2],buffer[3],buffer[4]); } if((buffer[1] != buffer_pre[1] )&&buffer[1]>0){ // printf("buffer[1]%x %x",buffer_pre[1],buffer[1]); rtsp_play(2,4,buffer[1]*6-5); rtsp_play(3,5,buffer[1]*6-4); buffer_pre[1] = buffer[1]; } if((buffer[2] != buffer_pre[2] )&&buffer[3]>0 &&buffer[4]>0){ // 处理buffer[2][3][4] if(buffer[2]==0x01){ rtsp_play(4,10,buffer[3]*6-3); rtsp_play(5,11,buffer[4]*6-2); }else if(buffer[2]==0x10){ rtsp_play(4,10,buffer[3]*6-1); rtsp_play(5,11,buffer[4]*6); } buffer_pre[2] = buffer[2]; } if((buffer[3] != buffer_pre[3] )&&buffer[3]>0){ if(buffer[2]==0x01){ rtsp_play(4,10,buffer[3]*6-3); }else if(buffer[2]==0x10){ rtsp_play(4,10,buffer[3]*6-1); } buffer_pre[3] = buffer[3]; }if((buffer[4] != buffer_pre[4] )&&buffer[4]>0){ if(buffer[2]==0x01){ rtsp_play(5,11,buffer[4]*6-2); }else if(buffer[2]==0x10){ rtsp_play(5,11,buffer[4]*6); } buffer_pre[4] = buffer[4]; } usleep(8000000); } #endif }