Advertisement
Guest User

Untitled

a guest
Aug 19th, 2019
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.74 KB | None | 0 0
  1. using CoCoSdevices;
  2. using cocosgateway;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.Linq;
  6. using System.Text;
  7. using System.Threading.Tasks;
  8.  
  9. namespace CoCoSStatus
  10. {
  11. public class Statusses
  12. {
  13. private Device _device;
  14.  
  15. public Statusses(Device device = null)
  16. {
  17. if (device != null)
  18. {
  19. _device = device;
  20. }
  21. }
  22. public int _status;
  23. public int _previousStatus = 0;
  24.  
  25. public const int STATUS_INITIALIZING = 0x1; //1
  26. public const int STATUS_RUNNING = 0x2; //2
  27. public const int STATUS_STOPPING = 0x4; //4
  28. public const int STATUS_RECONNECTING = 0x8; //8
  29. public const int STATUS_CONNECTING = 0x10; //16
  30. public const int STATUS_CONNECTED = 0x20; //32
  31. public const int STATUS_DISCONNECTING = 0x40; //64
  32. public const int STATUS_DISCONNECTED = 0x80; //128
  33. public const int STATUS_WARNING = 0x100; //256
  34. public const int STATUS_ERROR = 0x200; //512
  35. public const int STATUS_SIMULATE = 0x8000; //‭32768‬
  36.  
  37. private bool _stopping = false;
  38.  
  39. public void setStatus(int status)
  40. {
  41. int newStatus = _status | status;
  42. _status = newStatus;
  43. // _patchApiStatus();
  44. }
  45. public void resetStatus(int status)
  46. {
  47. int newStatus = _status & (0xFFFF ^ status);
  48. _status = newStatus;
  49.  
  50. // _patchApiStatus();
  51. }
  52. public int getStatus()
  53. {
  54. return _status;
  55. }
  56. public void setInit()
  57. {
  58. resetStatus(STATUS_RUNNING);
  59. setStatus(STATUS_INITIALIZING);
  60. _patchApiStatus();
  61. }
  62.  
  63. public void resetInit()
  64. {
  65. resetStatus(STATUS_INITIALIZING);
  66. _patchApiStatus();
  67. }
  68. public void setRunning()
  69. {
  70.  
  71. resetStatus(STATUS_INITIALIZING);
  72. setStatus(STATUS_RUNNING);
  73. _patchApiStatus();
  74. }
  75. public void resetRunning()
  76. {
  77. resetStatus(STATUS_RUNNING);
  78. _patchApiStatus();
  79. }
  80. public void setStopping()
  81. {
  82. resetStatus(STATUS_STOPPING);
  83. setStatus(STATUS_STOPPING);
  84. _patchApiStatus();
  85. }
  86. public void resetStopping()
  87. {
  88. resetStatus(STATUS_STOPPING);
  89. _patchApiStatus();
  90. }
  91. public void setStopped()
  92. {
  93. _patchApiStatus(STATUS_STOPPING);
  94. }
  95. public void setConnecting()
  96. {
  97. setStatus(STATUS_RUNNING);
  98. resetStatus(STATUS_RECONNECTING);
  99. resetStatus(STATUS_DISCONNECTED);
  100. resetStatus(STATUS_CONNECTED);
  101. resetStatus(STATUS_DISCONNECTING);
  102. setStatus(STATUS_CONNECTING);
  103. _patchApiStatus();
  104. if (_device != null)
  105. {
  106. _device.logConnectingToApi();
  107. }
  108. }
  109. public void resetConnecting()
  110. {
  111. resetStatus(STATUS_CONNECTING);
  112. _patchApiStatus();
  113. }
  114. public void setConnected()
  115. {
  116. resetStatus(STATUS_SIMULATE);
  117. setStatus(STATUS_RUNNING);
  118. setStatus(STATUS_CONNECTED);
  119. resetStatus(STATUS_CONNECTING);
  120. resetStatus(STATUS_DISCONNECTED);
  121. resetStatus(STATUS_RECONNECTING);
  122. resetStatus(STATUS_DISCONNECTING);
  123.  
  124. _patchApiStatus();
  125. if (_device != null)
  126. {
  127. _device.logConnectedToApi();
  128. }
  129. }
  130. public void resetConnected()
  131. {
  132. resetStatus(STATUS_CONNECTED);
  133. _patchApiStatus();
  134. }
  135. public void setReconnecting()
  136. {
  137. setStatus(STATUS_RECONNECTING);
  138. setStatus(STATUS_RUNNING);
  139. resetStatus(STATUS_CONNECTED);
  140. resetStatus(STATUS_CONNECTING);
  141. _patchApiStatus();
  142. if (_device != null)
  143. {
  144. _device.logReconnectingToApi();
  145. }
  146. }
  147. public void resetReconnecting()
  148. {
  149. resetStatus(STATUS_RECONNECTING);
  150. _patchApiStatus();
  151. }
  152. public void setDisconnecting()
  153. {
  154. resetStatus(STATUS_CONNECTED);
  155. setStatus(STATUS_DISCONNECTING);
  156. _patchApiStatus();
  157. }
  158. public void resetDisconnecting()
  159. {
  160. resetStatus(STATUS_DISCONNECTING);
  161. _patchApiStatus();
  162. }
  163. public void setDisconnected()
  164. {
  165. resetStatus(STATUS_CONNECTED);
  166. resetStatus(STATUS_DISCONNECTING);
  167. setStatus(STATUS_DISCONNECTED);
  168. _patchApiStatus();
  169. if (_device != null)
  170. {
  171. _device.logDisconnectedToApi();
  172. }
  173. }
  174. public void resetDisconnected()
  175. {
  176. resetStatus(STATUS_DISCONNECTING);
  177. _patchApiStatus();
  178. }
  179. public void setWarning()
  180. {
  181. setStatus(STATUS_WARNING);
  182. _patchApiStatus();
  183. }
  184. public void resetWwarning()
  185. {
  186. resetStatus(STATUS_WARNING);
  187. _patchApiStatus();
  188. }
  189. public void setError()
  190. {
  191. setStatus(STATUS_ERROR);
  192. _patchApiStatus();
  193. }
  194. public void resetError()
  195. {
  196. resetStatus(STATUS_ERROR);
  197. _patchApiStatus();
  198. }
  199. public void setSimulate()
  200. {
  201. resetStatus(STATUS_DISCONNECTED);
  202. resetStatus(STATUS_CONNECTED);
  203. setStatus(STATUS_SIMULATE);
  204. _patchApiStatus();
  205. }
  206. public void resetSimulate()
  207. {
  208. resetStatus(STATUS_SIMULATE);
  209. _patchApiStatus();
  210. }
  211. private void _patchApiStatus(int status = 0)
  212. {
  213. if(status == 0)
  214. {
  215. status = getStatus();
  216. }
  217.  
  218. if (_device != null)
  219. {
  220. if (status != _device.deviceStatus)
  221. {
  222. _device.deviceStatus = status;
  223.  
  224. if (_device.statusTag != null)
  225. {
  226. bool goStop = false;
  227.  
  228. if (_stopping)
  229. {
  230. goStop = true;
  231. }
  232.  
  233. var data = new Dictionary<string, string>();
  234. object request = new { value = 0 };
  235.  
  236. if (status == 0)
  237. {
  238. _stopping = true;
  239. request = new { value = 0 };
  240. }
  241. else
  242. {
  243. request = new { value = Convert.ToString(status) };
  244. _device.statusTag.value = Convert.ToString(status);
  245. }
  246. if (!goStop)
  247. {
  248. if (_status != _previousStatus || status == 1000)
  249. {
  250. GateWay.cocosApi.patch("system", "taglist", _device.statusTag.id, "", null, request, _device.id);
  251.  
  252. _previousStatus = _status;
  253. }
  254. }
  255. }
  256. }
  257. }
  258. }
  259.  
  260. }
  261.  
  262.  
  263. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement