Buttplug sex toy control library
1syntax = "proto3";
2package handyplug;
3
4/*
5[
6 {
7 "Ok": {
8 "Id": 1
9 }
10 }
11]
12*/
13
14message Ok {
15 uint32 Id = 1;
16}
17
18/*
19[
20 {
21 "Error": {
22 "Id": 1,
23 "ErrorMessage": "Server received invalid JSON.",
24 "ErrorCode": 3
25 }
26 }
27]
28*/
29
30message Error {
31 uint32 Id = 1;
32 string ErrorMessage = 2;
33 int32 ErrorCode = 3;
34}
35
36/*
37[
38 {
39 "Ping": {
40 "Id": 1
41 }
42 }
43]
44*/
45
46message Ping {
47 uint32 Id = 1;
48}
49
50/*
51[
52 {
53 "RequestServerInfo": {
54 "Id": 1,
55 "ClientName": "Test Client",
56 "MessageVersion": 1
57 }
58 }
59]
60*/
61
62message RequestServerInfo {
63 uint32 Id = 1;
64 string ClientName = 2;
65 uint32 MessageVersion = 3;
66}
67
68/*
69[
70 {
71 "ServerInfo": {
72 "Id": 1,
73 "ServerName": "Test Server",
74 "MessageVersion": 1,
75 "MaxPingTime": 100
76 }
77 }
78]
79*/
80
81message ServerInfo {
82 uint32 Id = 1;
83 string ServerName = 2;
84 uint32 MessageVersion = 3;
85 uint32 MaxPingTime = 4;
86}
87
88/*
89[
90 {
91 "LinearCmd": {
92 "Id": 1,
93 "DeviceIndex": 0,
94 "Vectors": [
95 {
96 "Index": 0,
97 "Duration": 500,
98 "Position": 0.3
99 },
100 {
101 "Index": 1,
102 "Duration": 1000,
103 "Position": 0.8
104 }
105 ]
106 }
107 }
108]
109*/
110
111message LinearCmd {
112 uint32 Id = 1;
113 uint32 DeviceIndex = 2;
114 message Vector {
115 uint32 Index = 1;
116 uint32 Duration = 2;
117 double Position = 3;
118 }
119 repeated Vector Vectors = 3;
120}
121
122message Message {
123 oneof Message {
124 /* Status Messages */
125 Ok Ok = 100;
126 Error Error = 101;
127 Ping Ping = 102;
128 /* Handshake Messages */
129 RequestServerInfo RequestServerInfo = 200;
130 ServerInfo ServerInfo = 201;
131 /* Generic Device Messages */
132 LinearCmd LinearCmd = 403;
133 }
134}
135
136message Payload {
137 repeated Message Messages = 1;
138}