IoTPy reference

"""
akakakakak
"""
 
# kdfkfkfkfkfkfk
class ADC():
    HIGH_Z = 0
 
    def __init__(self, board, pin):
        self.board = board
        if self.board.pinout[pin][0] & self.board.cap_adc:
            self.logical_pin = self.board.pinout[pin][1][0]
        else:
            errmsg("UPER API: Pin No:%d is not an ADC pin.", pin)
            raise UPER_APIError("Trying to assign ADC function to non ADC pin.")
        self.adc_pin = self.board.pinout[pin][1][1]
        self.board.uper_io(0, self.board.encode_sfp(3, [self.logical_pin, self.HIGH_Z]))
        self.board.uper_io(0, self.board.encode_sfp(2, [self.logical_pin])) # set secondary pin function
        self.pull = self.HIGH_Z
        self.primary = False
 
    def read(self):
        return self.board.decode_sfp(self.board.uper_io(1, self.board.encode_sfp(10, [self.adc_pin])))[1][1]
 
    def __enter__(self):
        return self
 
    def __exit__(self, exc_type, exc_value, traceback):
        pass
 
from utils import UPER_APIError, errmsg
 
 
class GPIO:
    PULL_UP = 4
    PULL_DOWN = 2
    HIGH_Z = 0
    INPUT = 3
    OUTPUT = 1
 
    def __init__(self, board, pin):
        self.board = board
        if self.board.pinout[pin][0] & self.board.cap_gpio:
            self.logical_pin = self.board.pinout[pin][1][0]
        else:
            errmsg("UPER API: Pin No:%d is not GPIO pin.", pin)
            raise UPER_APIError("Trying to assign GPIO function to non GPIO pin.")
        self.direction = self.INPUT
        self.pull = self.PULL_UP
        self.board.uper_io(0, self.board.encode_sfp(1, [self.logical_pin])) # set primary
        self.primary = True
        self.input_pullmode = self.PULL_UP
 
    def mode(self, pin_mode):
        if pin_mode in [self.HIGH_Z, self.PULL_UP, self.PULL_DOWN, self.OUTPUT]:
            if pin_mode != self.OUTPUT:
                self.direction = self.INPUT
                self.input_pullmode = pin_mode
                self.pull = pin_mode
            else:
                self.direction = self.OUTPUT
            self.board.uper_io(0, self.board.encode_sfp(3, [self.logical_pin, pin_mode]))
        else:
            errmsg("UPER API: pinMode - Illegal pin mode - %d", pin_mode)
            raise UPER_APIError("Illegal pin mode.")
 
    def write(self, value):
        if self.direction != self.OUTPUT:
            self.mode(self.OUTPUT)
        self.direction = self.OUTPUT
        self.board.uper_io(0, self.board.encode_sfp(4, [self.logical_pin, value]))
 
    def read(self):
        if self.direction != self.INPUT:
            self.mode(self.input_pullmode)
            self.pull = self.input_pullmode
        self.direction = self.INPUT
        return self.board.decode_sfp(self.board.uper_io(1, self.board.encode_sfp(5, [self.logical_pin])))[1][1]
 
    def __enter__(self):
        return self
 
    def __exit__(self, exc_type, exc_value, traceback):
        pass