コード例 #1
0
def test_single_shot_timer():
    event = Event()
    timer = Timer((0, 1000000), event, 0x1)
    print("starting single shot timer")
    timer.start()
    event.read(0x1)
    print("timeout")
コード例 #2
0
ファイル: main.py プロジェクト: eerimoq/pumbaa
def test_single_shot_timer():
    event = Event()
    timer = Timer((0, 1000000), event, 0x1)
    print("starting single shot timer")
    timer.start()
    event.read(0x1)
    print("timeout")
コード例 #3
0
def test_bad_arguments():
    event = Event()

    with assert_raises(TypeError, "can't convert NoneType to int"):
        event.read(None)

    with assert_raises(TypeError, "can't convert NoneType to int"):
        event.write(None)
コード例 #4
0
def test_periodic_timer():
    event = Event()
    timer = Timer(0.2, event, 0x1, flags=Timer.PERIODIC)
    print("starting periodic timer")
    timer.start()
    for i in range(3):
        event.read(0x1)
        print("timeout", i)
    timer.stop()
コード例 #5
0
ファイル: main.py プロジェクト: eerimoq/pumbaa
def test_periodic_timer():
    event = Event()
    timer = Timer(0.2, event, 0x1, flags=Timer.PERIODIC)
    print("starting periodic timer")
    timer.start()
    for i in range(3):
        event.read(0x1)
        print("timeout", i)
    timer.stop()
コード例 #6
0
def test_read_write():
    event = Event()

    event.write(0x6)
    assert event.size() == 1
    assert event.read(0x2) == 0x2
    assert event.read(0x4) == 0x4
コード例 #7
0
ファイル: select_suite.py プロジェクト: OS-Q/Y511
def test_poll():
    poll = select.poll()
    queue = Queue()
    event = Event()
    can = Can(board.CAN_0)
    uart = Uart(1)

    # Register both event channels.
    poll.register(queue)
    poll.register(event)
    poll.register(can)
    poll.register(uart)

    # Timeout waiting for event.
    assert poll.poll(0.01) == []

    # Event write, poll and read.
    event.write(0x1)
    assert poll.poll() == [(event, select.POLLIN)]
    assert event.read(0x1) == 0x1

    # Queue write, poll and read.
    queue.write(b'foo')
    assert poll.poll() == [(queue, select.POLLIN)]
    assert queue.read(3) == b'foo'
コード例 #8
0
ファイル: main.py プロジェクト: southwolf/pumbaa
def test_falling_edge():
    pin = Pin(board.PIN_D4, Pin.OUTPUT)
    pin.write(1)

    event = Event()

    exti = Exti(board.EXTI_D3, Exti.FALLING, event, 0x1)
    exti.start()

    # Make sure no interrupt has already occured.
    assert event.size() == 0

    # Trigger the interrupt and wait for the event.
    pin.write(0)

    if not 'Linux' in os.uname().machine:
        print("Waiting for the interrupt to occur... ")
        assert event.read(0x1) == 0x1

    exti.stop()
コード例 #9
0
ファイル: main.py プロジェクト: eerimoq/pumbaa
def test_falling_edge():
    pin = Pin(board.PIN_D4, Pin.OUTPUT)
    pin.write(1)

    event = Event()

    exti = Exti(board.EXTI_D3, Exti.FALLING, event, 0x1)
    exti.start()

    # Make sure no interrupt has already occured.
    assert event.size() == 0

    # Trigger the interrupt and wait for the event.
    pin.write(0)

    if not 'Linux' in os.uname().machine:
        print("Waiting for the interrupt to occur... ", end="")
        assert event.read(0x1) == 0x1
        print("ok.")

    exti.stop()
コード例 #10
0
ファイル: main.py プロジェクト: eerimoq/pumbaa
def test_poll():
    poll = select.poll()
    queue = Queue()
    event = Event()

    # Register both event channels.
    poll.register(queue)
    poll.register(event)

    # Timeout waiting for event.
    assert poll.poll(0.01) == []

    # Event write, poll and read.
    event.write(0x1)
    assert poll.poll() == [(event, select.POLLIN)]
    assert event.read(0x1) == 0x1

    # Queue write, poll and read.
    queue.write(b"foo")
    assert poll.poll() == [(queue, select.POLLIN)]
    assert queue.read(3) == b"foo"
コード例 #11
0
ファイル: main.py プロジェクト: southwolf/pumbaa
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be
# included in all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
# BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
# ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
#
# This file is part of the Pumbaa project.
#

from kernel import Timer
from sync import Event

EVENT = Event()

TIMER = Timer(1, EVENT, 0x1, flags=Timer.PERIODIC)
TIMER.start()

for i in range(10):
    EVENT.read(0x1)
    print("timeout", i)

TIMER.stop()
コード例 #12
0
class MusicPlayer(object):
    def __init__(self):
        self.state = STATE_STOPPED
        self.dac = Dac([Board.PIN_DAC0, Board.PIN_DAC1], 10000)
        self.event = Event()
        self.playlist = os.listdir()
        self.index = 0
        self.fsong = None
        self.timer = None
        self.identity = None

    def main(self):
        # Start the periodic fill timer.
        self.timer = Timer(0.1,
                           self.event,
                           EVENT_TIMEOUT,
                           flags=Timer.PERIODIC)
        self.timer.start()

        print('Pumbaa Music Player!')

        print('Playlist:')
        for number, song in enumerate(self.playlist, 1):
            print("{}: {}".format(number, song))

        # Start the main loop of the music player.
        while True:
            mask = self.event.read(EVENT_ALL)

            if mask & EVENT_STOP:
                self.handle_event_stop()

            if mask & EVENT_PAUSE:
                self.handle_event_pause()

            if mask & EVENT_NEXT:
                self.handle_event_next()

            if mask & EVENT_PREV:
                self.handle_event_prev()

            if mask & EVENT_PLAY:
                self.handle_event_play()

            # Play if the state in playing, eyy!
            if self.state == STATE_PLAYING:
                self.play_chunk()

    def start(self):
        if self.identity is None:
            self.identity = _thread.start_new_thread(self.main, ())

    def play(self):
        self.event.write(EVENT_PLAY)

    def pause(self):
        self.event.write(EVENT_PAUSE)

    def stop(self):
        self.event.write(EVENT_STOP)

    def next(self):
        self.event.write(EVENT_NEXT)

    def prev(self):
        self.event.write(EVENT_PREV)

    def handle_event_play(self):
        path = self.playlist[self.index]

        if self.state == STATE_STOPPED:
            self.fsong = open(path, "rb")

        self.state = STATE_PLAYING
        print("Playing |", path)

    def handle_event_pause(self):
        if self.state == STATE_PLAYING:
            print("Paused  |", self.playlist[self.index])
            self.state = STATE_PAUSED

    def handle_event_stop(self):
        if self.state in [STATE_PLAYING, STATE_PAUSED]:
            self.fsong.close()
            self.state = STATE_STOPPED

    def handle_event_next(self):
        if self.state in [STATE_PLAYING, STATE_PAUSED]:
            self.fsong.close()
            self.index += 1
            self.index %= len(self.playlist)
            self.fsong = open(self.playlist[self.index], "rb")

    def handle_event_prev(self):
        if self.state in [STATE_PLAYING, STATE_PAUSED]:
            self.fsong.close()
            self.index -= 1
            self.index %= len(self.playlist)
            self.fsong = open(self.playlist[self.index], "rb")

    def play_chunk(self):
        samples = self.fsong.read(1024)

        if len(samples) > 0:
            self.dac.async_convert(samples)
        else:
            self.handle_event_next()
            print("Playing |", self.playlist[self.index])
コード例 #13
0
ファイル: main.py プロジェクト: eerimoq/pumbaa
BUTTON_PIN = board.PIN_GPIO0
UDP_ADDRESS = '192.168.1.103'
UDP_PORT = 30303

button = Event()
exti = Exti(BUTTON_PIN, Exti.FALLING, button, 0x1)

queue = Queue()

udp = socket.socket(type=socket.SOCK_DGRAM)
udp.bind((UDP_ADDRESS, UDP_PORT))

poll = select.poll()
poll.register(button)
poll.register(queue)
poll.register(udp)

queue.write('foo')

while True:
    [(channel, eventmask)] = poll.poll()

    if channel is button:
        button.read(0x1)
        print("button")
    elif channel is queue:
        print("queue:", queue.read(3))
    elif channel is udp:
        print("udp:", udp.recv(1024))
コード例 #14
0
ファイル: main.py プロジェクト: ssahgal/pumbaa
BUTTON_PIN = board.PIN_GPIO0
UDP_ADDRESS = '192.168.1.103'
UDP_PORT = 30303

button = Event()
exti = Exti(BUTTON_PIN, Exti.FALLING, button, 0x1)

queue = Queue()

udp = socket.socket(type=socket.SOCK_DGRAM)
udp.bind((UDP_ADDRESS, UDP_PORT))

poll = select.poll()
poll.register(button)
poll.register(queue)
poll.register(udp)

queue.write('foo')

while True:
    [(channel, eventmask)] = poll.poll()

    if channel is button:
        button.read(0x1)
        print("button")
    elif channel is queue:
        print("queue:", queue.read(3))
    elif channel is udp:
        print("udp:", udp.recv(1024))
コード例 #15
0
ファイル: main.py プロジェクト: eerimoq/pumbaa
#
# The above copyright notice and this permission notice shall be
# included in all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
# BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
# ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
#
# This file is part of the Pumbaa project.
#
 

from kernel import Timer
from sync import Event

EVENT = Event()

TIMER = Timer(1, EVENT, 0x1, flags=Timer.PERIODIC)
TIMER.start()

for i in range(10):
    EVENT.read(0x1)
    print("timeout", i)

TIMER.stop()
コード例 #16
0
ファイル: music_player.py プロジェクト: eerimoq/pumbaa
class MusicPlayer(object):

    def __init__(self):
        self.state = STATE_STOPPED
        self.dac = Dac([Board.PIN_DAC0, Board.PIN_DAC1], 10000)
        self.event = Event()
        self.playlist = os.listdir()
        self.index = 0
        self.fsong = None
        self.timer = None
        self.identity = None

    def main(self):
        # Start the periodic fill timer.
        self.timer = Timer(0.1,
                           self.event,
                           EVENT_TIMEOUT,
                           flags=Timer.PERIODIC)
        self.timer.start()

        print('Pumbaa Music Player!')

        print('Playlist:')
        for number, song in enumerate(self.playlist, 1):
            print("{}: {}".format(number, song))

        # Start the main loop of the music player.
        while True:
            mask = self.event.read(EVENT_ALL)

            if mask & EVENT_STOP:
                self.handle_event_stop()

            if mask & EVENT_PAUSE:
                self.handle_event_pause()

            if mask & EVENT_NEXT:
                self.handle_event_next()

            if mask & EVENT_PREV:
                self.handle_event_prev()

            if mask & EVENT_PLAY:
                self.handle_event_play()

            # Play if the state in playing, eyy!
            if self.state == STATE_PLAYING:
                self.play_chunk()

    def start(self):
        if self.identity is None:
            self.identity = _thread.start_new_thread(self.main, ())

    def play(self):
        self.event.write(EVENT_PLAY)

    def pause(self):
        self.event.write(EVENT_PAUSE)

    def stop(self):
        self.event.write(EVENT_STOP)

    def next(self):
        self.event.write(EVENT_NEXT)

    def prev(self):
        self.event.write(EVENT_PREV)

    def handle_event_play(self):
        path = self.playlist[self.index]

        if self.state == STATE_STOPPED:
            self.fsong = open(path, "rb")

        self.state = STATE_PLAYING
        print("Playing |", path)

    def handle_event_pause(self):
        if self.state == STATE_PLAYING:
            print("Paused  |", self.playlist[self.index])
            self.state = STATE_PAUSED

    def handle_event_stop(self):
        if self.state in [STATE_PLAYING, STATE_PAUSED]:
            self.fsong.close()
            self.state = STATE_STOPPED

    def handle_event_next(self):
        if self.state in [STATE_PLAYING, STATE_PAUSED]:
            self.fsong.close()
            self.index += 1
            self.index %= len(self.playlist)
            self.fsong = open(self.playlist[self.index], "rb")

    def handle_event_prev(self):
        if self.state in [STATE_PLAYING, STATE_PAUSED]:
            self.fsong.close()
            self.index -= 1
            self.index %= len(self.playlist)
            self.fsong = open(self.playlist[self.index], "rb")

    def play_chunk(self):
        samples = self.fsong.read(1024)

        if len(samples) > 0:
            self.dac.async_convert(samples)
        else:
            self.handle_event_next()
            print("Playing |", self.playlist[self.index])