Esempio n. 1
0
// ----------------------------------------------------------------------------
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;
		}
	}
}
Esempio n. 2
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();
  }
}
Esempio n. 3
0
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();
}