LCOV - code coverage report
Current view: top level - hal - gpio.cpp (source / functions) Hit Total Coverage
Test: "4d72c01" Lines: 44 44 100.0 %
Date: 2024-02-24 14:56:23 Functions: 11 11 100.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : // ---------------------------------------------------------------------------
       2             : // USB EPROM/Flash Programmer
       3             : //
       4             : // Copyright (2022) Robson Martins
       5             : //
       6             : // This work is licensed under a Creative Commons Attribution-NonCommercial-
       7             : // ShareAlike 4.0 International License.
       8             : // ---------------------------------------------------------------------------
       9             : /**
      10             :  * @ingroup Firmware
      11             :  * @file hal/gpio.cpp
      12             :  * @brief Implementation of the Pico GPIO Class.
      13             :  *
      14             :  * @author Robson Martins (https://www.robsonmartins.com)
      15             :  */
      16             : // ---------------------------------------------------------------------------
      17             : 
      18             : #include "hal/gpio.hpp"
      19             : 
      20             : #include "hardware/gpio.h"
      21             : 
      22             : // ---------------------------------------------------------------------------
      23             : 
      24         243 : Gpio::Gpio() {}
      25             : 
      26        2515 : void Gpio::setPin(uint pin, bool value) {
      27        2515 :     initPin_(pin);
      28        2515 :     gpio_set_dir(pin, GPIO_OUT);
      29        2515 :     gpio_put(pin, value);
      30        2515 : }
      31             : 
      32        1032 : void Gpio::resetPin(uint pin) {
      33        1032 :     setPin(pin, false);
      34        1032 : }
      35             : 
      36           2 : void Gpio::togglePin(uint pin) {
      37           2 :     initPin_(pin);
      38           2 :     gpio_set_dir(pin, GPIO_OUT);
      39           2 :     uint32_t mask = 1ul << pin;
      40           2 :     gpio_xor_mask(mask);
      41           2 : }
      42             : 
      43         258 : bool Gpio::getPin(uint pin) {
      44         258 :     initPin_(pin);
      45         258 :     gpio_set_dir(pin, GPIO_IN);
      46         258 :     return (gpio_get(pin));
      47             : }
      48             : 
      49           3 : void Gpio::pullUp(uint pin, bool enable) {
      50           3 :     initPin_(pin);
      51           3 :     bool down = gpio_is_pulled_down(pin);
      52           3 :     gpio_set_pulls(pin, enable, down);
      53           3 : }
      54             : 
      55           3 : void Gpio::pullDown(uint pin, bool enable) {
      56           3 :     initPin_(pin);
      57           3 :     bool up = gpio_is_pulled_up(pin);
      58           3 :     gpio_set_pulls(pin, up, enable);
      59           3 : }
      60             : 
      61           1 : void Gpio::disablePulls(uint pin) {
      62           1 :     initPin_(pin);
      63           1 :     gpio_disable_pulls(pin);
      64           1 : }
      65             : 
      66           9 : bool Gpio::isPulledUp(uint pin) {
      67           9 :     initPin_(pin);
      68           9 :     return gpio_is_pulled_up(pin);
      69             : }
      70             : 
      71           9 : bool Gpio::isPulledDown(uint pin) {
      72           9 :     initPin_(pin);
      73           9 :     return gpio_is_pulled_down(pin);
      74             : }
      75             : 
      76        2800 : void Gpio::initPin_(uint pin) {
      77        2800 :     if (initPins_.find(pin) != initPins_.end()) {
      78        2755 :         return;
      79             :     }
      80          45 :     gpio_init(pin);
      81          45 :     initPins_.insert(pin);
      82             : }

Generated by: LCOV version 1.14