def test_open_pin_for_writing_somewaitmode_fails(self):
     with self.assertRaises( error.PinBlockModeInvalidError ):
         self.assertIsInstance(pin.open_pin(pin.PinId.p1_gpio_gen0(),'wR'),pin.PinWriter)
     with self.assertRaises( error.PinBlockModeInvalidError ):
         self.assertIsInstance(pin.open_pin(pin.PinId.p1_gpio_gen0(),'wF'),pin.PinWriter)
     with self.assertRaises( error.PinBlockModeInvalidError ):
         self.assertIsInstance(pin.open_pin(pin.PinId.p1_gpio_gen0(),'wB'),pin.PinWriter)
     with self.assertRaises( error.PinBlockModeInvalidError ):
         self.assertIsInstance(pin.open_pin(pin.PinId.p1_gpio_gen0(),'w#'),pin.PinWriter)
def with_open_pin_closed_in_with_clause_exit_cleanup():
    outside_value = None
    with pin.open_pin( pin.PinId.p1_gpio_gen1() ) as p:
        outside_value = p
        assert( not p.closed() )
        assert( not outside_value.closed() )
    assert( outside_value.closed() )
def wait_on_both_GPIO_GCLK_no_timeout():
    with pin.open_pin( pin.PinId.p1_gpio_gclk(), 'rB' ) as in_pin:
        in_pin.read()   # returns immediately with initial pin state
        print "Start waiting for 3 state changes on P1 GPIO_GCLK..."
        first_sample = in_pin.read()
        second_sample = in_pin.read()
        third_sample = in_pin.read()
        print "Read 3 samples from P1 GPIO_GCLK ",\
               first_sample, second_sample, third_sample
def wait_on_rising_edge_GPIO_GCLK_no_timeout():
    with pin.open_pin( pin.PinId.p1_gpio_gclk(), 'rR' ) as in_pin:
        in_pin.read() # returns immediately with initial pin state
        print "Start sampling 3 transitions to HIGH state on P1 GPIO_GCLK..."
        in_pin.read()
        print "High once"
        in_pin.read()
        print "High twice"
        in_pin.read()
        print "High thrice"
        print "P1 GPIO_GCLK gone high 3 times"
def poll_GPIO_GCLK_opened_non_blocking():
    INTERVAL = 1.0 # seconds
    with pin.open_pin( pin.PinId.p1_gpio_gclk(), 'rN' ) as in_pin:
        print "Start sampling GPIO_GCLK (open mode rN) ..."
        time.sleep(INTERVAL)
        first_sample = in_pin.read()
        time.sleep(INTERVAL)
        second_sample = in_pin.read()
        time.sleep(INTERVAL)
        third_sample = in_pin.read()
        print "Read 3 samples from P1 GPIO_GCLK at approximately", INTERVAL,\
              "second intervals:", first_sample, second_sample, third_sample
def poll_GPIO_GCLK_opened_blocking_on_rising_edge():
    INTERVAL = 1.0 # seconds
    with pin.open_pin( pin.PinId.p1_gpio_gclk(), 'rR' ) as in_pin:
        print "Start sampling GPIO_GCLK (open mode rR) ..."
        in_pin.read() # returns immediately with initial pin state
        time.sleep(INTERVAL)
        first_sample = in_pin.read(0)
        time.sleep(INTERVAL)
        second_sample = in_pin.read(0)
        time.sleep(INTERVAL)
        third_sample = in_pin.read(0)
        print "Read 3 samples from P1 GPIO_GCLK at approximately", INTERVAL,\
              "second intervals:", first_sample, second_sample, third_sample
def wait_on_both_GPIO_GCLK_with_timeouts():
    with pin.open_pin( pin.PinId.p1_gpio_gclk(), 'rB' ) as in_pin:
        in_pin.read()   # returns immediately with initial pin state

        print "Waiting for 0.0001s for state change on P1 GPIO_GCLK, timeout probable..."
        value = in_pin.read( 0.0001 )

        if value==None:
            print "Wait for input change timed out..."
        else:
            print "Value read:", value

        print "Waiting for 10000s for state change on P1 GPIO_GCLK, timeout less probable..."
        value = in_pin.read( 10000 )

        if value==None:
            print "Wait for input change timed out..."
        else:
            print "Value read:", value
 def test_open_pin_for_reading_badwaitmode_fails(self):
     with self.assertRaises( error.PinBlockModeInvalidError ):
         self.assertIsInstance(pin.open_pin(pin.PinId.p1_gpio_gen0(),'rX'),pin.PinWriter)
 def test_open_pin_for_reading_waitonbothedges_creates_PinBlockingReader(self):
     self.assertIsInstance(pin.open_pin(pin.PinId.p1_gpio_gen0(),'rB'),pin.PinBlockingReader)
 def test_open_pin_empty_mode_creates_PinReader(self):
     self.assertIsInstance(pin.open_pin(pin.PinId.p1_gpio_gen0(),''),pin.PinReader)
 def test_open_pin_for_reading_nowaitmode_creates_creates_PinReader(self):
     self.assertIsInstance(pin.open_pin(pin.PinId.p1_gpio_gen0(),'rN'),pin.PinReader)
 def test_open_pin_for_writing_nowaitmode_creates_PinWriter(self):
     self.assertIsInstance(pin.open_pin(pin.PinId.p1_gpio_gen0(),'wN'),pin.PinWriter)
def open_pin_explicit_close():
    gpio_gen0_out = pin.open_pin(pin.PinId.p1_gpio_gen0(), 'w')
    assert( not gpio_gen0_out.closed() )
    gpio_gen0_out.close()
    assert( gpio_gen0_out.closed() )
def open_pin_implicit_close( pinId ):
    pin_in = pin.open_pin(pinId)
    assert( not pin_in.closed() )
 def test_open_pin_bad_rw_mode_fails(self):
     with self.assertRaises( error.PinDirectionModeInvalidError ):
         self.assertIsInstance(pin.open_pin(pin.PinId.p1_gpio_gen0(),'a'),pin.PinWriter)
 def test_open_pin_bad_mode_string_fails(self):
     with self.assertRaises( error.PinOpenModeInvalidError ):
         self.assertIsInstance(pin.open_pin(pin.PinId.p1_gpio_gen0(),'rN+'),pin.PinWriter)
    Developed by R.E. McArdell / Dibase Limited.
    Copyright (c) 2012 Dibase Limited
    License: dual: GPL or BSD.
'''

import time
import sys
if __name__ == '__main__':
    sys.path.insert(0, './..')
import dibase.rpi.gpio.pin as pin
import dibase.rpi.gpio.gpioerror as error

if __name__ == '__main__':
    try:
        with pin.open_pin( pin.PinId.p1_gpio_gen1(), 'w' ) as out_pin:
            out_pin.write(True)     # Set GPIO line on pin p1_gpio_gen1 HIGH
            time.sleep(0.2)
            out_pin.write(False)    # Set GPIO line on pin p1_gpio_gen1 LOW
            time.sleep(0.2)
            out_pin.write(1)        # Set GPIO line on pin p1_gpio_gen1 HIGH
            time.sleep(0.2)
            out_pin.write(0)        # Set GPIO line on pin p1_gpio_gen1 LOW
            time.sleep(0.2)
            out_pin.write(23)       # Set GPIO line on pin p1_gpio_gen1 HIGH
            time.sleep(0.2)
            out_pin.write(None)     # Set GPIO line on pin p1_gpio_gen1 LOW
            time.sleep(0.2)
            out_pin.write('1')      # Set GPIO line on pin p1_gpio_gen1 HIGH
            time.sleep(0.2)
            out_pin.write('0')      # Set GPIO line on pin p1_gpio_gen1 LOW