[c5c522c] | 1 | #define LCDPORT 13666 |
---|
| 2 | |
---|
| 3 | /********************************************************************** |
---|
| 4 | LCDproc socket interface grammar: |
---|
| 5 | |
---|
| 6 | RawText Print whatever you send, at whatever the current position is. |
---|
| 7 | |
---|
| 8 | or... |
---|
| 9 | |
---|
| 10 | 0xFE Command prefix, followed by... |
---|
| 11 | |
---|
| 12 | 0x00 EOT. End of transmission, where applicicable. |
---|
| 13 | 0x01 Ping. Will respond with a "pong". |
---|
| 14 | 'k',x Send "keypad" input, character x (A-Z) |
---|
| 15 | |
---|
| 16 | ?,x,...,EOT Send new mode sequence (x,...)... |
---|
| 17 | ?,x Switch to new mode x immediately |
---|
| 18 | ?,xxxx Pause in current mode for x frames/seconds (0=infinite) |
---|
| 19 | ? Play -- continue mode cycle. |
---|
| 20 | ?,x,y,...,EOT |
---|
| 21 | Send raw text to be displayed. x is style (raw, wrapped), |
---|
| 22 | and y is num frames between lines displayed. |
---|
| 23 | |
---|
| 24 | ?,... Send MtxOrb-like control commands (bargraphs, etc) |
---|
| 25 | |
---|
| 26 | ... more to come later ... |
---|
| 27 | **********************************************************************/ |
---|
| 28 | |
---|
| 29 | /***************************************************************** |
---|
| 30 | LCDproc command line interface: (while running) |
---|
| 31 | |
---|
| 32 | -command |
---|
| 33 | Tells LCDproc to interpret stdin as raw commands to send through |
---|
| 34 | the socket. Input must be formatted as above, in socket interface. |
---|
| 35 | -function f |
---|
| 36 | Runs LCDproc external function f, where f is one of the predefined |
---|
| 37 | functions which can be assigned to keypad keys. (like NEXTMODE, etc) |
---|
| 38 | -key x |
---|
| 39 | Simulates keypad press of key 'x', where 'x' is (A-Z). |
---|
| 40 | -print [time] |
---|
| 41 | Prints stdin on LCD one line at a time, with no line-wrapping (raw), |
---|
| 42 | with [time] frames between updates (lines). |
---|
| 43 | -wrap [time] |
---|
| 44 | Prints stdin as with "-print", but with line wrapping when possible. |
---|
| 45 | -contrast xxx |
---|
| 46 | Sets contrast to xxx (decimal) |
---|
| 47 | -backlight [on/off] |
---|
| 48 | Turns backlight [on/off/auto], or toggles it. |
---|
| 49 | If [off], stays off. |
---|
| 50 | If [on], stays on. |
---|
| 51 | If [auto], LCDproc controls backlight based on load, etc... |
---|
| 52 | -exit |
---|
| 53 | -quit |
---|
| 54 | Duh... :) |
---|
| 55 | |
---|
| 56 | ******************************************************************/ |
---|
| 57 | |
---|
| 58 | /***************************************************************** |
---|
| 59 | LCDproc stuff supported in config file (loose approximation): |
---|
| 60 | |
---|
| 61 | Grammar is tcl-style. I.e., "command arg1 arg2 ...". |
---|
| 62 | Spaces are used as argument separators, *until* it thinks it has the final |
---|
| 63 | argument. So, "function thing shell myprogram arg1 arg2 arg3" would be |
---|
| 64 | split into "function", "thing", "shell", and "myprogram arg1 arg2 arg3". |
---|
| 65 | |
---|
| 66 | User-definable functions (use built-in's to create new ones?): |
---|
| 67 | Function mp3NextSong Shell /usr/local/bin/mp3player -next |
---|
| 68 | Function MySequence Sequence cpu mem xload |
---|
| 69 | Function OtherSequence Sequence time cd xload |
---|
| 70 | |
---|
| 71 | Keypad keys can be bound to any _function_: |
---|
| 72 | Key A mp3NextSong |
---|
| 73 | Key B HaltSystem |
---|
| 74 | Key C Menu |
---|
| 75 | Key D Next/+ |
---|
| 76 | Key E OtherSequence |
---|
| 77 | |
---|
| 78 | |
---|
| 79 | ******************************************************************/ |
---|
| 80 | |
---|
| 81 | typedef struct sockaddr_in sockaddr_in; |
---|
| 82 | |
---|
| 83 | int init_sockaddr (sockaddr_in *name, |
---|
| 84 | const char *hostname, |
---|
| 85 | unsigned short int port); |
---|
| 86 | |
---|
| 87 | // Creates a socket in internet space |
---|
| 88 | int CreateInetSocket(unsigned short int port); |
---|
| 89 | |
---|
| 90 | // Checks the LCDproc port for a response... |
---|
| 91 | int PingLCDport(); |
---|
| 92 | |
---|
| 93 | int StartSocketServer(); |
---|
| 94 | |
---|
| 95 | int PollSockets(); |
---|
| 96 | |
---|
| 97 | int read_from_client (int filedes); |
---|
| 98 | |
---|
| 99 | int CloseAllConnections(); |
---|