====== Relais réservé pour les plans d'urgences ======
Lorsqu'un plan d'urgence est activé localement, les relais radioamateurs sont utilisés par les structures d'aide, tel que la [[http://www.fnrasec.org| FNRASEC]] en France. Cette page explique comment configurer un relais SvxLink pour ajouter un mode d'urgence.
Une fois le mode activé, une balise d'information "le relais est actuellement réservé pour un plan d'urgence... laisser priorité aux services d'urgence. Merci pour votre compréhension".
{{:documents:emergency.mp3|}}
Les messages standards d'ouverture et fermeture de relais, ainsi que les balises standards et régulières ne sont plus diffusées.
===== Modifier /Logic.tcl =====
Ajouter la déclaration de la variable globale ''emergency'' dans le ''namespace Logic'':
###############################################################################
#
# Generic Logic event handlers
#
###############################################################################
#
# This is the namespace in which all functions and variables below will exist.
#
namespace eval Logic {
#
# A global variable for emergency mode
#
variable emergency 0;
#
# A variable used to store a timestamp for the last identification.
#
variable prev_ident 0;
===== Activation et désactivation du mode d'urgence =====
Pour activer et désactiver le mode d'urgence par code DTMF, ajouter ce bout de code dans la focntion ''dtmf_cmd_received'' de ''Logic.tcl''. Ici nous activons le mode urgence avec le code ''281'', et désactivons par ''280''. Il est conseillé de mettre un place un code "compliqué" à diffusion contrôlée. Vous pouvez également sécurisés ce code par [[fr:sysop_code|le principe des codes sysop]].
proc dtmf_cmd_received {cmd} {variable emergency;
if {$cmd == "281"} {
set emergency 1
puts "Emergency actived status: $emergency"
playMsg "SVXCard/Emergency" "EmergencyMode"
playMsg "repeater_commands" "activating"
playSilence 500
playMsg "SVXCard" "Emergency/EmergencyBeacon"
return 1
}
if {$cmd == "280"} {
set emergency 0
puts "Emergency desactived status: $emergency"
playMsg "SVXCard/Emergency" "EmergencyMode"
playMsg "repeater_commands" "deactivating"
return 1
}
Dans ''Logic.tcl'', on ajoute également une fonction qui permet de transmettre l'information de l'état de l'activation du mode d'urgence à la logique relais (''RepearLogic.tcl'').
proc status_emergency {} {
variable emergency;
return $emergency;
}
===== Filtrage des balises =====
Lorsque le mode d'urgence est activée, nous ne voulons plus de l'annonce standard d'ouverture du relais. Le filtre se fait part un test logique de l'état d'activation du mode d'urgence, dans la fonction existante ''repeater_up'' de ''RepeaterLogic.tcl''
if ![Logic::status_emergency] {
# Normal Execution
}
Vous pouvez remplace le message d'accueil par la balise d'information en ajoutant les lignes suivantes ( à insérer entre **# Normal Execution** et ** }** du code précédent ):
} else {
playMsg "SVXCard" "Emergency/EmergencyBeacon";
===== Balise audio d'urgence régulière =====
Lorsque le relais est en mode d'urgence, nous allons diffuser régulièrement le message d'information. Pour exemple, ce message peut être "le relais est actuellement réservé pour un plan d'urgence... laisser priorité aux services d'urgence. Merci pour votre compréhension.". Le fichier son au format wav sera positionné dans ''/usr/share/svxlink/sounds/fr_FR/SVXCard/Emergency/''.
{{:documents:emergency.mp3|Balise d'information mode d'urgence}}
Nous allons ajouter le code suivant dans la fonction ''checkPeriodicIdentify'' du fichier ''Logic.tcl'' positionné entre la fin des déclaration de variable ''global logic_name;'' et le test logique '' if {$short_ident_interval == 0} { ...''.
proc checkPeriodicIdentify {} {
variable prev_ident;
variable short_ident_interval;
variable long_ident_interval;
variable min_time_between_ident;
variable ident_only_after_tx;
variable need_ident;
global logic_name;
if {[Logic::status_emergency]} {
set now [clock seconds];
set hour [clock format $now -format "%k"];
regexp {([1-5]?\d)$} [clock format $now -format "%M"] -> minute;
set emergency_ident_interval 2; #period of emergency beacon (in minutes)
set emergency_ident_now \
[expr {($hour * 60 + $minute) % $emergency_ident_interval == 0}];
puts "$hour $now $minute $emergency_ident_now";
if { $emergency_ident_now } {
puts "$logic_name: Sending Emergency identification...";
playMsg "SVXCard" "Emergency/EmergencyBeacon"
}
return; #Following standard identification no more executed
}
if {$short_ident_interval == 0} {
return;
}
La ligne ''set $emergency_ident_interval 2;'' indique que la balise d'information du mode d'urgence sera envoyé toutes les deux minutes. La valeur est à personnaliser en fonction de votre besoin.
{{youtube>75a9yZz6PjY?medium}}