asterisk-chan-dongle/dc_config.h

138 lines
4.2 KiB
C

/*
Copyright (C) 2010 bg <bg_one@mail.ru>
*/
#ifndef CHAN_DONGLE_DC_CONFIG_H_INCLUDED
#define CHAN_DONGLE_DC_CONFIG_H_INCLUDED
#include "ast_config.h"
#include <asterisk/channel.h> /* AST_MAX_CONTEXT MAX_LANGUAGE */
#include "export.h" /* EXPORT_DECL EXPORT_DEF */
#include "mutils.h"
#define CONFIG_FILE "dongle.conf"
#define DEVNAMELEN 31
#define IMEI_SIZE 15
#define IMSI_SIZE 15
#define PATHLEN 256
#define DEVPATHLEN 256
typedef enum {
DEV_STATE_STOPPED = 0,
DEV_STATE_RESTARTED,
DEV_STATE_REMOVED,
DEV_STATE_STARTED,
} dev_state_t;
EXPORT_DECL const char * const dev_state_strs[4];
typedef enum {
CALL_WAITING_DISALLOWED = 0,
CALL_WAITING_ALLOWED,
CALL_WAITING_AUTO
} call_waiting_t;
INLINE_DECL const char * dc_cw_setting2str(call_waiting_t cw)
{
static const char * const options[] = { "disabled", "allowed", "auto" };
return enum2str(cw, options, ITEMS_OF(options));
}
typedef enum {
DC_DTMF_SETTING_OFF = 0,
DC_DTMF_SETTING_INBAND,
DC_DTMF_SETTING_RELAX,
} dc_dtmf_setting_t;
/*
Config API
Operations
convert from string to native
convent from native to string
get native value
get alternative presentation
set native value ?
types:
string of limited length
integer with limits
enum
boolean
*/
/* Global inherited (shared) settings */
typedef struct dc_sconfig
{
char context[AST_MAX_CONTEXT]; /*!< the context for incoming calls; 'default '*/
char exten[AST_MAX_EXTENSION]; /*!< exten, not overwrite valid subscriber_number */
char language[MAX_LANGUAGE]; /*!< default language 'en' */
int group; /*!< group number for group dialling 0 */
int rxgain; /*!< increase the incoming volume 0 */
int txgain; /*!< increase the outgoint volume 0 */
int u2diag; /*!< -1 */
int callingpres; /*!< calling presentation */
unsigned int usecallingpres:1; /*! -1 */
unsigned int autodeletesms:1; /*! 0 */
unsigned int resetdongle:1; /*! 1 */
unsigned int disablesms:1; /*! 0 */
dev_state_t initstate; /*! DEV_STATE_STARTED */
// unsigned int disable:1; /*! 0 */
call_waiting_t callwaiting; /*!< enable/disable/auto call waiting CALL_WAITING_AUTO */
dc_dtmf_setting_t dtmf; /*!< off/inband/relax incoming DTMF detection, default DC_DTMF_SETTING_RELAX */
int mindtmfgap; /*!< minimal time in ms from end of previews DTMF and begining of next */
#define DEFAULT_MINDTMFGAP 45
int mindtmfduration; /*!< minimal DTMF duration in ms */
#define DEFAULT_MINDTMFDURATION 80
int mindtmfinterval; /*!< minimal DTMF interval beetween ends in ms, applied only on same digit */
#define DEFAULT_MINDTMFINTERVAL 200
} dc_sconfig_t;
/* Global settings */
typedef struct dc_gconfig
{
struct ast_jb_conf jbconf; /*!< jitter buffer settings, disabled by default */
int discovery_interval; /*!< The device discovery interval */
#define DEFAULT_DISCOVERY_INT 60
char sms_db[PATHLEN];
#define DEFAULT_SMS_DB "/var/lib/asterisk/smsdb"
int csms_ttl;
#define DEFAULT_CSMS_TTL 600
} dc_gconfig_t;
/* Local required (unique) settings */
typedef struct dc_uconfig
{
/* unique settings */
char id[DEVNAMELEN]; /*!< id from dongle.conf */
char audio_tty[DEVPATHLEN]; /*!< tty for audio connection */
char data_tty[DEVPATHLEN]; /*!< tty for AT commands */
char imei[IMEI_SIZE+1]; /*!< search device by imei */
char imsi[IMSI_SIZE+1]; /*!< search device by imsi */
} dc_uconfig_t;
/* all Config settings join in one place */
typedef struct pvt_config
{
dc_uconfig_t unique; /*!< unique settings */
dc_sconfig_t shared; /*!< possible inherited settings */
} pvt_config_t;
#define SCONFIG(cfg,name) ((cfg)->shared.name)
#define UCONFIG(cfg,name) ((cfg)->unique.name)
EXPORT_DECL int dc_dtmf_str2setting(const char * str);
EXPORT_DECL const char * dc_dtmf_setting2str(dc_dtmf_setting_t dtmf);
EXPORT_DECL void dc_sconfig_fill_defaults(struct dc_sconfig * config);
EXPORT_DECL void dc_sconfig_fill(struct ast_config * cfg, const char * cat, struct dc_sconfig * config);
EXPORT_DECL void dc_gconfig_fill(struct ast_config * cfg, const char * cat, struct dc_gconfig * config);
EXPORT_DECL int dc_config_fill(struct ast_config * cfg, const char * cat, const struct dc_sconfig * parent, struct pvt_config * config);
#endif /* CHAN_DONGLE_DC_CONFIG_H_INCLUDED */