Main Page | File List | Globals

respond.c

Go to the documentation of this file.
00001 // This file has been prepared for Doxygen automatic documentation generation.
00023 #include "xmodem.h"
00024 
00025 extern struct global
00026 {
00027   volatile unsigned char *recv_ptr;
00028   volatile unsigned char buffer_status;
00029   volatile unsigned char recv_error;
00030   volatile unsigned char t1_timed_out;
00031 } gl;
00032 
00033 
00034 void respond(unsigned char packet)
00035 {
00036     // clear buffer flag here ... when acking or nacking sender may respond
00037     // very quickly.
00038     gl.buffer_status = empty;
00039     gl.recv_error = FALSE; // framing and over run detection
00040 
00041     if ((packet == good) || (packet == dup) || (packet == end))
00042     {
00043         while (!(UCSR0A & 0x20)); // wait till transmit register is empty
00044         UDR0 = ACK; // now for the next packet
00045     }
00046     else
00047     {
00048         while (!(UCSR0A & 0x20)); // wait till transmit register is empty
00049         purge(); // let transmitter empty its buffer
00050         UDR0 = NAK; // tell sender error
00051     }
00052 }

Generated on Tue Aug 23 13:47:52 2005 for Atmel AVR Application Note by  doxygen 1.4.4