MythTV master
Classes | Enumerations | Functions | Variables
lirc_client.cpp File Reference
#include <array>
#include <algorithm>
#include <cctype>
#include <cerrno>
#include <climits>
#include <cstdarg>
#include <cstdint>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <memory>
#include <stdexcept>
#include <string>
#include <sys/socket.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <sys/un.h>
#include <sys/wait.h>
#include <unistd.h>
#include "lirc_client.h"
Include dependency graph for lirc_client.cpp:

Go to the source code of this file.

Classes

struct  filestack_t
 

Enumerations

enum  packet_state : std::uint8_t {
  P_BEGIN , P_MESSAGE , P_STATUS , P_DATA ,
  P_N , P_DATA_N , P_END
}
 

Functions

static void lirc_printf (const struct lirc_state *, const char *format_str,...)
 
static void lirc_perror (const struct lirc_state *)
 
static int lirc_readline (const struct lirc_state *state, std::string &line, FILE *f)
 
static std::string lirc_trim (const std::string &s)
 
static void lirc_parse_escape (const struct lirc_state *state, std::string &s, size_t bs, const std::string &name, int line)
 
static void lirc_parse_string (const struct lirc_state *state, std::string &s, const std::string &name, int line)
 
static void lirc_parse_include (std::string &s, const std::string &name, int line)
 
static int lirc_mode (const struct lirc_state *state, const std::string &token, const std::string &token2, std::string &mode, struct lirc_config_entry **new_config, struct lirc_config_entry **first_config, struct lirc_config_entry **last_config, int(check)(std::string &s), const std::string &name, int line)
 
static unsigned int lirc_flags (const struct lirc_state *state, const std::string &string)
 
static std::string lirc_getfilename (const struct lirc_state *state, const std::string &file, const std::string &current_file)
 
static FILE * lirc_open (const struct lirc_state *state, const std::string &file, const std::string &current_file, std::string &full_name)
 
static struct filestack_tstack_push (const struct lirc_state *state, struct filestack_t *parent)
 
static struct filestack_tstack_pop (struct filestack_t *entry)
 
static void stack_free (struct filestack_t *entry)
 
static int lirc_readconfig_only_internal (const struct lirc_state *state, const std::string &file, struct lirc_config **config, int(check)(std::string &s), std::string &full_name, std::string &sha_bang)
 
static std::string lirc_startupmode (const struct lirc_state *state, struct lirc_config_entry *first)
 
static void lirc_freeconfigentries (struct lirc_config_entry *first)
 
static void lirc_clearmode (struct lirc_config *config)
 
static std::string lirc_execute (const struct lirc_state *state, struct lirc_config *config, struct lirc_config_entry *scan)
 
static int sstrcasecmp (std::string s1, std::string s2)
 
static int lirc_iscode (struct lirc_config_entry *scan, std::string &remote, std::string &button, unsigned int rep)
 
static int lirc_code2char_internal (const struct lirc_state *state, struct lirc_config *config, const std::string &code, std::string &string, std::string &prog)
 
static const char * lirc_read_string (const struct lirc_state *state, int fd)
 
static int lirc_identify (const struct lirc_state *state, int sockfd)
 
static int lirc_send_command (const struct lirc_state *state, int sockfd, const std::string &command, char *buf, size_t *buf_len, int *ret_status)
 
struct lirc_statelirc_init (const char *lircrc_root_file, const char *lircrc_user_file, const char *prog, const char *lircd, int verbose)
 
int lirc_deinit (struct lirc_state *state)
 
int lirc_readconfig (const struct lirc_state *state, const std::string &file, struct lirc_config **config, int(check)(std::string &s))
 
int lirc_readconfig_only (const struct lirc_state *state, const std::string &file, struct lirc_config **config, int(check)(std::string &s))
 
static std::string parse_token (const std::string &string, size_t &next)
 
void lirc_freeconfig (struct lirc_config *config)
 
int lirc_code2char (const struct lirc_state *state, struct lirc_config *config, const std::string &code, std::string &string)
 
size_t lirc_getsocketname (const std::string &filename, char *buf, size_t size)
 
std::string lirc_getmode (const struct lirc_state *state, struct lirc_config *config)
 
std::string lirc_setmode (const struct lirc_state *state, struct lirc_config *config, const std::string &mode)
 

Variables

static constexpr int8_t MAX_INCLUDES { 10 }
 
static constexpr size_t LIRC_READ { 255 }
 
static constexpr size_t LIRC_PACKET_SIZE { 255 }
 
static constexpr int8_t LIRC_TIMEOUT { 3 }
 

Enumeration Type Documentation

◆ packet_state

enum packet_state : std::uint8_t
Enumerator
P_BEGIN 
P_MESSAGE 
P_STATUS 
P_DATA 
P_N 
P_DATA_N 
P_END 

Definition at line 57 of file lirc_client.cpp.

Function Documentation

◆ lirc_clearmode()

static void lirc_clearmode ( struct lirc_config config)
static

Definition at line 1212 of file lirc_client.cpp.

Referenced by lirc_execute().

◆ lirc_code2char()

int lirc_code2char ( const struct lirc_state state,
struct lirc_config config,
const std::string &  code,
std::string &  string 
)

Definition at line 1381 of file lirc_client.cpp.

Referenced by LIRC::Process().

◆ lirc_code2char_internal()

static int lirc_code2char_internal ( const struct lirc_state state,
struct lirc_config config,
const std::string &  code,
std::string &  string,
std::string &  prog 
)
static

Definition at line 1415 of file lirc_client.cpp.

Referenced by lirc_code2char().

◆ lirc_deinit()

int lirc_deinit ( struct lirc_state state)

Definition at line 205 of file lirc_client.cpp.

Referenced by LIRC::Init(), lirc_init(), LIRC::run(), and LIRCPriv::~LIRCPriv().

◆ lirc_execute()

static std::string lirc_execute ( const struct lirc_state state,
struct lirc_config config,
struct lirc_config_entry scan 
)
static

Definition at line 1233 of file lirc_client.cpp.

Referenced by lirc_code2char_internal().

◆ lirc_flags()

unsigned int lirc_flags ( const struct lirc_state state,
const std::string &  string 
)
static

Definition at line 516 of file lirc_client.cpp.

Referenced by lirc_readconfig_only_internal().

◆ lirc_freeconfig()

void lirc_freeconfig ( struct lirc_config config)

Definition at line 1164 of file lirc_client.cpp.

Referenced by lirc_readconfig(), and LIRCPriv::~LIRCPriv().

◆ lirc_freeconfigentries()

static void lirc_freeconfigentries ( struct lirc_config_entry first)
static

Definition at line 1179 of file lirc_client.cpp.

Referenced by lirc_freeconfig(), lirc_mode(), and lirc_readconfig_only_internal().

◆ lirc_getfilename()

static std::string lirc_getfilename ( const struct lirc_state state,
const std::string &  file,
const std::string &  current_file 
)
static

Definition at line 553 of file lirc_client.cpp.

Referenced by lirc_open().

◆ lirc_getmode()

std::string lirc_getmode ( const struct lirc_state state,
struct lirc_config config 
)

Definition at line 1503 of file lirc_client.cpp.

◆ lirc_getsocketname()

size_t lirc_getsocketname ( const std::string &  filename,
char *  buf,
size_t  size 
)

Definition at line 1493 of file lirc_client.cpp.

Referenced by lirc_readconfig().

◆ lirc_identify()

int lirc_identify ( const struct lirc_state state,
int  sockfd 
)
static

Definition at line 1792 of file lirc_client.cpp.

Referenced by lirc_readconfig().

◆ lirc_init()

struct lirc_state * lirc_init ( const char *  lircrc_root_file,
const char *  lircrc_user_file,
const char *  prog,
const char *  lircd,
int  verbose 
)

Definition at line 151 of file lirc_client.cpp.

Referenced by LIRC::Init().

◆ lirc_iscode()

static int lirc_iscode ( struct lirc_config_entry scan,
std::string &  remote,
std::string &  button,
unsigned int  rep 
)
static

Definition at line 1280 of file lirc_client.cpp.

Referenced by lirc_code2char_internal().

◆ lirc_mode()

int lirc_mode ( const struct lirc_state state,
const std::string &  token,
const std::string &  token2,
std::string &  mode,
struct lirc_config_entry **  new_config,
struct lirc_config_entry **  first_config,
struct lirc_config_entry **  last_config,
int(check)(std::string &s)  ,
const std::string &  name,
int  line 
)
static

Definition at line 365 of file lirc_client.cpp.

Referenced by lirc_readconfig_only_internal().

◆ lirc_open()

static FILE * lirc_open ( const struct lirc_state state,
const std::string &  file,
const std::string &  current_file,
std::string &  full_name 
)
static

Definition at line 600 of file lirc_client.cpp.

Referenced by lirc_readconfig_only_internal().

◆ lirc_parse_escape()

static void lirc_parse_escape ( const struct lirc_state state,
std::string &  s,
size_t  bs,
const std::string &  name,
int  line 
)
static

Definition at line 252 of file lirc_client.cpp.

Referenced by lirc_parse_string().

◆ lirc_parse_include()

static void lirc_parse_include ( std::string &  s,
const std::string &  name,
int  line 
)
static

Definition at line 344 of file lirc_client.cpp.

Referenced by lirc_readconfig_only_internal().

◆ lirc_parse_string()

static void lirc_parse_string ( const struct lirc_state state,
std::string &  s,
const std::string &  name,
int  line 
)
static

Definition at line 334 of file lirc_client.cpp.

Referenced by lirc_readconfig_only_internal().

◆ lirc_perror()

static void lirc_perror ( const struct lirc_state state)
static

◆ lirc_printf()

static void lirc_printf ( const struct lirc_state state,
const char *  format_str,
  ... 
)
static

◆ lirc_read_string()

static const char * lirc_read_string ( const struct lirc_state state,
int  fd 
)
static

Definition at line 1557 of file lirc_client.cpp.

Referenced by lirc_send_command().

◆ lirc_readconfig()

int lirc_readconfig ( const struct lirc_state state,
const std::string &  file,
struct lirc_config **  config,
int(check)(std::string &s)   
)

Definition at line 680 of file lirc_client.cpp.

Referenced by LIRC::Init().

◆ lirc_readconfig_only()

int lirc_readconfig_only ( const struct lirc_state state,
const std::string &  file,
struct lirc_config **  config,
int(check)(std::string &s)   
)

Definition at line 759 of file lirc_client.cpp.

◆ lirc_readconfig_only_internal()

static int lirc_readconfig_only_internal ( const struct lirc_state state,
const std::string &  file,
struct lirc_config **  config,
int(check)(std::string &s)  ,
std::string &  full_name,
std::string &  sha_bang 
)
static

Definition at line 784 of file lirc_client.cpp.

Referenced by lirc_readconfig(), and lirc_readconfig_only().

◆ lirc_readline()

static int lirc_readline ( const struct lirc_state state,
std::string &  line,
FILE *  f 
)
static

Definition at line 219 of file lirc_client.cpp.

Referenced by lirc_readconfig_only_internal().

◆ lirc_send_command()

int lirc_send_command ( const struct lirc_state state,
int  sockfd,
const std::string &  command,
char *  buf,
size_t *  buf_len,
int *  ret_status 
)
static

Definition at line 1636 of file lirc_client.cpp.

Referenced by lirc_code2char(), lirc_getmode(), lirc_identify(), and lirc_setmode().

◆ lirc_setmode()

std::string lirc_setmode ( const struct lirc_state state,
struct lirc_config config,
const std::string &  mode 
)

Definition at line 1526 of file lirc_client.cpp.

◆ lirc_startupmode()

static std::string lirc_startupmode ( const struct lirc_state state,
struct lirc_config_entry first 
)
static

Definition at line 1115 of file lirc_client.cpp.

Referenced by lirc_readconfig_only_internal().

◆ lirc_trim()

static std::string lirc_trim ( const std::string &  s)
static

Definition at line 239 of file lirc_client.cpp.

Referenced by lirc_readconfig_only_internal().

◆ parse_token()

static std::string parse_token ( const std::string &  string,
size_t &  next 
)
static

Definition at line 769 of file lirc_client.cpp.

Referenced by lirc_readconfig_only_internal().

◆ sstrcasecmp()

static int sstrcasecmp ( std::string  s1,
std::string  s2 
)
static

◆ stack_free()

static void stack_free ( struct filestack_t entry)
static

Definition at line 672 of file lirc_client.cpp.

Referenced by lirc_readconfig_only_internal().

◆ stack_pop()

static struct filestack_t * stack_pop ( struct filestack_t entry)
static

Definition at line 662 of file lirc_client.cpp.

Referenced by lirc_readconfig_only_internal(), and stack_free().

◆ stack_push()

static struct filestack_t * stack_push ( const struct lirc_state state,
struct filestack_t parent 
)
static

Definition at line 650 of file lirc_client.cpp.

Referenced by lirc_readconfig_only_internal().

Variable Documentation

◆ LIRC_PACKET_SIZE

constexpr size_t LIRC_PACKET_SIZE { 255 }
staticconstexpr

Definition at line 45 of file lirc_client.cpp.

Referenced by lirc_read_string().

◆ LIRC_READ

constexpr size_t LIRC_READ { 255 }
staticconstexpr

Definition at line 44 of file lirc_client.cpp.

Referenced by lirc_readline().

◆ LIRC_TIMEOUT

constexpr int8_t LIRC_TIMEOUT { 3 }
staticconstexpr

Definition at line 47 of file lirc_client.cpp.

Referenced by lirc_read_string().

◆ MAX_INCLUDES

constexpr int8_t MAX_INCLUDES { 10 }
staticconstexpr

Definition at line 43 of file lirc_client.cpp.

Referenced by lirc_readconfig_only_internal().