new alert messages handling

This commit is contained in:
Pascal Brisset
2005-12-14 16:04:28 +00:00
parent 2ef94f58fb
commit 366b0b4699
4 changed files with 27 additions and 13 deletions
+4
View File
@@ -450,6 +450,10 @@
<field name="level" type="string" values="CATASTROPHIC|CRITIC|WARNING"/>
<field name="value" type="float"/>
</message>
<message name="AIR_PROX" ID="2">
<field name="ac_id" type="string"/>
<field name="level" type="string" values="CATASTROPHIC|CRITIC|WARNING"/>
</message>
</class>
<class name="datalink">
+13 -8
View File
@@ -256,8 +256,8 @@ let ac_msg = fun log ac_name a m ->
let msg = Tele_Pprz.message_of_id msg_id in
log_and_parse log ac_name a msg values
with
Pprz.Unknown_msg_name x ->
fprintf stderr "Unknown message %s from %s: %s\n" x ac_name m
Pprz.Unknown_msg_name (x, c) ->
fprintf stderr "Unknown message %s in class %s from %s: %s\n" x c ac_name m
| x -> prerr_endline (Printexc.to_string x)
@@ -464,12 +464,17 @@ let periodic_airprox_check = fun name ->
let list_ac = List.map (fun name -> Hashtbl.find aircrafts name) ac_names in
let check_airprox = fun ac ->
match Airprox.check_airprox thisac ac with
None -> ()
| Some level ->
let vs =
["ac_id", Pprz.String (thisac.id ^ "," ^ ac.id) ; "level", Pprz.String level; "value", Pprz.String ac.id] in
Alerts_Pprz.message_send my_id "AIR_PROX" vs in
try
match Airprox.check_airprox thisac ac with
None -> ()
| Some level ->
let vs =
["ac_id", Pprz.String (thisac.id ^ "," ^ ac.id) ; "level", Pprz.String level] in
Alerts_Pprz.message_send my_id "AIR_PROX" vs
with
x -> fprintf stderr "check_airprox: %s\n%!" (Printexc.to_string x)
in
List.iter
(fun ac ->
+7 -4
View File
@@ -209,7 +209,7 @@ let sprint_value = fun buf i field_type v ->
module type CLASS = sig val name : string end
exception Unknown_msg_name of string
exception Unknown_msg_name of string * string
module Protocol(Class:CLASS) = struct
let stx = Char.chr 0x05
@@ -222,7 +222,11 @@ module Protocol(Class:CLASS) = struct
with
Not_found -> failwith (sprintf "Unknown message class: %s" Class.name)
let message_of_id = fun id -> Hashtbl.find messages_by_id id
let message_of_name = fun name -> Hashtbl.find messages_by_name name
let message_of_name = fun name ->
try
Hashtbl.find messages_by_name name
with
Not_found -> raise (Unknown_msg_name (name, Class.name))
let length = fun buf start ->
let len = String.length buf - start in
@@ -289,8 +293,7 @@ module Protocol(Class:CLASS) = struct
let values = List.map2 (fun (field_name, field) v -> (field_name, value field._type v)) msg.fields args in
(msg_id, values)
with
Not_found -> raise (Unknown_msg_name msg_name)
| Invalid_argument "List.map2" -> failwith (sprintf "Pprz.values_of_string: '%s'" s)
Invalid_argument "List.map2" -> failwith (sprintf "Pprz.values_of_string: '%s'" s)
end
| [] -> invalid_arg "Pprz.values_of_string"
+3 -1
View File
@@ -55,7 +55,9 @@ val int_assoc : string -> values -> int
val int32_assoc : string -> values -> int
(** May raise Not_found or Invalid_argument *)
exception Unknown_msg_name of string
exception Unknown_msg_name of string * string
(** [Unknown_msg_name (name, class_name)] Raised if message [name] is not
found in class [class_name]. *)
module type CLASS = sig val name : string end
module Protocol : functor (Class : CLASS) -> sig