File : motor.adb
-- -*- Mode: Ada -*-
-- Filename : motor.adb
-- Description : All you need to operate the motor
-- Author : Christfried Webers
-- Created On : Mon Nov 1 15:26:16 1999
-- Last Modified By: .
-- Last Modified On: .
-- Update Count : 0
-- Status : Unknown, Use with caution!
----------------------------------------------------------------------
with Flex_Driver;
with Motor_Handler;
-- with Ada.Real_Time;
-- testing only
with Text_IO; use Text_IO;
package body Motor is
procedure Init is
begin
Flex_Driver.SerialPort.Init;
Motor_Handler.Commander.StartReading;
end Init;
procedure Shutdown is
begin
Motor_Handler.Commander.StopReading;
-- Put_Line("Motor_Handler.Commander.StopReading finished");
Motor_Handler.Reader.NonBlocking;
SetLinearVelocity (0.0);
Flex_Driver.WriteTask.WaitForLinMotorCommandAck;
SetLinearAcceleration (10.0);
Flex_Driver.WriteTask.WaitForLinMotorCommandAck;
-- Put_Line("Shutdown: Linear Velocity finished");
SetAngularVelocity (0.0);
Flex_Driver.WriteTask.WaitForAngMotorCommandAck;
SetAngularAcceleration (10.0);
Flex_Driver.WriteTask.WaitForAngMotorCommandAck;
-- Put_Line("Shutdown: Angular Velocity finished");
Flex_Driver.SerialPort.Shutdown;
-- Put_Line("Flex_Driver.SerialPort.Shutdown finished");
end Shutdown;
procedure GetCurrentStatus (MotorStatus : out Status) is
begin
Motor_Handler.Reader.GetCurrentStatus (MotorStatus);
end GetCurrentStatus;
procedure WaitForNewData is
begin
Motor_Handler.Reader.WaitForNewData;
end WaitForNewData;
procedure SetLinearVelocity (Velocity : LinVel) is
begin
Motor_Handler.Commander.SetLinearVelocity (Velocity);
end SetLinearVelocity;
procedure SetAngularVelocity (Velocity : AngVel) is
begin
Motor_Handler.Commander.SetAngularVelocity (Velocity);
end SetAngularVelocity;
procedure SetLinearAcceleration (Acceleration : LinAcc) is
begin
Motor_Handler.Commander.SetLinearAcceleration (Acceleration);
end SetLinearAcceleration;
procedure SetAngularAcceleration (Acceleration : AngAcc) is
begin
Motor_Handler.Commander.SetAngularAcceleration (Acceleration);
end SetAngularAcceleration;
procedure SetLinearTorque (Torque : LinTorque) is
begin
Motor_Handler.Commander.SetLinearTorque (Torque);
end SetLinearTorque;
procedure SetAngularTorque (Torque : AngTorque) is
begin
Motor_Handler.Commander.SetAngularTorque (Torque);
end SetAngularTorque;
procedure WaitForLinearCommandAck is
begin
Flex_Driver.WriteTask.WaitForLinMotorCommandAck;
end WaitForLinearCommandAck;
procedure WaitForAngularCommandAck is
begin
Flex_Driver.WriteTask.WaitForAngMotorCommandAck;
end WaitForAngularCommandAck;
end Motor;