Skip to content

Commit 8c66c5b

Browse files
author
Ari Parkkila
committed
Cellular: Fix ATHandler string handling
1 parent 9bfcb95 commit 8c66c5b

File tree

4 files changed

+30
-1
lines changed

4 files changed

+30
-1
lines changed

features/cellular/framework/AT/ATHandler.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -633,6 +633,9 @@ ssize_t ATHandler::read_string(char *buf, size_t size, bool read_even_stop_tag)
633633
}
634634
} else if (match_pos) {
635635
match_pos = 0;
636+
if (c == _stop_tag->tag[match_pos]) {
637+
match_pos++;
638+
}
636639
}
637640

638641
buf[len] = c;
@@ -1605,12 +1608,14 @@ void ATHandler::write_hex_string(char *str, size_t size)
16051608
return;
16061609
}
16071610

1611+
(void) write("\"", 1);
16081612
char hexbuf[2];
16091613
for (size_t i = 0; i < size; i++) {
16101614
hexbuf[0] = hex_values[((str[i]) >> 4) & 0x0F];
16111615
hexbuf[1] = hex_values[(str[i]) & 0x0F];
16121616
write(hexbuf, 2);
16131617
}
1618+
(void) write("\"", 1);
16141619
}
16151620

16161621
void ATHandler::set_baud(int baud_rate)

features/frameworks/greentea-client/greentea-client/greentea_serial.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,16 @@
88

99
#include "RawSerial.h"
1010
#include "SingletonPtr.h"
11+
#include "PlatformMutex.h"
1112

1213
class GreenteaSerial : public mbed::RawSerial {
1314
public:
1415
GreenteaSerial();
16+
void set_trace_mutex(PlatformMutex *trace_mutex);
17+
void lock_trace();
18+
void unlock_trace();
19+
private:
20+
PlatformMutex *_trace_mutex;
1521
};
1622

1723
extern SingletonPtr<GreenteaSerial> greentea_serial;

features/frameworks/greentea-client/source/greentea_serial.cpp

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@
1414

1515
SingletonPtr<GreenteaSerial> greentea_serial;
1616

17-
GreenteaSerial::GreenteaSerial() : mbed::RawSerial(USBTX, USBRX, MBED_CONF_PLATFORM_STDIO_BAUD_RATE) {
1817
#if CONSOLE_FLOWCONTROL == CONSOLE_FLOWCONTROL_RTS
1918
set_flow_control(SerialBase::RTS, STDIO_UART_RTS, NC);
2019
#elif CONSOLE_FLOWCONTROL == CONSOLE_FLOWCONTROL_CTS
@@ -24,4 +23,19 @@ GreenteaSerial::GreenteaSerial() : mbed::RawSerial(USBTX, USBRX, MBED_CONF_PLATF
2423
#endif
2524
}
2625

26+
void GreenteaSerial::set_trace_mutex(PlatformMutex *trace_mutex) {
27+
_trace_mutex = trace_mutex;
28+
}
29+
30+
void GreenteaSerial::lock_trace() {
31+
if (_trace_mutex) {
32+
_trace_mutex->lock();
33+
}
34+
}
35+
36+
void GreenteaSerial::unlock_trace() {
37+
if (_trace_mutex) {
38+
_trace_mutex->unlock();
39+
}
40+
}
2741
#endif

features/frameworks/greentea-client/source/greentea_test_env.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -221,6 +221,8 @@ void greentea_notify_coverage_end() {
221221
*/
222222
inline void greentea_write_preamble()
223223
{
224+
greentea_serial->lock_trace();
225+
224226
greentea_serial->putc('{');
225227
greentea_serial->putc('{');
226228
}
@@ -243,6 +245,8 @@ inline void greentea_write_postamble()
243245
greentea_serial->putc('}');
244246
greentea_serial->putc('\r');
245247
greentea_serial->putc('\n');
248+
249+
greentea_serial->unlock_trace();
246250
}
247251

248252
/**

0 commit comments

Comments
 (0)