mirror of
https://github.com/RIOT-OS/RIOT.git
synced 2025-01-17 05:12:57 +01:00
pkg/lora-serialization: Add lora serialization external package
tests/pkg_lora-serialization: Add test application
This commit is contained in:
parent
bc667ec3e0
commit
f2bda2bb69
11
pkg/lora-serialization/Makefile
Normal file
11
pkg/lora-serialization/Makefile
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
PKG_NAME=lora-serialization
|
||||||
|
PKG_URL=https://github.com/leandrolanzieri/lora-serialization
|
||||||
|
PKG_VERSION=90e49e4acd119f20ad2ad7b98751b88b08f564d7
|
||||||
|
PKG_LICENSE=LGPLv2.1
|
||||||
|
|
||||||
|
.PHONY: all
|
||||||
|
|
||||||
|
all: git-download
|
||||||
|
"$(MAKE)" -C $(PKG_BUILDDIR) -f $(CURDIR)/Makefile.$(PKG_NAME)
|
||||||
|
|
||||||
|
include $(RIOTBASE)/pkg/pkg.mk
|
1
pkg/lora-serialization/Makefile.include
Normal file
1
pkg/lora-serialization/Makefile.include
Normal file
@ -0,0 +1 @@
|
|||||||
|
INCLUDES += -I$(PKGDIRBASE)/lora-serialization
|
3
pkg/lora-serialization/Makefile.lora-serialization
Normal file
3
pkg/lora-serialization/Makefile.lora-serialization
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
MODULE = lora-serialization
|
||||||
|
|
||||||
|
include $(RIOTBASE)/Makefile.base
|
9
pkg/lora-serialization/doc.txt
Normal file
9
pkg/lora-serialization/doc.txt
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
/**
|
||||||
|
* @defgroup pkg_lora-serialization Lora Serialization
|
||||||
|
* @ingroup pkg
|
||||||
|
* @ingroup sys
|
||||||
|
* @brief Provides a RIOT support for Lora Serialization format
|
||||||
|
*
|
||||||
|
* For more details on the format see
|
||||||
|
* [this](https://github.com/thesolarnomad/lora-serialization).
|
||||||
|
*/
|
9
tests/pkg_lora-serialization/Makefile
Normal file
9
tests/pkg_lora-serialization/Makefile
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
include ../Makefile.tests_common
|
||||||
|
|
||||||
|
USEPKG += lora-serialization
|
||||||
|
|
||||||
|
TEST_ON_CI_WHITELIST += all
|
||||||
|
include $(RIOTBASE)/Makefile.include
|
||||||
|
|
||||||
|
test:
|
||||||
|
tests/01-run.py
|
127
tests/pkg_lora-serialization/main.c
Normal file
127
tests/pkg_lora-serialization/main.c
Normal file
@ -0,0 +1,127 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2018 HAW Hamburg
|
||||||
|
*
|
||||||
|
* This file is subject to the terms and conditions of the GNU Lesser
|
||||||
|
* General Public License v2.1. See the file LICENSE in the top level
|
||||||
|
* directory for more details.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ingroup tests
|
||||||
|
* @{
|
||||||
|
*
|
||||||
|
* @file
|
||||||
|
* @brief lora-serialization tests
|
||||||
|
*
|
||||||
|
* @author Leandro Lanzieri <leandro.lanzieri@haw-hamburg.de>
|
||||||
|
* @author Jose Ignacio Alamos <jose.alamos@haw-hamburg.de>
|
||||||
|
*
|
||||||
|
* @}
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <string.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include "lora_serialization.h"
|
||||||
|
|
||||||
|
#if defined(BOARD_NATIVE) && !defined(__clang__)
|
||||||
|
#define TEST_01_EXPECTED { 0x1f, 0x4c, 0x0e, 0x27 }
|
||||||
|
#define TEST_02_EXPECTED { 0x65, 0xa6, 0xfa, 0xfd, \
|
||||||
|
0x6a, 0x24, 0x04, 0x09, \
|
||||||
|
0x1d, 0x4b, 0x7a, 0x57 }
|
||||||
|
#else
|
||||||
|
#define TEST_01_EXPECTED { 0x1f, 0x4c, 0x0f, 0x27 }
|
||||||
|
#define TEST_02_EXPECTED { 0x64, 0xa6, 0xfa, 0xfd, \
|
||||||
|
0x6a, 0x24, 0x04, 0x09, \
|
||||||
|
0x1d, 0x4b, 0x7a, 0x57 }
|
||||||
|
#endif
|
||||||
|
|
||||||
|
uint8_t test01Expected[] = TEST_01_EXPECTED;
|
||||||
|
uint8_t test02Expected[] = TEST_02_EXPECTED;
|
||||||
|
|
||||||
|
static void print_buffer(const uint8_t *buffer, size_t len)
|
||||||
|
{
|
||||||
|
for (uint8_t i = 0; i < len; i++) {
|
||||||
|
printf(" %02x", buffer[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Test 1: Add temperature and humidity */
|
||||||
|
static void test01(lora_serialization_t *serialization)
|
||||||
|
{
|
||||||
|
puts("Test 1");
|
||||||
|
puts("Temperature and humidity");
|
||||||
|
puts("---------------------------------");
|
||||||
|
lora_serialization_reset(serialization); // Always reset
|
||||||
|
|
||||||
|
puts("- Writing temperature: 80.12");
|
||||||
|
lora_serialization_write_temperature(serialization, 80.12);
|
||||||
|
|
||||||
|
puts("- Writing humidity: 99.99");
|
||||||
|
lora_serialization_write_humidity(serialization, 99.99);
|
||||||
|
|
||||||
|
printf("- Encoded: ");
|
||||||
|
print_buffer(serialization->buffer,
|
||||||
|
LORA_SERIALIZATION_TEMPERATURE_SIZE +
|
||||||
|
LORA_SERIALIZATION_HUMIDITY_SIZE);
|
||||||
|
puts("");
|
||||||
|
|
||||||
|
printf("- Expected:");
|
||||||
|
print_buffer(test01Expected, sizeof(test01Expected));
|
||||||
|
puts("");
|
||||||
|
puts("---------------------------------");
|
||||||
|
|
||||||
|
if (memcmp(serialization->buffer, test01Expected,
|
||||||
|
sizeof(test01Expected)) != 0) {
|
||||||
|
puts("FAILED");
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
puts("SUCCESS");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Test 2: Add GPS coordinates and unix time */
|
||||||
|
static void test02(lora_serialization_t *serialization)
|
||||||
|
{
|
||||||
|
puts("Test 2");
|
||||||
|
puts("Coordinates and unix time");
|
||||||
|
puts("---------------------------------");
|
||||||
|
lora_serialization_reset(serialization); // Always reset
|
||||||
|
|
||||||
|
puts("- Writing coordinates: -33.905052, 151.26641");
|
||||||
|
lora_serialization_write_coordinates(serialization, -33.905052, 151.26641);
|
||||||
|
|
||||||
|
puts("- Writing unix time: 1467632413");
|
||||||
|
lora_serialization_write_unix_time(serialization, 1467632413);
|
||||||
|
|
||||||
|
printf("- Encoded: ");
|
||||||
|
print_buffer(serialization->buffer,
|
||||||
|
LORA_SERIALIZATION_GPS_SIZE +
|
||||||
|
LORA_SERIALIZATION_UNIX_TIME_SIZE);
|
||||||
|
puts("");
|
||||||
|
|
||||||
|
printf("- Expected:");
|
||||||
|
print_buffer(test02Expected, sizeof(test02Expected));
|
||||||
|
puts("");
|
||||||
|
puts("---------------------------------");
|
||||||
|
|
||||||
|
if (memcmp(serialization->buffer, test02Expected,
|
||||||
|
sizeof(test02Expected)) != 0) {
|
||||||
|
puts("FAILED");
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
puts("SUCCESS");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
lora_serialization_t serialization;
|
||||||
|
|
||||||
|
puts("Lora Serialization test\n");
|
||||||
|
|
||||||
|
test01(&serialization);
|
||||||
|
puts("");
|
||||||
|
test02(&serialization);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
16
tests/pkg_lora-serialization/tests/01-run.py
Executable file
16
tests/pkg_lora-serialization/tests/01-run.py
Executable file
@ -0,0 +1,16 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
|
import sys
|
||||||
|
from testrunner import run
|
||||||
|
|
||||||
|
NB_TESTS = 2
|
||||||
|
|
||||||
|
|
||||||
|
def testfunc(child):
|
||||||
|
for test in range(NB_TESTS):
|
||||||
|
child.expect_exact('Test {}'.format(test + 1))
|
||||||
|
child.expect('SUCCESS')
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
sys.exit(run(testfunc))
|
Loading…
Reference in New Issue
Block a user