mbed library sources. Supersedes mbed-src.

Dependents:   Nucleo_Hello_Encoder BLE_iBeaconScan AM1805_DEMO DISCO-F429ZI_ExportTemplate1 ... more

targets/TARGET_Cypress/TARGET_PSOC6/gpio_object.h

Committer:
AnnaBridge
Date:
2019-02-20
Revision:
189:f392fc9709a3
Parent:
188:bcfe06ba3d64

File content as of revision 189:f392fc9709a3:

/*
 * mbed Microcontroller Library
 * Copyright (c) 2017-2018 Future Electronics
 * Copyright (c) 2018-2019 Cypress Semiconductor Corporation
 * SPDX-License-Identifier: Apache-2.0
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

#ifndef MBED_GPIO_OBJECTS_H
#define MBED_GPIO_OBJECTS_H

#include "mbed_assert.h"
#include "PinNamesTypes.h"
#include "PinNames.h"

#include "cy_gpio.h"

#ifdef __cplusplus
extern "C" {
#endif

struct gpio_s {
    GPIO_PRT_Type *port;
    PinName pin;
    PinDirection dir;
    PinMode mode;
};

typedef struct gpio_s   gpio_t;

/** Set the output value
 *
 * @param obj   The GPIO object
 * @param value The value to be set
 */
static inline void gpio_write(gpio_t *obj, int value)
{
    MBED_ASSERT(obj->pin != NC);

    Cy_GPIO_Write(obj->port, CY_PIN(obj->pin), value);
}

/** Read the input value
 *
 * @param obj The GPIO object
 * @return An integer value 1 or 0
 */
static inline int gpio_read(gpio_t *obj)
{
    MBED_ASSERT(obj->pin != NC);

    return Cy_GPIO_Read(obj->port, CY_PIN(obj->pin));
}

static inline int gpio_is_connected(const gpio_t *obj)
{
    return obj->pin != NC;
}

/** Get the pin name from the port's pin number
 *
 * @param port  The port name
 * @param pin_n The pin number within the specified port
 * @return The pin name for the port's pin number
 */
inline PinName port_pin(PortName port, int pin_n)
{
    return (PinName)((port << 8) + pin_n);
}


#ifdef __cplusplus
}
#endif

#endif // MBED_GPIO_OBJECTS_H