Shifts the contents of the buffer by a byte to the right.
shift-right-buffer1
@/shift-right-buffer1
Shifts the contents of the buffer by a byte to the right.
buffer1@/buffer1
lennumber
triggerpulse
ERRpulse
donepulse
To use the node in your project you should have the nazarijtipusak080/buffer1 library installed. Use the “File → Add Library” menu item in XOD IDE if you don’t have it yet. See Using libraries for more info.
C++ implementation
struct State {
// не використовується
};
{{ GENERATED_CODE }}
void evaluate(Context ctx) {
if (!isInputDirty<input_trigger>(ctx)) return;
// Отримуємо об'єкт буфера
auto _object = getValue<input_buffer1>(ctx); // буфер
uint16_t len = static_cast<uint16_t>(getValue<input_len>(ctx));
// Перевірка, чи існує буфер і чи є правильна довжина
if (!_object->buffer || len > _object->len) {
emitValue<output_ERR>(ctx, 1); // видаємо помилку
return;
}
// Зсув байтів вправо
for (int16_t i = len - 2; i >= 0; i--) {
reinterpret_cast<uint8_t*>(_object->buffer)[i + 1] = reinterpret_cast<uint8_t*>(_object->buffer)[i];
}
// Очищуємо перший байт
reinterpret_cast<uint8_t*>(_object->buffer)[0] = 0;
// Виводимо успіх
emitValue<output_done>(ctx, 1);
}