+ const uint8_t *buf = (const uint8_t *)_buf;
+ Sipo *fd = SIPO_CAST(_fd);
+ size_t write_len = size;
+
+ ASSERT(buf);
+
+ SIPO_SET_SI_LEVEL();
+ SIPO_SET_CLK_LEVEL(fd->settings & SIPO_CLOCK_POL);
+ SIPO_SET_LD_LEVEL(fd->device, fd->settings & SIPO_LOAD_LEV);
+
+ // Load into the shift register all the buffer bytes
+ while(size--)
+ sipo_putchar(*buf++, fd->settings & SIPO_DATAORDER,
+ fd->settings & SIPO_CLOCK_POL);
+
+ // We finsh to load bytes, so load it.
+ SIPO_LOAD(fd->device, fd->settings & SIPO_LOAD_LEV);
+
+ return write_len;
+}
+#endif