X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=arducontrol%2Foutput.c;h=f961a436b99c2d24bf9d73255fe0a951d30df37c;hb=de977f33ed5c55b2b45c8dcae0c0687bd0cbf1e6;hp=c1d51488349359ae9101a9762c2837bf257aebce;hpb=b47b38e9dd282c5f8fb1ded25ade805e64d0cf1a;p=model-railway-devices.git diff --git a/arducontrol/output.c b/arducontrol/output.c index c1d5148..f961a43 100644 --- a/arducontrol/output.c +++ b/arducontrol/output.c @@ -1,23 +1,27 @@ #include -#include "interface.h" +#include "commands.h" #include "output.h" #include "timer.h" +#define POLARITY PORTD2 +#define ENABLE PORTD3 +#define BIT(x) (1<<(x)) + OutputPacket packet; uint8_t out_bit; uint8_t out_time; uint8_t out_data; uint8_t delay_time; -void output_init() +void output_init(void) { DDRD = (DDRD&0xF3)|0x0C; - PORTD &= ~0x08; + PORTD &= ~BIT(ENABLE); timer_start_hz(0, 80000, 1); } -void clear_packet() +void clear_packet(void) { packet.ready = 0; packet.sending = 0; @@ -27,12 +31,12 @@ void clear_packet() void output_set_power(uint8_t p) { if(p==POWER_ON) - PORTD |= 0x08; + PORTD |= BIT(ENABLE); else - PORTD &= ~0x08; + PORTD &= ~BIT(ENABLE); } -uint8_t output_command() +uint8_t output_command(const uint8_t *cmd_buf, uint8_t cmd_length) { if(cmd_buf[0]==POWER_ON || cmd_buf[0]==POWER_OFF) { @@ -47,7 +51,7 @@ uint8_t output_command() return COMMAND_OK; } -static inline void output_tick() +static inline void output_tick(void) { if(delay_time && --delay_time) return; @@ -57,7 +61,7 @@ static inline void output_tick() ++out_bit; if(out_bit>=packet.length) { - PORTD &= ~0x04; + PORTD &= ~BIT(POLARITY); if(packet.repeat_count>1) { if(packet.repeat_count<0xFF) @@ -79,9 +83,9 @@ static inline void output_tick() out_data >>= 1; if(out_data&1) - PORTD |= 0x04; + PORTD |= BIT(POLARITY); else - PORTD &= ~0x04; + PORTD &= ~BIT(POLARITY); out_time = packet.bit_duration; } @@ -96,9 +100,9 @@ static inline void output_tick() out_time = packet.bit_duration; out_data = packet.data[0]; if(out_data&1) - PORTD |= 0x04; + PORTD |= BIT(POLARITY); else - PORTD &= ~0x04; + PORTD &= ~BIT(POLARITY); } }