#include "EXTERN.h" #include "perl.h" #include "XSUB.h" #include struct lirc_config *config; MODULE = RCU::Lirc PACKAGE = RCU::Lirc PROTOTYPES: ENABLE int lirc_init(prog,verbose=0) char * prog int verbose int lirc_deinit() int lirc_readconfig(file=Nullch) char * file CODE: RETVAL = lirc_readconfig (file, &config, NULL); if (RETVAL != 0) config = 0; OUTPUT: RETVAL void lirc_freeconfig() CODE: if (config) lirc_freeconfig (config); void _get_code() PPCODE: char *code; if (lirc_nextcode (&code) != 0) croak ("communication error with lircd"); if (code) { char *text; if (!config || lirc_code2char (config, code, &text) != 0) text = 0; XPUSHs (sv_2mortal (newSVpvn (code, 16))); if (text) XPUSHs (sv_2mortal (newSVpv (text, 0))); else XPUSHs (sv_2mortal (newSVpvn (code + 20, strchr (code + 20, ' ') - code - 20))); free (code); }