aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjames <>2008-03-11 17:47:24 +0000
committerjames <>2008-03-11 17:47:24 +0000
commit7a28b8904a1d92528c92eb5c4fe7ce8f217b3393 (patch)
tree55fe2e6d6ded7bc516bf04b76a8ac4588b6beec1
parent2970fb6cc7f7645c40e01fea50408aeea1de532b (diff)
downloadsympathy-7a28b8904a1d92528c92eb5c4fe7ce8f217b3393.tar.gz
sympathy-7a28b8904a1d92528c92eb5c4fe7ce8f217b3393.tar.bz2
sympathy-7a28b8904a1d92528c92eb5c4fe7ce8f217b3393.zip
*** empty log message ***
-rw-r--r--apps/clients.c13
-rw-r--r--apps/clients.h7
-rw-r--r--apps/mainloop.c5
-rw-r--r--sympathy.182
4 files changed, 78 insertions, 29 deletions
diff --git a/apps/clients.c b/apps/clients.c
index d040431..6175492 100644
--- a/apps/clients.c
+++ b/apps/clients.c
@@ -10,6 +10,9 @@ static char rcsid[] = "$Id$";
/*
* $Log$
+ * Revision 1.23 2008/03/11 17:47:24 james
+ * *** empty log message ***
+ *
* Revision 1.22 2008/03/07 14:16:44 james
* *** empty log message ***
*
@@ -177,6 +180,7 @@ clients_new_client (Clients * cs, Socket * s, Context * ctx)
fprintf (stderr, "Client at %p created\n", c);
#endif
+ log_f(ctx->l,"<client %p connected - now %d clients>",c,cs->n);
if (ipc_msg_send_debug (s, "new_client"))
c->dead++;
@@ -185,7 +189,7 @@ clients_new_client (Clients * cs, Socket * s, Context * ctx)
}
void
-clients_reap (Clients * cs)
+clients_reap (Clients * cs,Context *ctx)
{
Client **p, *c;
@@ -197,6 +201,7 @@ clients_reap (Clients * cs)
*p = c->next;
client_free (c);
cs->n--;
+ log_f(ctx->l,"<client %p disconnected - now %d clients>",c,cs->n);
} else {
p = &(c->next);
}
@@ -247,12 +252,12 @@ clients_post_select (Clients * cs, Context * ctx, fd_set * rfds,
}
if (deaded)
- clients_reap (cs);
+ clients_reap (cs,ctx);
}
void
-clients_shutdown (Clients * cs)
+clients_shutdown (Clients * cs,Context *ctx)
{
Client *c;
@@ -261,7 +266,7 @@ clients_shutdown (Clients * cs)
}
- clients_reap (cs);
+ clients_reap (cs,ctx);
}
diff --git a/apps/clients.h b/apps/clients.h
index b2e669a..5c8b419 100644
--- a/apps/clients.h
+++ b/apps/clients.h
@@ -12,6 +12,9 @@
/*
* $Log$
+ * Revision 1.10 2008/03/11 17:47:24 james
+ * *** empty log message ***
+ *
* Revision 1.9 2008/03/10 11:49:32 james
* *** empty log message ***
*
@@ -60,12 +63,12 @@ typedef struct {
/* clients.c */
extern void client_free (Client * c);
extern Client *clients_new_client (Clients * cs, Socket * s, Context * ctx);
-extern void clients_reap (Clients * cs);
+extern void clients_reap (Clients * cs,Context *ctx);
extern Clients *clients_new (void);
extern void clients_pre_select (Clients * cs, fd_set * rfds, fd_set * wfds);
extern void clients_post_select (Clients * cs, Context * ctx, fd_set * rfds,
fd_set * wfds);
-extern void clients_shutdown (Clients * cs);
+extern void clients_shutdown (Clients * cs,Context *ctx);
extern int send_output (Clients * cs, void *buf, int len);
extern int send_status (Clients * cs, char *msg);
diff --git a/apps/mainloop.c b/apps/mainloop.c
index 74e456e..4cc65a0 100644
--- a/apps/mainloop.c
+++ b/apps/mainloop.c
@@ -11,6 +11,9 @@ static char rcsid[] =
/*
* $Log$
+ * Revision 1.30 2008/03/11 17:47:24 james
+ * *** empty log message ***
+ *
* Revision 1.29 2008/03/10 11:49:32 james
* *** empty log message ***
*
@@ -557,5 +560,5 @@ mainloop (Context * c, ANSI * ansi, Socket * server_socket,
}
if (clients)
- clients_shutdown (clients);
+ clients_shutdown (clients,c);
}
diff --git a/sympathy.1 b/sympathy.1
index 5f795cc..2dacc6d 100644
--- a/sympathy.1
+++ b/sympathy.1
@@ -424,37 +424,75 @@ Feb 27 23:24:42.509440
.I Sympathy
logs a line to the file whenever the cursor leaves the line. Additionally
.I sympathy
-logs certain other events to the file. When the baud\-rate is changed
-.I sympathy
-writes <baud changed to 19200>. Whenever a modem control line changes state
+.IP \(bu 3
+logs certain other events to the file:
+.IP \(bu 3
+serial port parameter changes: baud\-rate and flow control.
+.IP \(bu 3
+serial port control line state changes.
+.IP \(bu 3
+serial port line discipline errors.
+.IP \(bu 3
+serial port errors.
+.IP \(bu 3
+suggested baud rates and bit frequency analyses.
+.IP \(bu 3
+transmission of breaks.
+.IP \(bu 3
+sending of the hangup signal (dropping the DTR line).
+.IP \(bu 3
+unknown or unhandled messages sent on the socket.
+.IP \(bu 3
+connexion and disconexion of clients.
+.IP \(bu 3
+recpetion of SIGHUP.
+.IP \(bu 3
+invalid UTF-8 sequences.
+.IP \(bu 3
+terminal size changes
+.IP \(bu 3
+unhandled terminal command sequences
+.PP
+The log file is rotated when it gets too large if the \fI\-R\fP option
+is specified, and the log file is re-opened on recipt of a \fBSIGHUP\fP
+which together with the \fB\-P\fP allows the use of of a program such
+as logrotate(8)
+.SH AUTOMATIC BAUD RATE ALGORYTM
+If
.I sympathy
-appends <Modem lines changed: \fI+/\-line\fP ...> to the log. Where \fI+\fP
-indicates that \fIline\fP was asserted and \fI-\fP indicates that it was de-asserted.
-.I Sympathy
-writes a message of the form <size now nnnxnnn> whenever the screen size is
-changed, either by escape sequences, or via a user command.
-When the terminal device reports receive errors
-.I sympathy
-adds additional information to the log. It reports the character sequence reporting the error
+detects a framing error on the serial port it displays the count of
+errors on the status line, and logs the error.
.IP
<tty reports error: \\377 \\000 \\000>
.PP
-the observed frequencies of the different bit periods
-.IP
+The count is reset to zero after ten seconds
+have elapsed during which no errors have occured.
+.I Sympathy
+looks at bit patterns of the characters recevied, and
+measures the length (in units of the reciving UART's
+bit period) of any runs of '1's delimited by '0's and vice\-versa. It
+then calculates the statistics on the length of these runs, and logs these.
+.IP
<tty_bit_analyse: 0000000001 [0,0,0,0,0,0,110,0,0,80]>
.PP
-and the conclusions of the baud\-rate guessing algorithm
+For a typical
+stream of ASCII data, the most common run length will be the correct bit
+period.
+.I Sympathy
+uses this togetehr with the current bit period to calculate the most probable
+correct baud\-rate, which is displayed in the status line, and logged.
+If the correct baud\irate is higher than the current baud\-rate then the most common bit frequencey will be '0' or '1' and the correct baud\-rate cannot be
+determined. In this case sympathy will display and log the message 'try higher'.
.IP
<tty_analyse: 80 errors, current rate 115200b, suggest 19200b>
.PP
-Invalid UTF\-8 sequences are also reported
-.IP
-<invalid utf\-8 sequence: \\301>
-.PP
-The log file is rotated when it gets too large if the \fI\-R\fP option
-is specified, and the log file is re-opened on recipt of a \fBSIGHUP\fP
-which together with the \fB\-P\fP allows the use of of a program such
-as logrotate(8)
+The algorythm only works well if the data stream is normal. If the data stream
+is generated by the reception, at the wrong baud\-rate, of characters emited
+by
+.I sympathy
+then the algoryhtm will be biased towards suggesting that the baud\-rate
+is too low. Noise on the line will also result in sympathy concluding that
+the baud\-rate is too low.
.SH SIGNALS
.I Sympathy
reacts to a set of signals. You can use the \fB-P\fP option