Nel common.h (o comunque in un file .h incluso nel common):
#ifdef INCLUDES_FOR_IDE
#include <stdlib.h>
#include <string.h>
#endif
char esito_azione_confignet[64] = ""; // stringa dell' esito dell' azione di config.net
U8 CODICE_SW[32] = "MW30632"; // codice del software
U8 Vers_SW[32] = "Vers 1.0"; // versione del software
// funzione che resetta la stringa dell' esito di config.net
void timer_resetta_esito_azione_confignet(void)
{
snprintf(esito_azione_confignet, sizeof(esito_azione_confignet), "");
}
// funzione che genera un config.net statico
void genera_CONFIG_NET_statico(unsigned char ip_1, unsigned char ip_2, unsigned char ip_3, unsigned char ip_4)
{
FILE* fd = fopen("C:\\CONFIG.NET", "w"); // apre il file nel percorso "C:\\CONFIG:NET" in modalità scrittura
if (!fd) // se fp == 0 --> la fopen non ha vavuto succsso
{
// stampa nell' esito il messaggio di errrore e dopo 30 sec lo resetta, esce dalla funzione
snprintf(esito_azione_confignet, sizeof(esito_azione_confignet), "Errore creazione CONFIG.NET");
exec_timer(timer_resetta_esito_azione_confignet, ONCE, 30 SEC);
return;
}
// se la fopen ha avuto successo
// stampa sul file le varie scritte e byte degli ip
fprintf(fd, "// CONFIG.NET autogenerato\n");
fprintf(fd, "// dal software %s vers %s\n", CODICE_SW, Vers_SW);
fprintf(fd, "// IP STATICO %u.%u.%u.%u\n", ip_1, ip_2, ip_3, ip_4);
fprintf(fd, "@ETHERNET 1\n");
fprintf(fd, "@WIFI 0\n");
fprintf(fd, "@mac_family 00 25 33\n");
fprintf(fd, "@mac_number 101 222 %u\n", ip_4);
if (ip_4 > 200 && ip_4 < 210)
{
fprintf(fd, "@perif %u\n", ip_4 - 200);
fprintf(fd, "@net_ip perif%u\n", ip_4 - 200);
}
else
{
// Se siamo fuori dal range 201-209 metto perif 5 come default
// in questo modo se uno vuole avere il quarto byte dell'ip e perif
// in sincrono sceglie un numero dentro quell'intervallo, altrimenti
// se si vuole un ip generico si avra' la perif5
fprintf(fd, "@perif 5\n");
fprintf(fd, "@net_ip perif5\n");
}
fprintf(fd, "@ip %u %u %u %u\n", ip_1, ip_2, ip_3, ip_4);
fprintf(fd, "@force_ip 0 0 0 %u\n", ip_4);
fprintf(fd, "@vnc 5900 32001\n");
fprintf(fd, "@ftp C:\\\n");
fprintf(fd, "\n");
fclose(fd); // chiude il file fd
// stampa nell' esito dell' azione di config.net il messaggio di successo elo resetta dopo 15 sec
snprintf(esito_azione_confignet, sizeof(esito_azione_confignet), "CONFIG.NET statico creato!");
exec_timer(timer_resetta_esito_azione_confignet, ONCE, 15 SEC);
}
// questa funzione genera un config.net dinamico
void genera_CONFIG_NET_dinamico(unsigned char ip_1, unsigned char ip_2, unsigned char ip_3, unsigned char ip_4)
{
FILE* fd = fopen("C:\\CONFIG.NET", "w"); // apre il file del precorso "C:\\CONFIG:NET" in modalità scrittura
if (!fd) // se fd == 0 --> fopen non ha avuto scuccesso
return; // esce dalla funzione
// stampa nel file le varie scritte e i byte degli ip
fprintf(fd, "// CONFIG.NET autogenerato\n");
fprintf(fd, "// dal software %s vers %s\n", CODICE_SW, Vers_SW);
fprintf(fd, "// IP DINAMICO %u.%u.%u.%u\n", ip_1, ip_2, ip_3, ip_4);
fprintf(fd, "@ETHERNET 1\n");
fprintf(fd, "@WIFI 0\n");
fprintf(fd, "@mac_family 00 25 33\n");
fprintf(fd, "@mac_number 101 222 %u\n", ip_4);
if (ip_4 > 200 && ip_4 < 210)
{
fprintf(fd, "@perif %u\n", ip_4 - 200);
fprintf(fd, "@net_ip perif%u\n", ip_4 - 200);
}
else
{
// Se siamo fuori dal range 201-209 metto perif 5 come default
// in questo modo se uno vuole avere il quarto byte dell'ip e perif
// in sincrono sceglie un numero dentro quell'intervallo, altrimenti
// se si vuole un ip generico si avra' la perif5
fprintf(fd, "@perif 5\n");
fprintf(fd, "@net_ip perif5\n");
}
fprintf(fd, "@vnc 5900 32001\n");
fprintf(fd, "@ftp C:\\\n");
fprintf(fd, "\n");
fclose(fd); // chiude il file fd
// stampa sull' esito dell' azione di config.net il messaggio di successo e dopo 15 sec lo resetta
snprintf(esito_azione_confignet, sizeof(esito_azione_confignet), "CONFIG.NET dinamico creato!");
exec_timer(timer_resetta_esito_azione_confignet, ONCE, 15 SEC);
}