From e1cded33662c6d19bde136ef0b697cbb8cf0435f Mon Sep 17 00:00:00 2001 From: Robin Krens Date: Mon, 23 Jan 2023 20:52:12 +0100 Subject: [PATCH] examples: added receive and send examples --- examples/recv-with-ack.c | 92 ++++++++++++++++++++++++++++++++++++++++++++++++ examples/send-with-ack.c | 82 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 174 insertions(+) create mode 100644 examples/recv-with-ack.c create mode 100644 examples/send-with-ack.c diff --git a/examples/recv-with-ack.c b/examples/recv-with-ack.c new file mode 100644 index 0000000..857a5ab --- /dev/null +++ b/examples/recv-with-ack.c @@ -0,0 +1,92 @@ +/** + * File : recv-with-ack.c + * Author : Robin Krens + * Date : 23.01.2023 + * Last Modified Date: 23.01.2023 + * Last Modified By : Robin Krens + */ +#include +#include +#include +#include +#include + +#include "libsi24.h" + +#define MSG_SIZE 32 + +int example_spi_write_read(unsigned char* data, size_t sz) +{ + (void)data; + (void)sz; + return 0; +} + +void example_ce(unsigned val) +{ + (void)val; +} + +void example_event_handler(si24_t* si, si24_event_t* e) +{ + (void)si; + + switch (e->type) { + case EV_RX_COMPLETE: + break; + case EV_TX_COMPLETE: + break; + case EV_TX_FULL: + break; + case EV_RX_EMPTY: + break; + case EV_ERR_TIMEOUT: + break; + case EV_ERR_BUS: + break; + case EV_ERR_MAX_RETRIES: + break; + case EV_ERR_CRC: + break; + case EV_ERR_CONFIG: + break; + default: + break; + } +} + +int main(void) +{ + unsigned char recv_buf[MSG_SIZE]; + + si24_ioctl_t ctl = { + .write_and_read = example_spi_write_read, + .chip_enable = example_ce, + }; + + const si24_opts_t opts = { + .mode = RECV_MODE, + .enable_ack = 1, + .non_blocking = 0, + .enable_crc = 1, + .enable_dynpd = 1, + .crc = TWO_BYTE, + .ioctl = &ctl, + .speed = MBPS2, + .txpwr = PLUS4DB, + .payload = 5, + .timeout = 1, + .retries = 5, + .mac_addr = { 0xAB, 0xCD, 0xEF, 0xFF, 0xFF } + }; + + struct si24_t* si = si24_init(&opts, example_event_handler); + + while (1) { + int read = si24_recv(si, recv_buf, 32); + for (int i = 0; i < read; ++i) { + printf("%c", recv_buf[i]); + } + sleep(1); + } +} diff --git a/examples/send-with-ack.c b/examples/send-with-ack.c new file mode 100644 index 0000000..c3ad53f --- /dev/null +++ b/examples/send-with-ack.c @@ -0,0 +1,82 @@ +#include +#include +#include +#include +#include + +#include "libsi24.h" + +int example_spi_write_read(unsigned char* data, size_t sz) +{ + (void)data; + (void)sz; + return 0; +} + +void example_ce(unsigned val) +{ + (void)val; +} + +void example_event_handler(si24_t* si, si24_event_t* e) +{ + (void)si; + + switch (e->type) { + case EV_RX_COMPLETE: + break; + case EV_TX_COMPLETE: + break; + case EV_TX_FULL: + break; + case EV_RX_EMPTY: + break; + case EV_ERR_TIMEOUT: + break; + case EV_ERR_BUS: + break; + case EV_ERR_MAX_RETRIES: + break; + case EV_ERR_CRC: + break; + case EV_ERR_CONFIG: + break; + default: + break; + } +} + +int main(void) +{ + const unsigned char buf[] = "SAMPLE TEST MESSAGE!"; + + si24_ioctl_t ctl = { + .write_and_read = example_spi_write_read, + .chip_enable = example_ce, + }; + + const si24_opts_t opts = { + .mode = SEND_MODE, + .enable_ack = 1, + .non_blocking = 0, + .enable_crc = 1, + .enable_dynpd = 1, + .crc = TWO_BYTE, + .ioctl = &ctl, + .speed = MBPS2, + .txpwr = PLUS4DB, + .payload = 5, + .timeout = 5, + .retries = 5, + .mac_addr = { 0xAB, 0xCD, 0xEF, 0xFF, 0xFF } + }; + + struct si24_t* si = si24_init(&opts, example_event_handler); + + int bytes_sent = si24_send(si, buf, sizeof(buf)); + while (bytes_sent != sizeof(buf)) { + if (bytes_sent == -1) + break; + bytes_sent += si24_send(si, buf + bytes_sent, sizeof(buf) - bytes_sent); + } +} -- 2.7.4