pull/11195/head
int_szyk 2019-07-31 12:27:41 +02:00 committed by Martin Kojtal
parent 50edb3d920
commit 2e7c7f754f
4 changed files with 57 additions and 45 deletions

View File

@ -460,4 +460,4 @@ int main(void)
{ {
return !Harness::run(specification); return !Harness::run(specification);
} }
#endif // ((!defined(TARGET_PSA)) || (!defined(MBEDTLS_PSA_CRYPTO_C))) #endif // ((!defined(TARGET_PSA)) || (!defined(MBEDTLS_PSA_CRYPTO_C)))

View File

@ -84,13 +84,13 @@ int main()
} }
#endif // (MBED_CONF_TARGET_NETWORK_DEFAULT_INTERFACE_TYPE == WIFI) && \ #endif // (MBED_CONF_TARGET_NETWORK_DEFAULT_INTERFACE_TYPE == WIFI) && \
!defined(TARGET_UBLOX_EVK_ODIN_W2) && \ !defined(TARGET_UBLOX_EVK_ODIN_W2) && \
!defined(TARGET_REALTEK_RTL8195AM) && \ !defined(TARGET_REALTEK_RTL8195AM) && \
!defined(TARGET_MTB_ADV_WISE_1530) && \ !defined(TARGET_MTB_ADV_WISE_1530) && \
!defined(TARGET_MTB_USI_WM_BN_BM_22) && \ !defined(TARGET_MTB_USI_WM_BN_BM_22) && \
!defined(TARGET_MTB_MXCHIP_EMW3166) && \ !defined(TARGET_MTB_MXCHIP_EMW3166) && \
!defined(TARGET_MTB_UBLOX_ODIN_W2) && \ !defined(TARGET_MTB_UBLOX_ODIN_W2) && \
!defined(TARGET_UNO_91H) !defined(TARGET_UNO_91H)
#endif // MBED_CONF_TARGET_NETWORK_DEFAULT_INTERFACE_TYPE != ETHERNET && MBED_CONF_TARGET_NETWORK_DEFAULT_INTERFACE_TYPE != WIFI #endif // MBED_CONF_TARGET_NETWORK_DEFAULT_INTERFACE_TYPE != ETHERNET && MBED_CONF_TARGET_NETWORK_DEFAULT_INTERFACE_TYPE != WIFI
#endif // !defined(MBED_CONF_APP_ECHO_SERVER) || !defined(MBED_CONF_APP_ECHO_SERVER_TRACE) || !defined(MBED_CONF_APP_WIFI_SCAN) #endif // !defined(MBED_CONF_APP_ECHO_SERVER) || !defined(MBED_CONF_APP_ECHO_SERVER_TRACE) || !defined(MBED_CONF_APP_WIFI_SCAN)

View File

@ -93,17 +93,17 @@ int main()
return !Harness::run(specification); return !Harness::run(specification);
} }
#endif // defined(MBED_CONF_APP_WIFI_UNSECURE_SSID) && \ #endif // defined(MBED_CONF_APP_WIFI_UNSECURE_SSID) && \
!defined(MBED_CONF_APP_AP_MAC_UNSECURE) || \ !defined(MBED_CONF_APP_AP_MAC_UNSECURE) || \
!defined(MBED_CONF_APP_MAX_SCAN_SIZE) || \ !defined(MBED_CONF_APP_MAX_SCAN_SIZE) || \
!defined(MBED_CONF_APP_WIFI_CH_UNSECURE) || \ !defined(MBED_CONF_APP_WIFI_CH_UNSECURE) || \
!defined(MBED_CONF_APP_WIFI_UNSECURE_SSID) !defined(MBED_CONF_APP_WIFI_UNSECURE_SSID)
#endif // defined(MBED_CONF_APP_WIFI_SECURE_SSID) && \ #endif // defined(MBED_CONF_APP_WIFI_SECURE_SSID) && \
(!defined(MBED_CONF_APP_AP_MAC_SECURE) || \ (!defined(MBED_CONF_APP_AP_MAC_SECURE) || \
!defined(MBED_CONF_APP_MAX_SCAN_SIZE) || \ !defined(MBED_CONF_APP_MAX_SCAN_SIZE) || \
!defined(MBED_CONF_APP_WIFI_CH_SECURE) || \ !defined(MBED_CONF_APP_WIFI_CH_SECURE) || \
!defined(MBED_CONF_APP_WIFI_PASSWORD) || \ !defined(MBED_CONF_APP_WIFI_PASSWORD) || \
!defined(MBED_CONF_APP_WIFI_SECURE_SSID) || \ !defined(MBED_CONF_APP_WIFI_SECURE_SSID) || \
!defined MBED_CONF_APP_WIFI_SECURE_PROTOCOL) !defined MBED_CONF_APP_WIFI_SECURE_PROTOCOL)
#endif //!defined(MBED_CONF_TARGET_NETWORK_DEFAULT_INTERFACE_TYPE) || MBED_CONF_TARGET_NETWORK_DEFAULT_INTERFACE_TYPE != WIFI #endif //!defined(MBED_CONF_TARGET_NETWORK_DEFAULT_INTERFACE_TYPE) || MBED_CONF_TARGET_NETWORK_DEFAULT_INTERFACE_TYPE != WIFI

View File

@ -31,7 +31,7 @@ using namespace utest::v1;
using ble::vendor::cordio::CordioHCIDriver; using ble::vendor::cordio::CordioHCIDriver;
using ble::vendor::cordio::CordioHCITransportDriver; using ble::vendor::cordio::CordioHCITransportDriver;
extern ble::vendor::cordio::CordioHCIDriver& ble_cordio_get_hci_driver(); extern ble::vendor::cordio::CordioHCIDriver &ble_cordio_get_hci_driver();
#if CORDIO_ZERO_COPY_HCI #if CORDIO_ZERO_COPY_HCI
#error [NOT_SUPPORTED] Test not relevant for zero copy hci. #error [NOT_SUPPORTED] Test not relevant for zero copy hci.
@ -42,15 +42,18 @@ namespace vendor {
namespace cordio { namespace cordio {
struct CordioHCIHook { struct CordioHCIHook {
static CordioHCIDriver& get_driver() { static CordioHCIDriver &get_driver()
{
return ble_cordio_get_hci_driver(); return ble_cordio_get_hci_driver();
} }
static CordioHCITransportDriver& get_transport_driver() { static CordioHCITransportDriver &get_transport_driver()
{
return get_driver()._transport_driver; return get_driver()._transport_driver;
} }
static void set_data_received_handler(void (*handler)(uint8_t*, uint8_t)) { static void set_data_received_handler(void (*handler)(uint8_t *, uint8_t))
{
get_transport_driver().set_data_received_handler(handler); get_transport_driver().set_data_received_handler(handler);
} }
}; };
@ -75,22 +78,24 @@ static const uint32_t WAITING_FLAGS =
static rtos::EventFlags event_channel; static rtos::EventFlags event_channel;
static void signal_flag(uint32_t flag) { static void signal_flag(uint32_t flag)
{
if (!(event_channel.get() & flag)) { if (!(event_channel.get() & flag)) {
event_channel.set(flag); event_channel.set(flag);
} }
} }
uint32_t wait_for_event() { uint32_t wait_for_event()
{
// clear reception flags // clear reception flags
uint32_t flags = event_channel.get(); uint32_t flags = event_channel.get();
event_channel.clear(flags & ~RESET_RECEIVED_FLAG); event_channel.clear(flags & ~RESET_RECEIVED_FLAG);
return event_channel.wait_any( return event_channel.wait_any(
WAITING_FLAGS, WAITING_FLAGS,
/* timeout */ RESET_COMMAND_TIMEOUT, /* timeout */ RESET_COMMAND_TIMEOUT,
/* clear */ false /* clear */ false
); );
} }
// //
@ -104,7 +109,8 @@ uint32_t wait_for_event() {
#define RESET_PACKET_LENGTH (1 + HCI_EVT_HDR_LEN + RESET_PARAMETER_LENGTH) #define RESET_PACKET_LENGTH (1 + HCI_EVT_HDR_LEN + RESET_PARAMETER_LENGTH)
#define RESET_STATUS_INDEX 6 #define RESET_STATUS_INDEX 6
static bool is_reset_event(const uint8_t* data, uint16_t len) { static bool is_reset_event(const uint8_t *data, uint16_t len)
{
if (len != RESET_PACKET_LENGTH) { if (len != RESET_PACKET_LENGTH) {
return false; return false;
} }
@ -135,7 +141,8 @@ static bool is_reset_event(const uint8_t* data, uint16_t len) {
return true; return true;
} }
static void hci_driver_rx_reset_handler(uint8_t* data, uint8_t len) { static void hci_driver_rx_reset_handler(uint8_t *data, uint8_t len)
{
enum packet_state_t { enum packet_state_t {
WAITING_FOR_PACKET_TYPE, WAITING_FOR_PACKET_TYPE,
WAITING_FOR_HEADER_COMPLETE, WAITING_FOR_HEADER_COMPLETE,
@ -166,19 +173,20 @@ static void hci_driver_rx_reset_handler(uint8_t* data, uint8_t len) {
case WAITING_FOR_HEADER_COMPLETE: case WAITING_FOR_HEADER_COMPLETE:
case WAITING_FOR_DATA_COMPLETE: { case WAITING_FOR_DATA_COMPLETE: {
uint16_t step = std::min((uint16_t) len, (uint16_t) (packet_length - position)); uint16_t step = std::min((uint16_t) len, (uint16_t)(packet_length - position));
memcpy(packet + position, data, step); memcpy(packet + position, data, step);
position+= step; position += step;
data += step; data += step;
len -= step; len -= step;
if (reception_state == WAITING_FOR_HEADER_COMPLETE && if (reception_state == WAITING_FOR_HEADER_COMPLETE &&
position == packet_length position == packet_length
) { ) {
reception_state = WAITING_FOR_DATA_COMPLETE; reception_state = WAITING_FOR_DATA_COMPLETE;
packet_length += packet[HCI_EVT_HDR_LEN]; packet_length += packet[HCI_EVT_HDR_LEN];
} }
} break; }
break;
// dead end; we never exit from the error state; just asignal it again. // dead end; we never exit from the error state; just asignal it again.
@ -192,7 +200,7 @@ static void hci_driver_rx_reset_handler(uint8_t* data, uint8_t len) {
} }
bool packet_complete = (reception_state == WAITING_FOR_DATA_COMPLETE) && bool packet_complete = (reception_state == WAITING_FOR_DATA_COMPLETE) &&
(position == packet_length); (position == packet_length);
if (packet_complete) { if (packet_complete) {
if (is_reset_event(packet, packet_length)) { if (is_reset_event(packet, packet_length)) {
@ -217,9 +225,10 @@ static uint8_t reset_cmd[] = {
0 // parameter length 0 // parameter length
}; };
void test_reset_command() { void test_reset_command()
CordioHCIDriver& driver = CordioHCIHook::get_driver(); {
CordioHCITransportDriver& transport_driver = CordioHCIHook::get_transport_driver(); CordioHCIDriver &driver = CordioHCIHook::get_driver();
CordioHCITransportDriver &transport_driver = CordioHCIHook::get_transport_driver();
driver.initialize(); driver.initialize();
@ -235,9 +244,10 @@ void test_reset_command() {
#define EXPECTED_CONSECUTIVE_RESET 10 #define EXPECTED_CONSECUTIVE_RESET 10
void test_multiple_reset_command() { void test_multiple_reset_command()
CordioHCIDriver& driver = CordioHCIHook::get_driver(); {
CordioHCITransportDriver& transport_driver = CordioHCIHook::get_transport_driver(); CordioHCIDriver &driver = CordioHCIHook::get_driver();
CordioHCITransportDriver &transport_driver = CordioHCIHook::get_transport_driver();
driver.initialize(); driver.initialize();
@ -260,14 +270,16 @@ Case cases[] = {
Case("Test multiple reset commands", test_multiple_reset_command) Case("Test multiple reset commands", test_multiple_reset_command)
}; };
utest::v1::status_t greentea_test_setup(const size_t number_of_cases) { utest::v1::status_t greentea_test_setup(const size_t number_of_cases)
{
GREENTEA_SETUP(15, "default_auto"); GREENTEA_SETUP(15, "default_auto");
return verbose_test_setup_handler(number_of_cases); return verbose_test_setup_handler(number_of_cases);
} }
Specification specification(greentea_test_setup, cases, greentea_test_teardown_handler); Specification specification(greentea_test_setup, cases, greentea_test_teardown_handler);
int main() { int main()
{
return !Harness::run(specification); return !Harness::run(specification);
} }
#endif // CORDIO_ZERO_COPY_HCI #endif // CORDIO_ZERO_COPY_HCI