display information about clients
parent
3af9f105d6
commit
73416e4bf9
|
@ -24,7 +24,7 @@ UDPSock.bind((outgoing_if, local_port))
|
|||
|
||||
segments = open('segments','r')
|
||||
|
||||
alpha = chr(155)
|
||||
alpha = chr(255)
|
||||
|
||||
z_buffer = chr(1) + "\n"
|
||||
|
||||
|
@ -38,6 +38,9 @@ segchannels = 4
|
|||
# Send messages
|
||||
sleeptime = 0.03
|
||||
t = 0
|
||||
|
||||
#timer will hold the elapsed time in seconds
|
||||
timer = 0
|
||||
frequency = 2*pi/200
|
||||
max = 0.0
|
||||
|
||||
|
@ -55,6 +58,7 @@ while (1):
|
|||
data += chr(254)
|
||||
data += "\n"
|
||||
t+=1
|
||||
timer = t*sleeptime
|
||||
#print( data )
|
||||
#data += segments.read()
|
||||
if not data:
|
||||
|
|
|
@ -159,6 +159,7 @@ void Server::mix()
|
|||
{
|
||||
int size = 0;
|
||||
int counter = 0;
|
||||
int pixel = 0;
|
||||
|
||||
while(1)
|
||||
{
|
||||
|
@ -178,7 +179,9 @@ void Server::mix()
|
|||
{
|
||||
for(int a = 0; a < CHANNELS; a++)
|
||||
{
|
||||
// do something interesting here
|
||||
if( a == CHANNELS-1 )
|
||||
frame.windows[i][j][a] = 255;
|
||||
else
|
||||
frame.windows[i][j][a] = 0;
|
||||
}
|
||||
}
|
||||
|
@ -190,7 +193,11 @@ void Server::mix()
|
|||
{
|
||||
for(int a = 0; a < SEGCHANNELS; a++)
|
||||
{
|
||||
if(a == SEGCHANNELS-1 )
|
||||
frame.segments[w][n][a] = 255;
|
||||
else
|
||||
frame.segments[w][n][a] = 0;
|
||||
|
||||
}
|
||||
}
|
||||
} // zero out frame
|
||||
|
@ -198,7 +205,6 @@ void Server::mix()
|
|||
for(int x = 0; x < size; x++)
|
||||
{
|
||||
temp_frame = buffers[x]->get();
|
||||
|
||||
for(int i = 0; i < HEIGHT; i++)
|
||||
{
|
||||
for(int j = 0; j < WIDTH; j++)
|
||||
|
@ -206,7 +212,11 @@ void Server::mix()
|
|||
for(int a = 0; a < CHANNELS-1; a++)
|
||||
{
|
||||
// do something interesting here
|
||||
frame.windows[i][j][a] = frame.windows[i][j][a] + (float)temp_frame.windows[i][j][CHANNELS-1]/254*temp_frame.windows[i][j][a];
|
||||
pixel = frame.windows[i][j][a] + (float)temp_frame.windows[i][j][CHANNELS-1]/255*temp_frame.windows[i][j][a];
|
||||
if( pixel >= 255 )
|
||||
frame.windows[i][j][a] = 255;
|
||||
else
|
||||
frame.windows[i][j][a] = pixel;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -217,39 +227,28 @@ void Server::mix()
|
|||
{
|
||||
for(int a = 0; a < SEGCHANNELS-1; a++)
|
||||
{
|
||||
frame.segments[w][n][a] = frame.segments[w][n][a] + (float)temp_frame.segments[w][n][SEGCHANNELS-1]/254*temp_frame.segments[w][n][a];
|
||||
pixel = frame.segments[w][n][a] + (float)temp_frame.segments[w][n][SEGCHANNELS-1]/255*temp_frame.segments[w][n][a];
|
||||
if( pixel >= 255 )
|
||||
frame.segments[w][n][a] = 255;
|
||||
else
|
||||
frame.segments[w][n][a] = pixel;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// temp frame has validity in the loop only so it can be safely used without locking the whole object
|
||||
temp_frame = frame;
|
||||
} // release lock and send off to hardware
|
||||
output(temp_frame);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* if( counter % 100 == 0 && x == size-1 )
|
||||
// output to hardware using OLA
|
||||
void Server::output(frame_t _frame)
|
||||
{
|
||||
for(int i = 0; i < HEIGHT; i++)
|
||||
{
|
||||
for(int j = 0; j < WIDTH; j++)
|
||||
{
|
||||
cout << brtoc(frame.windows[i][j][0]);
|
||||
}
|
||||
//cout << endl;
|
||||
}
|
||||
//cout << endl;
|
||||
|
||||
/*for(int w = 0; w < SEGWIDTH; w++)
|
||||
{
|
||||
for(int n = 0; n < SEGNUM; n++)
|
||||
{
|
||||
cout << frame.segments[w][n][0];
|
||||
}
|
||||
cout << endl;
|
||||
}
|
||||
cout << endl << endl;
|
||||
} //*/
|
||||
}
|
||||
}
|
||||
// pretend we're doing something
|
||||
usleep( 25000 );
|
||||
}
|
||||
}
|
||||
|
||||
void Server::console()
|
||||
{
|
||||
|
@ -272,7 +271,7 @@ void Server::console()
|
|||
{
|
||||
// we'll be accessing some data to provide statistics, lock the Server
|
||||
Glib::Mutex::Lock lock(mutex_);
|
||||
mvprintw(0,0,"Clients %d | F2 Frame | F3 Values | F4 Stats | F5 Clients | input: %d ", buffers.size(),console_input );
|
||||
mvprintw(0,0,"Clients %d | F2 Frame | F3 Values | F4 Clients | F5 Stats | input: %d ", buffers.size(),console_input );
|
||||
switch(mode)
|
||||
{
|
||||
case FRAME:
|
||||
|
@ -280,6 +279,9 @@ void Server::console()
|
|||
break;
|
||||
case FRAME_VALUES:
|
||||
console_printframe_values(frame);
|
||||
break;
|
||||
case CLIENTS:
|
||||
console_printclients();
|
||||
break;
|
||||
default:
|
||||
console_printframe(frame);
|
||||
|
@ -312,6 +314,11 @@ void Server::input()
|
|||
mode = FRAME_VALUES;
|
||||
clear();
|
||||
break;
|
||||
case KEY_F(4):
|
||||
mode = CLIENTS;
|
||||
clear();
|
||||
break;
|
||||
case '0':
|
||||
default:
|
||||
console_input = c;
|
||||
}
|
||||
|
@ -333,11 +340,12 @@ void Server::console_printframe(frame_t _frame)
|
|||
}
|
||||
}
|
||||
|
||||
//TODO print a nicer 7 segment display with colours and brightness
|
||||
for(int w = 0; w < SEGWIDTH; w++)
|
||||
{
|
||||
for(int n = 0; n < SEGNUM; n++)
|
||||
{
|
||||
// the segments of a display are numbered from bottom to top
|
||||
// in a clockwise manner (6'o clock = 0)
|
||||
switch(n)
|
||||
{
|
||||
case 0:
|
||||
|
@ -418,6 +426,13 @@ void Server::console_printframe_values(frame_t _frame)
|
|||
}
|
||||
}
|
||||
|
||||
void Server::console_printclients()
|
||||
{
|
||||
for(int i = 0; i < buffers.size(); i++)
|
||||
mvprintw(i+2,0,"(%3d) %s\n", i,buffers[i]->get_id().c_str() );
|
||||
}
|
||||
|
||||
|
||||
void Server::console_printstats()
|
||||
{
|
||||
}
|
||||
|
|
|
@ -17,6 +17,12 @@
|
|||
#include "Buffer.h"
|
||||
#include "defines.h"
|
||||
|
||||
enum modes
|
||||
{
|
||||
FRAME,
|
||||
FRAME_VALUES,
|
||||
CLIENTS
|
||||
};
|
||||
|
||||
using boost::asio::ip::udp;
|
||||
using namespace std;
|
||||
|
@ -30,6 +36,8 @@ public:
|
|||
void launch_threads();
|
||||
|
||||
private:
|
||||
Glib::Mutex mutex_;
|
||||
|
||||
void console();
|
||||
void input();
|
||||
void test();
|
||||
|
@ -40,14 +48,15 @@ private:
|
|||
void console_printframe(frame_t _frame);
|
||||
void console_printframe_values(frame_t _frame);
|
||||
void console_printstats();
|
||||
void console_printclients();
|
||||
|
||||
void listen();
|
||||
void mix();
|
||||
void output(frame_t);
|
||||
int get_size();
|
||||
void expire();
|
||||
|
||||
|
||||
Glib::Mutex mutex_;
|
||||
|
||||
bool consoleinit;
|
||||
int console_input;
|
||||
|
|
|
@ -26,8 +26,6 @@
|
|||
// not used for simplicity
|
||||
//#define SEGHEIGHT 1
|
||||
|
||||
|
||||
|
||||
struct frame_t
|
||||
{
|
||||
unsigned char z;
|
||||
|
@ -35,10 +33,4 @@ struct frame_t
|
|||
unsigned char segments[SEGWIDTH][SEGNUM][SEGCHANNELS];
|
||||
};
|
||||
|
||||
enum modes
|
||||
{
|
||||
FRAME,
|
||||
FRAME_VALUES
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
|
@ -29,7 +29,7 @@ data = z_buffer + display.read()
|
|||
random.seed()
|
||||
|
||||
# Send messages
|
||||
sleeptime = 0.0001
|
||||
sleeptime = 0.01
|
||||
frequency = 1/sleeptime
|
||||
i = random.randint(0,frequency-1)
|
||||
while (1):
|
||||
|
|
Loading…
Reference in New Issue