bmentink
04/29/2025, 8:25 AMfloitsch
04/29/2025, 8:29 AMtoit compile --snapshot -o foo.snapshot foo.toit
followed by toit tools snapshot-to-image -o foo.img foo.snapshot -m32 --format=binary
gives the size.
Not 100% sure.kasperl
04/29/2025, 8:37 AMfloitsch
04/29/2025, 8:38 AMkasperl
04/29/2025, 8:39 AMfloitsch
04/29/2025, 8:40 AMtoit tool firmware --envelope=... extract --out=...
kasperl
04/29/2025, 8:41 AMartemis
.floitsch
04/29/2025, 8:41 AMfloitsch
04/29/2025, 8:42 AMartemis device extract -h
has some examples.floitsch
04/30/2025, 5:02 PMout-channel := rmt.Out pin --resolution=RESOLUTION
uart-period := RESOLUTION / BAUD-RATE
uart-start := rmt.Signals 2
uart-start.set 0 --level=0 --period=uart-period - 1
uart-start.set 1 --level=0 --period=1
// A combination of the stop and start signals.
uart-between := rmt.Signals 2
uart-between.set 0 --level=1 --period=uart-period // A stop bit.
uart-between.set 1 --level=0 --period=uart-period // A start bit.
uart-stop := rmt.Signals 2
uart-stop.set 0 --level=1 --period=uart-period - 1
uart-stop.set 1 --level=1 --period=1
// We use chunks of 2 bits, so that we don't waste signal memory.
// rmt.Signals of length 1 are padded to size 2.
uart-00 := rmt.Signals 2
uart-00.set 0 --level=0 --period=uart-period
uart-00.set 1 --level=0 --period=uart-period
uart-01 := rmt.Signals 2
uart-01.set 0 --level=1 --period=uart-period
uart-01.set 1 --level=0 --period=uart-period
uart-10 := rmt.Signals 2
uart-10.set 0 --level=0 --period=uart-period
uart-10.set 1 --level=1 --period=uart-period
uart-11 := rmt.Signals 2
uart-11.set 0 --level=1 --period=uart-period
uart-11.set 1 --level=1 --period=uart-period
encoder := rmt.Encoder
--msb=false // UART is LSB first.
--start=uart-start
--between=uart-between
--stop=uart-stop
{
0b00: uart-00,
0b01: uart-01,
0b10: uart-10,
0b11: uart-11,
}
out-channel.write "hello" --encoder=encoder --done-level=1
Arubinu
05/02/2025, 12:37 AMkasperl
05/02/2025, 6:26 AMIpotex
05/02/2025, 6:33 PM******************************************************************************
Decoding by `jag`, device has version <2.0.0-alpha.179>
******************************************************************************
EXCEPTION error.
DEADLINE_EXCEEDED
0: ble-run-with-quota-backoff_ <sdk>/ble/ble.toit:1363:47
1: ble-set-value_ <sdk>/ble/ble.toit:1299:3
2: LocalCharacteristic.set-value <sdk>/ble/local.toit:417:5
3: RpcService.run_.<block> <pkg:toit-provision>/src_/rpc.toit:75:25
4: LocalCharacteristic.handle-request_.<block>.<block> <sdk>/ble/local.toit:514:15
5: LocalCharacteristic.handle-request_.<block> <sdk>/ble/local.toit:498:5
6: LocalCharacteristic.handle-request_ <sdk>/ble/local.toit:492:3
7: LocalCharacteristic.handle-write-request <sdk>/ble/local.toit:490:5
8: RpcService.run_ <pkg:toit-provision>/src_/rpc.toit:71:23
9: RpcService.<lambda> <pkg:toit-provision>/src_/rpc.toit:56:20
******************************************************************************
floitsch
05/02/2025, 6:33 PMIpotex
05/02/2025, 6:34 PMIpotex
05/02/2025, 6:35 PMimport ble
import encoding.json
import io
import .rpc
import .security
class CustomRpcService extends RpcService:
static ID_ ::= 0x54
static DESCRIPTION_ ::= "custom-service"
custom-service-callback_/Lambda
constructor service/ble.LocalService --custom-service-callback/Lambda? --security/Security:
custom-service-callback_ = custom-service-callback
super service ID_
--description=DESCRIPTION_
--security=security
handle-request data/ByteArray -> ByteArray:
return custom-service-callback_.call data `
Ipotex
05/02/2025, 6:36 PMconstructor --.name
--security-credentials/SecurityCredentials?
--custom-callback/Lambda
--done/Lambda
--auto-save/bool:
adapter = ble.Adapter
peripheral = adapter.peripheral
service = peripheral.add-service (ble.BleUuid SERVICE-UUID)
security := security-for --credentials=security-credentials
rpc-services_ = [
ScanRpcService service --security=security,
SessionRpcService service --security=security,
WifiConfigRpcService service --security=security --done=done --auto-save=auto-save,
VersionRpcService service --security-version=security.version,
CustomRpcService service --security=security --custom-service-callback=custom-callback,
]
Ipotex
05/02/2025, 6:38 PMconstructor name/string
--custom-service-callback/Lambda = null
--security-credentials/SecurityCredentials?=null
--auto-save/bool=true:
done-latch := monitor.Latch
done-latch_ = done-latch
ble_ = BleProvision
--name=name
--security-credentials=security-credentials
--done=:: done-latch.set it
--auto-save=auto-save
--custom-callback= custom-service-callback
floitsch
05/02/2025, 6:39 PMIpotex
05/02/2025, 6:40 PMprov := provision.Provision service-name --auto-save=false --security-credentials=credentials --custom-service-callback=::setActivationToken it`
Ipotex
05/02/2025, 6:42 PMsetActivationToken data/ByteArray -> ByteArray:
activationToken = data
encoded := base64.encode activationToken
crc/int := crc.crc32 encoded
log.info crc.stringify
return crc.stringify.to-byte-array
Ipotex
05/02/2025, 6:45 PMIpotex
05/02/2025, 6:48 PMIpotex
05/02/2025, 6:53 PMIpotex
05/02/2025, 6:53 PMP. Dumcius
05/04/2025, 8:35 PMswr1211
05/07/2025, 10:15 AMkasperl
05/07/2025, 10:17 AMswr1211
05/07/2025, 10:22 AM