Revision 78cc79d4
| include/MIC9404x/alld_MIC9404x.h | ||
|---|---|---|
| 1 | 
    /*  | 
|
| 2 | 
    AMiRo-LLD is a compilation of low-level hardware drivers for the Autonomous Mini Robot (AMiRo) platform.  | 
|
| 3 | 
    Copyright (C) 2016..2019 Thomas Schöpping et al.  | 
|
| 4 | 
     | 
|
| 5 | 
    This program is free software: you can redistribute it and/or modify  | 
|
| 6 | 
    it under the terms of the GNU Lesser General Public License as published by  | 
|
| 7 | 
    the Free Software Foundation, either version 3 of the License, or  | 
|
| 8 | 
    (at your option) any later version.  | 
|
| 9 | 
     | 
|
| 10 | 
    This program is distributed in the hope that it will be useful,  | 
|
| 11 | 
    but WITHOUT ANY WARRANTY; without even the implied warranty of  | 
|
| 12 | 
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the  | 
|
| 13 | 
    GNU Lesser General Public License for more details.  | 
|
| 14 | 
     | 
|
| 15 | 
    You should have received a copy of the GNU Lesser General Public License  | 
|
| 16 | 
    along with this program. If not, see <http://www.gnu.org/licenses/>.  | 
|
| 17 | 
    */  | 
|
| 18 | 
     | 
|
| 19 | 
    /**  | 
|
| 20 | 
    * @file alld_MIC9404x.h  | 
|
| 21 | 
    *  | 
|
| 22 | 
    * @addtogroup lld_powerswitch  | 
|
| 23 | 
     * @{
   | 
|
| 24 | 
    */  | 
|
| 25 | 
     | 
|
| 26 | 
    #ifndef AMIROLLD_MIC9404x_H  | 
|
| 27 | 
    #define AMIROLLD_MIC9404x_H  | 
|
| 28 | 
     | 
|
| 29 | 
    #include <amiro-lld.h>  | 
|
| 30 | 
     | 
|
| 31 | 
    #if defined(AMIROLLD_CFG_MIC9404x)  | 
|
| 32 | 
     | 
|
| 33 | 
    #if (AMIROLLD_CFG_MIC9404x == 1)  | 
|
| 34 | 
    #include "v1/alld_MIC9404x_v1.h"  | 
|
| 35 | 
    #else  | 
|
| 36 | 
    #error "invalid value assigned to AMIROLLD_CFG_MIC9404x in alldconf.h"  | 
|
| 37 | 
    #endif  | 
|
| 38 | 
     | 
|
| 39 | 
    #endif /* defined(AMIROLLD_CFG_MIC9404x) */  | 
|
| 40 | 
     | 
|
| 41 | 
    #endif /* AMIROLLD_MIC9404x_H */  | 
|
| 42 | 
     | 
|
| 43 | 
    /** @} */  | 
|
| include/MIC9404x/v1/alld_MIC9404x_v1.h | ||
|---|---|---|
| 1 | 
    /*  | 
|
| 2 | 
    AMiRo-LLD is a compilation of low-level hardware drivers for the Autonomous Mini Robot (AMiRo) platform.  | 
|
| 3 | 
    Copyright (C) 2016..2019 Thomas Schöpping et al.  | 
|
| 4 | 
     | 
|
| 5 | 
    This program is free software: you can redistribute it and/or modify  | 
|
| 6 | 
    it under the terms of the GNU Lesser General Public License as published by  | 
|
| 7 | 
    the Free Software Foundation, either version 3 of the License, or  | 
|
| 8 | 
    (at your option) any later version.  | 
|
| 9 | 
     | 
|
| 10 | 
    This program is distributed in the hope that it will be useful,  | 
|
| 11 | 
    but WITHOUT ANY WARRANTY; without even the implied warranty of  | 
|
| 12 | 
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the  | 
|
| 13 | 
    GNU Lesser General Public License for more details.  | 
|
| 14 | 
     | 
|
| 15 | 
    You should have received a copy of the GNU Lesser General Public License  | 
|
| 16 | 
    along with this program. If not, see <http://www.gnu.org/licenses/>.  | 
|
| 17 | 
    */  | 
|
| 18 | 
     | 
|
| 19 | 
    /**  | 
|
| 20 | 
    * @file alld_MIC9404x_v1.h  | 
|
| 21 | 
    * @brief MIC9404x power switch macros and structures.  | 
|
| 22 | 
    *  | 
|
| 23 | 
    * @addtogroup lld_powerswitch  | 
|
| 24 | 
     * @{
   | 
|
| 25 | 
    */  | 
|
| 26 | 
     | 
|
| 27 | 
    #ifndef AMIROLLD_MIC9404x_V1_H  | 
|
| 28 | 
    #define AMIROLLD_MIC9404x_V1_H  | 
|
| 29 | 
     | 
|
| 30 | 
    #include <amiro-lld.h>  | 
|
| 31 | 
     | 
|
| 32 | 
    #if (defined(AMIROLLD_CFG_MIC9404x) && (AMIROLLD_CFG_MIC9404x == 1)) || defined(__DOXYGEN__)  | 
|
| 33 | 
     | 
|
| 34 | 
    /******************************************************************************/  | 
|
| 35 | 
    /* CONSTANTS */  | 
|
| 36 | 
    /******************************************************************************/  | 
|
| 37 | 
     | 
|
| 38 | 
    /**  | 
|
| 39 | 
    * @brief Active state of EN GPIO (active high).  | 
|
| 40 | 
    */  | 
|
| 41 | 
    #define MIC9404x_LLD_EN_ACTIVE_STATE APAL_GPIO_ACTIVE_HIGH  | 
|
| 42 | 
     | 
|
| 43 | 
    /******************************************************************************/  | 
|
| 44 | 
    /* SETTINGS */  | 
|
| 45 | 
    /******************************************************************************/  | 
|
| 46 | 
     | 
|
| 47 | 
    /******************************************************************************/  | 
|
| 48 | 
    /* CHECKS */  | 
|
| 49 | 
    /******************************************************************************/  | 
|
| 50 | 
     | 
|
| 51 | 
    /******************************************************************************/  | 
|
| 52 | 
    /* DATA STRUCTURES AND TYPES */  | 
|
| 53 | 
    /******************************************************************************/  | 
|
| 54 | 
     | 
|
| 55 | 
    /**  | 
|
| 56 | 
    * @brief MIC9404x driver data structure.  | 
|
| 57 | 
    */  | 
|
| 58 | 
    typedef struct {
   | 
|
| 59 | 
    const apalControlGpio_t* en; /**< @brief The identifier of the EN GPIO. */  | 
|
| 60 | 
    } MIC9404xDriver;  | 
|
| 61 | 
     | 
|
| 62 | 
    /**  | 
|
| 63 | 
    * @brief The state of the MIC9404x.  | 
|
| 64 | 
    */  | 
|
| 65 | 
    typedef enum {
   | 
|
| 66 | 
    MIC9404x_LLD_STATE_OFF = 0x00, /**< 'on' state of the MIC9404x */  | 
|
| 67 | 
    MIC9404x_LLD_STATE_ON = 0x01, /**< 'off' state of the MIC9404x */  | 
|
| 68 | 
    } mic9404x_lld_state_t;  | 
|
| 69 | 
     | 
|
| 70 | 
    /******************************************************************************/  | 
|
| 71 | 
    /* MACROS */  | 
|
| 72 | 
    /******************************************************************************/  | 
|
| 73 | 
     | 
|
| 74 | 
    /******************************************************************************/  | 
|
| 75 | 
    /* EXTERN DECLARATIONS */  | 
|
| 76 | 
    /******************************************************************************/  | 
|
| 77 | 
     | 
|
| 78 | 
    #ifdef __cplusplus  | 
|
| 79 | 
    extern "C" {
   | 
|
| 80 | 
    #endif  | 
|
| 81 | 
    apalExitStatus_t mic9404x_lld_set(const MIC9404xDriver* const mic9404x, const mic9404x_lld_state_t state);  | 
|
| 82 | 
    apalExitStatus_t mic9404x_lld_get(const MIC9404xDriver* const mic9404x, mic9404x_lld_state_t* const state);  | 
|
| 83 | 
    #ifdef __cplusplus  | 
|
| 84 | 
    }  | 
|
| 85 | 
    #endif  | 
|
| 86 | 
     | 
|
| 87 | 
    /******************************************************************************/  | 
|
| 88 | 
    /* INLINE FUNCTIONS */  | 
|
| 89 | 
    /******************************************************************************/  | 
|
| 90 | 
     | 
|
| 91 | 
    #endif /* defined(AMIROLLD_CFG_MIC9404x) && (AMIROLLD_CFG_MIC9404x == 1) */  | 
|
| 92 | 
     | 
|
| 93 | 
    #endif /* AMIROLLD_MIC9404x_V1_H */  | 
|
| 94 | 
     | 
|
| 95 | 
    /** @} */  | 
|
| source/MIC9404x/v1/alld_MIC9404x_v1.c | ||
|---|---|---|
| 1 | 
    /*  | 
|
| 2 | 
    AMiRo-LLD is a compilation of low-level hardware drivers for the Autonomous Mini Robot (AMiRo) platform.  | 
|
| 3 | 
    Copyright (C) 2016..2019 Thomas Schöpping et al.  | 
|
| 4 | 
     | 
|
| 5 | 
    This program is free software: you can redistribute it and/or modify  | 
|
| 6 | 
    it under the terms of the GNU Lesser General Public License as published by  | 
|
| 7 | 
    the Free Software Foundation, either version 3 of the License, or  | 
|
| 8 | 
    (at your option) any later version.  | 
|
| 9 | 
     | 
|
| 10 | 
    This program is distributed in the hope that it will be useful,  | 
|
| 11 | 
    but WITHOUT ANY WARRANTY; without even the implied warranty of  | 
|
| 12 | 
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the  | 
|
| 13 | 
    GNU Lesser General Public License for more details.  | 
|
| 14 | 
     | 
|
| 15 | 
    You should have received a copy of the GNU Lesser General Public License  | 
|
| 16 | 
    along with this program. If not, see <http://www.gnu.org/licenses/>.  | 
|
| 17 | 
    */  | 
|
| 18 | 
     | 
|
| 19 | 
    /**  | 
|
| 20 | 
    * @file alld_MIC9404x_v1.c  | 
|
| 21 | 
    * @brief MIC9404x power switch function implementations.  | 
|
| 22 | 
    *  | 
|
| 23 | 
    * @addtogroup lld_powerswitch  | 
|
| 24 | 
     * @{
   | 
|
| 25 | 
    */  | 
|
| 26 | 
     | 
|
| 27 | 
    #include <alld_MIC9404x.h>  | 
|
| 28 | 
     | 
|
| 29 | 
    #if (defined(AMIROLLD_CFG_MIC9404x) && (AMIROLLD_CFG_MIC9404x == 1)) || defined(__DOXYGEN__)  | 
|
| 30 | 
     | 
|
| 31 | 
    /******************************************************************************/  | 
|
| 32 | 
    /* LOCAL DEFINITIONS */  | 
|
| 33 | 
    /******************************************************************************/  | 
|
| 34 | 
     | 
|
| 35 | 
    /******************************************************************************/  | 
|
| 36 | 
    /* EXPORTED VARIABLES */  | 
|
| 37 | 
    /******************************************************************************/  | 
|
| 38 | 
     | 
|
| 39 | 
    /******************************************************************************/  | 
|
| 40 | 
    /* LOCAL TYPES */  | 
|
| 41 | 
    /******************************************************************************/  | 
|
| 42 | 
     | 
|
| 43 | 
    /******************************************************************************/  | 
|
| 44 | 
    /* LOCAL VARIABLES */  | 
|
| 45 | 
    /******************************************************************************/  | 
|
| 46 | 
     | 
|
| 47 | 
    /******************************************************************************/  | 
|
| 48 | 
    /* LOCAL FUNCTIONS */  | 
|
| 49 | 
    /******************************************************************************/  | 
|
| 50 | 
     | 
|
| 51 | 
    /******************************************************************************/  | 
|
| 52 | 
    /* EXPORTED FUNCTIONS */  | 
|
| 53 | 
    /******************************************************************************/  | 
|
| 54 | 
     | 
|
| 55 | 
    /**  | 
|
| 56 | 
    * @brief Set the MIC9404x to a specific state.  | 
|
| 57 | 
    * @param[in] mic9404x The MIC9404x driver object.  | 
|
| 58 | 
    * @param[in] state The state to set the MIC9404x to.  | 
|
| 59 | 
    * @return An indicator whether the call was successful.  | 
|
| 60 | 
    */  | 
|
| 61 | 
    apalExitStatus_t mic9404x_lld_set(const MIC9404xDriver* const mic9404x, const mic9404x_lld_state_t state)  | 
|
| 62 | 
    {
   | 
|
| 63 | 
    apalDbgAssert(mic9404x != NULL);  | 
|
| 64 | 
     | 
|
| 65 | 
    return apalControlGpioSet(mic9404x->en, (state == MIC9404x_LLD_STATE_ON) ? APAL_GPIO_ON : APAL_GPIO_OFF);  | 
|
| 66 | 
    }  | 
|
| 67 | 
     | 
|
| 68 | 
    /**  | 
|
| 69 | 
    * @brief Get the current status of the MIC9404x.  | 
|
| 70 | 
    * @param[in] mic9404x The MIC9404x driver object.  | 
|
| 71 | 
    * @param[out] state The state object to fill.  | 
|
| 72 | 
    * @return An indicator whether the call was successful.  | 
|
| 73 | 
    */  | 
|
| 74 | 
    apalExitStatus_t mic9404x_lld_get(const MIC9404xDriver* const mic9404x, mic9404x_lld_state_t* const state)  | 
|
| 75 | 
    {
   | 
|
| 76 | 
    apalDbgAssert(mic9404x != NULL);  | 
|
| 77 | 
    apalDbgAssert(state != NULL);  | 
|
| 78 | 
     | 
|
| 79 | 
    apalControlGpioState_t gpio_state;  | 
|
| 80 | 
    apalExitStatus_t status = apalControlGpioGet(mic9404x->en, &gpio_state);  | 
|
| 81 | 
    *state = gpio_state == APAL_GPIO_ON ? MIC9404x_LLD_STATE_ON : MIC9404x_LLD_STATE_OFF;  | 
|
| 82 | 
    return status;  | 
|
| 83 | 
    }  | 
|
| 84 | 
     | 
|
| 85 | 
    #endif /* defined(AMIROLLD_CFG_MIC9404x) && (AMIROLLD_CFG_MIC9404x == 1) */  | 
|
| 86 | 
     | 
|
| 87 | 
    /** @} */  | 
|
Also available in: Unified diff