// ---------------------------------------------------------------------------- void artnet_main(void) { if (artnet_dmxInComplete == TRUE) { if (artnet_dmxInChanged == TRUE) { artnet_sendDmxPacket(); artnet_dmxInChanged = FALSE; } artnet_dmxInComplete = FALSE; artnet_dmxChannels = 0; } if(artnet_poll == 1) { artnet_poll = 0; artnet_sendPollReply(); } if (DMXIOPinPort & (1 << DMXIOPin)) { artnet_rs485_safty_counter++; if(artnet_rs485_safty_counter > 250) { artnet_dmxChannels = 511; // setup USART PORTD |= (1 << 2); PORTD |= (1 << 1); UBRR0 = (F_CPU / (250000* 16L) - 1); UCSR0C|= (1<<USBS0); //USBS0 2 Stop bits UCSR0B|= (1<<TXEN0)|(1<<TXCIE0); // TXEN0 Transmitter enable / TXCIE0 TX complete interrupt enable UDR0 = 0;//start transmitting artnet_rs485_safty_counter = 0; } } }
void artnet_main(void) { if (get_dmx_slot_state(artnet_inputUniverse, artnet_conn_id) == DMX_NEWVALUES && artnet_connected == TRUE) { ARTNET_DEBUG("Universe has changed, sending artnet data!\r\n"); artnet_sendDmxPacket(); } }
void processPollPacket(struct artnet_poll *poll) { uip_ipaddr_t poll_reply_target; if ((poll->talkToMe & 2) == 2) artnet_sendPollReplyOnChange = TRUE; else artnet_sendPollReplyOnChange = FALSE; if ((poll->talkToMe & 1) == 1) uip_ipaddr_copy(poll_reply_target, uip_hostaddr); else uip_ipaddr_copy(poll_reply_target, all_ones_addr); artnet_sendPollReply(&poll_reply_target); /* we send a dmx packet on a poll packet, if artnet_sendPollReplyOnChange is active */ if (artnet_sendPollReplyOnChange) artnet_sendDmxPacket(); }