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
|
||||
P15 = 22, // MICROBIT_ID_IO_P15
|
||||
P16 = 23, // MICROBIT_ID_IO_P16
|
||||
USB_TX = 1001,
|
||||
USB_RX = 1002,
|
||||
}
|
||||
|
||||
|
||||
|
@ -2,6 +2,7 @@
|
||||
|
||||
#define MICROBIT_SERIAL_READ_BUFFER_LENGTH 64
|
||||
|
||||
// make sure USB_TX and USB_RX don't overlap with other pin ids
|
||||
enum SerialPin {
|
||||
P0 = MICROBIT_ID_IO_P0,
|
||||
P1 = MICROBIT_ID_IO_P1,
|
||||
@ -11,7 +12,9 @@ enum SerialPin {
|
||||
P13 = MICROBIT_ID_IO_P13,
|
||||
P14 = MICROBIT_ID_IO_P14,
|
||||
P15 = MICROBIT_ID_IO_P15,
|
||||
P16 = MICROBIT_ID_IO_P16
|
||||
P16 = MICROBIT_ID_IO_P16,
|
||||
USB_TX = 1001,
|
||||
USB_RX = 1002
|
||||
};
|
||||
|
||||
enum BaudRate {
|
||||
@ -142,6 +145,20 @@ namespace serial {
|
||||
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.
|
||||
* @param tx the new transmission pin, eg: SerialPin.P0
|
||||
@ -158,10 +175,10 @@ namespace serial {
|
||||
//% rx.fieldOptions.tooltips="false"
|
||||
//% blockGap=8
|
||||
void redirect(SerialPin tx, SerialPin rx, BaudRate rate) {
|
||||
MicroBitPin* txp = getPin(tx); if (!txp) return;
|
||||
MicroBitPin* rxp = getPin(rx); if (!rxp) return;
|
||||
|
||||
uBit.serial.redirect(txp->name, rxp->name);
|
||||
PinName txn;
|
||||
PinName rxn;
|
||||
if (tryResolvePin(tx, txn) && tryResolvePin(rx, rxn))
|
||||
uBit.serial.redirect(txn, rxn);
|
||||
uBit.serial.baud((int)rate);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user