void _write_shif1(volatile unsigned char* port_addr, unsigned char bit, unsigned char data) { _delay_us(1); shift1_out(port_addr,bit,data); _latch(port_addr,bit); }
static void _write_byte(struct sol_flow_node *node, unsigned char byte) { int i; struct segments_ctl_data *mdata = sol_flow_node_get_private_data(node); if (mdata->needs_clear) { _clear(node); mdata->needs_clear = false; } // Unless we set active_low on the data gpio, it expects 1 for the led // to be off, and 0 for on, so we invert the byte here. byte = ~byte; for (i = 0; i < 8; i++) { int val = (byte >> i) & 1; sol_flow_send_boolean_packet(node, SOL_FLOW_NODE_TYPE_CALAMARI_SEGMENTS_CTL__OUT__DATA, val); _tick(node); } _latch(node); }