Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependents: oldheating gps motorhome heating
base/net/web-net-class.inc@147:ea6f647725a1, 2021-01-10 (annotated)
- Committer:
- andrewboyson
- Date:
- Sun Jan 10 11:53:12 2021 +0000
- Revision:
- 147:ea6f647725a1
- Parent:
- 146:6bc151bd7063
Added ability for the user to resolve a name.
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| andrewboyson | 96:eb2eb75bad0f | 1 | "//Net class\n" |
| andrewboyson | 96:eb2eb75bad0f | 2 | "'use strict';\n" |
| andrewboyson | 96:eb2eb75bad0f | 3 | "\n" |
| andrewboyson | 146:6bc151bd7063 | 4 | "//Private variables\n" |
| andrewboyson | 146:6bc151bd7063 | 5 | "let netMacXhr_ = null;\n" |
| andrewboyson | 146:6bc151bd7063 | 6 | "let netMacToFetch_ = '';\n" |
| andrewboyson | 146:6bc151bd7063 | 7 | "\n" |
| andrewboyson | 96:eb2eb75bad0f | 8 | "class Net\n" |
| andrewboyson | 96:eb2eb75bad0f | 9 | "{\n" |
| andrewboyson | 146:6bc151bd7063 | 10 | " //Public functions\n" |
| andrewboyson | 146:6bc151bd7063 | 11 | " static addVendorToLocalStorage(mac)\n" |
| andrewboyson | 146:6bc151bd7063 | 12 | " {\n" |
| andrewboyson | 146:6bc151bd7063 | 13 | " if (netMacXhr_ && netMacXhr_.readyState != 4) return; //Do nothing if there is an ongoing request\n" |
| andrewboyson | 146:6bc151bd7063 | 14 | " netMacToFetch_ = mac;\n" |
| andrewboyson | 146:6bc151bd7063 | 15 | " netMacXhr_ = new XMLHttpRequest();\n" |
| andrewboyson | 146:6bc151bd7063 | 16 | " netMacXhr_.onreadystatechange = function()\n" |
| andrewboyson | 146:6bc151bd7063 | 17 | " {\n" |
| andrewboyson | 146:6bc151bd7063 | 18 | " if (netMacXhr_.readyState == 4)\n" |
| andrewboyson | 146:6bc151bd7063 | 19 | " {\n" |
| andrewboyson | 146:6bc151bd7063 | 20 | " if (netMacXhr_.status == 200)\n" |
| andrewboyson | 146:6bc151bd7063 | 21 | " {\n" |
| andrewboyson | 146:6bc151bd7063 | 22 | " if (netMacXhr_.responseText == '')\n" |
| andrewboyson | 146:6bc151bd7063 | 23 | " {\n" |
| andrewboyson | 146:6bc151bd7063 | 24 | " localStorage.setItem(netMacToFetch_, 'Empty vendor');\n" |
| andrewboyson | 146:6bc151bd7063 | 25 | " }\n" |
| andrewboyson | 146:6bc151bd7063 | 26 | " else\n" |
| andrewboyson | 146:6bc151bd7063 | 27 | " {\n" |
| andrewboyson | 146:6bc151bd7063 | 28 | " localStorage.setItem(netMacToFetch_, netMacXhr_.responseText);\n" |
| andrewboyson | 146:6bc151bd7063 | 29 | " }\n" |
| andrewboyson | 146:6bc151bd7063 | 30 | " }\n" |
| andrewboyson | 146:6bc151bd7063 | 31 | " else\n" |
| andrewboyson | 146:6bc151bd7063 | 32 | " {\n" |
| andrewboyson | 146:6bc151bd7063 | 33 | " localStorage.setItem(netMacToFetch_, netMacXhr_.status);\n" |
| andrewboyson | 146:6bc151bd7063 | 34 | " }\n" |
| andrewboyson | 146:6bc151bd7063 | 35 | " }\n" |
| andrewboyson | 146:6bc151bd7063 | 36 | " };\n" |
| andrewboyson | 146:6bc151bd7063 | 37 | " netMacXhr_.open('GET', 'https://api.macaddress.io/v1?apiKey=at_dzgreB2SuPBDdy5mwTvivH3R3cvkH&search=' + netMacToFetch_, true);\n" |
| andrewboyson | 146:6bc151bd7063 | 38 | " netMacXhr_.send();\n" |
| andrewboyson | 146:6bc151bd7063 | 39 | " }\n" |
| andrewboyson | 146:6bc151bd7063 | 40 | " static getVendorFromLocalStorage(mac)\n" |
| andrewboyson | 146:6bc151bd7063 | 41 | " {\n" |
| andrewboyson | 147:ea6f647725a1 | 42 | " if (mac[1] === '2' ||\n" |
| andrewboyson | 147:ea6f647725a1 | 43 | " mac[1] === '6' ||\n" |
| andrewboyson | 147:ea6f647725a1 | 44 | " mac[1] === 'a' ||\n" |
| andrewboyson | 147:ea6f647725a1 | 45 | " mac[1] === 'A' ||\n" |
| andrewboyson | 147:ea6f647725a1 | 46 | " mac[1] === 'e' ||\n" |
| andrewboyson | 147:ea6f647725a1 | 47 | " mac[1] === 'E' ) return '(Locally administered)';\n" |
| andrewboyson | 147:ea6f647725a1 | 48 | " \n" |
| andrewboyson | 146:6bc151bd7063 | 49 | " return localStorage.getItem(mac);\n" |
| andrewboyson | 146:6bc151bd7063 | 50 | " }\n" |
| andrewboyson | 146:6bc151bd7063 | 51 | " static clearVendorsFromLocalStorage()\n" |
| andrewboyson | 146:6bc151bd7063 | 52 | " {\n" |
| andrewboyson | 146:6bc151bd7063 | 53 | " localStorage.clear();\n" |
| andrewboyson | 146:6bc151bd7063 | 54 | " }\n" |
| andrewboyson | 96:eb2eb75bad0f | 55 | " static makeIp4(text)\n" |
| andrewboyson | 96:eb2eb75bad0f | 56 | " {\n" |
| andrewboyson | 96:eb2eb75bad0f | 57 | " let result = '';\n" |
| andrewboyson | 96:eb2eb75bad0f | 58 | " result += parseInt(text.substr(6, 2), 16).toString();\n" |
| andrewboyson | 96:eb2eb75bad0f | 59 | " result += '.';\n" |
| andrewboyson | 96:eb2eb75bad0f | 60 | " result += parseInt(text.substr(4, 2), 16).toString();\n" |
| andrewboyson | 96:eb2eb75bad0f | 61 | " result += '.';\n" |
| andrewboyson | 96:eb2eb75bad0f | 62 | " result += parseInt(text.substr(2, 2), 16).toString();\n" |
| andrewboyson | 96:eb2eb75bad0f | 63 | " result += '.';\n" |
| andrewboyson | 96:eb2eb75bad0f | 64 | " result += parseInt(text.substr(0, 2), 16).toString();\n" |
| andrewboyson | 96:eb2eb75bad0f | 65 | " return result;\n" |
| andrewboyson | 96:eb2eb75bad0f | 66 | " }\n" |
| andrewboyson | 145:d2bd78be00b2 | 67 | " static makeIp4Rev(text)\n" |
| andrewboyson | 145:d2bd78be00b2 | 68 | " {\n" |
| andrewboyson | 145:d2bd78be00b2 | 69 | " let result = '';\n" |
| andrewboyson | 145:d2bd78be00b2 | 70 | " result += parseInt(text.substr(0, 2), 16).toString();\n" |
| andrewboyson | 145:d2bd78be00b2 | 71 | " result += '.';\n" |
| andrewboyson | 145:d2bd78be00b2 | 72 | " result += parseInt(text.substr(2, 2), 16).toString();\n" |
| andrewboyson | 145:d2bd78be00b2 | 73 | " result += '.';\n" |
| andrewboyson | 145:d2bd78be00b2 | 74 | " result += parseInt(text.substr(4, 2), 16).toString();\n" |
| andrewboyson | 145:d2bd78be00b2 | 75 | " result += '.';\n" |
| andrewboyson | 145:d2bd78be00b2 | 76 | " result += parseInt(text.substr(6, 2), 16).toString();\n" |
| andrewboyson | 145:d2bd78be00b2 | 77 | " return result;\n" |
| andrewboyson | 145:d2bd78be00b2 | 78 | " }\n" |
| andrewboyson | 96:eb2eb75bad0f | 79 | " static makeMac(text)\n" |
| andrewboyson | 96:eb2eb75bad0f | 80 | " {\n" |
| andrewboyson | 96:eb2eb75bad0f | 81 | " text = text.toLowerCase();\n" |
| andrewboyson | 96:eb2eb75bad0f | 82 | " let result = '';\n" |
| andrewboyson | 96:eb2eb75bad0f | 83 | " result += text.substr( 0, 2);\n" |
| andrewboyson | 96:eb2eb75bad0f | 84 | " result += ':';\n" |
| andrewboyson | 96:eb2eb75bad0f | 85 | " result += text.substr( 2, 2);\n" |
| andrewboyson | 96:eb2eb75bad0f | 86 | " result += ':';\n" |
| andrewboyson | 96:eb2eb75bad0f | 87 | " result += text.substr( 4, 2);\n" |
| andrewboyson | 96:eb2eb75bad0f | 88 | " result += ':';\n" |
| andrewboyson | 96:eb2eb75bad0f | 89 | " result += text.substr( 6, 2);\n" |
| andrewboyson | 96:eb2eb75bad0f | 90 | " result += ':';\n" |
| andrewboyson | 96:eb2eb75bad0f | 91 | " result += text.substr( 8, 2);\n" |
| andrewboyson | 96:eb2eb75bad0f | 92 | " result += ':';\n" |
| andrewboyson | 96:eb2eb75bad0f | 93 | " result += text.substr(10, 2);\n" |
| andrewboyson | 96:eb2eb75bad0f | 94 | " return result;\n" |
| andrewboyson | 96:eb2eb75bad0f | 95 | " }\n" |
| andrewboyson | 96:eb2eb75bad0f | 96 | "\n" |
| andrewboyson | 96:eb2eb75bad0f | 97 | " static hexToBit(text, iBit)\n" |
| andrewboyson | 96:eb2eb75bad0f | 98 | " {\n" |
| andrewboyson | 96:eb2eb75bad0f | 99 | " let value = parseInt(text, 16);\n" |
| andrewboyson | 96:eb2eb75bad0f | 100 | " value >>= iBit;\n" |
| andrewboyson | 96:eb2eb75bad0f | 101 | " return value & 1;\n" |
| andrewboyson | 96:eb2eb75bad0f | 102 | " }\n" |
| andrewboyson | 96:eb2eb75bad0f | 103 | " static makeIp6(text)\n" |
| andrewboyson | 96:eb2eb75bad0f | 104 | " {\n" |
| andrewboyson | 96:eb2eb75bad0f | 105 | " function makeWord(text)\n" |
| andrewboyson | 96:eb2eb75bad0f | 106 | " {\n" |
| andrewboyson | 96:eb2eb75bad0f | 107 | " let word = parseInt(text, 16);\n" |
| andrewboyson | 96:eb2eb75bad0f | 108 | " if (word === 0) return '';\n" |
| andrewboyson | 96:eb2eb75bad0f | 109 | " return word.toString(16);\n" |
| andrewboyson | 96:eb2eb75bad0f | 110 | " }\n" |
| andrewboyson | 96:eb2eb75bad0f | 111 | " text = text.toLowerCase();\n" |
| andrewboyson | 96:eb2eb75bad0f | 112 | " let result = '';\n" |
| andrewboyson | 96:eb2eb75bad0f | 113 | " result += makeWord(text.substr( 0, 4));\n" |
| andrewboyson | 96:eb2eb75bad0f | 114 | " result += ':';\n" |
| andrewboyson | 96:eb2eb75bad0f | 115 | " result += makeWord(text.substr( 4, 4));\n" |
| andrewboyson | 96:eb2eb75bad0f | 116 | " result += ':';\n" |
| andrewboyson | 96:eb2eb75bad0f | 117 | " result += makeWord(text.substr( 8, 4));\n" |
| andrewboyson | 96:eb2eb75bad0f | 118 | " result += ':';\n" |
| andrewboyson | 96:eb2eb75bad0f | 119 | " result += makeWord(text.substr(12, 4));\n" |
| andrewboyson | 96:eb2eb75bad0f | 120 | " result += ':';\n" |
| andrewboyson | 96:eb2eb75bad0f | 121 | " result += makeWord(text.substr(16, 4));\n" |
| andrewboyson | 96:eb2eb75bad0f | 122 | " result += ':';\n" |
| andrewboyson | 96:eb2eb75bad0f | 123 | " result += makeWord(text.substr(20, 4));\n" |
| andrewboyson | 96:eb2eb75bad0f | 124 | " result += ':';\n" |
| andrewboyson | 96:eb2eb75bad0f | 125 | " result += makeWord(text.substr(24, 4));\n" |
| andrewboyson | 96:eb2eb75bad0f | 126 | " result += ':';\n" |
| andrewboyson | 96:eb2eb75bad0f | 127 | " result += makeWord(text.substr(28, 4));\n" |
| andrewboyson | 96:eb2eb75bad0f | 128 | " return result;\n" |
| andrewboyson | 96:eb2eb75bad0f | 129 | " }\n" |
| andrewboyson | 96:eb2eb75bad0f | 130 | "}" |