Last active
November 24, 2021 13:46
-
-
Save cmidgley/ed098e09ce55c09183918a8385c6a89a to your computer and use it in GitHub Desktop.
Lora ST127x main example
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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