diff --git a/config_reseau_ethernet_wifi.qml b/config_reseau_ethernet_wifi.qml
index 2a601e1..a5a6bcb 100644
--- a/config_reseau_ethernet_wifi.qml
+++ b/config_reseau_ethernet_wifi.qml
@@ -453,7 +453,7 @@ Shipheart_page {
//---------------------------------------------------------------------------------------
// Canal :
- if (wifi_ap_cde !== 0)
+ if ((wifi_ap_cde !== 0) && (wifi_sta_cde === 0)) // Si STA est actif, le canal AP suivra celui du mode STA ; inutile de l'afficher dans ce cas...
{
req = 'SELECT Valeur FROM TB_Configuration WHERE Nom="Wifi_ap_canal" ';
res = bdd.requete_unique(req);
diff --git a/config_reseau_wifi_ap.qml b/config_reseau_wifi_ap.qml
index 9755eac..cbf8ec7 100644
--- a/config_reseau_wifi_ap.qml
+++ b/config_reseau_wifi_ap.qml
@@ -39,6 +39,7 @@ Shipheart_page {
// Données :
property string ip_ap: ""
+ property int commande_sta: 0
// Modèles :
@@ -180,8 +181,9 @@ Shipheart_page {
width: parent.width
height: visible ? hauteur_ligne_formulaire : 0
color: "transparent"
- visible: !flag_init && (champ_formulaire_Ap_commande.model.get(champ_formulaire_Ap_commande.currentIndex).valeur === 1)
-//visible: false
+ visible: !flag_init &&
+ (champ_formulaire_Ap_commande.model.get(champ_formulaire_Ap_commande.currentIndex).valeur === 1) &&
+ (commande_sta === 0) // Si le mode STA est actif, le canal du mode AP suivra celui du mode STA....
Shipheart_formulaire_label {
text: qsTr("Canal")
@@ -226,6 +228,35 @@ Shipheart_page {
}
}
+ //-------------------------------------------------------------------------------
+ // Ligne de formulaire : Ap_partage
+ Rectangle {
+ width: parent.width
+ height: visible ? hauteur_ligne_formulaire : 0
+ color: "transparent"
+ visible: !flag_init &&
+ (champ_formulaire_Ap_commande.model.get(champ_formulaire_Ap_commande.currentIndex).valeur === 1) &&
+ (commande_sta === 1) // Si le mode STA est inactif, le partage n'a pas de sens...
+//visible: false
+
+ Shipheart_formulaire_label {
+ text: qsTr("Partage accès STA")
+ width: parent.width * pourcentage_largeur_labels_formulaire
+ }
+
+ Shipheart_formulaire_combobox {
+ id: champ_formulaire_Ap_partage
+ model: ListModel { }
+ width: parent.width * (1 - pourcentage_largeur_labels_formulaire)
+ onActivated: {
+ shipheart_clic();
+ }
+ }
+
+ Shipheart_formulaire_ligne_separation {
+ haut_bas_hautbas: shipheart_formulaire_ligne_separation_basse
+ }
+ }
}
}
@@ -366,8 +397,16 @@ Shipheart_page {
var commande_ap;
var mode;
var ap_canal;
+ var ap_partage;
+ //---------------------------------------------------------------------------------------
+ // Commande_sta:
+ req = 'SELECT Valeur FROM TB_Configuration WHERE Nom="Wifi_sta_cde" ';
+ res = bdd.requete_unique(req);
+ commande_sta = Number(res[0]);
+//console.log("Etat de la commande STA = " + commande_sta);
+
//---------------------------------------------------------------------------------------
// Commande AP :
req = 'SELECT Valeur FROM TB_Configuration WHERE Nom="Wifi_ap_cde" ';
@@ -454,6 +493,21 @@ Shipheart_page {
res = bdd.requete_unique(req);
ip_ap = res[0];
+ //---------------------------------------------------------------------------------------
+ // Partage AP :
+ req = 'SELECT Valeur FROM TB_Configuration WHERE Nom="Wifi_ap_partage_internet" ';
+ res = bdd.requete_unique(req);
+ ap_partage = Number(res[0]);
+
+ champ_formulaire_Ap_partage.model.clear();
+ champ_formulaire_Ap_partage.model.append({"valeur": 0, "texte": qsTr("Off") });
+ champ_formulaire_Ap_partage.model.append({"valeur": 1, "texte": qsTr("On") });
+
+ // Positionnement de l'index sur la valeur en cours :
+ i = recherche_index_valeur_modele(ap_partage, champ_formulaire_Ap_partage.model, "ap_partage");
+ if (i === -1) champ_formulaire_Ap_partage.currentIndex = recherche_index_valeur_modele(1, champ_formulaire_Ap_partage.model, "ap_partage");
+ else champ_formulaire_Ap_partage.currentIndex = i;
+
flag_init = false; // Indique que l'init est terminée
}
@@ -483,14 +537,13 @@ Shipheart_page {
// Retourne une chaine vide si Ok, le message d'erreur si NOK
//=============================================================================================================
function check_saisie()
- {
-
+ {
if (champ_formulaire_Ap_commande.model.get(champ_formulaire_Ap_commande.currentIndex).valeur > 0)
{
var liste_caracteres_autorisés_ssid_ap = "-."; // En plus des chiffres et des lettres majuscules et minuscules
- var regex_ssid_ap = new RegExp("(^[0-9A-Za-z]+$)");
- var liste_caracteres_autorisés_pwd_ap = "-_./="; // En plus des chiffres et des lettres majuscules et minuscules
- var regex_pwd_ap = new RegExp("(^[0-9A-Za-z" + liste_caracteres_autorisés_pwd_ap + "]+$)");
+ var regex_ssid_ap = new RegExp("^[0-9A-Za-z" + echapper_regex(liste_caracteres_autorisés_ssid_ap) + "]+$");
+ var liste_caracteres_autorisés_pwd_ap = "-_./="; // En plus des chiffres et des lettres majuscules et minuscules
+ var regex_pwd_ap = new RegExp("^[0-9A-Za-z" + echapper_regex(liste_caracteres_autorisés_pwd_ap) + "]+$");
if ((champ_formulaire_Ap_ssid.text.length < 1) || (champ_formulaire_Ap_ssid.text.length > 32)) return(qsTr("Le nom du réseau (SSID) doit comprendre entre 1 et 32 caractères.
Merci d'entrer un nom valide."));
if ((champ_formulaire_Ap_pwd.text.length < 8) || (champ_formulaire_Ap_pwd.text.length > 63)) return(qsTr("Le mot de passe d'accès au réseau doit comprendre entre 8 et 63 caractères.
Merci d'entrer un mot de passe valide."));
@@ -508,6 +561,11 @@ Shipheart_page {
return("");
}
+ function echapper_regex(liste)
+ {
+ return liste.replace(/[-\]\\^]/g, "\\$&"); // '-', ']', '\' et '^' ont un sens entre crochets
+ }
+
//=============================================================================================================
// Mise à jour des valeurs saisies
//=============================================================================================================
@@ -524,6 +582,8 @@ Shipheart_page {
bdd.requete_unique(req);
req = 'UPDATE TB_Configuration SET Valeur="' + champ_formulaire_Ap_canal.model.get(champ_formulaire_Ap_canal.currentIndex).valeur + '" WHERE Nom="Wifi_ap_canal" ';
bdd.requete_unique(req);
+ req = 'UPDATE TB_Configuration SET Valeur="' + champ_formulaire_Ap_partage.model.get(champ_formulaire_Ap_partage.currentIndex).valeur + '" WHERE Nom="Wifi_ap_partage_internet" ';
+ bdd.requete_unique(req);
// Demande de rechargement de la config du Wifi :
req = 'UPDATE TB_Configuration SET Valeur=1 WHERE Nom="Wifi_new_config" ';
diff --git a/config_reseau_wifi_sta.qml b/config_reseau_wifi_sta.qml
index 5941be1..d9def0f 100644
--- a/config_reseau_wifi_sta.qml
+++ b/config_reseau_wifi_sta.qml
@@ -45,6 +45,7 @@ Shipheart_page {
property int compteur_scan_wifi_sta: 0
property int stackview_niveau_page: 0
property string bssid: ""
+ property int sta_bande: 0 // 0=tout (2.4GHz et 5GHz), 1=2.4GHz et 2=5GHz
property bool flag_pwd_visible: false
property bool flag_wifi_sta_up: false
@@ -210,6 +211,35 @@ Shipheart_page {
}
}
+ //-------------------------------------------------------------------------------
+ // Ligne de formulaire : STA_Bande
+ Rectangle {
+ width: parent.width
+ height: visible ? hauteur_ligne_formulaire : 0
+ color: "transparent"
+ visible: !flag_init &&
+ (champ_formulaire_Sta_commande.model.get(champ_formulaire_Sta_commande.currentIndex).valeur === 1)
+
+ Shipheart_formulaire_label {
+ text: qsTr("Fréquences")
+ width: parent.width * pourcentage_largeur_labels_formulaire
+ }
+
+ Shipheart_formulaire_combobox {
+ id: champ_formulaire_Sta_bande
+ model: ListModel { }
+ width: parent.width * (1 - pourcentage_largeur_labels_formulaire)
+ onActivated: {
+ shipheart_clic();
+ sta_bande = champ_formulaire_Sta_bande.model.get(champ_formulaire_Sta_bande.currentIndex).valeur;
+ }
+ }
+
+ Shipheart_formulaire_ligne_separation {
+ haut_bas_hautbas: shipheart_formulaire_ligne_separation_basse
+ }
+ }
+
}
}
}
@@ -385,10 +415,6 @@ Shipheart_page {
var i;
var nom_champ, valeur_champ;
var commande_sta;
- var commande_ap;
- var mode;
- var ap_canal;
-
stackview_niveau_page = stackView.depth;
@@ -419,6 +445,22 @@ Shipheart_page {
if (i === -1) champ_formulaire_Sta_commande.currentIndex = recherche_index_valeur_modele(1, champ_formulaire_Sta_commande.model, "commande_sta");
else champ_formulaire_Sta_commande.currentIndex = i;
+ //---------------------------------------------------------------------------------------
+ // Sta_bande:
+ req = 'SELECT Valeur FROM TB_Configuration WHERE Nom="Wifi_sta_bande" ';
+ res = bdd.requete_unique(req);
+ sta_bande = Number(res[0]);
+
+ champ_formulaire_Sta_bande.model.clear();
+ champ_formulaire_Sta_bande.model.append({"valeur": 0, "texte": qsTr("Auto (2.4GHz & 5GHz)") });
+ champ_formulaire_Sta_bande.model.append({"valeur": 1, "texte": qsTr("2.4GHz") });
+ champ_formulaire_Sta_bande.model.append({"valeur": 2, "texte": qsTr("5GHz") });
+
+ // Positionnement de l'index sur la valeur en cours :
+ i = recherche_index_valeur_modele(sta_bande, champ_formulaire_Sta_bande.model, "sta_bande");
+ if (i === -1) champ_formulaire_Sta_bande.currentIndex = recherche_index_valeur_modele(1, champ_formulaire_Sta_bande.model, "sta_bande");
+ else champ_formulaire_Sta_bande.currentIndex = i;
+
mise_a_jour();
@@ -457,7 +499,22 @@ Shipheart_page {
"qualite_ssid": 0,
"connu": false });
- req = 'SELECT Bssid, Presence, Nom, Psk, Canal, Qualite, Connu FROM TB_Wifi_sta ORDER BY Qualite DESC ';
+ var filtre;
+ switch(sta_bande)
+ {
+ case 1:
+ filtre = "WHERE Canal<20"; // 2.4GHz seulement
+ break;
+ case 2:
+ filtre = "WHERE Canal>=20"; // 5GHz seulement
+ break;
+ case 0:
+ default:
+ filtre = ""; // Toutes les fréquences
+ break;
+ }
+
+ req = 'SELECT Bssid, Presence, Nom, Psk, Canal, Qualite, Connu FROM TB_Wifi_sta ' + filtre + ' ORDER BY Qualite DESC ';
//console.log("req = [ " + req + " ;]");
nb = bdd.requete(req);
@@ -534,6 +591,10 @@ Shipheart_page {
// Mise à jour dans TB_Configuration :
req = 'UPDATE TB_Configuration SET Valeur="' + champ_formulaire_Sta_commande.model.get(champ_formulaire_Sta_commande.currentIndex).valeur + '" WHERE Nom="Wifi_sta_cde" ';
bdd.requete_unique(req);
+
+ req = 'UPDATE TB_Configuration SET Valeur="' + champ_formulaire_Sta_bande.model.get(champ_formulaire_Sta_bande.currentIndex).valeur + '" WHERE Nom="Wifi_sta_bande" ';
+ bdd.requete_unique(req);
+
req = 'UPDATE TB_Configuration SET Valeur="' + champ_formulaire_Sta_liste_ssid.model.get(champ_formulaire_Sta_liste_ssid.currentIndex).bssid + '" WHERE Nom="BSSID_Wifi_sta" ';
bdd.requete_unique(req);
diff --git a/home.qml b/home.qml
index 4270a67..f6df195 100644
--- a/home.qml
+++ b/home.qml
@@ -2991,11 +2991,14 @@ console.log("Exécution de la commande [ " + commande + " ]");
res = bdd.requete_unique(req);
adresse = res[0];
- req = 'SELECT Nom, Canal, Qualite FROM TB_Wifi_sta WHERE Bssid="' + bssid + '" ';
+ req = 'SELECT Nom, Qualite FROM TB_Wifi_sta WHERE Bssid="' + bssid + '" ';
res = bdd.requete_unique(req);
nom = res[0];
- canal = Number(res[1]);
- qualite = Number(res[2]);
+ qualite = Number(res[1]);
+
+ req = 'SELECT Valeur FROM TB_Systeme WHERE Nom="Canal_wifi_sta" ';
+ res = bdd.requete_unique(req);
+ canal = res[0];
msg += "