Skip to content

Commit f334bd7

Browse files
committed
Sharing greentea-client's RawSerial with utest and UNITY.
This commit allows the linker to remove the reference to the RawSerial object if it not used in the application. This way it only is brought in for tests.
1 parent dd8060b commit f334bd7

File tree

7 files changed

+40
-57
lines changed

7 files changed

+40
-57
lines changed
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
#ifndef GREENTEA_SERIAL_H
2+
#define GREENTEA_SERIAL_H
3+
4+
#include "RawSerial.h"
5+
#include "SingletonPtr.h"
6+
7+
class GreenteaSerial : public mbed::RawSerial {
8+
public:
9+
GreenteaSerial();
10+
};
11+
12+
extern SingletonPtr<GreenteaSerial> greentea_serial;
13+
#endif
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
#include "greentea-client/greentea_serial.h"
2+
3+
SingletonPtr<GreenteaSerial> greentea_serial;
4+
5+
GreenteaSerial::GreenteaSerial() : mbed::RawSerial(USBTX, USBRX) {};

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

Lines changed: 17 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
#include <string.h>
2121
#include "mbed.h"
2222
#include "greentea-client/test_env.h"
23+
#include "greentea-client/greentea_serial.h"
2324

2425

2526
/**
@@ -57,13 +58,6 @@ static void greentea_notify_hosttest(const char *);
5758
static void greentea_notify_completion(const int);
5859
static void greentea_notify_version();
5960

60-
/**
61-
* Rawserial object used to provide direct, raw serial communications
62-
* between the target and the host.
63-
*/
64-
RawSerial greentea_serial(USBTX, USBRX);
65-
66-
6761
/** \brief Handshake with host and send setup data (timeout and host test name)
6862
* \details This function will send preamble to master.
6963
* After host test name is received master will invoke host test script
@@ -193,8 +187,8 @@ void greentea_notify_coverage_end() {
193187
*/
194188
inline void greentea_write_preamble()
195189
{
196-
greentea_serial.putc('{');
197-
greentea_serial.putc('{');
190+
greentea_serial->putc('{');
191+
greentea_serial->putc('{');
198192
}
199193

200194
/**
@@ -211,9 +205,9 @@ inline void greentea_write_preamble()
211205
*/
212206
inline void greentea_write_postamble()
213207
{
214-
greentea_serial.putc('}');
215-
greentea_serial.putc('}');
216-
greentea_serial.putc('\n');
208+
greentea_serial->putc('}');
209+
greentea_serial->putc('}');
210+
greentea_serial->putc('\n');
217211
}
218212

219213
/**
@@ -229,7 +223,7 @@ inline void greentea_write_postamble()
229223
inline void greentea_write_string(const char *str)
230224
{
231225
while (*str != '\0') {
232-
greentea_serial.putc(*str);
226+
greentea_serial->putc(*str);
233227
str ++;
234228
}
235229
}
@@ -255,7 +249,7 @@ inline void greentea_write_int(const int val)
255249
unsigned int i = 0;
256250
sprintf(intval, "%d", val);
257251
while (intval[i] != '\0') {
258-
greentea_serial.putc(intval[i]);
252+
greentea_serial->putc(intval[i]);
259253
i++;
260254
}
261255
}
@@ -275,7 +269,7 @@ void greentea_send_kv(const char *key, const char *val) {
275269
if (key && val) {
276270
greentea_write_preamble();
277271
greentea_write_string(key);
278-
greentea_serial.putc(';');
272+
greentea_serial->putc(';');
279273
greentea_write_string(val);
280274
greentea_write_postamble();
281275
}
@@ -298,7 +292,7 @@ void greentea_send_kv(const char *key, const int val) {
298292
if (key) {
299293
greentea_write_preamble();
300294
greentea_write_string(key);
301-
greentea_serial.putc(';');
295+
greentea_serial->putc(';');
302296
greentea_write_int(val);
303297
greentea_write_postamble();
304298
}
@@ -322,9 +316,9 @@ void greentea_send_kv(const char *key, const char *val, const int result) {
322316
if (key) {
323317
greentea_write_preamble();
324318
greentea_write_string(key);
325-
greentea_serial.putc(';');
319+
greentea_serial->putc(';');
326320
greentea_write_string(val);
327-
greentea_serial.putc(';');
321+
greentea_serial->putc(';');
328322
greentea_write_int(result);
329323
greentea_write_postamble();
330324

@@ -355,11 +349,11 @@ void greentea_send_kv(const char *key, const char *val, const int passes, const
355349
if (key) {
356350
greentea_write_preamble();
357351
greentea_write_string(key);
358-
greentea_serial.putc(';');
352+
greentea_serial->putc(';');
359353
greentea_write_string(val);
360-
greentea_serial.putc(';');
354+
greentea_serial->putc(';');
361355
greentea_write_int(passes);
362-
greentea_serial.putc(';');
356+
greentea_serial->putc(';');
363357
greentea_write_int(failures);
364358
greentea_write_postamble();
365359
}
@@ -388,9 +382,9 @@ void greentea_send_kv(const char *key, const int passes, const int failures) {
388382
if (key) {
389383
greentea_write_preamble();
390384
greentea_write_string(key);
391-
greentea_serial.putc(';');
385+
greentea_serial->putc(';');
392386
greentea_write_int(passes);
393-
greentea_serial.putc(';');
387+
greentea_serial->putc(';');
394388
greentea_write_int(failures);
395389
greentea_write_postamble();
396390
}

features/frameworks/utest/source/unity_handler.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
#include "utest/utest_harness.h"
2020
#include "utest/utest_stack_trace.h"
2121
#include "utest/unity_handler.h"
22-
#include "utest/utest_serial.h"
22+
#include "greentea-client/greentea_serial.h"
2323

2424
void utest_unity_assert_failure(void)
2525
{
@@ -35,7 +35,7 @@ void utest_unity_ignore_failure(void)
3535

3636
void utest_safe_putc(int chr)
3737
{
38-
utest_serial.putc(chr);
38+
greentea_serial->putc(chr);
3939
}
4040

4141

features/frameworks/utest/source/utest_serial.cpp

Lines changed: 0 additions & 28 deletions
This file was deleted.

features/frameworks/utest/utest/utest_serial.h

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,8 @@
1919
#ifndef UTEST_SERIAL_H
2020
#define UTEST_SERIAL_H
2121

22-
#include "mbed.h"
22+
#include "greentea-client/greentea_serial.h"
2323

24-
extern RawSerial utest_serial;
25-
26-
#define utest_printf(...) utest_serial.printf(__VA_ARGS__)
24+
#define utest_printf(...) greentea_serial->printf(__VA_ARGS__)
2725

2826
#endif // UTEST_SERIAL_H

features/frameworks/utest/utest/utest_types.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
#include <stdbool.h>
2424
#include <stdio.h>
2525
#include "utest/utest_shim.h"
26+
#include "SingletonPtr.h"
2627

2728
namespace utest {
2829
namespace v1 {

0 commit comments

Comments
 (0)