index.html 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  1. <!doctype html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="utf-8">
  5. <title>ArduRemoteID</title>
  6. <meta name="description" content="ArduPilot RemoteID Module.">
  7. <link rel="stylesheet" type="text/css" href="styles/main.css">
  8. <script src='js/jquery.min.js'></script>
  9. <script src='js/tools.js'></script>
  10. </head>
  11. <body>
  12. <a href="/index.html"><img id="logo" src="" alt="logo"></a></p>
  13. <h1>ArduRemoteID</h1>
  14. <h2>Status</h2>
  15. <fieldset>
  16. <legend>System</legend>
  17. <table class="values">
  18. <tr><td>Version</td><td><div id="STATUS:VERSION"></div></td></tr>
  19. <tr><td>Board</td><td><div id="STATUS:BOARD"></div></td></tr>
  20. <tr><td>Up Time</td><td><div id="STATUS:UPTIME"></div></td></tr>
  21. <tr><td>Free Memory</td><td><div id="STATUS:FREEMEM"></div></td></tr>
  22. </table>
  23. </fieldset>
  24. <fieldset>
  25. <legend>BasicID 1</legend>
  26. <table class="values">
  27. <tr><td>UAType</td><td><div id="BASICID:UAType"></div></td></tr>
  28. <tr><td>IDType</td><td><div id="BASICID:IDType"></div></td></tr>
  29. <tr><td>UASID</td><td><div id="BASICID:UASID"></div></td></tr>
  30. </table>
  31. </fieldset>
  32. <fieldset>
  33. <legend>BasicID 2</legend>
  34. <table class="values">
  35. <tr><td>UAType</td><td><div id="BASICID:UAType2"></div></td></tr>
  36. <tr><td>IDType</td><td><div id="BASICID:IDType2"></div></td></tr>
  37. <tr><td>UASID</td><td><div id="BASICID:UASID2"></div></td></tr>
  38. </table>
  39. </fieldset>
  40. <fieldset>
  41. <legend>OperatorID</legend>
  42. <table class="values">
  43. <tr><td>IDType</td><td><div id="OPERATORID:IDType"></div></td></tr>
  44. <tr><td>ID</td><td><div id="OPERATORID:ID"></div></td></tr>
  45. </table>
  46. </fieldset>
  47. <fieldset>
  48. <legend>SelfID</legend>
  49. <table class="values">
  50. <tr><td>DescriptionType</td><td><div id="SELFID:DescType"></div></td></tr>
  51. <tr><td>Description</td><td><div id="SELFID:Desc"></div></td></tr>
  52. </table>
  53. </fieldset>
  54. <fieldset>
  55. <legend>System</legend>
  56. <table class="values">
  57. <tr><td>OperatorLocationType</td><td><div id="SYSTEM:OperatorLocationType"></div></td></tr>
  58. <tr><td>ClassificationType</td><td><div id="SYSTEM:ClassificationType"></div></td></tr>
  59. <tr><td>OperatorLatitude</td><td><div id="SYSTEM:OperatorLatitude"></div></td></tr>
  60. <tr><td>OperatorLongitude</td><td><div id="SYSTEM:OperatorLongitude"></div></td></tr>
  61. <tr><td>AreaCount</td><td><div id="SYSTEM:AreaCount"></div></td></tr>
  62. <tr><td>AreaRadius</td><td><div id="SYSTEM:AreaRadius"></div></td></tr>
  63. <tr><td>AreaCeiling</td><td><div id="SYSTEM:AreaCeiling"></div></td></tr>
  64. <tr><td>AreaFloor</td><td><div id="SYSTEM:AreaFloor"></div></td></tr>
  65. <tr><td>CategoryEU</td><td><div id="SYSTEM:CategoryEU"></div></td></tr>
  66. <tr><td>ClassEU</td><td><div id="SYSTEM:ClassEU"></div></td></tr>
  67. <tr><td>OperatorAltitudeGeo</td><td><div id="SYSTEM:OperatorAltitudeGeo"></div></td></tr>
  68. <tr><td>Timestamp</td><td><div id="SYSTEM:Timestamp"></div></td></tr>
  69. </table>
  70. </fieldset>
  71. <fieldset>
  72. <legend>Location</legend>
  73. <table class="values">
  74. <tr><td>Status</td><td><div id="LOCATION:Status"></div><div id="LOCATION:StatusReason"></div><td></tr>
  75. <tr><td>Direction</td><td><div id="LOCATION:Direction"></div><td></tr>
  76. <tr><td>SpeedHorizontal</td><td><div id="LOCATION:SpeedHorizontal"></div><td></tr>
  77. <tr><td>SpeedVertical</td><td><div id="LOCATION:SpeedVertical"></div><td></tr>
  78. <tr><td>Latitude</td><td><div id="LOCATION:Latitude"></div><td></tr>
  79. <tr><td>Longitude</td><td><div id="LOCATION:Longitude"></div><td></tr>
  80. <tr><td>AltitudeBaro</td><td><div id="LOCATION:AltitudeBaro"></div><td></tr>
  81. <tr><td>AltitudeGeo</td><td><div id="LOCATION:AltitudeGeo"></div><td></tr>
  82. <tr><td>HeightType</td><td><div id="LOCATION:HeightType"></div><td></tr>
  83. <tr><td>Height</td><td><div id="LOCATION:Height"></div><td></tr>
  84. <tr><td>HorizAccuracy</td><td><div id="LOCATION:HorizAccuracy"></div><td></tr>
  85. <tr><td>VertAccuracy</td><td><div id="LOCATION:VertAccuracy"></div><td></tr>
  86. <tr><td>BaroAccuracy</td><td><div id="LOCATION:BaroAccuracy"></div><td></tr>
  87. <tr><td>SpeedAccuracy</td><td><div id="LOCATION:SpeedAccuracy"></div><td></tr>
  88. <tr><td>TSAccuracy</td><td><div id="LOCATION:TSAccuracy"></div><td></tr>
  89. <tr><td>TimeStamp</td><td><div id="LOCATION:TimeStamp"></div><td></tr>
  90. </table>
  91. </fieldset>
  92. <h2>Documentation</h2>
  93. <div id="documentation">
  94. </div>
  95. <h2>Firmware Update</h2>
  96. <form method='POST' action='#' enctype='multipart/form-data' id='upload_form'>
  97. <input type='file' name='update'>
  98. <input type='submit' value='Update'>
  99. </form>
  100. <div id='progress'>upload progress: 0%</div>
  101. <script>
  102. $('form').submit(function(e) {
  103. e.preventDefault();
  104. var form = $('#upload_form')[0];
  105. var data = new FormData(form);
  106. $.ajax({
  107. url: '/update',
  108. type: 'POST',
  109. data: data,
  110. contentType: false,
  111. processData:false,
  112. xhr: function() {
  113. var xhr = new window.XMLHttpRequest();
  114. xhr.upload.addEventListener('progress', function(evt) {
  115. if (evt.lengthComputable) {
  116. var per = evt.loaded / evt.total;
  117. $('#progress').html('progress: ' + Math.round(per*100) + '%');
  118. if (evt.loaded == evt.total) {
  119. setTimeout(function(){ //popup after 2 second
  120. if (xhr.status === 200) {
  121. $('#progress').html('progress: done');
  122. alert("Firmware upgrade completed!\n\nPress OK to reboot the RemoteID device.");
  123. window.location.reload(true);
  124. }
  125. }, 2000);
  126. }
  127. }
  128. }, false);
  129. return xhr;
  130. },
  131. success:function(d, s) {
  132. console.log('success!');
  133. },
  134. error: function (a, b, c) {
  135. setTimeout(function(){ //popup after 1 second
  136. $('#progress').html('progress: error');
  137. alert("Firmware upgrade FAILED!\n\nPlease check that:\na) you downloaded the OTA firmware (ending on _OTA.bin)\nb) you downloaded the correct file for your board\nc) if the LOCK_LEVEL has been set to 2 in your board, make sure you uploaded firmware that is signed with the correct key.");
  138. window.location.reload(true);
  139. }, 100);
  140. }
  141. });
  142. });
  143. // poll status information at 1Hz (900ms to cope with some lag)
  144. ajax_json_poll_fill("/ajax/status.json", 900);
  145. $(document).ready(function() {
  146. $('#progress').html(''); //disable progress text after loading the page
  147. });
  148. </script>
  149. </body>
  150. </html>