mirror of
https://github.com/RIOT-OS/RIOT.git
synced 2024-12-29 04:50:03 +01:00
fa0cf05d0a
Co-authored-by: Marian Buschsieweke <marian.buschsieweke@posteo.net>
119 lines
2.4 KiB
C
119 lines
2.4 KiB
C
/*
|
|
* Copyright (C) 2017 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 Check if the uMorse package builds.
|
|
*
|
|
* @author Sebastian Meiling <s@mlng.net>
|
|
* @}
|
|
*/
|
|
|
|
#include <stdio.h>
|
|
#include <string.h>
|
|
|
|
#include "board.h"
|
|
#include "led.h"
|
|
#include "ztimer.h"
|
|
#include "periph_conf.h"
|
|
|
|
#include "umorse.h"
|
|
#include "print.h"
|
|
|
|
#define UMORSE_MSLEEP(m) ztimer_sleep(ZTIMER_MSEC, m);
|
|
#define CODE_LEN (64U)
|
|
|
|
void blink_dit(void *args, uint8_t flags)
|
|
{
|
|
(void) args;
|
|
(void) flags;
|
|
|
|
LED0_ON;
|
|
UMORSE_MSLEEP(UMORSE_DELAY_DIT);
|
|
LED0_OFF;
|
|
}
|
|
|
|
void blink_dah(void *args, uint8_t flags)
|
|
{
|
|
(void) args;
|
|
(void) flags;
|
|
|
|
LED0_ON;
|
|
UMORSE_MSLEEP(UMORSE_DELAY_DAH);
|
|
LED0_OFF;
|
|
}
|
|
|
|
void blink_nil(void *args, uint8_t flags)
|
|
{
|
|
(void) args;
|
|
|
|
uint8_t cnt = flags & UMORSE_MASK_COUNT;
|
|
UMORSE_MSLEEP(cnt * UMORSE_DELAY_DIT);
|
|
}
|
|
|
|
static const umorse_out_t blink = {
|
|
.dit = blink_dit,
|
|
.dah = blink_dah,
|
|
.nil = blink_nil,
|
|
.params = NULL
|
|
};
|
|
|
|
static const umorse_out_t print = {
|
|
.dit = umorse_print_dit,
|
|
.dah = umorse_print_dah,
|
|
.nil = umorse_print_nil,
|
|
.params = NULL
|
|
};
|
|
|
|
static const char text[] = "Hello RIOT-OS!\nThis is uMorse.";
|
|
|
|
int test_umorse_out(void)
|
|
{
|
|
uint8_t code[CODE_LEN];
|
|
|
|
printf("> Translate text of length %" PRIuSIZE " into Morse code:\n\"%s\"\n",
|
|
strlen(text), text);
|
|
|
|
memset(code, 0, CODE_LEN);
|
|
printf("> using aligned encoding:\n");
|
|
int ret = umorse_encode_aligned(text, sizeof(text), code, sizeof(code));
|
|
if (ret < 0) {
|
|
return 1;
|
|
}
|
|
umorse_output(&print, code, ret, 0x0);
|
|
printf("> encoded length=%d\n", ret);
|
|
|
|
memset(code, 0, CODE_LEN);
|
|
printf("> using compact encoding:\n");
|
|
ret = umorse_encode_compact(text, sizeof(text), code, sizeof(code));
|
|
if (ret < 0) {
|
|
return 2;
|
|
}
|
|
umorse_output(&print, code, ret, UMORSE_FLAG_NODELAY);
|
|
umorse_output(&blink, code, ret, 0x0);
|
|
printf("> encoded length=%d\n", ret);
|
|
|
|
return 0;
|
|
}
|
|
|
|
int main(void)
|
|
{
|
|
LED0_OFF;
|
|
|
|
puts("[START]");
|
|
int ret = test_umorse_out();
|
|
if (ret) {
|
|
puts("[FAILURE]");
|
|
return 1;
|
|
}
|
|
puts("[SUCCESS]");
|
|
return 0;
|
|
}
|