00001
00002
00003
00004
00005
00006
00007
00008 #ifndef __STATIONIR_H__
00009 #define __STATIONIR_H__
00010
00011 #include <avr/io.h>
00012 #include "basic.h"
00013
00014
00015 #define IRMLENGTH 20
00016 #define IRMSLENGTH 30
00017 #define IRDATABITTIME 12
00018 #define IRDATABYTETIME 128
00019 #define IRKEYS 4
00021 #ifdef TEST
00022 #define ISIRON (1)
00023 #define WAITIR
00024 #else
00025 #define ISIRON ((PIND & _BV(PD4))==0)
00026 #define WAITIR {sei(); while (sendready == 0) _NOP; cli(); } while (0)
00027 #endif
00028
00029 typedef u08 irdatatype[IRMLENGTH];
00030
00031 u08 irerror;
00032 u08 irbittime;
00033
00034 irdatatype cmp_target[IRKEYS];
00035
00036 extern volatile irdatatype irrbuf;
00037 extern volatile u08 irrstring[IRMSLENGTH];
00038 extern volatile u08 pulsevalid;
00039 extern volatile u08 stringvalid;
00040 extern volatile u08 sendready;
00041 extern void ir_send(u08 *irbuf_);
00042 extern void ir_string_send(u08 *se);
00043
00044 extern u08 ir_comp(irdatatype cmp_target, irdatatype read_ir);
00045 #ifdef STATION
00046 extern void ir_and(irdatatype res, irdatatype and2);
00047 #endif
00048
00049
00050 extern volatile u08 *senddata;
00051 extern u08 ir_to_val(irdatatype data);
00052 extern u08 *val_to_ir(u08 dat);
00053 extern void do_ir();
00054 extern void start_ir_r();
00055 extern void do_ir_string();
00056
00057 #endif