This commit is contained in:
Michael Lynch 2026-03-25 14:58:48 -07:00 committed by GitHub
commit 615739f665
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 70 additions and 7 deletions

View file

@ -21,9 +21,11 @@ It can also be used in NodeJS to connect to MeshCore Companion devices over TCP/
npm install @liamcottle/meshcore.js
```
## Simple Example
## Simple Examples
```
### Enumerate Contacts (Node.js)
```javascript
import { TCPConnection, NodeJSSerialConnection } from "@liamcottle/meshcore.js";
// serial connections are supported by "companion_radio_usb" firmware
@ -53,6 +55,34 @@ connection.on("connected", async () => {
await connection.connect();
```
### Enumerate Contacts (Browser)
```html
<button id="connect-serial">Connect via Serial</button>
<script type="module">
import { WebBleConnection, WebSerialConnection } from "@liamcottle/meshcore.js";
// wait until connected
async function onConnected(connection) {
// we are now connected
console.log("connected!");
// log contacts
const contacts = await connection.getContacts();
for (const contact of contacts) {
console.log(`Contact: ${contact.advName}`);
}
}
document.getElementById("connect-serial").addEventListener("click", async () => {
const connection = await WebSerialConnection.open();
connection.on("connected", () => onConnected(connection));
});
</script>
```
## Examples
There's a few other examples scripts in the [examples](./examples) folder.

View file

@ -204,10 +204,12 @@
</div>
<script type="module">
import Constants from "./src/constants.js";
import WebSerialConnection from "./src/connection/web_serial_connection.js";
import WebBleConnection from "./src/connection/web_ble_connection.js";
import BufferUtils from "./src/buffer_utils.js";
import {
Constants,
WebSerialConnection,
WebBleConnection,
BufferUtils,
} from "./src/browser.js";
Vue.createApp({
data() {
return {
@ -729,4 +731,4 @@
</script>
</body>
</html>
</html>

View file

@ -4,6 +4,15 @@
"description": "",
"main": "src/index.js",
"type": "module",
"exports": {
".": {
"browser": "./src/browser.js",
"import": "./src/index.js",
"default": "./src/index.js"
},
"./browser": "./src/browser.js",
"./node": "./src/node.js"
},
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},

20
src/browser.js Normal file
View file

@ -0,0 +1,20 @@
// Browser-only entrypoint does NOT import Node-only transports (TCP, NodeJSSerial)
import Connection from "./connection/connection.js";
import WebBleConnection from "./connection/web_ble_connection.js";
import WebSerialConnection from "./connection/web_serial_connection.js";
import Constants from "./constants.js";
import Advert from "./advert.js";
import Packet from "./packet.js";
import BufferUtils from "./buffer_utils.js";
import CayenneLpp from "./cayenne_lpp.js";
export {
Connection,
WebBleConnection,
WebSerialConnection,
Constants,
Advert,
Packet,
BufferUtils,
CayenneLpp,
};

2
src/node.js Normal file
View file

@ -0,0 +1,2 @@
// Node-only entrypoint re-exports everything including Node transports
export * from "./index.js";