コード例 #1
0
ファイル: keypad_old.py プロジェクト: koenschepens/OldPhone
def row_changed(button, i):
    logging.info("entering row_changed with button: " + str(button) + ", i: " + str(i))
    global channelVal
    
    #switch columns to input to read the values
    setReadWrite(columns, rows)
    
    #now read columns
    for column in columns:
        value = GPIO.input(column)
        logging.info("column " + str(column) + ": " + str(value))
        if value:
            logging.info("column " + str(channelEnums[i]))
            channelVal = channelVal + channelEnums[i]
        i = i + 1;

    logging.info("Button event: " + str(channelVal))
    if button == G.NONE:
        xbmc.release_button()
    else:
        try:
            global mapping
            print(kbmapping[channelVal])
            xbmc.send_keyboard_button(button=kbmapping[channelVal])
        except:
            logging.warning("value invalid")
        sleep(0.025)

    #switch back to reading rows  
    setReadWrite(rows, columns)
コード例 #2
0
ファイル: keypad.py プロジェクト: koenschepens/OldPhone
def listenToHoorn():
    global run
    global hoorn
    global HOORN_UP
    global HOORN_DOWN
    global hoorn_previous_state
    global initial_state

    while run:
        # also listen to hoorn
        hoorn_state = GPIO.input(hoorn)

        if not initial_state and hoorn_previous_state != hoorn_state:
            if hoorn_state == HOORN_UP:
                if inXbmc:
                    xbmc.log(msg="hoorn up", level=xbmc.LOGDEBUG)
                send_key("hoorn_up")
            else:
                if inXbmc:
                    xbmc.log(msg="hoorn down", level=xbmc.LOGDEBUG)
                send_key("hoorn_down")
            hoorn_previous_state = hoorn_state
        else:
            initial_state = False

        sleep(hoornWaitTime)

    logging.info("Stopped listening to hook...")
コード例 #3
0
ファイル: keypad.py プロジェクト: koenschepens/OldPhone
def row_changed(row):
    if verbose:
        logging.info("Row " + str(row) + " has changed")
    global processing
    global rowsWithColumns
    global columns
    global keys

    if not processing:
        processing = True
        # Disable events until action is done
        setRowEvents(row, KEYPAD_MODE_READCOLUMNS)

        # Read which column it was
        for column in rowsWithColumns[row]:
            columnValue = GPIO.input(column)

            if columnValue:
                key = keys[str(row) + "," + str(column)]
                send_key(key)
                pass

        # Re-enable events
        setRowEvents(row, KEYPAD_MODE_READROWS)
        sleep(0.1)

        # GPIO.wait_for_edge(row, GPIO.FALLING)

        processing = False
    else:
        logging.info("already processing, ignored")
コード例 #4
0
def row_changed(row):
    global rows
    GPIO.remove_event_detect(row)
    GPIO.setup(row, GPIO.OUT)

    for column in rows[row]:
        GPIO.setup(column, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)

    # Send signal from row to columns
    GPIO.output(row, 1)
    #sleep(0.05)

    # Read which column it was
    for column in rows[row]:
        columnValue = GPIO.input(column)

        if(columnValue):
            key = keys[str(row) + "," + str(column)]
            logging.info("row changed: " + str(row))
            send_key(key)

    # Set row and columns back to original setup
    GPIO.setup(row, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)

    for column in rows[row]:
        GPIO.remove_event_detect(column)
        GPIO.setup(column, GPIO.OUT)
        GPIO.output(column, 1)

    GPIO.add_event_detect(row, GPIO.RISING, callback=row_changed) 
コード例 #5
0
ファイル: keypad.py プロジェクト: koenschepens/OldPhone
def listenToRows():
    global run
    global keypadWaitTime
    while run:
        global rowsWithColumns
        global lastPing
        global initial_state

        if (lastPing - datetime.now()).seconds == 50:
            xClient.ping()
            lastPing = datetime.now()

        for row in rowsWithColumns:
            rowinput = GPIO.input(row)
            if verbose:
                logging.info("Row " + str(row) + ": " + str(rowinput))
            if rowinput:
                row_changed(row)
        sleep(keypadWaitTime)
    logging.info("Stopped listening to rows...")
コード例 #6
0
ファイル: keypad_old.py プロジェクト: koenschepens/OldPhone
def start():
    global channelVal
    global previousChannelVal
    global previousRow

    i = 0
    for row in rows:
        value = GPIO.input(row)
        logging.info("row " + str(row) + ": " + str(value))
        if value:
            channelVal = channelVal + channelEnums[i]
        i = i + 1

    if previousRow <> channelVal & channelVal:
        logging.info("change detected")
        logging.info("row " + str(row) + " is up: " + str(channelEnums[i]))

        # Keep track of row to check changes
        previousRow = channelVal;
        row_changed(channelVal, i)
        previousChannelVal = channelVal    
    
    channelVal = G.NONE
    lock = False
コード例 #7
0
ファイル: keypad.py プロジェクト: koenschepens/OldPhone
    keys[config.get("gpiokeymapping", option)] = option

    if row not in rowsWithColumns:
        rowsWithColumns[row] = [column]
    else:
        rowsWithColumns[row].append(column)

    if column not in columns:
        columns.append(column)

for row in rowsWithColumns:
    setRowEvents(row, KEYPAD_MODE_READROWS)


GPIO.setup(hoorn, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
hoorn_previous_state = GPIO.input(hoorn)

# GPIO.add_event_detect(hoorn, GPIO.BOTH, callback=phonePickedUp)

threadRows = threading.Thread(target=listenToRows)
threadHoorn = threading.Thread(target=listenToHoorn)

threadRows.start()
threadHoorn.start()


def cleanup():
    logging.info("Stopping threads...")
    global run
    run = False
    logging.info("Cleaning up GPIO...")
コード例 #8
0
ファイル: raspberry.py プロジェクト: ripclaw94/py-raspberry
 def input(self):
     if (self.Type == GPIO.IN):
         return GPIO.input(self.Pin)
     else:
         return -1
コード例 #9
0
ファイル: raspberry.py プロジェクト: ripclaw94/py-raspberry
 def Value(self):
     self.__Value = GPIO.input(self.Pin)
     return self.__Value