Skip to content

Instantly share code, notes, and snippets.

@cmidgley
Last active November 24, 2021 13:46
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save cmidgley/ed098e09ce55c09183918a8385c6a89a to your computer and use it in GitHub Desktop.
Save cmidgley/ed098e09ce55c09183918a8385c6a89a to your computer and use it in GitHub Desktop.
Lora ST127x main example
import Timer from "timer";
import LoRa_ST127x, { LoRa_Heltec_Wifi_Lora_32_v2_pins } from "lora_st127x";
import config from "mc/config";
let lora;
// test settings
const transmit = parseInt(config.transmit ?? "0"); // true to transmit, false to receive
const useReadCallback = true; // true to use callbacks on read, false to use polling
const usePreallocatedBuffer = true; // set to true to test preallocated buffers, false to test dynamic allocation buffers (when useReadCallback is false)
if (transmit) trace("\nTransmit mode\n\n");
else trace("\nReceive mode\n\n");
init();
let t = Timer.repeat(loop, transmit ? 1000 : 10);
let receiveBuffer = new ArrayBuffer(250);
let id = 0;
function init() {
lora = new LoRa_ST127x({
...LoRa_Heltec_Wifi_Lora_32_v2_pins,
onReadable: () => {
if (!transmit) {
if (useReadCallback) {
let size = lora.read(receiveBuffer);
if (undefined === size) trace("Read callback but no data waiting\n");
else trace(`Received ${size} bytes: ${String.fromArrayBuffer(receiveBuffer)}\n`);
} else trace("onReadable\n");
}
},
onWritable: () => {
trace("onWritable\n");
},
});
}
function loop() {
if (transmit) {
let message = "hello #" + ++id;
let buffer = ArrayBuffer.fromString(message);
trace(`Sending ${buffer.byteLength} bytes: ${String.fromArrayBuffer(buffer)}\n`);
lora.write(buffer);
} else if (!useReadCallback) {
if (usePreallocatedBuffer) {
let bytesReceived = lora.read(receiveBuffer);
if (bytesReceived) trace(`Received ${bytesReceived} bytes: ${String.fromArrayBuffer(receiveBuffer)}\n`);
} else {
let buf = lora.read(50);
if (buf) trace(`Received ${buf.byteLength} bytes: ${String.fromArrayBuffer(buf)}\n`);
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment