You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
66 lines
1.5 KiB
66 lines
1.5 KiB
/**
|
|
* \file
|
|
* \brief Interface to drive the robot.
|
|
* \author Erich Styger, erich.styger@hslu.ch
|
|
* \license SPDX-License-Identifier: BSD-3-Clause
|
|
* This module allows to drive the robot and to perform turns.
|
|
*/
|
|
|
|
#ifndef DRIVE_H_
|
|
#define DRIVE_H_
|
|
|
|
#include "platform.h"
|
|
#if PL_CONFIG_USE_DRIVE
|
|
|
|
#if PL_CONFIG_USE_SHELL
|
|
#include "McuShell.h"
|
|
|
|
/*!
|
|
* \brief Parses a command
|
|
* \param cmd Command string to be parsed
|
|
* \param handled Sets this variable to TRUE if command was handled
|
|
* \param io I/O stream to be used for input/output
|
|
* \return Error code, ERR_OK if everything was fine
|
|
*/
|
|
uint8_t DRV_ParseCommand(const unsigned char *cmd, bool *handled, const McuShell_StdIOType *io);
|
|
#endif /* PL_CONFIG_USE_SHELL */
|
|
|
|
typedef enum {
|
|
DRV_MODE_NONE,
|
|
DRV_MODE_STOP,
|
|
DRV_MODE_SPEED,
|
|
#if PL_CONFIG_USE_QUADRATURE
|
|
DRV_MODE_POS,
|
|
#endif
|
|
} DRV_Mode;
|
|
|
|
uint8_t DRV_SetSpeed(int32_t left, int32_t right);
|
|
#if PL_CONFIG_USE_QUADRATURE
|
|
uint8_t DRV_SetPos(int32_t left, int32_t right);
|
|
#endif
|
|
bool DRV_IsDrivingBackward(void);
|
|
uint8_t DRV_SetMode(DRV_Mode mode);
|
|
DRV_Mode DRV_GetMode(void);
|
|
bool DRV_IsStopped(void);
|
|
bool DRV_HasTurned(void);
|
|
|
|
/*!
|
|
* \brief Stops the engines
|
|
* \param timoutMs timout in milliseconds for operation
|
|
* \return ERR_OK if stopped, ERR_BUSY for timeout condition.
|
|
*/
|
|
uint8_t DRV_Stop(int32_t timeoutMs);
|
|
|
|
/*!
|
|
* \brief Driver initialization.
|
|
*/
|
|
void DRV_Init(void);
|
|
|
|
/*!
|
|
* \brief Driver de-initialization.
|
|
*/
|
|
void DRV_Deinit(void);
|
|
|
|
#endif /* PL_CONFIG_USE_DRIVE */
|
|
|
|
#endif /* DRIVE_H_ */
|
|
|