Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependents: UsbHostMAX3421E_Hello
Diff: UHS2_gpio.cpp
- Revision:
- 0:84353c479782
- Child:
- 1:2263e77400e9
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/UHS2_gpio.cpp Sun Jul 12 20:39:26 2020 +0000 @@ -0,0 +1,74 @@ +/* Copyright (C) 2011 Circuits At Home, LTD. All rights reserved. + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +Contact information +------------------- + +Circuits At Home, LTD +Web : http://www.circuitsathome.com +e-mail : support@circuitsathome.com + +UHS2_GPIO implements "wiring" style GPIO access. Implemented by Brian Walton brian@riban.co.uk + */ + +#include "UHS2_gpio.h" + +/** @brief Implement an instance of a UHS2_GPIO object +* @param pUSB Pointer to a UHS2 USB object +*/ +UHS2_GPIO::UHS2_GPIO(USB *pUsb) : m_pUsb(pUsb) +{ +} + +/** @brief Set a GPIO output value +* @param pin GPIO output pin on USB Host Shield to set +* @param val Value to set the pin to (zero value will clear output, non-zero value will assert output) +*/ +void UHS2_GPIO::digitalWrite(uint8_t pin, uint8_t val) { + if(pin > 7) + return; + uint8_t nValue = m_pUsb->gpioRdOutput(); + uint8_t nMask = 1 << pin; + nValue &= (~nMask); + if(val) + nValue |= (nMask); + m_pUsb->gpioWr(nValue); +} + +/** @brief Read the value from a GPIO input pin +* @param pin GPIO input pin on USB Host Shield to read +* @retval int Value of GPIO input (-1 on fail) +*/ +int UHS2_GPIO::digitalRead(uint8_t pin) { + if(pin > 7) + return -1; + uint8_t nMask = 1 << pin; + uint8_t nValue = m_pUsb->gpioRd(); + return ((nValue & nMask)?1:0); +} + +/** @brief Read the value from a GPIO output pin +* @param pin GPIO output pin on USB Host Shield to read +* @retval int Value of GPIO output (-1 on fail) +* @note Value of MAX3421E output register, i.e. what the device has been set to, not the physical value on the pin +*/ +int UHS2_GPIO::digitalReadOutput(uint8_t pin) { + if(pin > 7) + return -1; + uint8_t nMask = 1 << pin; + uint8_t nValue = m_pUsb->gpioRdOutput(); + return ((nValue & nMask)?1:0); +}