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;