add gammu initialization code

This commit is contained in:
Sergey Popov 2011-11-25 18:30:16 +04:00
parent d0f8301436
commit 9f78ad8d03

32
yasnd.c
View File

@ -10,7 +10,7 @@
#include <signal.h> #include <signal.h>
#include <string.h> #include <string.h>
#include <confuse.h> #include <confuse.h>
#include <gammu/gammu.h> #include <gammu.h>
// Debug verbosity // Debug verbosity
#define DEBUG_BASE 1 #define DEBUG_BASE 1
@ -26,6 +26,7 @@ cfg_t *cfg; // pointer to configuration structure
host_decl* hosts=NULL; // structure with hosts' definitions host_decl* hosts=NULL; // structure with hosts' definitions
int hosts_count=0; // count of hosts int hosts_count=0; // count of hosts
int debug_flag=0; int debug_flag=0;
GSM_StateMachine *state_machine=NULL; // structure to interact with mobile phones
void log_debug(const char *message,int verbosity) void log_debug(const char *message,int verbosity)
{ {
@ -48,6 +49,17 @@ void* allocate_memory(int bytes)
} }
} }
void check_gammu_error(GSM_Error err)
{
if (err == ERR_NONE) {
return;
}
char tmp[150];
sprintf(tmp,"gammu failure: %s\n", GSM_ErrorString(err));
log_event(tmp);
exit(EXIT_FAILURE);
}
void init() void init()
{ {
// Initialize config parsing library // Initialize config parsing library
@ -78,6 +90,22 @@ void init()
hosts[i].hostname=cfg_getnstr(cfg,"hosts",i); hosts[i].hostname=cfg_getnstr(cfg,"hosts",i);
hosts[i].fail_count=0; hosts[i].fail_count=0;
} }
// initialize gammu structures
GSM_InitLocales(NULL);
state_machine = GSM_AllocStateMachine();
// read gammu config
INI_Section *gammu_cfg;
GSM_Error error;
/* Find it */
error = GSM_FindGammuRC(&gammu_cfg, NULL);
check_gammu_error(error);
/* Read it */
error = GSM_ReadConfig(gammu_cfg, GSM_GetConfig(state_machine, 0), 0);
check_gammu_error(error);
/* Free allocated memory */
INI_Free(gammu_cfg);
/* We care only about first configuration */
GSM_SetConfigNum(state_machine, 1);
} }
void check_host(int num,host_decl* host) void check_host(int num,host_decl* host)
@ -134,6 +162,8 @@ void termination_handler(int signum)
closelog(); closelog();
// free config structure // free config structure
cfg_free(cfg); cfg_free(cfg);
// free gammu structure
GSM_FreeStateMachine(state_machine);
// free hosts structures memory // free hosts structures memory
if (hosts!=NULL) if (hosts!=NULL)
free(hosts); free(hosts);