void chaos_init(int enable_chaos) { chaos_enabled_p = enable_chaos; long seed = (long)time(0); if (chaos_enabled_p) { log_INFO("chaos seed: %ld", seed); } srand48_r(seed, &dr_buf); /* FIXME use TLS instead of dr_buf. */ }
int read_config_file(char CONFIGFILE[1024]) { FILE *fic = NULL; int nb_lignes; char line[512]={'\0'}; fic=fopen (CONFIGFILE,"r"); if(fic==NULL) { //printf("Probleme a l'ouverture du fichier de configuration\n"); return 1; } // compter et afficher les lignes du fichier nb_lignes = 0; while(fgets(line, 512, fic) != NULL) { if( (line[0] != '#') && (line[0] != '\n')) { variable_detection(line); } nb_lignes++; } log_INFO("\n--------- Loading Mydombox Server configuration ---------"); log_DEBUG("LOG_FILE_PATH = %s", LOG_FILE_PATH); log_DEBUG("LOG_LEVEL = %s", LOG_LEVEL); log_DEBUG("MYSQL = %d", MYSQL); log_DEBUG("HOSTNAME = %s", HOSTNAME); log_DEBUG("PORT = %d", PORT); log_DEBUG("LOGIN = %s", LOGIN); log_DEBUG("PASSWORD = %s", PASSWORD); log_DEBUG("DATABASE = %s", DATABASE); log_DEBUG("PORT_RFXTRX433 = %s",PORT_RFXTRX433); log_DEBUG("PORT_ENOUSB300 = %s",PORT_ENOUSB300); log_DEBUG("MODULE_SOAP = %d", MODULE_SOAP); log_DEBUG("PORT_SOAP = %d", PORT_SOAP); log_DEBUG("MODULE_RPIDOM = %d", MODULE_RPIDOM); log_DEBUG("PORT_RPIDOM = %s", PORT_RPIDOM); log_DEBUG("RPIDOM_TELE1_TYPE = %d", RPIDOM_TELE1_TYPE); log_DEBUG("RPIDOM_TELE2_TYPE = %d", RPIDOM_TELE2_TYPE); log_DEBUG("RPIDOM_1WIRE = %d", RPIDOM_1WIRE); log_DEBUG("MDB_CLOUD = %d", MDB_CLOUD); log_DEBUG("MDB_KEY = %s", MDB_KEY); log_DEBUG("MDB_ID = %s", MDB_ID); log_DEBUG("MDB_X_ISS_Key = %s", MDB_X_ISS_Key); log_DEBUG("MDB_X_OAPI_Key = %s", MDB_X_OAPI_Key); log_DEBUG("MDB_DATASOURCE = %s", MDB_DATASOURCE); log_DEBUG("--------------------------------------------------------\n"); fclose(fic); return 0; }
bool addEnoceanDevice(char* data) { unsigned char rorg = data[0]; unsigned char id1 = ""; unsigned char id2 = ""; unsigned char id3 = ""; unsigned char id4 = ""; switch (rorg) { case 0xD5: id1 = data[2]; id2 = data[3]; id3 = data[4]; id4 = data[5]; break; case 0xF6: id1 = data[2]; id2 = data[3]; id3 = data[4]; id4 = data[5]; break; case 0xA5: id1 = data[5]; id2 = data[6]; id3 = data[7]; id4 = data[8]; break; case 0xD2: id1 = data[7]; id2 = data[8]; id3 = data[9]; id4 = data[10]; break; default: log_DEBUG("[EnOcean] TYPE: Not Supported"); break; } log_DEBUG("[EnOcean] Record Mode : %d", RECORD); if (RECORD == 1) { log_INFO("[EnOcean] Recording new device type : %02hhX",rorg); mysql_insert("INSERT IGNORE INTO devices (dc_id,last_update,packettype,int_id,id1,id2,id3,id4,com) \ SELECT IFNULL(MAX(dc_id),0)+1,NOW(),'%02hhX',4,'%02hhX','%02hhX','%02hhX','%02hhX','tx' FROM devices ON DUPLICATE KEY UPDATE last_update=NOW();",\ rorg,id1,id2,id3,id4); }
int main(int argc, char *argv[]) { if ( argc < 2 ) /* argc should be 2 for correct execution */ { printf( "Missing config file path argument \n" ); } if(read_config_file(argv[1])) { printf("Error Loading Configuration File\n"); printf("Exiting Mydombox .... By !\n"); exit(1); } log_INFO("--------- Starting Mydombox Server ---------"); log_INFO("MySQL client version: %s", mysql_get_client_info()); log_INFO("Loglevel: %s",LOG_LEVEL); log_INFO("Learn Mode: %d",RECORD); conn = mysql_connection(); result = mysql_select(conn,"SELECT * FROM devices;"); mysql_free_result(result); mysql_close(conn); if ( file_exists(PORT_RFXTRX433) ){ // On crée un thread pthread_t thread_rfxtrx433; // Permet d'exécuter le fonction thread_rfxtrx433 en parallèle pthread_create(&thread_rfxtrx433, NULL, rfxtrx433, NULL); log_INFO("Module RFXTRX433 Detected & Started"); } sleep(5); if ( file_exists(PORT_ENOUSB300) ){ // On crée un thread pthread_t thread_enusb300; // Permet d'exécuter le fonction thread_enusb300 en parallèle pthread_create(&thread_enusb300, NULL, enusb300, NULL); log_INFO("Module USB300 Detected & Started"); } sleep(10); if ( MODULE_SOAP == 1){ // On crée un thread pthread_t thread_soapserver; // Permet d'exécuter le fonction thread_soapserver en parallèle pthread_create(&thread_soapserver, NULL, soapserver, NULL); log_INFO("Module SOAP Started"); } sleep(5); if ( MODULE_RPIDOM == 1){ // On crée un thread pthread_t thread_rpidom; // Permet d'exécuter le fonction thread_rpidom en parallèle pthread_create(&thread_rpidom, NULL, rpidom, NULL); log_INFO("Module RPIDOM Started"); } while(1){ read_config_file(argv[1]); scheduler(); thermostat(); sleep (60); } return 0; }