diff --git a/test/embedded/Makefile b/test/embedded/Makefile index feabc78ab..d812847e2 100644 --- a/test/embedded/Makefile +++ b/test/embedded/Makefile @@ -62,6 +62,7 @@ all: build-coverage/embedded_test build-asan/embedded_test \ build-coverage/btstack_util_test build-asan/btstack_util_test \ build-coverage/l2cap_le_signaling_test build-asan/l2cap_le_signaling_test \ build-coverage/hci_cmd_test build-asan/hci_cmd_test \ + build-coverage/hci_dump_test build-asan/hci_dump_test \ build-coverage/freertos_test build-asan/freertos_test \ build-%: @@ -115,6 +116,11 @@ build-coverage/hci_cmd_test: ${COMMON_OBJ_COVERAGE} build-coverage/hci_cmd_test. build-asan/hci_cmd_test: ${COMMON_OBJ_ASAN} build-asan/hci_cmd_test.o | build-asan ${CC} $^ ${LDFLAGS_ASAN} -o $@ +build-coverage/hci_dump_test: ${COMMON_OBJ_COVERAGE} build-coverage/hci_dump_test.o build-coverage/hci_dump.o | build-coverage + ${CC} $^ ${LDFLAGS_COVERAGE} -o $@ + +build-asan/hci_dump_test: ${COMMON_OBJ_ASAN} build-asan/hci_dump_test.o build-asan/hci_dump.o | build-asan + ${CC} $^ ${LDFLAGS_ASAN} -o $@ test: all build-asan/embedded_test @@ -123,6 +129,7 @@ test: all build-asan/btstack_util_test build-asan/l2cap_le_signaling_test build-asan/hci_cmd_test + build-asan/hci_dump_test coverage: all rm -f build-coverage/*.gcda @@ -132,6 +139,7 @@ coverage: all build-coverage/btstack_util_test build-coverage/l2cap_le_signaling_test build-coverage/hci_cmd_test + build-coverage/hci_dump_test clean: rm -rf build-coverage build-asan *.dSYM diff --git a/test/embedded/hci_dump_test.c b/test/embedded/hci_dump_test.c new file mode 100644 index 000000000..bf536c169 --- /dev/null +++ b/test/embedded/hci_dump_test.c @@ -0,0 +1,109 @@ +#include "CppUTest/TestHarness.h" +#include "CppUTest/CommandLineTestRunner.h" + +#include "hci_dump.h" +#include "btstack_util.h" + +static void hci_dump_embedded_stdout_log_packet(uint8_t packet_type, uint8_t in, uint8_t *packet, uint16_t len){ +} +static void hci_dump_embedded_stdout_log_message(const char * format, va_list argptr){ +} +static void hci_dump_embedded_stdout_reset(void){} + +static const hci_dump_t hci_dump_instance_without_reset = { + // void (*reset)(void); + NULL, + // void (*log_packet)(uint8_t packet_type, uint8_t in, uint8_t *packet, uint16_t len); + &hci_dump_embedded_stdout_log_packet, + // void (*log_message)(int log_level, const char * format, va_list argptr); + &hci_dump_embedded_stdout_log_message, +}; + +static const hci_dump_t hci_dump_instance_with_reset = { + // void (*reset)(void); + &hci_dump_embedded_stdout_reset, + // void (*log_packet)(uint8_t packet_type, uint8_t in, uint8_t *packet, uint16_t len); + &hci_dump_embedded_stdout_log_packet, + // void (*log_message)(int log_level, const char * format, va_list argptr); + &hci_dump_embedded_stdout_log_message, +}; + +TEST_GROUP(hci_dump){ + void setup(void){ + } + void teardown(void){ + } +}; + +TEST(hci_dump, init){ + hci_dump_init(&hci_dump_instance_without_reset); + hci_dump_set_max_packets(0); + hci_dump_enable_packet_log(false); +} + +TEST(hci_dump, log_level){ + hci_dump_init(&hci_dump_instance_without_reset); + hci_dump_log(HCI_DUMP_LOG_LEVEL_DEBUG - 1, ""); + hci_dump_log(HCI_DUMP_LOG_LEVEL_ERROR + 1, ""); + hci_dump_enable_log_level(HCI_DUMP_LOG_LEVEL_DEBUG - 1, 0); + hci_dump_enable_log_level(HCI_DUMP_LOG_LEVEL_ERROR + 1, 0); + hci_dump_enable_log_level(HCI_DUMP_LOG_LEVEL_ERROR, 1); +} + +TEST(hci_dump, log_not_enabled){ + hci_dump_init(&hci_dump_instance_without_reset); + hci_dump_enable_packet_log(false); + hci_dump_packet(0, 0, NULL, 0); +} + +TEST(hci_dump, log_reset){ + hci_dump_init(&hci_dump_instance_without_reset); + hci_dump_set_max_packets(1); + hci_dump_packet(0, 0, NULL, 0); + hci_dump_packet(0, 0, NULL, 0); +} + +TEST(hci_dump, log_max_packets){ + hci_dump_init(&hci_dump_instance_with_reset); + hci_dump_set_max_packets(1); + hci_dump_packet(0, 0, NULL, 0); + hci_dump_packet(0, 0, NULL, 0); +} + +TEST(hci_dump, header_setup_packetlogger){ + uint8_t buffer[100]; + hci_dump_setup_header_packetlogger(buffer, 0, 0, HCI_COMMAND_DATA_PACKET, 0, 0); + hci_dump_setup_header_packetlogger(buffer, 0, 0, HCI_ACL_DATA_PACKET, 0, 0); + hci_dump_setup_header_packetlogger(buffer, 0, 0, HCI_SCO_DATA_PACKET, 0, 0); + hci_dump_setup_header_packetlogger(buffer, 0, 0, HCI_EVENT_PACKET, 0, 0); + hci_dump_setup_header_packetlogger(buffer, 0, 0, HCI_COMMAND_DATA_PACKET, 0, 0); + hci_dump_setup_header_packetlogger(buffer, 0, 0, LOG_MESSAGE_PACKET, 0, 0); + hci_dump_setup_header_packetlogger(buffer, 0, 0, 0x77, 0, 0); +} + +TEST(hci_dump, header_setup_bluez){ + uint8_t buffer[100]; + hci_dump_setup_header_bluez(buffer, 0, 0, HCI_COMMAND_DATA_PACKET, 0, 0); + hci_dump_setup_header_bluez(buffer, 0, 0, HCI_ACL_DATA_PACKET, 0, 0); + hci_dump_setup_header_bluez(buffer, 0, 0, HCI_SCO_DATA_PACKET, 0, 0); + hci_dump_setup_header_bluez(buffer, 0, 0, HCI_EVENT_PACKET, 0, 0); + hci_dump_setup_header_bluez(buffer, 0, 0, HCI_COMMAND_DATA_PACKET, 0, 0); + hci_dump_setup_header_bluez(buffer, 0, 0, LOG_MESSAGE_PACKET, 0, 0); + hci_dump_setup_header_bluez(buffer, 0, 0, 0x77, 0, 0); +} + +TEST(hci_dump, header_setup_btsnoop){ + uint8_t buffer[100]; + hci_dump_setup_header_btsnoop(buffer, 0, 0, 0, HCI_COMMAND_DATA_PACKET, 0, 0); + hci_dump_setup_header_btsnoop(buffer, 0, 0, 0, HCI_ACL_DATA_PACKET, 0, 0); + hci_dump_setup_header_btsnoop(buffer, 0, 0, 0, HCI_ACL_DATA_PACKET, 1, 0); + hci_dump_setup_header_btsnoop(buffer, 0, 0, 0, HCI_SCO_DATA_PACKET, 0, 0); + hci_dump_setup_header_btsnoop(buffer, 0, 0, 0, HCI_EVENT_PACKET, 0, 0); + hci_dump_setup_header_btsnoop(buffer, 0, 0, 0, HCI_COMMAND_DATA_PACKET, 0, 0); + hci_dump_setup_header_btsnoop(buffer, 0, 0, 0, LOG_MESSAGE_PACKET, 0, 0); + hci_dump_setup_header_btsnoop(buffer, 0, 0, 0, 0x77, 0, 0); +} + +int main (int argc, const char * argv[]){ + return CommandLineTestRunner::RunAllTests(argc, argv); +}