Fix handling of html inside text messages in server. Add some protocol documentation.
This commit is contained in:
parent
5f63670043
commit
b8414dc391
|
@ -2,7 +2,7 @@ The FreeRadioNetwork protocol
|
||||||
=============================
|
=============================
|
||||||
|
|
||||||
This document describes the results of reverse-engeneering the official
|
This document describes the results of reverse-engeneering the official
|
||||||
set of [FreeRadioNetwork](http//freeradionetwork.eu) programs through
|
set of [FreeRadioNetwork](http://freeradionetwork.eu) programs through
|
||||||
network traffic sniffing and software decompilation.
|
network traffic sniffing and software decompilation.
|
||||||
|
|
||||||
|
|
||||||
|
@ -113,6 +113,56 @@ Padding to five digits we would get `03046`, so D=0, E=3, F=0, G=4, H=6
|
||||||
so the auth code wold be `40063`.
|
so the auth code wold be `40063`.
|
||||||
|
|
||||||
|
|
||||||
|
### Keepalive ###
|
||||||
|
|
||||||
|
After the communication between client and server has been established,
|
||||||
|
server starts sending keepalive messages to the client at a rate of two
|
||||||
|
messages per second.
|
||||||
|
The keepalive message, as any other server to client message must be
|
||||||
|
acknowledged by the client.
|
||||||
|
|
||||||
|
Server to client:
|
||||||
|
|
||||||
|
* chr(0): keepalive message identifier
|
||||||
|
|
||||||
|
Client to server:
|
||||||
|
|
||||||
|
* P\r\n
|
||||||
|
|
||||||
|
|
||||||
|
### Sending audio signal ###
|
||||||
|
|
||||||
|
Sending audio signal from client to server is a two-step procedure:
|
||||||
|
client must request permission to trasmit to the server and then, if
|
||||||
|
server acknowledges, client can start transmitting audio data.
|
||||||
|
|
||||||
|
Client to server:
|
||||||
|
|
||||||
|
* TX0\r\n
|
||||||
|
|
||||||
|
Server to client:
|
||||||
|
|
||||||
|
* chr(1)+chr(hh)+chr(ll): transmission acknowledged (hh*256+ll is the
|
||||||
|
client index in client list)
|
||||||
|
|
||||||
|
Client to server:
|
||||||
|
|
||||||
|
* TX1\r\n followed by 325 bytes: data following the first line
|
||||||
|
contains 10 GSM 6.10 frames (representing 20mS of audio signal each one)
|
||||||
|
encoded with WAV#49 variant.
|
||||||
|
|
||||||
|
Client to server:
|
||||||
|
|
||||||
|
* RX0\r\n: clients stops transmitting audio.
|
||||||
|
|
||||||
|
|
||||||
|
### Receiving audio signal ###
|
||||||
|
|
||||||
|
Server to client:
|
||||||
|
|
||||||
|
* chr(2)+chr(hh)+chr(ll) followed by 325 bytes: data following the first
|
||||||
|
3 bytes contains 10 GSM 6.10 frames (representing 20mS of audio signal
|
||||||
|
each one) encoded with WAV#49 variant. hh*256+ll represents the index in
|
||||||
|
the client list of the client sending audio.
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -32,7 +32,11 @@ class SimpleXMLParser(HTMLParser):
|
||||||
self.next_field = tag
|
self.next_field = tag
|
||||||
self.next_data = ''
|
self.next_data = ''
|
||||||
else:
|
else:
|
||||||
self.next_data += "<%s>" % tag
|
if attrs:
|
||||||
|
a = ' '+' '.join(['%s="%s"' % (k,v) for k,v in attrs])
|
||||||
|
else:
|
||||||
|
a = ''
|
||||||
|
self.next_data += "<%s%s>" % (tag,a)
|
||||||
|
|
||||||
def handle_data(self, data):
|
def handle_data(self, data):
|
||||||
if self.next_field is not None:
|
if self.next_field is not None:
|
||||||
|
|
Loading…
Reference in New Issue