summaryrefslogtreecommitdiffstats
path: root/sd/README_REMOTE
diff options
context:
space:
mode:
Diffstat (limited to 'sd/README_REMOTE')
-rw-r--r--sd/README_REMOTE107
1 files changed, 107 insertions, 0 deletions
diff --git a/sd/README_REMOTE b/sd/README_REMOTE
new file mode 100644
index 000000000..cc53c4d8a
--- /dev/null
+++ b/sd/README_REMOTE
@@ -0,0 +1,107 @@
+LibreOffice Impress Remote Protocol Specification
+
+Communication is over a UTF-8 encoded character stream.
+(Using RTL_TEXTENCODING_UTF8 in the LibreOffice portion.)
+
+TCP
+---
+
+More TCP-specific details on setup and initial handshake to be
+written, but the actual message protocol is the same as for Bluetooth.
+
+
+Bluetooth
+---------
+
+Bluetooth communication is over RFCOMM.
+
+For discovery use the "standard UUID for the Serial Port Profile"
+I.e. the 16-bit SerialPort UUID 0x1101,
+or if necessary inserted into the Bluetooth BASE_UUID:
+00001101-0000-1000-8000-00805F9B34FB
+See https://www.bluetooth.org/Technical/AssignedNumbers/service_discovery.htm
+
+Message Format
+--------------
+
+A message consists of one or more lines. The first line is the message description,
+further lines can add any necessary data. An empty line concludes the message.
+
+I.e. "MESSAGE\n\n" or "MESSAGE\nDATA\nDATA2...\n\n"
+
+You must keep reading a message until an empty line (i.e. double
+new-line) is reached to allow for future protocol extension.
+
+Initialisation
+-------------
+
+Once connected the server sends "LO_SERVER_SERVER_PAIRED".
+(I.e. "LO_SERVER_SERVER_PAIRED\n\n" is sent over the stream.)
+
+Subsequently the server will send either slideshow_started if a slideshow is running,
+or slideshow_finished if no slideshow is running. (See below for details of.)
+
+The current server implementation then proceeds to send all slide notes and previews
+to the client. (This should be changed to prevent memory issues, and a preview
+request mechanism implemented.)
+
+
+Commands (Client to Server)
+---------------------------
+
+The client should not assume that the state of the server has changed when a
+command has been sent. All changes will be signalled back to the client.
+(This is to allow for cases such as multiple clients requesting different changes, etc.)
+
+Any lines in [square brackets] are optional, and should be omitted if not needed.
+
+* transition_next
+* transition_previous
+
+* goto_slide
+ slide_number
+
+* presentation_start
+* presentation_stop
+
+* presentation_resume // Resumes after a presentation_blank_screen.
+* presentation_blank_screen
+ [Colour String] // Colour the screen will show (default: black). Not
+ // implemented, and format hasn't yet been defined.
+
+# As of gsoc2013, these commands are extended to the existing protocol, since server-end are tolerant with unknown commands, these extensions doesn't break backward compatibility
+* pointer_started // create a red dot on screen at initial position (x,y)
+ initial_x // This should be called when user first touch the screen
+ initial_y // note that x, y are in percentage (from 0.0 to 1.0) with respect to the slideshow size
+* pointer_dismissed // This dismiss the pointer red dot on screen, should be called when user stop touching screen
+* pointer_coordination // This update pointer's position to current (x,y)
+ current_x // note that x, y are in percentage (from 0.0 to 1.0) with respect to the slideshow size
+ current_y // unless screenupdater's performance is significantly improved, we should consider limit the update frequency on the
+ // remote-end
+
+
+
+Status/Data (Server to Client)
+------------------------------
+
+* slideshow_finished // (Also transmitted if no slideshow running when started.)
+
+* slideshow_started // (Also transmitted if a slideshow is running on startup.)
+ numberOfSlides
+ currentSlideNumber
+
+* slide_notes
+ slideNumber
+ [Notes] // The notes are an html document, and may also include \n newlines,
+ // i.e. the client should keep reading until a blank line is reached.
+
+* slide_updated // Slide on server has changed
+ currentSlideNumber
+
+* slide_preview // Supplies a preview image for a slide.
+ slideNumber
+ image // A Base 64 Encoded png image.
+
+# As of gsoc2013, these commands are extended to the existing protocol, since remote-end also ignore all unknown commands (which is the case of gsoc2012 android implementation), backward compatibility is kept.
+* slideshow_info // once paired, the server-end will send back the title of the current presentation
+ Title