Skip to content

Commit b131054

Browse files
More Go idiomatic API
1 parent f6019de commit b131054

3 files changed

Lines changed: 22 additions & 15 deletions

File tree

sx126x/radiocontrol_wio_sx1262.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import (
1111
// if SetDio2AsRfSwitchCtrl is set to true (use machine.NoPin instead).
1212
// Additionally, the board requires following settings on initalization:
1313
/*
14-
radio.SetDio3AsTcxoCtrl(sx126x.SX126X_DIO3_OUTPUT_1_8, 500)
14+
radio.SetDio3AsTcxoCtrl(sx126x.SX126X_DIO3_OUTPUT_1_8, 5*time.Microsecond)
1515
radio.SetRegulatorMode(sx126x.SX126X_REGULATOR_DC_DC)
1616
radio.SetDeviceType(sx126x.DEVICE_TYPE_SX1262)
1717
*/

sx126x/registers.go

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -181,16 +181,6 @@ const (
181181
SX126X_DIO2_AS_IRQ = 0x00 // 7 0 DIO2 configuration: IRQ
182182
SX126X_DIO2_AS_RF_SWITCH = 0x01 // 7 0 RF switch control
183183

184-
//SX126X_CMD_SET_DIO3_AS_TCXO_CTRL
185-
SX126X_DIO3_OUTPUT_1_6 = 0x00 // 7 0 DIO3 voltage output for TCXO: 1.6 V
186-
SX126X_DIO3_OUTPUT_1_7 = 0x01 // 7 0 1.7 V
187-
SX126X_DIO3_OUTPUT_1_8 = 0x02 // 7 0 1.8 V
188-
SX126X_DIO3_OUTPUT_2_2 = 0x03 // 7 0 2.2 V
189-
SX126X_DIO3_OUTPUT_2_4 = 0x04 // 7 0 2.4 V
190-
SX126X_DIO3_OUTPUT_2_7 = 0x05 // 7 0 2.7 V
191-
SX126X_DIO3_OUTPUT_3_0 = 0x06 // 7 0 3.0 V
192-
SX126X_DIO3_OUTPUT_3_3 = 0x07 // 7 0 3.3 V
193-
194184
//SX126X_CMD_SET_PACKET_TYPE
195185
SX126X_PACKET_TYPE_GFSK = 0x00 // 7 0 packet type: GFSK
196186
SX126X_PACKET_TYPE_LORA = 0x01 // 7 0 LoRa
@@ -312,3 +302,17 @@ const (
312302
SX126X_LORA_MAC_PUBLIC_SYNCWORD = 0x3444
313303
SX126X_LORA_MAC_PRIVATE_SYNCWORD = 0x1424
314304
)
305+
306+
type Dio3OutputVoltage uint8
307+
308+
const (
309+
//SX126X_CMD_SET_DIO3_AS_TCXO_CTRL
310+
SX126X_DIO3_OUTPUT_1_6 Dio3OutputVoltage = 0x00 // 7 0 DIO3 voltage output for TCXO: 1.6 V
311+
SX126X_DIO3_OUTPUT_1_7 Dio3OutputVoltage = 0x01 // 7 0 1.7 V
312+
SX126X_DIO3_OUTPUT_1_8 Dio3OutputVoltage = 0x02 // 7 0 1.8 V
313+
SX126X_DIO3_OUTPUT_2_2 Dio3OutputVoltage = 0x03 // 7 0 2.2 V
314+
SX126X_DIO3_OUTPUT_2_4 Dio3OutputVoltage = 0x04 // 7 0 2.4 V
315+
SX126X_DIO3_OUTPUT_2_7 Dio3OutputVoltage = 0x05 // 7 0 2.7 V
316+
SX126X_DIO3_OUTPUT_3_0 Dio3OutputVoltage = 0x06 // 7 0 3.0 V
317+
SX126X_DIO3_OUTPUT_3_3 Dio3OutputVoltage = 0x07 // 7 0 3.3 V
318+
)

sx126x/sx126x.go

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -315,17 +315,20 @@ func (d *Device) SetDioIrqParams(irqMask, dio1Mask, dio2Mask, dio3Mask uint16) {
315315
// the internal state machine (DIO2 = 0 in SLEEP, STDBY_RX, STDBY_XOSC, FS and RX modes,
316316
// DIO2 = 1 in TX mode). Otherwise DIO2 is free to be used as an IRQ.
317317
func (d *Device) SetDio2AsRfSwitchCtrl(enable bool) {
318-
var p [1]uint8
318+
p := [1]uint8{SX126X_DIO2_AS_IRQ}
319319
if enable {
320-
p[0] = 0x01
320+
p[0] = SX126X_DIO2_AS_RF_SWITCH
321321
}
322322
d.ExecSetCommand(SX126X_CMD_SET_DIO2_AS_RF_SWITCH_CTRL, p[:])
323323
}
324324

325325
// SetDio3AsTcxoCtrl configures the DIO3 as an external TCXO voltage reference.
326-
func (d *Device) SetDio3AsTcxoCtrl(voltage uint8, timeout uint32) {
326+
// voltage: output voltage on DIO3 pin
327+
// delay: time for the TCXO to stabilize
328+
func (d *Device) SetDio3AsTcxoCtrl(voltage Dio3OutputVoltage, delay time.Duration) {
329+
timeout := delay / (15625 * time.Nanosecond)
327330
var p [5]uint8
328-
p[0] = voltage
331+
p[0] = uint8(voltage)
329332
p[1] = uint8((timeout >> 24) & 0xFF)
330333
p[2] = uint8((timeout >> 16) & 0xFF)
331334
p[3] = uint8((timeout >> 8) & 0xFF)

0 commit comments

Comments
 (0)