Merge pull request #2455 from bridadan/share-greentea-serial-in-frameworks

Sharing greentea-client's RawSerial with utest and UNITY.
pull/2546/merge
Sam Grove 2016-08-26 09:56:23 -05:00 committed by GitHub
commit a7c7ceda0e
7 changed files with 40 additions and 57 deletions

View File

@ -0,0 +1,13 @@
#ifndef GREENTEA_SERIAL_H
#define GREENTEA_SERIAL_H
#include "RawSerial.h"
#include "SingletonPtr.h"
class GreenteaSerial : public mbed::RawSerial {
public:
GreenteaSerial();
};
extern SingletonPtr<GreenteaSerial> greentea_serial;
#endif

View File

@ -0,0 +1,5 @@
#include "greentea-client/greentea_serial.h"
SingletonPtr<GreenteaSerial> greentea_serial;
GreenteaSerial::GreenteaSerial() : mbed::RawSerial(USBTX, USBRX) {};

View File

@ -20,6 +20,7 @@
#include <string.h> #include <string.h>
#include "mbed.h" #include "mbed.h"
#include "greentea-client/test_env.h" #include "greentea-client/test_env.h"
#include "greentea-client/greentea_serial.h"
/** /**
@ -57,13 +58,6 @@ static void greentea_notify_hosttest(const char *);
static void greentea_notify_completion(const int); static void greentea_notify_completion(const int);
static void greentea_notify_version(); static void greentea_notify_version();
/**
* Rawserial object used to provide direct, raw serial communications
* between the target and the host.
*/
RawSerial greentea_serial(USBTX, USBRX);
/** \brief Handshake with host and send setup data (timeout and host test name) /** \brief Handshake with host and send setup data (timeout and host test name)
* \details This function will send preamble to master. * \details This function will send preamble to master.
* After host test name is received master will invoke host test script * After host test name is received master will invoke host test script
@ -193,8 +187,8 @@ void greentea_notify_coverage_end() {
*/ */
inline void greentea_write_preamble() inline void greentea_write_preamble()
{ {
greentea_serial.putc('{'); greentea_serial->putc('{');
greentea_serial.putc('{'); greentea_serial->putc('{');
} }
/** /**
@ -211,9 +205,9 @@ inline void greentea_write_preamble()
*/ */
inline void greentea_write_postamble() inline void greentea_write_postamble()
{ {
greentea_serial.putc('}'); greentea_serial->putc('}');
greentea_serial.putc('}'); greentea_serial->putc('}');
greentea_serial.putc('\n'); greentea_serial->putc('\n');
} }
/** /**
@ -229,7 +223,7 @@ inline void greentea_write_postamble()
inline void greentea_write_string(const char *str) inline void greentea_write_string(const char *str)
{ {
while (*str != '\0') { while (*str != '\0') {
greentea_serial.putc(*str); greentea_serial->putc(*str);
str ++; str ++;
} }
} }
@ -255,7 +249,7 @@ inline void greentea_write_int(const int val)
unsigned int i = 0; unsigned int i = 0;
sprintf(intval, "%d", val); sprintf(intval, "%d", val);
while (intval[i] != '\0') { while (intval[i] != '\0') {
greentea_serial.putc(intval[i]); greentea_serial->putc(intval[i]);
i++; i++;
} }
} }
@ -275,7 +269,7 @@ void greentea_send_kv(const char *key, const char *val) {
if (key && val) { if (key && val) {
greentea_write_preamble(); greentea_write_preamble();
greentea_write_string(key); greentea_write_string(key);
greentea_serial.putc(';'); greentea_serial->putc(';');
greentea_write_string(val); greentea_write_string(val);
greentea_write_postamble(); greentea_write_postamble();
} }
@ -298,7 +292,7 @@ void greentea_send_kv(const char *key, const int val) {
if (key) { if (key) {
greentea_write_preamble(); greentea_write_preamble();
greentea_write_string(key); greentea_write_string(key);
greentea_serial.putc(';'); greentea_serial->putc(';');
greentea_write_int(val); greentea_write_int(val);
greentea_write_postamble(); greentea_write_postamble();
} }
@ -322,9 +316,9 @@ void greentea_send_kv(const char *key, const char *val, const int result) {
if (key) { if (key) {
greentea_write_preamble(); greentea_write_preamble();
greentea_write_string(key); greentea_write_string(key);
greentea_serial.putc(';'); greentea_serial->putc(';');
greentea_write_string(val); greentea_write_string(val);
greentea_serial.putc(';'); greentea_serial->putc(';');
greentea_write_int(result); greentea_write_int(result);
greentea_write_postamble(); greentea_write_postamble();
@ -355,11 +349,11 @@ void greentea_send_kv(const char *key, const char *val, const int passes, const
if (key) { if (key) {
greentea_write_preamble(); greentea_write_preamble();
greentea_write_string(key); greentea_write_string(key);
greentea_serial.putc(';'); greentea_serial->putc(';');
greentea_write_string(val); greentea_write_string(val);
greentea_serial.putc(';'); greentea_serial->putc(';');
greentea_write_int(passes); greentea_write_int(passes);
greentea_serial.putc(';'); greentea_serial->putc(';');
greentea_write_int(failures); greentea_write_int(failures);
greentea_write_postamble(); greentea_write_postamble();
} }
@ -388,9 +382,9 @@ void greentea_send_kv(const char *key, const int passes, const int failures) {
if (key) { if (key) {
greentea_write_preamble(); greentea_write_preamble();
greentea_write_string(key); greentea_write_string(key);
greentea_serial.putc(';'); greentea_serial->putc(';');
greentea_write_int(passes); greentea_write_int(passes);
greentea_serial.putc(';'); greentea_serial->putc(';');
greentea_write_int(failures); greentea_write_int(failures);
greentea_write_postamble(); greentea_write_postamble();
} }

View File

@ -19,7 +19,7 @@
#include "utest/utest_harness.h" #include "utest/utest_harness.h"
#include "utest/utest_stack_trace.h" #include "utest/utest_stack_trace.h"
#include "utest/unity_handler.h" #include "utest/unity_handler.h"
#include "utest/utest_serial.h" #include "greentea-client/greentea_serial.h"
void utest_unity_assert_failure(void) void utest_unity_assert_failure(void)
{ {
@ -35,7 +35,7 @@ void utest_unity_ignore_failure(void)
void utest_safe_putc(int chr) void utest_safe_putc(int chr)
{ {
utest_serial.putc(chr); greentea_serial->putc(chr);
} }

View File

@ -1,28 +0,0 @@
/****************************************************************************
* Copyright (c) 2015, ARM Limited, All Rights Reserved
* SPDX-License-Identifier: Apache-2.0
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may
* not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
****************************************************************************
*/
#include "utest/utest_serial.h"
RawSerial utest_serial(USBTX, USBRX);
void utest_safe_putc(int chr)
{
utest_serial.putc(chr);
}

View File

@ -19,10 +19,8 @@
#ifndef UTEST_SERIAL_H #ifndef UTEST_SERIAL_H
#define UTEST_SERIAL_H #define UTEST_SERIAL_H
#include "mbed.h" #include "greentea-client/greentea_serial.h"
extern RawSerial utest_serial; #define utest_printf(...) greentea_serial->printf(__VA_ARGS__)
#define utest_printf(...) utest_serial.printf(__VA_ARGS__)
#endif // UTEST_SERIAL_H #endif // UTEST_SERIAL_H

View File

@ -23,6 +23,7 @@
#include <stdbool.h> #include <stdbool.h>
#include <stdio.h> #include <stdio.h>
#include "utest/utest_shim.h" #include "utest/utest_shim.h"
#include "SingletonPtr.h"
namespace utest { namespace utest {
namespace v1 { namespace v1 {