Skip to content

Commit cad1378

Browse files
mmoskalsamelhusseini
authored andcommitted
Implement tagged integers in C++ (#813)
* Start on the C++ conversion for tagged ints
1 parent 01c7c0b commit cad1378

23 files changed

+3027
-2311
lines changed

.clang-format

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
BasedOnStyle: LLVM
2+
IndentWidth: 4
3+
UseTab: Never
4+
ColumnLimit: 100
5+
AllowShortFunctionsOnASingleLine: Inline
6+
SortIncludes: false

libs/bluetooth/bluetooth.cpp

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -87,15 +87,15 @@ namespace bluetooth {
8787
}
8888

8989
//%
90-
void uartWriteString(StringData *data) {
90+
void uartWriteString(String data) {
9191
startUartService();
92-
uart->send(ManagedString(data));
92+
uart->send(MSTR(data));
9393
}
9494

9595
//%
96-
StringData* uartReadUntil(StringData *del) {
96+
String uartReadUntil(String del) {
9797
startUartService();
98-
return uart->readUntil(ManagedString(del)).leakData();
98+
return PSTR(uart->readUntil(MSTR(del)));
9999
}
100100

101101
/**
@@ -104,9 +104,9 @@ namespace bluetooth {
104104
*/
105105
//% help=bluetooth/on-uart-data-received
106106
//% weight=18 blockId=bluetooth_on_data_received block="bluetooth|on data received %delimiters=serial_delimiter_conv"
107-
void onUartDataReceived(StringData* delimiters, Action body) {
107+
void onUartDataReceived(String delimiters, Action body) {
108108
startUartService();
109-
uart->eventOn(ManagedString(delimiters));
109+
uart->eventOn(MSTR(delimiters));
110110
registerWithDal(MICROBIT_ID_BLE_UART, MICROBIT_UART_S_EVT_DELIM_MATCH, body);
111111
}
112112

@@ -142,10 +142,10 @@ namespace bluetooth {
142142
//% blockId=eddystone_advertise_url block="bluetooth advertise url %url|with power %power|connectable %connectable"
143143
//% parts=bluetooth weight=11 blockGap=8
144144
//% help=bluetooth/advertise-url blockExternalInputs=1
145-
void advertiseUrl(StringData* url, int power, bool connectable) {
145+
void advertiseUrl(String url, int power, bool connectable) {
146146
power = min(MICROBIT_BLE_POWER_LEVELS-1, max(0, power));
147147
int8_t level = CALIBRATED_POWERS[power];
148-
uBit.bleManager.advertiseEddystoneUrl(ManagedString(url), level, connectable);
148+
uBit.bleManager.advertiseEddystoneUrl(MSTR(url), level, connectable);
149149
uBit.bleManager.setTransmitPower(power);
150150
}
151151

@@ -157,14 +157,12 @@ namespace bluetooth {
157157
*/
158158
//% parts=bluetooth weight=12 advanced=true
159159
void advertiseUidBuffer(Buffer nsAndInstance, int power, bool connectable) {
160-
ManagedBuffer buf(nsAndInstance);
161-
if (buf.length() != 16) return;
160+
auto buf = nsAndInstance;
161+
if (buf->length != 16) return;
162162

163163
power = min(MICROBIT_BLE_POWER_LEVELS-1, max(0, power));
164164
int8_t level = CALIBRATED_POWERS[power];
165-
uint8_t uidNs[10]; buf.readBytes(uidNs, 0, 10);
166-
uint8_t uidInst[6]; buf.readBytes(uidInst, 10, 6);
167-
uBit.bleManager.advertiseEddystoneUid((const char*)uidNs, (const char*)uidInst, level, connectable);
165+
uBit.bleManager.advertiseEddystoneUid((const char*)buf->data, (const char*)buf->data + 10, level, connectable);
168166
}
169167

170168
/**

0 commit comments

Comments
 (0)