|  | 
|  | 1 | +# SimpleUDP | 
|  | 2 | + | 
|  | 3 | +## SimpleUDP Packet Format (Receive type) | 
|  | 4 | +* All ascii based, two characters not allowed in names and ids: newline (\n) and tabulator (\t). | 
|  | 5 | + | 
|  | 6 | +### General structure (lines are separated by newlines) | 
|  | 7 | +Header (always SimpleUDP_info or SimpleUDP_info_ack or SimpleUDP_info_fail) | 
|  | 8 | +DeviceUniqueID (often Mac address of peer) | 
|  | 9 | +Name of device (english name of device, user may rename it within the app) | 
|  | 10 | +Version string (no special formatting) | 
|  | 11 | +List of actions (one action per line, action consists of multiple tokens) | 
|  | 12 | + | 
|  | 13 | +If you send SimpleUDP_detect, you will receive a full SimpleUDP_info with all known actions. If | 
|  | 14 | +you send a SimpleUDP_cmd, the peer will acknowledge with a SimpleUDP_info_ack where only the affected | 
|  | 15 | +actions are listed. | 
|  | 16 | + | 
|  | 17 | +### Structure of an action | 
|  | 18 | +     TYPE \t actionID string \t action name \t optional value | 
|  | 19 | + | 
|  | 20 | +* **TYPE** is one of (STATELESS,TOGGLE,RANGE,NOTEXIST). | 
|  | 21 | +* The **actionID** may be any string but have to be unique among all actions. | 
|  | 22 | +* The **action name** can be any string as long as it does not contain \n and \t. | 
|  | 23 | +* The value is only necessary if the type is TOGGLE or RANGE. If the Header is equal to SimpleUDP_info_fail | 
|  | 24 | +the TYPE may be NOTEXIST if you requested a command on a non existing action. | 
|  | 25 | + | 
|  | 26 | +Example packet: | 
|  | 27 | +     SimpleUDP_info\n | 
|  | 28 | +     11:22:33:44:55:66\n | 
|  | 29 | +     device_name\n | 
|  | 30 | +     1.0-2015.05.10\n | 
|  | 31 | +     STATELESS\tACTION1\tAction Name | 
|  | 32 | +     TOGGLE\tACTION2\tAction Name\t1 | 
|  | 33 | + | 
|  | 34 | +## SimpleUDP Packet Format (command type) | 
|  | 35 | +* All ascii based, two characters not allowed in names and ids: newline (\n) and tabulator (\t). | 
|  | 36 | + | 
|  | 37 | +### General structure (lines are separated by newlines) | 
|  | 38 | +    Header (always SimpleUDP_cmd) | 
|  | 39 | +    UniqueID (we use the android device unique id) | 
|  | 40 | +    CMD_TYPE \t actionID \t VALUE \t RANDOM_REQUEST_NO | 
|  | 41 | + | 
|  | 42 | +* **CMD_TYPE** is one of (SET,TOGGLE,RENAME), the actionID has been received before and is known. | 
|  | 43 | +* **VALUE**: if CMD_TYPE is SET,RENAME a value is necessary else just set it to 0. | 
|  | 44 | +* **RANDOM_REQUEST_NO**: A random request number. This is for duplicate detection. The receiver has | 
|  | 45 | +to check the current commands request number against the last ~3 requests and ignore (but still | 
|  | 46 | +ack) the received but already executed command. | 
|  | 47 | + | 
|  | 48 | +Example packet: | 
|  | 49 | +     SimpleUDP_cmd\n | 
|  | 50 | +     NFKAJELAFBAGAHD\n | 
|  | 51 | +     SET\tACTION2\t1 | 
0 commit comments