14 DDRD = (DDRD&0xF3)|0x0C;
17 timer_start_hz(0, 80000, 1);
27 void output_set_power(uint8_t p)
35 uint8_t output_command()
37 if(cmd_buf[0]==POWER_ON || cmd_buf[0]==POWER_OFF)
42 output_set_power(cmd_buf[0]==POWER_ON);
45 return INVALID_COMMAND;
50 static inline void output_tick()
52 if(delay_time && --delay_time)
55 if(out_time && !--out_time)
58 if(out_bit>=packet.length)
61 if(packet.repeat_count>1)
63 if(packet.repeat_count<0xFF)
64 --packet.repeat_count;
65 delay_time = packet.repeat_delay;
70 delay_time = packet.final_delay;
77 out_data = packet.data[out_bit>>3];
86 out_time = packet.bit_duration;
92 if(packet.ready && !packet.sending)
96 out_time = packet.bit_duration;
97 out_data = packet.data[0];
105 TIMER_SET_CALLBACK(0, output_tick)