Example #1
0
    def load(self, pab, devname):
        logger.info("load devname - %s", devname)
        try:
            url = self.parseDev(devname)
            tmpname = self.http_get(url, pab)

            if (not ti_files.isTiFile(tmpname)
                ) and devname.lower().endswith(basicSuffixes):
                prog_file = BasicFile.load(tmpname)
            else:
                prog_file = ProgramImageFile.load(tmpname)

            filesize = prog_file.getImageSize()
            bytes = prog_file.getImage()
            maxsize = recordNumber(pab)
            if filesize > maxsize:
                logger.debug(
                    "TI buffer too small, only loading %d of %d bytes",
                    maxsize, filesize)
                bytes = bytes[:maxsize]

            self.tipi_io.send([SUCCESS])
            logger.info("LOAD image size %d", filesize)
            self.tipi_io.send(bytes)

        except Exception:
            # I don't think this will work. we need to check for as
            #   many errors as possible up front.
            self.tipi_io.send([EFILERR])
            logger.exception("failed to load file - %s", devname)
Example #2
0
    def handleLoad(self, pab, devname):
        logger.info("Opcode 5 LOAD - %s", devname)
        logPab(pab)
        maxsize = recordNumber(pab)
        unix_name = tinames.devnameToLocal(devname)
        if not os.path.exists(unix_name):
            logger.info("Passing to other controllers")
            self.sendErrorCode(EDVNAME)
            return
        try:
            if (not ti_files.isTiFile(unix_name)
                ) and unix_name.lower().endswith(basicSuffixes):
                prog_file = BasicFile.load(unix_name)
            else:
                prog_file = ProgramImageFile.load(unix_name)

            filesize = prog_file.getImageSize()
            bytes = prog_file.getImage()
            if filesize > maxsize:
                logger.debug(
                    "TI buffer too small, only loading %d of %d bytes",
                    maxsize, filesize)
                bytes = bytes[:maxsize]

            self.sendSuccess()
            logger.info("LOAD image size %d", filesize)
            self.tipi_io.send(bytes)

        except Exception as e:
            # I don't think this will work. we need to check for as
            #   many errors as possible up front.
            self.sendErrorCode(EFILERR)
            logger.exception("failed to load file - %s", devname)
Example #3
0
    def load(self, pab, devname):
        logger.info("load devname - %s", devname)
        try:
            tmpname = '/tmp/CF'
            url = self.parseDev(devname)
            cmd = "wget -O {} {}".format(tmpname, url)
            logger.info("cmd: %s", cmd)
            code = os.system(cmd)
            if code != 0:
                raise Exception("error downloading resource")
            if (not ti_files.isTiFile(tmpname)
                ) and devname.lower().endswith(basicSuffixes):
                prog_file = BasicFile.load(tmpname)
            else:
                prog_file = ProgramImageFile.load(tmpname)

            filesize = prog_file.getImageSize()
            bytes = prog_file.getImage()
            maxsize = recordNumber(pab)
            if filesize > maxsize:
                logger.debug(
                    "TI buffer too small, only loading %d of %d bytes",
                    maxsize, filesize)
                bytes = bytes[:maxsize]

            self.tipi_io.send([SUCCESS])
            logger.info("LOAD image size %d", filesize)
            self.tipi_io.send(bytes)

        except Exception:
            # I don't think this will work. we need to check for as
            #   many errors as possible up front.
            self.tipi_io.send([EFILERR])
            logger.exception("failed to load file - %s", devname)
Example #4
0
    def handleSave(self, pab, devname):
        logger.info("Opcode 6 Save - %s", devname)
        logPab(pab)
        unix_name = tinames.devnameToLocal(devname)
        logger.debug("unix_name for program is %s", unix_name)

        if unix_name == "" or unix_name is None:
            self.sendErrorCode(EDVNAME)
            return

        oled.info("SAVE:/%s", devname)

        logger.debug("saving program to %s", unix_name)
        if self.parentExists(unix_name):
            self.sendSuccess()
            fdata = self.tipi_io.receive()
            logger.debug("received program image")
            try:
                if unix_name.lower().endswith(basicSuffixes):
                    prog_file = BasicFile.create(fdata)
                else:
                    prog_file = ProgramImageFile.create(devname, unix_name, fdata)
                logger.debug("created file object")
                prog_file.save(unix_name)

                self.sendSuccess()
            except Exception as e:
                logger.exception("failed to save PROGRAM")
                self.sendErrorCode(EDEVERR)
            return
        self.sendErrorCode(EDEVERR)
Example #5
0
    def handleLoad(self, pab, devname):
        logger.info("Opcode 5 LOAD - %s", devname)
        logPab(pab)
        maxsize = recordNumber(pab)
        unix_name = tinames.devnameToLocal(devname)

        if unix_name is None or not os.path.exists(unix_name):
            logger.info("Passing to other controllers")
            self.sendErrorCode(EDVNAME)
            return
        try:
            if (not ti_files.isTiFile(unix_name)
                ) and unix_name.lower().endswith(basicSuffixes):
                prog_file = BasicFile.load(unix_name)
            elif 'DV' == ti_files.get_file_type(
                    unix_name) and unix_name.lower().endswith(basicSuffixes):
                # if it has a basic suffix, lets try to coerce it
                # from DISPLAY VARIABLE maybe
                prog_file = BasicFile.load(unix_name)
            else:
                prog_file = ProgramImageFile.load(unix_name)

            filesize = prog_file.getImageSize()
            bytes = prog_file.getImage()
            if filesize > maxsize:
                logger.debug(
                    "TI buffer too small, only loading %d of %d bytes",
                    maxsize,
                    filesize,
                )
                bytes = bytes[:maxsize]

            dirname = os.path.dirname(unix_name)
            if tipi_config.get("AUTO") == "on":
                tipidirname = tinames.local2tipi(dirname)
                logger.debug("tmp mapping DSK1 to %s", tipidirname)
                tipi_config.settmp("DSK1_DIR", tipidirname)
            else:
                logger.debug("AUTO mapping not enabled")

            tipifile = os.path.join(dirname, "TIPI")
            if os.path.isfile(tipifile):
                config_records = load_internal(tipifile)
                tipi_config.applyrecords(config_records)

            self.sendSuccess()
            logger.info("LOAD image size %d", filesize)
            self.tipi_io.send(bytes)

        except Exception as e:
            # I don't think this will work. we need to check for as
            #   many errors as possible up front.
            self.sendErrorCode(EFILERR)
            logger.exception("failed to load file - %s", devname)
Example #6
0
    def handleSave(self, pab, devname):
        logger.info("Opcode 6 Save - %s", devname)
        logPab(pab)
        unix_name = tinames.devnameToLocal(devname)
        logger.debug("unix_name for program is %s", unix_name)

        if unix_name == "" or unix_name is None:
            self.sendErrorCode(EDVNAME)
            return

        logger.debug("saving program to %s", unix_name)
        if self.parentExists(unix_name):
            # check protect flag
            if ti_files.isTiFile(unix_name):
                fh = open(unix_name, "rb")
                header = bytearray(fh.read())[:128]
                if ti_files.isProtected(header):
                    self.sendErrorCode(EWPROT)
                    return
            self.sendSuccess()
            fdata = self.tipi_io.receive()
            logger.debug("received program image")
            try:
                if unix_name.lower().endswith(basicSuffixes):
                    prog_file = BasicFile.create(fdata)
                else:
                    prog_file = ProgramImageFile.create(
                        devname, unix_name, fdata)
                logger.debug("created file object")
                prog_file.save(unix_name)

                self.sendSuccess()
            except Exception as e:
                logger.exception("failed to save PROGRAM")
                self.sendErrorCode(EDEVERR)
            return
        self.sendErrorCode(EDEVERR)
Example #7
0
    def save(self, pab, devname):
        logger.info("save devname - %s", devname)
        try:
            url = self.parseDev(devname)
            tmpname = '/tmp/CF'

            self.tipi_io.send([SUCCESS])
            fdata = self.tipi_io.receive()
            logger.debug("received program image")

            if devname.lower().endswith(basicSuffixes):
                prog_file = BasicFile.create(fdata)
            else:
                prog_file = ProgramImageFile.create(devname, tmpname, fdata)
            logger.debug("created file object")
            prog_file.save(tmpname)

            self.http_post(url, pab)

            self.tipi_io.send([SUCCESS])
        except Exception as e:
            logger.exception("failed to save PROGRAM")
            self.tipi_io.send([EFILERR])
        return