Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 19 additions & 4 deletions examples/basic/src/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,12 @@
#include <SlvCtrlArduinoSerialCommandsTransport.h>

// --------- your state ----------
static int32_t speed = 0;
static int32_t maxSpeed = 100;
static int32_t state = 0;
static bool ready = false;
static int32_t speed = 0;
static int32_t maxSpeed = 100;
static int32_t state = 0;
static bool ready = false;
static int32_t baud = 9600;
static const char* mode = "off";

// --------- getters/setters (C function pointers) ----------
// Note: your attribute classes use function pointers: T(*)(void*), not lambdas.
Expand All @@ -22,17 +24,30 @@ static SlvCtrlParseError setState(void*, int32_t v) { state = v; return SlvCtrlP

static bool getReady(void*) { return ready; }

static int32_t getBaud(void*) { return baud; }

static const char* getMode(void*) { return mode; }
static SlvCtrlParseError setMode(void*, const char* v) { mode = v; return SlvCtrlParseError::Ok; }

// --------- attributes ----------
static IntAttribute speedAttr("speed", &getSpeed, &setSpeed);
static RangeAttribute<int32_t> maxAttr("max", &getMaxSpeed, &setMaxSpeed, 0, 100);
static IntAttribute stateAttr("state", &getState, &setState);
static BoolAttribute readyAttr("ready", &getReady, nullptr);

static const int32_t kBaudOpts[] = { 9600, 19200, 115200 };
ListAttribute<int32_t> baudAttr("baud", getBaud, nullptr, kBaudOpts);

static const char* kModeOpts[] = { "off", "on", "auto" };
ListAttribute<const char*> modeAttr("mode", getMode, setMode, kModeOpts);

static IAttribute* attrs[] = {
&speedAttr,
&maxAttr,
&stateAttr,
&readyAttr,
&baudAttr,
&modeAttr,
};

// --------- protocol + transport ----------
Expand Down
2 changes: 1 addition & 1 deletion library.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "slvctrl-protocol",
"version": "0.1.2",
"version": "0.1.3",
"description": "SlvCtrl protocol implementation for embedded devices",
"keywords": ["serial", "protocol", "arduino"],
"repository": {
Expand Down
12 changes: 6 additions & 6 deletions src/SlvCtrlArduinoSerialCommandsTransport.h
Original file line number Diff line number Diff line change
Expand Up @@ -10,29 +10,29 @@ class SlvCtrlArduinoOut final : public ISlvCtrlOut {
public:
explicit SlvCtrlArduinoOut(Stream& s) : s_(s) {}

void send(const char* s) override {
void write(const char* s) override {
s_.print(s ? s : "");
}

void send(char v) override {
void write(char v) override {
s_.print(v);
}

void send(int32_t v) override {
void write(int32_t v) override {
// Arduino Print uses long for signed integers
s_.print((long)v);
}

void send(uint32_t v) override {
void write(uint32_t v) override {
// Arduino Print uses unsigned long for unsigned integers
s_.print((unsigned long)v);
}

void send(float v, uint8_t decimals = 3) override {
void write(float v, uint8_t decimals = 3) override {
s_.print(v, decimals);
}

void send(bool v) override {
void write(bool v) override {
s_.print(v);
}

Expand Down
Loading