support for usb in redirect (#1452)
* support for usb in redirect * regenerated dal.d.ts
This commit is contained in:
parent
21677ac79d
commit
5b28d5080a
2
libs/core/enums.d.ts
vendored
2
libs/core/enums.d.ts
vendored
@ -519,6 +519,8 @@ declare namespace led {
|
|||||||
P14 = 21, // MICROBIT_ID_IO_P14
|
P14 = 21, // MICROBIT_ID_IO_P14
|
||||||
P15 = 22, // MICROBIT_ID_IO_P15
|
P15 = 22, // MICROBIT_ID_IO_P15
|
||||||
P16 = 23, // MICROBIT_ID_IO_P16
|
P16 = 23, // MICROBIT_ID_IO_P16
|
||||||
|
USB_TX = 1001,
|
||||||
|
USB_RX = 1002,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
#define MICROBIT_SERIAL_READ_BUFFER_LENGTH 64
|
#define MICROBIT_SERIAL_READ_BUFFER_LENGTH 64
|
||||||
|
|
||||||
|
// make sure USB_TX and USB_RX don't overlap with other pin ids
|
||||||
enum SerialPin {
|
enum SerialPin {
|
||||||
P0 = MICROBIT_ID_IO_P0,
|
P0 = MICROBIT_ID_IO_P0,
|
||||||
P1 = MICROBIT_ID_IO_P1,
|
P1 = MICROBIT_ID_IO_P1,
|
||||||
@ -11,7 +12,9 @@ enum SerialPin {
|
|||||||
P13 = MICROBIT_ID_IO_P13,
|
P13 = MICROBIT_ID_IO_P13,
|
||||||
P14 = MICROBIT_ID_IO_P14,
|
P14 = MICROBIT_ID_IO_P14,
|
||||||
P15 = MICROBIT_ID_IO_P15,
|
P15 = MICROBIT_ID_IO_P15,
|
||||||
P16 = MICROBIT_ID_IO_P16
|
P16 = MICROBIT_ID_IO_P16,
|
||||||
|
USB_TX = 1001,
|
||||||
|
USB_RX = 1002
|
||||||
};
|
};
|
||||||
|
|
||||||
enum BaudRate {
|
enum BaudRate {
|
||||||
@ -142,6 +145,20 @@ namespace serial {
|
|||||||
return buf;
|
return buf;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool tryResolvePin(SerialPin p, PinName& name) {
|
||||||
|
switch(p) {
|
||||||
|
case SerialPin::USB_TX: name = USBTX; return true;
|
||||||
|
case SerialPin::USB_RX: name = USBRX; return true;
|
||||||
|
default:
|
||||||
|
auto pin = getPin(p);
|
||||||
|
if (NULL != pin) {
|
||||||
|
name = pin->name;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set the serial input and output to use pins instead of the USB connection.
|
* Set the serial input and output to use pins instead of the USB connection.
|
||||||
* @param tx the new transmission pin, eg: SerialPin.P0
|
* @param tx the new transmission pin, eg: SerialPin.P0
|
||||||
@ -158,10 +175,10 @@ namespace serial {
|
|||||||
//% rx.fieldOptions.tooltips="false"
|
//% rx.fieldOptions.tooltips="false"
|
||||||
//% blockGap=8
|
//% blockGap=8
|
||||||
void redirect(SerialPin tx, SerialPin rx, BaudRate rate) {
|
void redirect(SerialPin tx, SerialPin rx, BaudRate rate) {
|
||||||
MicroBitPin* txp = getPin(tx); if (!txp) return;
|
PinName txn;
|
||||||
MicroBitPin* rxp = getPin(rx); if (!rxp) return;
|
PinName rxn;
|
||||||
|
if (tryResolvePin(tx, txn) && tryResolvePin(rx, rxn))
|
||||||
uBit.serial.redirect(txp->name, rxp->name);
|
uBit.serial.redirect(txn, rxn);
|
||||||
uBit.serial.baud((int)rate);
|
uBit.serial.baud((int)rate);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user