Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- With Ada.Text_IO; use Ada.Text_IO;
- With Ada.Integer_Text_IO; use Ada.Integer_Text_IO;
- With ADA.Float_Text_IO; use ADA.Float_Text_IO;
- procedure Telefono is
- protected type bateria is
- procedure res_bateria;
- function estado return float;
- private
- porcentaje:float:=100.0;
- end bateria;
- protected body bateria is
- procedure res_bateria is
- begin
- porcentaje := porcentaje - 0.00001;
- end res_bateria;
- function estado return float is
- begin
- return porcentaje;
- end estado;
- end bateria;
- type peticion is
- record
- id:character;
- numero:integer;
- end record;
- pet:peticion;
- task peticiones is
- entry LlamadaEntrante;
- entry LlamadaSaliente;
- entry EstadoBateria;
- end peticiones;
- task interfaz;
- task encendido;
- bateria_telefono:bateria;
- task body encendido is
- begin
- loop
- bateria_telefono.res_bateria;
- delay 1.0;
- end loop;
- end encendido;
- task body interfaz is
- begin
- loop
- put("Introduce peticion: "); get(pet.id); get(pet.numero);
- if (pet.id = 'E') then
- peticiones.LlamadaEntrante;
- else if (pet.id = 'S') then
- peticiones.LlamadaSaliente;
- else
- peticiones.EstadoBateria;
- end if;
- end if;
- end loop;
- end interfaz;
- task body peticiones is
- begin
- loop
- select
- accept LlamadaEntrante do
- put("Ha llegado una llamada del numero: "); put(pet.numero); new_line;
- delay 5.0; --5 segundos de llamada
- end LlamadaEntrante;
- or
- accept LlamadaSaliente do
- put_Line("Llamada Establecida numero: "); put(pet.numero); new_line;
- delay 10.0; --10 segundos de llamada
- end LlamadaSaliente;
- or
- accept EstadoBateria do
- put("Estado de la bateria: "); put(bateria_telefono.estado); put("%"); new_line;
- end EstadoBateria;
- end select;
- end loop;
- end peticiones;
- begin
- null;
- end Telefono;
Add Comment
Please, Sign In to add comment