Beispiel #1
0
class Root(RestController):
    config = Config()
    crush = Crush()
    doc = Doc()
    mon = Mon()
    osd = Osd()
    pool = Pool()
    request = Request()
    server = Server()

    @expose(template='json')
    def get(self, **kwargs):
        """
        Show the basic information for the REST API
        This includes values like api version or auth method
        """
        return {
            'api_version':
            1,
            'auth':
            'Use "ceph tell mgr restful create_key <key>" to create a key pair, '
            'pass it as HTTP Basic auth to authenticate',
            'doc':
            'See /doc endpoint',
            'info':
            "Ceph Manager RESTful API server",
        }
Beispiel #2
0
    def __init__(self, config_data):
        device = config_data['device']
        stations = config_data['stations']
        devices = []
        if device.lower() == 'auto':
            devices = scan_for_devices()
        else:
            devices = [device]

        self._devices = devices
        self._device = devices[0]
        self._tuners = []
        for dev in self._devices:
            tuner = Tuner(dev)
            tuner.init_stations(stations)
            self._tuners.append(tuner)
        self._tuner = self._tuners[0]
        self._osd = Osd()
        self._sleep_time = 0.2
        self._osd_time = None
        self._first_digit = None
        self._show_digit_time = 0
        self._show_shutdown_message = False
Beispiel #3
0
    def elaborate(self, platform):
        m = Module()

        # Read in the tilemap
        tile_map = readhex(self.char_file)

        tile_data = Memory(width=8 + self.inverse, depth=len(tile_map))

        tile_data.init = tile_map

        m.submodules.tr = tr = tile_data.read_port()
        m.submodules.tw = tw = tile_data.write_port()

        # Read in the font
        font = readbin(self.font_file)

        font_data = Memory(width=8, depth=4096)

        font_data.init = font

        m.submodules.fr = fr = font_data.read_port()

        ram_wr = Signal()
        ram_addr = Signal(32)
        ram_di = Signal(8)
        ram_do = Signal(8)
        osd_en = Signal(reset=self.init_on)
        osd_x = Signal(10)
        osd_y = Signal(10)
        dout = Signal(8)
        tile_addr = Signal(12)
        dout_align = Signal()
        osd_pixel = Signal()
        osd_r = Signal(8)
        osd_g = Signal(8)
        osd_b = Signal(8)

        m.submodules.spimem = spimem = SpiMem(addr_bits=32)

        m.d.comb += [
            # Connect spimem
            spimem.csn.eq(self.i_csn),
            spimem.sclk.eq(self.i_sclk),
            spimem.copi.eq(self.i_copi),
            spimem.din.eq(ram_di),
            self.o_cipo.eq(spimem.cipo),
            ram_do.eq(spimem.dout),
            ram_addr.eq(spimem.addr),
            ram_wr.eq(spimem.wr),
            # Connect tilemap
            tw.addr.eq(ram_addr),
            tw.en.eq(ram_wr & ram_addr[24:] == self.addr_display),
            tw.data.eq(Mux(self.inverse, Cat(ram_di, ram_addr[16]), ram_di)),
        ]

        with m.If(ram_wr & ram_addr[24:] == self.addr_enable):
            m.d.pixel += osd_en.eq(ram_di[0])

        m.d.comb += [
            tile_addr.eq((osd_y >> 4) * self.chars_y + (osd_x >> 3)),
            fr.data.eq(dout)
        ]

        if (self.inverse):
            m.d.comb += fr.addr.eq(
                Cat(osd_y[4], tr.data) ^ Repl(tr.data[8], 8))
        else:
            m.d.comb += fr.addr.eq(Cat(osd_y[:4], tr.data))

        m.submodules.osd = osd = Osd(
            x_start=self.start_x,
            x_stop=self.start_x + (8 * self.chars_x) - 1,
            y_start=self.start_y,
            y_stop=self.start_y + (8 * self.chars_y) - 1)

        m.d.comb += [
            osd.clk_ena.eq(1),
            osd.i_r.eq(self.i_r),
            osd.i_g.eq(self.i_g),
            osd.i_b.eq(self.i_b),
            osd.i_hsync.eq(self.i_hsync),
            osd.i_vsync.eq(self.i_vsync),
            osd.i_blank.eq(self.i_blank),
            osd.i_osd_ena.eq(osd_en),
            osd.i_osd_r.eq(osd_r),
            osd.i_osd_g.eq(osd_g),
            osd.i_osd_b.eq(osd_b),
            osd_x.eq(osd.o_osd_x),
            osd_y.eq(osd.o_osd_y),
            osd_r.eq(osd.o_r),
            osd_g.eq(osd.o_g),
            osd_b.eq(osd.o_b),
            self.o_hsync.eq(osd.o_hsync),
            self.o_vsync.eq(osd.o_vsync),
            self.o_blank.eq(osd.o_blank)
        ]

        return m