#359072 - 28/06/2013 20:20
Re: Empeg player software, a new generation
[Re: mlord]
|
carpal tunnel
Registered: 29/08/2000
Posts: 14505
Loc: Canada
|
I also now took your broadcastfb_proc.c program, changed it only very slightly, to simply send the NextTrack hexcode pairs once every five seconds, and this also works:
// broadcastfb.c
//
// Hiijack kernel adds /proc/empeg_screen.raw file. Try reading this instead
//
// Verson 3.1
// Jonathan Andrews ( j o n @ j o n s h o u s e . c o . u k )
//
// Last Changed 28 Jun 2013
//
// Always seems to send 38 frames per second, I think the empeg display is refreshed faster
// but its tricky to find a way to read it without corruption.
//
// Version 2 adds support for remote button presses via UDP port.
//
// Version 3 adds support for messages in the form 0x12345678, these are key press or
// consumer IR 4 byte (long int) represented as hex.
// These messages are sent to /proc/empeg_ir to proxy infra-red sequences or just button
// push/release events
//
#define PORT 4040
#define RXPORT 5050
#define DEST_ADDR "255.255.255.255"
unsigned char fbdata[32*64]; // 32 Rows of 64 Bytes = 2048 Bytes (2K)
#define TRUE 1
#define FALSE 0
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <sys/mman.h>
#include <sys/ioctl.h>
#include <sys/resource.h>
#include <errno.h>
// sockets related
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>
int sockfd;
int rxsockfd;
int proc_buttonfd;
int proc_irfd;
#include <sched.h>
void set_realtime(void)
{
struct sched_param sparam;
sparam.sched_priority = sched_get_priority_max(SCHED_RR);
sched_setscheduler(0, SCHED_FIFO, &sparam);
}
// Received UDP packet.
unsigned char ubuffer[512];
int main(int argc, char *argv[])
{
struct sockaddr_in sendaddr;
struct sockaddr_in recvaddr;
int numbytes;
int broadcast=1;
int allon;
int allblack;
int limit;
int flags;
int j,i,fd;
int res;
caddr_t dmap;
int addr_len;
long ircode=0;
char st[1024];
set_realtime(); // Marking as realtime gives more FPS but some clashing with player
// nice myself to higher priority
setpriority(PRIO_PROCESS,0,-20); // Give this process a CPU boost, same nice as pulse
// Setup receiving UDP socket
if((rxsockfd = socket(PF_INET,SOCK_DGRAM,0)) == -1)
{
perror("rx sockfd");
exit(1);
}
// Setuop socket, specify listening interfaces etc
recvaddr.sin_family = AF_INET;
recvaddr.sin_port = htons(RXPORT);
recvaddr.sin_addr.s_addr = INADDR_ANY;
memset(recvaddr.sin_zero,'\0',sizeof (recvaddr.sin_zero));
// Put socket in non blcoking mode
flags = fcntl(rxsockfd, F_GETFL); // Get the sockets flags
flags |= O_NONBLOCK; // Set NONBLOCK flag
if (fcntl(rxsockfd, F_SETFL, flags) == -1) // Write flags back
{
perror("error,fcnctl failed - could not set socket to nonblocking");
exit(1);
}
if(bind(rxsockfd, (struct sockaddr*) &recvaddr, sizeof recvaddr) == -1)
{
perror("bind");
exit(1);
}
printf("Listening on UDP port %d\n",RXPORT);
fflush(stdout);
// Setup sending UDP socket
if((sockfd = socket(PF_INET,SOCK_DGRAM,0)) == -1)
{
perror("sockfd");
exit(1);
}
if((setsockopt(sockfd,SOL_SOCKET,SO_BROADCAST,&broadcast,sizeof broadcast)) == -1)
{
perror("setsockopt - SO_SOCKET ");
exit(1);
}
sendaddr.sin_family = AF_INET;
sendaddr.sin_port = htons(PORT);
sendaddr.sin_addr.s_addr = inet_addr(DEST_ADDR);
memset(sendaddr.sin_zero,'\0',sizeof(sendaddr.sin_zero));
printf("Sending packets on UDP port %d\n",PORT);
fflush(stdout);
// Open hijack kernel version of framebuffer
fd = open("/proc/empeg_screen.raw", O_RDWR);
if (fd == -1)
perror("open /proc/empeg_screen.raw failed");
// Open /proc/empeg_notify so we can push button presses into it
proc_buttonfd=open("/proc/empeg_notify",O_RDWR);
if (proc_buttonfd < 2)
{
perror("Failed to open /proc/empeg_notify for RDWR\n");
exit(1);
}
//proc_irfd=open("/proc/empeg_ir",O_WRONLY);
//if (proc_irfd < 2)
//{
//perror("Failed to open /proc/empeg_ir\n");
//exit(1);
//}
while (1)
{
if (0) {
lseek(fd,0,SEEK_SET);
read(fd,fbdata,sizeof(fbdata)); // Read data from framebuffer
numbytes = sendto(sockfd, &fbdata, sizeof(fbdata), 0, (struct sockaddr *)&sendaddr, sizeof(sendaddr));
//numbytes = sendto(sockfd, dmap, 2048, 0, (struct sockaddr *)&sendaddr, sizeof(sendaddr)); // direct from FB data
if (numbytes<=0)
{
perror("sendto error");
exit(1);
}
else
{
//printf("Sent %d bytes\n",numbytes);
//fflush(stdout);
}
// Receive text and send it to empeg player to process.
addr_len=sizeof(recvaddr);
numbytes = recvfrom (rxsockfd, (char*)ubuffer, sizeof(ubuffer)-2, 0, (struct sockaddr *) &recvaddr, &addr_len);
ubuffer[numbytes]=0; // terminate actual string
ubuffer[sizeof(ubuffer)-1]=0; // ensure buffer is always 0 terminated
} else {
sleep(5);
strcpy(ubuffer, "0x0020DF11");
numbytes = strlen(ubuffer);
}
if (numbytes > 0)
{
printf("Got %d bytes from receiving UDP socket [%s]\n",numbytes,ubuffer);
fflush(stdout);
// If message starts 0x and is 0x12345678 long then its an IR code
if ( (ubuffer[0]=='0') & (ubuffer[1]=='x') )
{
if (strlen(ubuffer)==10) // sequence is 0x12345678
{
sprintf(st,"BUTTONRAW=%s",ubuffer);
res=write(proc_buttonfd,st,strlen(st)); // write text to /proc/empeg_notify file
printf("sent %s, result %d\n",st,res);
fflush(stdout);
usleep(250000);
strcat(st,".R");
res=write(proc_buttonfd,st,strlen(st)); // write text to /proc/empeg_notify file
printf("sent %s, result %d\n",st,res);
fflush(stdout);
}
}
else
write(proc_buttonfd,ubuffer,strlen(ubuffer)); // write text to /proc/empeg_notify file
}
usleep(5000); // works well, 38 frames/second
}
close(fd);
}
|
Top
|
|
|
|
Empeg player software, a new generation
|
pca
|
02/05/2013 14:00
|
Re: Empeg player software, a new generation
|
julf
|
02/05/2013 14:07
|
Re: Empeg player software, a new generation
|
pca
|
02/05/2013 14:08
|
Re: Empeg player software, a new generation
|
julf
|
02/05/2013 14:10
|
Re: Empeg player software, a new generation
|
LittleBlueThing
|
02/05/2013 14:30
|
Re: Empeg player software, a new generation
|
jonshouse
|
02/05/2013 14:35
|
Re: Empeg player software, a new generation
|
LittleBlueThing
|
02/05/2013 14:39
|
Re: Empeg player software, a new generation
|
jonshouse
|
02/05/2013 15:25
|
Re: Empeg player software, a new generation
|
drakino
|
02/05/2013 16:08
|
Re: Empeg player software, a new generation
|
mlord
|
02/05/2013 20:09
|
Re: Empeg player software, a new generation
|
jonshouse
|
03/05/2013 01:26
|
Re: Empeg player software, a new generation
|
tonyc
|
03/05/2013 03:40
|
Re: Empeg player software, a new generation
|
BartDG
|
04/05/2013 11:02
|
Re: Empeg player software, a new generation
|
jonshouse
|
04/05/2013 13:59
|
Re: Empeg player software, a new generation
|
BartDG
|
04/05/2013 15:03
|
Re: Empeg player software, a new generation
|
Taym
|
07/05/2013 23:51
|
Re: Empeg player software, a new generation
|
jonshouse
|
09/05/2013 00:01
|
Re: Empeg player software, a new generation
|
julf
|
09/05/2013 06:11
|
Re: Empeg player software, a new generation
|
Taym
|
09/05/2013 12:22
|
Re: Empeg player software, a new generation
|
jonshouse
|
09/05/2013 13:31
|
Re: Empeg player software, a new generation
|
Taym
|
09/05/2013 16:55
|
Re: Empeg player software, a new generation
|
jonshouse
|
09/05/2013 19:28
|
Re: Empeg player software, a new generation
|
Taym
|
09/05/2013 20:06
|
Re: Empeg player software, a new generation
|
jonshouse
|
09/05/2013 21:22
|
Re: Empeg player software, a new generation
|
canuckInOR
|
10/05/2013 16:04
|
Re: Empeg player software, a new generation
|
jonshouse
|
10/05/2013 16:48
|
Re: Empeg player software, a new generation
|
mlord
|
10/05/2013 17:15
|
Re: Empeg player software, a new generation
|
canuckInOR
|
10/05/2013 18:39
|
Re: Empeg player software, a new generation
|
JBjorgen
|
10/05/2013 18:48
|
Re: Empeg player software, a new generation
|
BartDG
|
10/05/2013 17:34
|
Re: Empeg player software, a new generation
|
canuckInOR
|
10/05/2013 18:51
|
Re: Empeg player software, a new generation
|
jonshouse
|
10/05/2013 19:30
|
Re: Empeg player software, a new generation
|
Taym
|
11/05/2013 13:59
|
Re: Empeg player software, a new generation
|
jonshouse
|
11/05/2013 20:05
|
Re: Empeg player software, a new generation
|
Taym
|
12/05/2013 15:15
|
Re: Empeg player software, a new generation
|
tanstaafl.
|
12/05/2013 16:26
|
Re: Empeg player software, a new generation
|
jonshouse
|
12/05/2013 19:15
|
Re: Empeg player software, a new generation
|
tanstaafl.
|
13/05/2013 00:04
|
Re: Empeg player software, a new generation
|
Taym
|
21/05/2013 12:28
|
Re: Empeg player software, a new generation
|
pca
|
21/05/2013 16:32
|
Re: Empeg player software, a new generation
|
canuckInOR
|
21/05/2013 16:55
|
Re: Empeg player software, a new generation
|
tfabris
|
21/05/2013 22:06
|
Re: Empeg player software, a new generation
|
jonshouse
|
23/05/2013 13:26
|
Re: Empeg player software, a new generation
|
JBjorgen
|
23/05/2013 17:06
|
Re: Empeg player software, a new generation
|
drakino
|
21/05/2013 18:02
|
Re: Empeg player software, a new generation
|
pca
|
21/05/2013 18:28
|
Re: Empeg player software, a new generation
|
Waterman981
|
23/05/2013 20:49
|
Re: Empeg player software, a new generation
|
pca
|
24/05/2013 17:09
|
Re: Empeg player software, a new generation
|
tonyc
|
25/05/2013 18:59
|
Re: Empeg player software, a new generation
|
LittleBlueThing
|
02/06/2013 10:26
|
Re: Empeg player software, a new generation
|
jonshouse
|
02/06/2013 12:21
|
Re: Empeg player software, a new generation
|
pca
|
05/06/2013 19:38
|
Re: Empeg player software, a new generation
|
pca
|
05/06/2013 19:39
|
Re: Empeg player software, a new generation
|
sein
|
06/06/2013 13:21
|
Re: Empeg player software, a new generation
|
JBjorgen
|
08/06/2013 00:27
|
Re: Empeg player software, a new generation
|
tanstaafl.
|
08/06/2013 20:01
|
Re: Empeg player software, a new generation
|
jonshouse
|
08/06/2013 21:56
|
Re: Empeg player software, a new generation
|
tanstaafl.
|
08/06/2013 23:39
|
Re: Empeg player software, a new generation
|
jbrinkerhoff
|
13/06/2013 14:53
|
Re: Empeg player software, a new generation
|
jbrinkerhoff
|
13/06/2013 15:21
|
Re: Empeg player software, a new generation
|
LittleBlueThing
|
13/06/2013 20:35
|
Re: Empeg player software, a new generation
|
jonshouse
|
17/06/2013 23:47
|
Re: Empeg player software, a new generation
|
LittleBlueThing
|
18/06/2013 07:43
|
Re: Empeg player software, a new generation
|
jonshouse
|
19/06/2013 22:17
|
Re: Empeg player software, a new generation
|
LittleBlueThing
|
20/06/2013 21:40
|
Re: Empeg player software, a new generation
|
mlord
|
20/06/2013 23:16
|
Re: Empeg player software, a new generation
|
andy
|
21/06/2013 06:11
|
Re: Empeg player software, a new generation
|
LittleBlueThing
|
21/06/2013 08:21
|
Re: Empeg player software, a new generation
|
jbrinkerhoff
|
21/06/2013 15:56
|
Re: Empeg player software, a new generation
|
mlord
|
21/06/2013 17:44
|
Re: Empeg player software, a new generation
|
pca
|
23/06/2013 21:13
|
Re: Empeg player software, a new generation
|
LittleBlueThing
|
24/06/2013 09:51
|
Re: Empeg player software, a new generation
|
mlord
|
24/06/2013 10:29
|
Re: Empeg player software, a new generation
|
LittleBlueThing
|
24/06/2013 13:51
|
Re: Empeg player software, a new generation
|
mlord
|
25/06/2013 09:57
|
Re: Empeg player software, a new generation
|
LittleBlueThing
|
25/06/2013 11:17
|
Re: Empeg player software, a new generation
|
jbrinkerhoff
|
25/06/2013 15:37
|
Re: Empeg player software, a new generation
|
jbrinkerhoff
|
25/06/2013 16:00
|
Re: Empeg player software, a new generation
|
jonshouse
|
25/06/2013 16:33
|
Re: Empeg player software, a new generation
|
jbrinkerhoff
|
25/06/2013 23:49
|
Re: Empeg player software, a new generation
|
jonshouse
|
26/06/2013 13:14
|
Re: Empeg player software, a new generation
|
jbrinkerhoff
|
26/06/2013 16:28
|
Re: Empeg player software, a new generation
|
mlord
|
26/06/2013 21:08
|
Re: Empeg player software, a new generation
|
mlord
|
26/06/2013 21:12
|
Re: Empeg player software, a new generation
|
jonshouse
|
26/06/2013 22:07
|
Re: Empeg player software, a new generation
|
mlord
|
27/06/2013 10:16
|
Re: Empeg player software, a new generation
|
mlord
|
27/06/2013 10:18
|
Re: Empeg player software, a new generation
|
jonshouse
|
27/06/2013 13:37
|
Re: Empeg player software, a new generation
|
mlord
|
27/06/2013 18:02
|
Re: Empeg player software, a new generation
|
jonshouse
|
27/06/2013 18:27
|
Re: Empeg player software, a new generation
|
mlord
|
28/06/2013 13:29
|
Re: Empeg player software, a new generation
|
jonshouse
|
28/06/2013 13:32
|
Re: Empeg player software, a new generation
|
mlord
|
28/06/2013 13:41
|
Re: Empeg player software, a new generation
|
mlord
|
28/06/2013 13:50
|
Re: Empeg player software, a new generation
|
mlord
|
28/06/2013 13:53
|
Re: Empeg player software, a new generation
|
mlord
|
28/06/2013 14:10
|
Re: Empeg player software, a new generation
|
jonshouse
|
28/06/2013 14:53
|
Re: Empeg player software, a new generation
|
jonshouse
|
28/06/2013 14:32
|
Re: Empeg player software, a new generation
|
mlord
|
28/06/2013 15:35
|
Re: Empeg player software, a new generation
|
mlord
|
28/06/2013 15:36
|
Re: Empeg player software, a new generation
|
mlord
|
28/06/2013 15:42
|
Re: Empeg player software, a new generation
|
mlord
|
28/06/2013 15:48
|
Re: Empeg player software, a new generation
|
mlord
|
28/06/2013 15:50
|
Re: Empeg player software, a new generation
|
jonshouse
|
28/06/2013 18:59
|
Re: Empeg player software, a new generation
|
mlord
|
28/06/2013 20:10
|
Re: Empeg player software, a new generation
|
mlord
|
28/06/2013 20:20
|
Re: Empeg player software, a new generation
|
jonshouse
|
28/06/2013 20:25
|
Re: Empeg player software, a new generation
|
tanstaafl.
|
28/06/2013 23:54
|
Re: Empeg player software, a new generation
|
mlord
|
29/06/2013 00:20
|
Re: Empeg player software, a new generation
|
jonshouse
|
29/06/2013 10:02
|
Re: Empeg player software, a new generation
|
mlord
|
29/06/2013 10:32
|
Re: Empeg player software, a new generation
|
jonshouse
|
29/06/2013 13:42
|
Re: Empeg player software, a new generation
|
mlord
|
29/06/2013 20:38
|
Re: Empeg player software, a new generation
|
jonshouse
|
29/06/2013 21:33
|
Re: Empeg player software, a new generation
|
mlord
|
29/06/2013 00:26
|
Re: Empeg player software, a new generation
|
jonshouse
|
25/06/2013 16:02
|
Re: Empeg player software, a new generation
|
jonshouse
|
17/06/2013 23:58
|
Re: Empeg player software, a new generation
|
Garry
|
23/06/2013 11:28
|
Re: Empeg player software, a new generation
|
jonshouse
|
19/09/2013 10:51
|
Re: Empeg player software, a new generation
|
jonshouse
|
27/09/2013 16:37
|
Re: Empeg player software, a new generation
|
mlord
|
28/09/2013 22:44
|
Re: Empeg player software, a new generation
|
jonshouse
|
28/09/2013 23:08
|
Re: Empeg player software, a new generation
|
jbrinkerhoff
|
30/10/2013 15:23
|
Re: Empeg player software, a new generation
|
canuckInOR
|
02/05/2013 20:30
|
Re: Empeg player software, a new generation
|
canuckInOR
|
02/05/2013 20:40
|
Re: Empeg player software, a new generation
|
drakino
|
02/05/2013 21:24
|
Re: Empeg player software, a new generation
|
jonshouse
|
03/05/2013 01:19
|
Re: Empeg player software, a new generation
|
drakino
|
03/05/2013 15:10
|
Re: Empeg player software, a new generation
|
jonshouse
|
03/05/2013 17:18
|
Re: Empeg player software, a new generation
|
Redrum
|
03/05/2013 09:37
|
Re: Empeg player software, a new generation
|
jonshouse
|
03/05/2013 14:08
|
Re: Empeg player software, a new generation
|
mlord
|
03/05/2013 15:50
|
Re: Empeg player software, a new generation
|
jonshouse
|
03/05/2013 16:25
|
Re: Empeg player software, a new generation
|
snowcrash
|
17/07/2013 01:23
|
Re: Empeg player software, a new generation
|
jbrinkerhoff
|
17/07/2013 17:49
|
Re: Empeg player software, a new generation
|
canuckInOR
|
19/07/2013 16:30
|
Re: Empeg player software, a new generation
|
Jemmi
|
26/07/2013 11:59
|
Re: Empeg player software, a new generation
|
tanstaafl.
|
26/07/2013 15:22
|
Re: Empeg player software, a new generation
|
Jemmi
|
29/07/2013 14:38
|
Re: Empeg player software, a new generation
|
jonshouse
|
31/07/2013 19:47
|
Re: Empeg player software, a new generation
|
jonshouse
|
31/07/2013 19:51
|
Re: Empeg player software, a new generation
|
Jemmi
|
07/08/2013 11:27
|
Re: Empeg player software, a new generation
|
jonshouse
|
10/08/2013 21:05
|
Re: Empeg player software, a new generation
|
jbrinkerhoff
|
16/08/2013 10:44
|
Re: Empeg player software, a new generation
|
jonshouse
|
27/08/2013 02:28
|
Re: Empeg player software, a new generation
|
Jemmi
|
19/08/2013 18:10
|
Re: Empeg player software, a new generation
|
jonshouse
|
27/08/2013 02:13
|
Re: Empeg player software, a new generation
|
mlord
|
14/05/2014 18:25
|
Re: Empeg player software, a new generation
|
BartDG
|
04/07/2014 20:08
|
Re: Empeg player software, a new generation
|
suomi35
|
11/07/2014 14:00
|
Re: Empeg player software, a new generation
|
ShadowMan
|
04/11/2014 00:26
|
Re: Empeg player software, a new generation
|
BartDG
|
04/11/2014 09:15
|
Re: Empeg player software, a new generation
|
BartDG
|
15/12/2014 11:05
|
Re: Empeg player software, a new generation
|
BartDG
|
06/02/2015 19:29
|
Re: Empeg player software, a new generation
|
JBjorgen
|
17/12/2014 11:32
|
Re: Empeg player software, a new generation
|
Daria
|
17/12/2014 18:13
|
Re: Empeg player software, a new generation
|
Boelle
|
16/02/2015 11:18
|
Re: Empeg player software, a new generation
|
Boelle
|
01/03/2015 15:13
|
Re: Empeg player software, a new generation
|
jmwking
|
01/03/2015 19:06
|
Re: Empeg player software, a new generation
|
Boelle
|
04/03/2015 16:08
|
Re: Empeg player software, a new generation
|
Shonky
|
05/03/2015 00:30
|
Re: Empeg player software, a new generation
|
Daria
|
05/03/2015 20:24
|
Re: Empeg player software, a new generation
|
jmwking
|
05/03/2015 23:32
|
Re: Empeg player software, a new generation
|
mlord
|
06/03/2015 01:34
|
Re: Empeg player software, a new generation
|
BartDG
|
21/04/2016 15:00
|
Re: Empeg player software, a new generation
|
LittleBlueThing
|
22/04/2016 11:37
|
Re: Empeg player software, a new generation
|
canuckInOR
|
22/04/2016 17:19
|
Re: Empeg player software, a new generation
|
andy
|
22/04/2016 17:30
|
Re: Empeg player software, a new generation
|
LittleBlueThing
|
25/04/2016 13:54
|
|
|
|